コード例 #1
0
 private void FillCombo()
 {
     if (PrefC.AtoZfolderUsed != DataStorageType.InDatabase)
     {
         comboFieldName.Items.Clear();
         string[] files = null;
         if (PrefC.AtoZfolderUsed == DataStorageType.LocalAtoZ)
         {
             files = Directory.GetFiles(SheetUtil.GetImagePath());
         }
         else                  //Cloud
                               //Get file list
         {
             OpenDentalCloud.Core.TaskStateListFolders state = CloudStorage.ListFolderContents(SheetUtil.GetImagePath());
             files = state.ListFolderPathsDisplay.ToArray();
         }
         for (int i = 0; i < files.Length; i++)
         {
             //remove some common offending file types (non image files)
             if (files[i].EndsWith("db") ||
                 files[i].EndsWith("doc") ||
                 files[i].EndsWith("pdf")
                 )
             {
                 continue;
             }
             comboFieldName.Items.Add(Path.GetFileName(files[i]));
         }
         //comboFieldName.Items.Add("Patient Info.gif");
     }
 }
コード例 #2
0
        private void butImport_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Multiselect = false;
            if (dlg.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            if (!File.Exists(dlg.FileName))
            {
                MsgBox.Show(this, "File does not exist.");
                return;
            }
            string newName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), Path.GetFileName(dlg.FileName));

            if (File.Exists(newName))
            {
                MsgBox.Show(this, "A file of that name already exists in SheetImages.  Please rename the file before importing.");
                return;
            }
            File.Copy(dlg.FileName, newName);
            FillCombo();
            for (int i = 0; i < comboFieldName.Items.Count; i++)
            {
                if (comboFieldName.Items[i].ToString() == Path.GetFileName(newName))
                {
                    comboFieldName.SelectedIndex = i;
                    comboFieldName.Text          = Path.GetFileName(newName);
                    FillImage();
                    ShrinkToFit();
                }
            }
        }
コード例 #3
0
ファイル: FormSheetFieldImage.cs プロジェクト: nampn/ODental
 private void FillImage()
 {
     textFullPath.Text = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), comboFieldName.Text);
     if (File.Exists(textFullPath.Text))
     {
         try {
             pictureBox.Image = Image.FromFile(textFullPath.Text);
         }
         catch {
             pictureBox.Image = null;
             textWidth2.Text  = "";
             textHeight2.Text = "";
             MessageBox.Show("Invalid image type.");
             return;
         }
         textWidth2.Text  = pictureBox.Image.Width.ToString();
         textHeight2.Text = pictureBox.Image.Height.ToString();
     }
     else if (comboFieldName.Text == "Patient Info.gif")
     {
         pictureBox.Image  = Properties.Resources.Patient_Info;
         textWidth2.Text   = pictureBox.Image.Width.ToString();
         textHeight2.Text  = pictureBox.Image.Height.ToString();
         textFullPath.Text = "Patient Info.gif (internal)";
     }
     else
     {
         pictureBox.Image = null;
         textWidth2.Text  = "";
         textHeight2.Text = "";
     }
 }
コード例 #4
0
 private void FillCombo()
 {
     if (PrefC.UsingAtoZfolder)
     {
         comboFieldName.Items.Clear();
         string[] files = Directory.GetFiles(SheetUtil.GetImagePath());
         for (int i = 0; i < files.Length; i++)
         {
             comboFieldName.Items.Add(Path.GetFileName(files[i]));
         }
     }
 }
コード例 #5
0
        private void butExport_Click(object sender, EventArgs e)
        {
            if (gridCustomSheet.GetSelectedIndex() == -1)
            {
                MsgBox.Show(this, "Please select a sheet from the list first.");
                return;
            }
            SheetDef             sheetdef           = SheetDefs.GetSheetDef(_listSheetDefs[gridCustomSheet.GetSelectedIndex()].SheetDefNum);
            List <SheetFieldDef> listFieldDefImages = sheetdef.SheetFieldDefs
                                                      .Where(x => x.FieldType == SheetFieldType.Image && x.FieldName != "Patient Info.gif")
                                                      .ToList();

            if (!listFieldDefImages.IsNullOrEmpty())             //Alert them of any images they need to copy if there are any.
            {
                string sheetImagesPath = "";
                ODException.SwallowAnyException(() => {
                    sheetImagesPath = SheetUtil.GetImagePath();
                });
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.AppendLine(Lan.g(this, "The following images will need to be manually imported with the same file name when importing this "
                                            + "sheet to a new environment."));
                strBuilder.AppendLine();
                listFieldDefImages.ForEach(x => strBuilder.AppendLine(ODFileUtils.CombinePaths(sheetImagesPath, x.FieldName)));
                MsgBoxCopyPaste msgBox = new MsgBoxCopyPaste(strBuilder.ToString());
                msgBox.ShowDialog();
            }
            XmlSerializer serializer = new XmlSerializer(typeof(SheetDef));
            string        filename   = "SheetDefCustom.xml";

            if (ODBuild.IsWeb())
            {
                StringBuilder strbuild = new StringBuilder();
                using (XmlWriter writer = XmlWriter.Create(strbuild)) {
                    serializer.Serialize(writer, sheetdef);
                }
                ThinfinityUtils.ExportForDownload(filename, strbuild.ToString());
            }
            else
            {
                SaveFileDialog saveDlg = new SaveFileDialog();
                saveDlg.InitialDirectory = PrefC.GetString(PrefName.ExportPath);
                saveDlg.FileName         = filename;
                if (saveDlg.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                using (TextWriter writer = new StreamWriter(saveDlg.FileName)) {
                    serializer.Serialize(writer, sheetdef);
                }
            }
            MsgBox.Show(this, "Exported");
        }
コード例 #6
0
 private void FillImage()
 {
     textFullPath.Text = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), comboFieldName.Text);
     if (File.Exists(textFullPath.Text))
     {
         pictureBox.Image = Image.FromFile(textFullPath.Text);
         textWidth2.Text  = pictureBox.Image.Width.ToString();
         textHeight2.Text = pictureBox.Image.Height.ToString();
     }
     else
     {
         pictureBox.Image = null;
         textWidth2.Text  = "";
         textHeight2.Text = "";
     }
 }
コード例 #7
0
 private void LoadImagesToSheetDef(SheetDef sheetDefCur)
 {
     for (int j = 0; j < sheetDefCur.SheetFieldDefs.Count; j++)
     {
         try {
             if (sheetDefCur.SheetFieldDefs[j].FieldType == SheetFieldType.Image)
             {
                 string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), sheetDefCur.SheetFieldDefs[j].FieldName);
                 Image  img             = null;
                 if (sheetDefCur.SheetFieldDefs[j].FieldName == "Patient Info.gif")
                 {
                     img = Properties.Resources.Patient_Info;
                 }
                 else if (File.Exists(filePathAndName))
                 {
                     img = Image.FromFile(filePathAndName);
                 }
                 //sheetDefCur.SheetFieldDefs[j].ImageData=POut.Bitmap(new Bitmap(img),ImageFormat.Png);//Because that's what we did before. Review this later.
                 long fileByteSize = 0;
                 using (MemoryStream ms = new MemoryStream()) {
                     img.Save(ms, img.RawFormat);                            // done solely to compute the file size of the image
                     fileByteSize = ms.Length;
                 }
                 if (fileByteSize > 2000000)
                 {
                     //for large images greater that ~2MB use jpeg format for compression. Large images in the 4MB + range have difficulty being displayed. It could be an issue with MYSQL or ASP.NET
                     sheetDefCur.SheetFieldDefs[j].ImageData = POut.Bitmap(new Bitmap(img), ImageFormat.Jpeg);
                 }
                 else
                 {
                     sheetDefCur.SheetFieldDefs[j].ImageData = POut.Bitmap(new Bitmap(img), img.RawFormat);
                 }
             }
             else
             {
                 sheetDefCur.SheetFieldDefs[j].ImageData = "";                      // because null is not allowed
             }
         }
         catch (Exception ex) {
             sheetDefCur.SheetFieldDefs[j].ImageData = "";
             MessageBox.Show(ex.Message);
         }
     }
 }
コード例 #8
0
ファイル: FormSheetFieldImage.cs プロジェクト: nampn/ODental
 private void FillCombo()
 {
     if (PrefC.UsingAtoZfolder)
     {
         comboFieldName.Items.Clear();
         string[] files = Directory.GetFiles(SheetUtil.GetImagePath());
         for (int i = 0; i < files.Length; i++)
         {
             //remove some common offending file types (non image files)
             if (files[i].EndsWith("db") ||
                 files[i].EndsWith("doc") ||
                 files[i].EndsWith("pdf")
                 )
             {
                 continue;
             }
             comboFieldName.Items.Add(Path.GetFileName(files[i]));
         }
         //comboFieldName.Items.Add("Patient Info.gif");
     }
 }
コード例 #9
0
        ///<summary>Runs as the final step of loading the form, and also immediately after fields are moved down due to growth.</summary>
        private void LayoutFields()
        {
            panelMain.Controls.Clear();
            RichTextBox   textbox;          //has to be richtextbox due to MS bug that doesn't show cursor.
            FontStyle     style;
            SheetCheckBox checkbox;

            //first, draw images---------------------------------------------------------------------------------------
            //might change this to only happen once when first loading form:
            if (pictDraw != null)
            {
                if (panelMain.Controls.Contains(pictDraw))
                {
                    Controls.Remove(pictDraw);
                }
                pictDraw = null;
            }
            imgDraw  = null;
            pictDraw = new PictureBox();
            if (SheetCur.IsLandscape)
            {
                imgDraw         = new Bitmap(SheetCur.Height, SheetCur.Width);
                pictDraw.Width  = SheetCur.Height;
                pictDraw.Height = SheetCur.Width;
            }
            else
            {
                imgDraw         = new Bitmap(SheetCur.Width, SheetCur.Height);
                pictDraw.Width  = SheetCur.Width;
                pictDraw.Height = SheetCur.Height;
            }
            pictDraw.Location = new Point(0, 0);
            pictDraw.Image    = (Image)imgDraw.Clone();
            pictDraw.SizeMode = PictureBoxSizeMode.StretchImage;
            panelMain.Controls.Add(pictDraw);
            panelMain.SendToBack();
            Graphics pictGraphics = Graphics.FromImage(imgDraw);

            foreach (SheetField field in SheetCur.SheetFields)
            {
                if (field.FieldType != SheetFieldType.Image)
                {
                    continue;
                }
                string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), field.FieldName);
                Image  img             = null;
                if (field.FieldName == "Patient Info.gif")
                {
                    img = Properties.Resources.Patient_Info;
                }
                else if (File.Exists(filePathAndName))
                {
                    img = Image.FromFile(filePathAndName);
                }
                else
                {
                    continue;
                }
                pictGraphics.DrawImage(img, field.XPos, field.YPos, field.Width, field.Height);
            }
            pictGraphics.Dispose();
            //Set mouse events for the pictDraw
            pictDraw.MouseDown += new MouseEventHandler(pictDraw_MouseDown);
            pictDraw.MouseMove += new MouseEventHandler(pictDraw_MouseMove);
            pictDraw.MouseUp   += new MouseEventHandler(pictDraw_MouseUp);
            //draw drawings, rectangles, and lines-----------------------------------------------------------------------
            RefreshPanel();
            //draw textboxes----------------------------------------------------------------------------------------------
            foreach (SheetField field in SheetCur.SheetFields)
            {
                if (field.FieldType != SheetFieldType.InputField &&
                    field.FieldType != SheetFieldType.OutputText &&
                    field.FieldType != SheetFieldType.StaticText)
                {
                    continue;
                }
                textbox             = new RichTextBox();
                textbox.BorderStyle = BorderStyle.None;
                textbox.TabStop     = false;          //Only input fields allow tab stop (set below for input text).
                //textbox.Multiline=true;//due to MS malfunction at 9pt which cuts off the bottom of the text.
                if (field.FieldType == SheetFieldType.OutputText ||
                    field.FieldType == SheetFieldType.StaticText)
                {
                    //textbox.BackColor=Color.White;
                    //textbox.BackColor=Color.FromArgb(245,245,200);
                }
                else if (field.FieldType == SheetFieldType.InputField)
                {
                    textbox.BackColor = Color.FromArgb(245, 245, 200);
                    textbox.TabStop   = (field.TabOrder == 0?false:true);
                    textbox.TabIndex  = field.TabOrder;
                }
                textbox.Location   = new Point(field.XPos, field.YPos);
                textbox.Width      = field.Width;
                textbox.ScrollBars = RichTextBoxScrollBars.None;
                textbox.Text       = field.FieldValue;
                style = FontStyle.Regular;
                if (field.FontIsBold)
                {
                    style = FontStyle.Bold;
                }
                textbox.Font = new Font(field.FontName, field.FontSize, style);
                if (field.Height < textbox.Font.Height + 2)
                {
                    textbox.Multiline = false;
                    //textbox.AcceptsReturn=false;
                }
                else
                {
                    textbox.Multiline = true;
                    //textbox.AcceptsReturn=true;
                }
                textbox.Height = field.Height;
                //textbox.ScrollBars=RichTextBoxScrollBars.None;
                textbox.Tag          = field;
                textbox.TextChanged += new EventHandler(text_TextChanged);
                panelMain.Controls.Add(textbox);
                textbox.BringToFront();
            }
            //draw checkboxes----------------------------------------------------------------------------------------------
            foreach (SheetField field in SheetCur.SheetFields)
            {
                if (field.FieldType != SheetFieldType.CheckBox)
                {
                    continue;
                }
                checkbox = new SheetCheckBox();
                if (field.FieldValue == "X")
                {
                    checkbox.IsChecked = true;
                }
                checkbox.Location = new Point(field.XPos, field.YPos);
                checkbox.Width    = field.Width;
                checkbox.Height   = field.Height;
                checkbox.Tag      = field;
                checkbox.Click   += new EventHandler(text_TextChanged);
                checkbox.TabStop  = (field.TabOrder == 0?false:true);
                checkbox.TabIndex = field.TabOrder;
                panelMain.Controls.Add(checkbox);
                checkbox.BringToFront();
            }
            //draw signature boxes----------------------------------------------------------------------------------------------
            foreach (SheetField field in SheetCur.SheetFields)
            {
                if (field.FieldType != SheetFieldType.SigBox)
                {
                    continue;
                }
                OpenDental.UI.SignatureBoxWrapper sigBox = new OpenDental.UI.SignatureBoxWrapper();
                sigBox.Location = new Point(field.XPos, field.YPos);
                sigBox.Width    = field.Width;
                sigBox.Height   = field.Height;
                if (field.FieldValue.Length > 0)               //a signature is present
                {
                    bool sigIsTopaz = false;
                    if (field.FieldValue[0] == '1')
                    {
                        sigIsTopaz = true;
                    }
                    string signature = "";
                    if (field.FieldValue.Length > 1)
                    {
                        signature = field.FieldValue.Substring(1);
                    }
                    string keyData = Sheets.GetSignatureKey(SheetCur);
                    sigBox.FillSignature(sigIsTopaz, keyData, signature);
                }
                sigBox.Tag      = field;
                sigBox.TabStop  = (field.TabOrder == 0?false:true);
                sigBox.TabIndex = field.TabOrder;
                panelMain.Controls.Add(sigBox);
                sigBox.BringToFront();
            }
        }
コード例 #10
0
        private void butImport_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Multiselect = false;
            if (dlg.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            if (!File.Exists(dlg.FileName))
            {
                MsgBox.Show(this, "File does not exist.");
                return;
            }
            if (!ImageHelper.HasImageExtension(dlg.FileName))
            {
                MsgBox.Show(this, "Only allowed to import an image.");
                return;
            }
            string newName = dlg.FileName;

            if (PrefC.AtoZfolderUsed == DataStorageType.LocalAtoZ)
            {
                newName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), Path.GetFileName(dlg.FileName));
                if (File.Exists(newName))
                {
                    MsgBox.Show(this, "A file of that name already exists in SheetImages.  Please rename the file before importing.");
                    return;
                }
                File.Copy(dlg.FileName, newName);
            }
            else if (CloudStorage.IsCloudStorage)
            {
                if (CloudStorage.FileExists(ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), Path.GetFileName(dlg.FileName))))
                {
                    MsgBox.Show(this, "A file of that name already exists in SheetImages.  Please rename the file before importing.");
                    return;
                }
                FormProgress FormP = new FormProgress();
                FormP.DisplayText          = Lan.g(CloudStorage.LanThis, "Uploading...");
                FormP.NumberFormat         = "F";
                FormP.NumberMultiplication = 1;
                FormP.MaxVal = 100;              //Doesn't matter what this value is as long as it is greater than 0
                FormP.TickMS = 1000;
                OpenDentalCloud.Core.TaskStateUpload state = CloudStorage.UploadAsync(SheetUtil.GetImagePath(), Path.GetFileName(dlg.FileName)
                                                                                      , File.ReadAllBytes(dlg.FileName)
                                                                                      , new OpenDentalCloud.ProgressHandler(FormP.OnProgress));
                if (FormP.ShowDialog() == DialogResult.Cancel)
                {
                    state.DoCancel = true;
                    return;
                }
                newName = Path.GetFileName(dlg.FileName);
                //It would be nice to save the image somewhere so that we don't have to download it again.
            }
            FillCombo();
            for (int i = 0; i < comboFieldName.Items.Count; i++)
            {
                if (comboFieldName.Items[i].ToString() == Path.GetFileName(newName))
                {
                    comboFieldName.SelectedIndex = i;
                    comboFieldName.Text          = Path.GetFileName(newName);
                    FillImage();
                    ShrinkToFit();
                }
            }
        }
コード例 #11
0
 private void FillImage()
 {
     if (comboFieldName.Text == "")
     {
         return;
     }
     if (CloudStorage.IsCloudStorage)
     {
         textFullPath.Text = CloudStorage.PathTidy(ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), comboFieldName.Text));
     }
     else
     {
         textFullPath.Text = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), comboFieldName.Text);
     }
     if (PrefC.AtoZfolderUsed == DataStorageType.LocalAtoZ && File.Exists(textFullPath.Text))
     {
         GC.Collect();
         try {
             pictureBox.Image = Image.FromFile(textFullPath.Text);
         }
         catch {
             pictureBox.Image = null;
             MsgBox.Show(this, "Invalid image type.");
         }
     }
     else if (comboFieldName.Text == "Patient Info.gif")           //Interal image
     {
         pictureBox.Image  = OpenDentBusiness.Properties.Resources.Patient_Info;
         textFullPath.Text = "Patient Info.gif (internal)";
     }
     else if (CloudStorage.IsCloudStorage)
     {
         if (comboFieldName.Text == SheetFieldDefCur.FieldName && SheetFieldDefCur.ImageField != null)
         {
             pictureBox.Image = SheetFieldDefCur.ImageField;
         }
         else
         {
             FormProgress FormP = new FormProgress();
             FormP.DisplayText          = Lan.g(CloudStorage.LanThis, "Downloading...");
             FormP.NumberFormat         = "F";
             FormP.NumberMultiplication = 1;
             FormP.MaxVal = 100;                  //Doesn't matter what this value is as long as it is greater than 0
             FormP.TickMS = 1000;
             OpenDentalCloud.Core.TaskStateDownload state = CloudStorage.DownloadAsync(SheetUtil.GetImagePath(), comboFieldName.Text,
                                                                                       new OpenDentalCloud.ProgressHandler(FormP.OnProgress));
             if (FormP.ShowDialog() == DialogResult.Cancel)
             {
                 state.DoCancel = true;
                 return;
             }
             if (state == null || state.FileContent == null)
             {
                 pictureBox.Image = null;
             }
             else
             {
                 using (MemoryStream stream = new MemoryStream(state.FileContent)) {
                     pictureBox.Image = new Bitmap(Image.FromStream(stream));
                 }
             }
         }
     }
     else
     {
         pictureBox.Image = null;
     }
     if (pictureBox.Image == null)
     {
         textWidth2.Text  = "";
         textHeight2.Text = "";
     }
     else
     {
         textWidth2.Text  = pictureBox.Image.Width.ToString();
         textHeight2.Text = pictureBox.Image.Height.ToString();
     }
 }
コード例 #12
0
        public static void CreatePdfPage(Sheet sheet, PdfPage page)
        {
            page.Width  = p(sheet.Width);         //XUnit.FromInch((double)sheet.Width/100);  //new XUnit((double)sheet.Width/100,XGraphicsUnit.Inch);
            page.Height = p(sheet.Height);        //new XUnit((double)sheet.Height/100,XGraphicsUnit.Inch);
            if (sheet.IsLandscape)
            {
                page.Orientation = PageOrientation.Landscape;
            }
            XGraphics g = XGraphics.FromPdfPage(page);

            g.SmoothingMode = XSmoothingMode.HighQuality;
            //g.PageUnit=XGraphicsUnit. //wish they had pixel
            //XTextFormatter tf = new XTextFormatter(g);//needed for text wrap
            //tf.Alignment=XParagraphAlignment.Left;
            //pd.DefaultPageSettings.Landscape=
            //already done?:SheetUtil.CalculateHeights(sheet,g);//this is here because of easy access to g.
            XFont      xfont;
            XFontStyle xfontstyle;

            //first, draw images--------------------------------------------------------------------------------------
            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.Image)
                {
                    continue;
                }
                string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), field.FieldName);
                Bitmap bitmapOriginal  = null;
                if (field.FieldName == "Patient Info.gif")
                {
                    bitmapOriginal = Properties.Resources.Patient_Info;
                }
                else if (File.Exists(filePathAndName))
                {
                    bitmapOriginal = new Bitmap(filePathAndName);
                }
                else
                {
                    continue;
                }
                Bitmap bitmapResampled = (Bitmap)bitmapOriginal.Clone();
                if (bitmapOriginal.HorizontalResolution != 96 || bitmapOriginal.VerticalResolution != 96)            //to avoid slowdown for other pdfs
                //The scaling on the XGraphics.DrawImage() function causes unreadable output unless the image is in 96 DPI native format.
                //We use GDI here first to convert the image to the correct size and DPI, then pass the second image to XGraphics.DrawImage().
                {
                    bitmapResampled.Dispose();
                    bitmapResampled = null;
                    bitmapResampled = new Bitmap(field.Width, field.Height);
                    Graphics gr = Graphics.FromImage(bitmapResampled);
                    gr.DrawImage(bitmapOriginal, 0, 0, field.Width, field.Height);
                    gr.Dispose();
                }
                g.DrawImage(bitmapResampled, p(field.XPos), p(field.YPos), p(field.Width), p(field.Height));
                bitmapResampled.Dispose();
                bitmapResampled = null;
                bitmapOriginal.Dispose();
                bitmapOriginal = null;
            }
            //then, drawings--------------------------------------------------------------------------------------------
            XPen pen = new XPen(XColors.Black, p(2));

            string[]     pointStr;
            List <Point> points;
            Point        point;

            string[] xy;
            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.Drawing)
                {
                    continue;
                }
                pointStr = field.FieldValue.Split(';');
                points   = new List <Point>();
                for (int j = 0; j < pointStr.Length; j++)
                {
                    xy = pointStr[j].Split(',');
                    if (xy.Length == 2)
                    {
                        point = new Point(PIn.Int(xy[0]), PIn.Int(xy[1]));
                        points.Add(point);
                    }
                }
                for (int i = 1; i < points.Count; i++)
                {
                    g.DrawLine(pen, p(points[i - 1].X), p(points[i - 1].Y), p(points[i].X), p(points[i].Y));
                }
            }
            //then, rectangles and lines----------------------------------------------------------------------------------
            XPen pen2 = new XPen(XColors.Black, p(1));

            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType == SheetFieldType.Rectangle)
                {
                    g.DrawRectangle(pen2, p(field.XPos), p(field.YPos), p(field.Width), p(field.Height));
                }
                if (field.FieldType == SheetFieldType.Line)
                {
                    g.DrawLine(pen2, p(field.XPos), p(field.YPos),
                               p(field.XPos + field.Width),
                               p(field.YPos + field.Height));
                }
            }
            //then, draw text--------------------------------------------------------------------------------------------
            Bitmap   doubleBuffer = new Bitmap(sheet.Width, sheet.Height);
            Graphics gfx          = Graphics.FromImage(doubleBuffer);

            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.InputField &&
                    field.FieldType != SheetFieldType.OutputText &&
                    field.FieldType != SheetFieldType.StaticText)
                {
                    continue;
                }
                xfontstyle = XFontStyle.Regular;
                if (field.FontIsBold)
                {
                    xfontstyle = XFontStyle.Bold;
                }
                xfont = new XFont(field.FontName, field.FontSize, xfontstyle);
                //xfont=new XFont(field.FontName,field.FontSize,xfontstyle);
                //Rectangle rect=new Rectangle((int)p(field.XPos),(int)p(field.YPos),(int)p(field.Width),(int)p(field.Height));
                XRect xrect = new XRect(p(field.XPos), p(field.YPos), p(field.Width), p(field.Height));
                //XStringFormat format=new XStringFormat();
                //tf.DrawString(field.FieldValue,font,XBrushes.Black,xrect,XStringFormats.TopLeft);
                GraphicsHelper.DrawStringX(g, gfx, 1d / p(1), field.FieldValue, xfont, XBrushes.Black, xrect);
            }
            gfx.Dispose();
            //then, checkboxes----------------------------------------------------------------------------------
            XPen pen3 = new XPen(XColors.Black, p(1.6f));

            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.CheckBox)
                {
                    continue;
                }
                if (field.FieldValue == "X")
                {
                    g.DrawLine(pen3, p(field.XPos), p(field.YPos), p(field.XPos + field.Width), p(field.YPos + field.Height));
                    g.DrawLine(pen3, p(field.XPos + field.Width), p(field.YPos), p(field.XPos), p(field.YPos + field.Height));
                }
            }
            //then signature boxes----------------------------------------------------------------------
            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.SigBox)
                {
                    continue;
                }
                SignatureBoxWrapper wrapper = new SignatureBoxWrapper();
                wrapper.Width  = field.Width;
                wrapper.Height = field.Height;
                if (field.FieldValue.Length > 0)              //a signature is present
                {
                    bool sigIsTopaz = false;
                    if (field.FieldValue[0] == '1')
                    {
                        sigIsTopaz = true;
                    }
                    string signature = "";
                    if (field.FieldValue.Length > 1)
                    {
                        signature = field.FieldValue.Substring(1);
                    }
                    string keyData = Sheets.GetSignatureKey(sheet);
                    wrapper.FillSignature(sigIsTopaz, keyData, signature);
                }
                XImage sigBitmap = XImage.FromGdiPlusImage(wrapper.GetSigImage());
                g.DrawImage(sigBitmap, p(field.XPos), p(field.YPos), p(field.Width - 2), p(field.Height - 2));
            }
        }
コード例 #13
0
        private static void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Graphics g = e.Graphics;

            g.SmoothingMode = SmoothingMode.HighQuality;
            Sheet sheet = SheetList[sheetsPrinted];

            SheetUtil.CalculateHeights(sheet, g);           //this is here because of easy access to g.
            Font      font;
            FontStyle fontstyle;

            //first, draw images------------------------------------------------------------------------------------
            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.Image)
                {
                    continue;
                }
                string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), field.FieldName);
                Image  img             = null; //js consider switching this from an image to a bitmap
                if (field.FieldName == "Patient Info.gif")
                {
                    img = Properties.Resources.Patient_Info;
                }
                else if (File.Exists(filePathAndName))
                {
                    img = Image.FromFile(filePathAndName);
                }
                else
                {
                    continue;
                }
                g.DrawImage(img, field.XPos, field.YPos, field.Width, field.Height);
                img.Dispose();
                img = null;
            }
            //then, drawings--------------------------------------------------------------------------------------------
            Pen pen = new Pen(Brushes.Black, 2f);

            string[]     pointStr;
            List <Point> points;
            Point        point;

            string[] xy;
            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.Drawing)
                {
                    continue;
                }
                pointStr = field.FieldValue.Split(';');
                points   = new List <Point>();
                for (int p = 0; p < pointStr.Length; p++)
                {
                    xy = pointStr[p].Split(',');
                    if (xy.Length == 2)
                    {
                        point = new Point(PIn.Int(xy[0]), PIn.Int(xy[1]));
                        points.Add(point);
                    }
                }
                for (int i = 1; i < points.Count; i++)
                {
                    g.DrawLine(pen, points[i - 1].X, points[i - 1].Y, points[i].X, points[i].Y);
                }
            }
            //then, rectangles and lines----------------------------------------------------------------------------------
            Pen pen2 = new Pen(Brushes.Black, 1f);

            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType == SheetFieldType.Rectangle)
                {
                    g.DrawRectangle(pen2, field.XPos, field.YPos, field.Width, field.Height);
                }
                if (field.FieldType == SheetFieldType.Line)
                {
                    g.DrawLine(pen2, field.XPos, field.YPos,
                               field.XPos + field.Width,
                               field.YPos + field.Height);
                }
            }
            //then, draw text-----------------------------------------------------------------------------------------------
            Bitmap   doubleBuffer = new Bitmap(sheet.Width, sheet.Height);
            Graphics gfx          = Graphics.FromImage(doubleBuffer);

            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.InputField &&
                    field.FieldType != SheetFieldType.OutputText &&
                    field.FieldType != SheetFieldType.StaticText)
                {
                    continue;
                }
                fontstyle = FontStyle.Regular;
                if (field.FontIsBold)
                {
                    fontstyle = FontStyle.Bold;
                }
                font = new Font(field.FontName, field.FontSize, fontstyle);
                Plugins.HookAddCode(null, "SheetPrinting.pd_PrintPage_drawFieldLoop", field);
                GraphicsHelper.DrawString(g, gfx, field.FieldValue, font, Brushes.Black, field.Bounds);
                //g.DrawString(field.FieldValue,font,Brushes.Black,field.BoundsF);
            }
            gfx.Dispose();
            //then, checkboxes----------------------------------------------------------------------------------
            Pen pen3 = new Pen(Brushes.Black, 1.6f);

            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.CheckBox)
                {
                    continue;
                }
                if (field.FieldValue == "X")
                {
                    g.DrawLine(pen3, field.XPos, field.YPos, field.XPos + field.Width, field.YPos + field.Height);
                    g.DrawLine(pen3, field.XPos + field.Width, field.YPos, field.XPos, field.YPos + field.Height);
                }
            }
            //then signature boxes----------------------------------------------------------------------
            foreach (SheetField field in sheet.SheetFields)
            {
                if (field.FieldType != SheetFieldType.SigBox)
                {
                    continue;
                }
                SignatureBoxWrapper wrapper = new SignatureBoxWrapper();
                wrapper.Width  = field.Width;
                wrapper.Height = field.Height;
                if (field.FieldValue.Length > 0)              //a signature is present
                {
                    bool sigIsTopaz = false;
                    if (field.FieldValue[0] == '1')
                    {
                        sigIsTopaz = true;
                    }
                    string signature = "";
                    if (field.FieldValue.Length > 1)
                    {
                        signature = field.FieldValue.Substring(1);
                    }
                    string keyData = Sheets.GetSignatureKey(sheet);
                    wrapper.FillSignature(sigIsTopaz, keyData, signature);
                }
                Bitmap sigBitmap = wrapper.GetSigImage();
                g.DrawImage(sigBitmap, field.XPos, field.YPos, field.Width - 2, field.Height - 2);
            }
            g.Dispose();
            //no logic yet for multiple pages on one sheet.
            sheetsPrinted++;
            //heightsCalculated=false;
            if (sheetsPrinted < SheetList.Count)
            {
                e.HasMorePages = true;
            }
            else
            {
                e.HasMorePages = false;
                sheetsPrinted  = 0;
            }
        }
コード例 #14
0
ファイル: WebFormL.cs プロジェクト: royedwards/DRDNet
 public static void LoadImagesToSheetDef(SheetDef sheetDefCur)
 {
     for (int j = 0; j < sheetDefCur.SheetFieldDefs.Count; j++)
     {
         try {
             if (sheetDefCur.SheetFieldDefs[j].FieldType == SheetFieldType.Image)
             {
                 string      filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), sheetDefCur.SheetFieldDefs[j].FieldName);
                 Image       img             = null;
                 ImageFormat imgFormat       = null;
                 if (sheetDefCur.SheetFieldDefs[j].ImageField != null)                       //The image has already been downloaded.
                 {
                     img       = new Bitmap(sheetDefCur.SheetFieldDefs[j].ImageField);
                     imgFormat = ImageFormat.Bmp;
                 }
                 else if (sheetDefCur.SheetFieldDefs[j].FieldName == "Patient Info.gif")
                 {
                     img       = OpenDentBusiness.Properties.Resources.Patient_Info;
                     imgFormat = img.RawFormat;
                 }
                 else if (PrefC.AtoZfolderUsed == DataStorageType.LocalAtoZ && File.Exists(filePathAndName))
                 {
                     img       = Image.FromFile(filePathAndName);
                     imgFormat = img.RawFormat;
                 }
                 else if (CloudStorage.IsCloudStorage)
                 {
                     OpenDentalCloud.Core.TaskStateDownload state = CloudStorage.Download(SheetUtil.GetImagePath(), sheetDefCur.SheetFieldDefs[j].FieldName);
                     if (state == null || state.FileContent == null)
                     {
                         throw new Exception(Lan.g(CloudStorage.LanThis, "Unable to download image."));
                     }
                     else
                     {
                         using (MemoryStream stream = new MemoryStream(state.FileContent)) {
                             img = new Bitmap(Image.FromStream(stream));
                         }
                         imgFormat = ImageFormat.Bmp;
                     }
                 }
                 //sheetDefCur.SheetFieldDefs[j].ImageData=POut.Bitmap(new Bitmap(img),ImageFormat.Png);//Because that's what we did before. Review this later.
                 long fileByteSize = 0;
                 using (MemoryStream ms = new MemoryStream()) {
                     img.Save(ms, imgFormat);                            // done solely to compute the file size of the image
                     fileByteSize = ms.Length;
                 }
                 if (fileByteSize > 2000000)
                 {
                     //for large images greater that ~2MB use jpeg format for compression. Large images in the 4MB + range have difficulty being displayed. It could be an issue with MYSQL or ASP.NET
                     sheetDefCur.SheetFieldDefs[j].ImageData = POut.Bitmap(new Bitmap(img), ImageFormat.Jpeg);
                 }
                 else
                 {
                     sheetDefCur.SheetFieldDefs[j].ImageData = POut.Bitmap(new Bitmap(img), imgFormat);
                 }
             }
             else
             {
                 sheetDefCur.SheetFieldDefs[j].ImageData = "";                      // because null is not allowed
             }
         }
         catch (Exception ex) {
             sheetDefCur.SheetFieldDefs[j].ImageData = "";
             MessageBox.Show(ex.Message);
         }
     }
 }