123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- using System;
- using System.Windows.Forms;
- using FastReport.SVG;
- using FastReport.Utils;
- namespace FastReport.Forms
- {
- internal partial class SVGEditorForm : BaseDialogForm
- {
- private SVGObject svgObject;
- private readonly SVGObject originalSvgObject;
- private readonly string originalSvgString;
- public SVGObject SvgObject
- {
- get { return svgObject; }
- set { svgObject = value; }
- }
- private void ResetSvgObjectToOriginal()
- {
- svgObject = (SVGObject)originalSvgObject.Clone();
- if (!string.IsNullOrEmpty(originalSvgString))
- svgObject.SVGString = originalSvgString;
- }
- private void SetImage(SVGObject svgObject)
- {
- if ((svgObject != null) && (svgObject.SvgDocument != null))
- {
- if ((Is100Percent() && svgObject.Width < pbPicture.Width &&
- svgObject.Height < pbPicture.Height) ||
- (!Is100Percent() && svgObject.SvgDocument.Width < pbPicture.Width &&
- svgObject.SvgDocument.Width < pbPicture.Height))
- {
- pbPicture.SizeMode = PictureBoxSizeMode.CenterImage;
- }
- else
- {
- pbPicture.SizeMode = PictureBoxSizeMode.Zoom;
- }
- if (svgObject.Grayscale)
- {
- this.svgObject.SVGGrayscale = this.svgObject.GetSVGGrayscale();
- pbPicture.Image = this.svgObject.SVGGrayscale.Draw();
- }
- else
- pbPicture.Image = svgObject.SvgDocument.Draw();
- string sizeTxt = "";
- if (Is100Percent())
- sizeTxt = svgObject.Width.ToString() + " × " + svgObject.Height.ToString();
- else
- sizeTxt = svgObject.SvgDocument.Width.ToString() + " × " + svgObject.SvgDocument.Height.ToString();
- lblSize.Text = sizeTxt;
- }
- else
- {
- lblSize.Text = "";
- pbPicture.Image = null;
- }
- btnEdit.Enabled = btnClear.Enabled = pbPicture.Image != null;
- }
- private void btnLoad_Click(object sender, EventArgs e)
- {
- using (OpenFileDialog dialog = new OpenFileDialog())
- {
- dialog.Filter = Res.Get("FileFilters,SvgFile");
- if (dialog.ShowDialog() == DialogResult.OK)
- {
- svgObject.SetSVGByPath(dialog.FileName);
- SetImage(svgObject);
- }
- }
- }
- private void btnPaste_Click(object sender, EventArgs e)
- {
- /* if (Clipboard.ContainsImage())
- SetImage(Clipboard.GetImage());*/
- }
- private void btnClear_Click(object sender, EventArgs e)
- {
- SetImage(null);
- svgObject.SVGString = null;
- }
- private void tbFileName_ButtonClick(object sender, EventArgs e)
- {
- using (OpenFileDialog dialog = new OpenFileDialog())
- {
- dialog.Filter = Res.Get("FileFilters,SvgFile");
- if (dialog.ShowDialog() == DialogResult.OK)
- {
- tbFileName.Text = dialog.FileName;
- }
- }
- }
- private void btnEdit_Click(object sender, EventArgs e)
- {
- if (pbPicture.Image != null)
- {
- using (SVGEditorAdvancedForm f = new SVGEditorAdvancedForm(svgObject))
- {
- if (f.ShowDialog() == DialogResult.OK)
- {
- svgObject = f.SvgObject;
- svgObject.SVGString = f.SvgObject.SVGString;
- SetImage(f.SvgObject);
- }
- else
- ResetSvgObjectToOriginal();
- }
- }
- }
- private void PictureEditorForm_Shown(object sender, EventArgs e)
- {
- // needed for 120dpi mode
- lblNote.Width = tbFileName.Width;
- }
- private void PictureEditorForm_FormClosed(object sender, FormClosedEventArgs e)
- {
- Done();
- }
- private void Init()
- {
- ProfessionalColorTable vs2005ColorTable = new ProfessionalColorTable();
- vs2005ColorTable.UseSystemColors = true;
- ts1.Renderer = new ToolStripProfessionalRenderer(vs2005ColorTable);
- SetImage(null);
- if (svgObject.IsDataColumn)
- pcPages.ActivePageIndex = 1;
- else if (svgObject.IsFileLocation)
- {
- pcPages.ActivePageIndex = 2;
- tbFileName.Text = svgObject.ImageLocation;
- }
- else if (svgObject.IsWebLocation)
- {
- pcPages.ActivePageIndex = 3;
- tbUrl.Text = svgObject.ImageLocation;
- }
- else
- {
- pcPages.ActivePageIndex = 0;
- SetImage(svgObject);
- }
- tvData.CreateNodes(svgObject.Report.Dictionary);
- tvData.SelectedItem = svgObject.DataColumn;
- }
- private void Done()
- {
- if (DialogResult == DialogResult.OK)
- {
- //svgObject.Image = null;
- svgObject.DataColumn = "";
- svgObject.ImageLocation = "";
- switch (pcPages.ActivePageIndex)
- {
- case 0:
- //svgObject.Image = pbPicture.Image;
- break;
- case 1:
- svgObject.DataColumn = tvData.SelectedItem;
- break;
- case 2:
- svgObject.ImageLocation = tbFileName.Text;
- break;
- case 3:
- svgObject.ImageLocation = tbUrl.Text;
- break;
- }
- }
- else
- ResetSvgObjectToOriginal();
- }
- private bool Is100Percent()
- {
- return svgObject.SvgDocument.Width.Type == Svg.SvgUnitType.Percentage &&
- svgObject.SvgDocument.Width.Value == 100;
- }
- public override void Localize()
- {
- base.Localize();
- MyRes res = new MyRes("Forms,PictureEditor");
- Text = res.Get("");
- pnPicture.Text = res.Get("Picture");
- btnLoad.Text = res.Get("Load");
- btnPaste.Text = res.Get("Paste");
- btnClear.Text = res.Get("Clear");
- btnEdit.Text = res.Get("Edit");
- pnDataColumn.Text = res.Get("DataColumn");
- pnFileName.Text = res.Get("FileName");
- pnUrl.Text = res.Get("Url");
- lblFile.Text = res.Get("FileHint1");
- lblNote.Text = res.Get("FileHint2");
- lblUrl.Text = res.Get("UrlHint");
- }
- public override void UpdateDpiDependencies()
- {
- base.UpdateDpiDependencies();
- ts1.Font = Font;
- tvData.ImageList = GetImages();
- tbFileName.Image = GetImage(1);
- btnLoad.Image = GetImage(1);
- btnPaste.Image = GetImage(7);
- btnClear.Image = GetImage(82);
- btnEdit.Image = GetImage(198);
- }
- public SVGEditorForm(SVGObject svgPicture)
- {
- svgObject = svgPicture;
- originalSvgObject = (SVGObject)svgPicture.Clone();
- if (svgPicture.SVGString != null)
- originalSvgString = svgPicture.SVGString;
- InitializeComponent();
- Localize();
- Init();
- UIUtils.CheckRTL(this);
- UpdateDpiDependencies();
- }
- }
- }
|