コード例 #1
0
        public virtual byte[] GetContentBuffer(CodePages codepage)
        {
            if (string.IsNullOrEmpty(Content))
            {
                return(new byte[0]);
            }

            Encoding encoder;

            switch (codepage)
            {
            case CodePages.CP771:
                // This is the most similar to 771
                encoder = System.Text.Encoding.GetEncoding(866);
                break;

            case CodePages.CP437:
                encoder = System.Text.Encoding.GetEncoding(437);
                break;

            case CodePages.ASCII:
                Content = System.Text.RegularExpressions.Regex.Replace(Content,
                                                                       @"[^\u0020-\u007E]", string.Empty);
                encoder = System.Text.ASCIIEncoding.ASCII;
                break;

            default:
                encoder = System.Text.Encoding.GetEncoding(866);
                break;
            }

            return(encoder.GetBytes(Content));
        }
コード例 #2
0
 public TemplatePagesContext ScanType(Type type)
 {
     if (typeof(TemplateFilter).IsAssignableFromType(type))
     {
         Container.AddSingleton(type);
         var filter = (TemplateFilter)Container.Resolve(type);
         TemplateFilters.Add(filter);
     }
     else if (typeof(TemplateCode).IsAssignableFromType(type))
     {
         Container.AddSingleton(type);
         var codePage = (TemplateCode)Container.Resolve(type);
         CodePages.Add(codePage);
     }
     return(this);
 }
コード例 #3
0
        public SharpCodePage GetCodePage(string virtualPath)
        {
            var sanitizePath = virtualPath.Replace('\\', '/').TrimPrefixes("/").LastLeftPart('.');

            var isIndexPage = sanitizePath == string.Empty || sanitizePath.EndsWith("/");
            var lookupPath  = !isIndexPage
                ? sanitizePath
                : sanitizePath + IndexPage;

            if (!CodePages.TryGetValue(lookupPath, out Type type))
            {
                return(null);
            }

            var instance = (SharpCodePage)Container.Resolve(type);

            instance.Init();
            return(instance);
        }
コード例 #4
0
 /// <summary>
 /// REturns empty buffer
 /// </summary>
 /// <param name="codepage">Unused</param>
 /// <returns>zero length byte array</returns>
 public byte[] GetContentBuffer(CodePages codepage)
 {
     return(new byte[0]);
 }
コード例 #5
0
        private void CreatePreview()
        {
            var codePage = CodePages.GetCodePage(CodePageIdentifier.ISO_8859_1);

            var fontName = lstFonts.SelectedItem?.ToString() ?? "";
            var fontSize = (int)numFontSize.Value;

            var size   = int.Parse(cmbNextionFontSize.Text);
            var width  = size / 2;
            var height = size;

            var font = new Font(fontName, fontSize, GraphicsUnit.Pixel);

            var pPreviews = new List <Bitmap>();

            var bLightCoral = new SolidBrush(Color.LightCoral);
            var bLightGreen = new SolidBrush(Color.LightGreen);
            var bWhite      = new SolidBrush(Color.White);
            var bBlack      = new SolidBrush(Color.Black);

            foreach (var c in codePage.Characters)
            {
                var bPreview = new Bitmap(width, height);

                using (var gPreview = CreateGraphics(bPreview)) {
                    var sChar = gPreview.MeasureString(c.ToString(), font, new PointF(0, 0), StringFormat.GenericTypographic).ToSize();
                    if (sChar.Width == 0)
                    {
                        sChar.Width = 1;
                    }

                    var bChar = new Bitmap(sChar.Width, sChar.Height);

                    using (var gChar = CreateGraphics(bChar)) {
                        var sb = PreviewTest.Checked ?
                                 bChar.Width > bPreview.Width ? bLightCoral : bLightGreen :
                                 PreviewBW.Checked ? bWhite : bBlack;

                        gChar.FillRectangle(sb, 0, 0, sChar.Width, sChar.Height);

                        gChar.DrawString(c.ToString(), font,
                                         PreviewWB.Checked ? bWhite : bBlack,
                                         (float)numCharOffsetX.Value, (float)numCharOffsetY.Value, StringFormat.GenericTypographic
                                         );
                    }

                    gPreview.FillRectangle(PreviewTest.Checked ?
                                           bChar.Width > bPreview.Width ? bLightCoral : bLightGreen :
                                           PreviewBW.Checked ? bWhite : bBlack,
                                           0, 0, width, height);

                    if (bChar.Width > bPreview.Width)
                    {
                        gPreview.DrawImage(bChar, 0, 0, width, height);
                    }
                    else
                    {
                        gPreview.DrawImage(bChar, (width / 2) - (bChar.Width / 2), 0, bChar.Width, height);
                    }
                }

                pPreviews.Add(bPreview);
            }

            panelPreview.SuspendLayout();
            panelPreview.Controls.Clear();
            panelPreview.BackColor = PreviewTest.Checked ? Color.Transparent : PreviewBW.Checked ? Color.White : Color.Black;
            panelPreview.Controls.AddRange(
                pPreviews.Select(x => new PictureBox()
            {
                Width  = width,
                Height = height,
                Image  = x,
                Margin = new Padding(3)
            }).ToArray());
            panelPreview.ResumeLayout();

            ziFont = ZiFont.FromCharacterBitmaps(fontName + " " + cmbNextionFontSize.Text, (byte)width, (byte)height, codePage, pPreviews, PreviewWB.Checked);
        }
コード例 #6
0
 public abstract override byte[] GetContentBuffer(CodePages codepage);
コード例 #7
0
 /// <summary>
 /// Fetch this image in a format that Reliance understands
 /// </summary>
 /// <param name="codepage">Unused</param>
 /// <returns>byte array</returns>
 public override byte[] GetContentBuffer(CodePages codepage)
 {
     return(base.Image.GetAsRaster());
 }