Example #1
0
            private static bool StringFormatsEqual(StringFormat lhs, StringFormat rhs)
            {
                if (lhs == rhs)
                {
                    return(true);
                }

                if (lhs.Alignment != rhs.Alignment)
                {
                    return(false);
                }
                if (lhs.DigitSubstitutionLanguage != rhs.DigitSubstitutionLanguage)
                {
                    return(false);
                }
                if (lhs.DigitSubstitutionMethod != rhs.DigitSubstitutionMethod)
                {
                    return(false);
                }
                if (lhs.FormatFlags != rhs.FormatFlags)
                {
                    return(false);
                }
                if (lhs.HotkeyPrefix != rhs.HotkeyPrefix)
                {
                    return(false);
                }
                if (lhs.LineAlignment != rhs.LineAlignment)
                {
                    return(false);
                }
                if (lhs.Trimming != rhs.Trimming)
                {
                    return(false);
                }

                float flhs;
                var   lhst = lhs.GetTabStops(out flhs);
                float frhs;
                var   rhst = lhs.GetTabStops(out frhs);

                if (flhs != frhs)
                {
                    return(false);
                }

                if (lhst.Length != rhst.Length)
                {
                    return(false);
                }
                for (var i = 0; i < lhst.Length; i++)
                {
                    if (lhst[i] != rhst[i])
                    {
                        return(false);
                    }
                }

                return(true);
            }
        public void Clone_Complex()
        {
            using (StringFormat sf = new StringFormat()) {
                CharacterRange[] ranges = new CharacterRange [2];
                ranges[0].First  = 1;
                ranges[0].Length = 2;
                ranges[1].First  = 3;
                ranges[1].Length = 4;
                sf.SetMeasurableCharacterRanges(ranges);

                float[] stops = new float [2];
                stops [0] = 6.0f;
                stops [1] = 7.0f;
                sf.SetTabStops(5.0f, stops);

                using (StringFormat clone = (StringFormat)sf.Clone()) {
                    CheckDefaults(clone);

                    float   first;
                    float[] cloned_stops = clone.GetTabStops(out first);
                    Assert.AreEqual(5.0f, first, "first");
                    Assert.AreEqual(6.0f, cloned_stops[0], "cloned_stops[0]");
                    Assert.AreEqual(7.0f, cloned_stops[1], "cloned_stops[1]");
                }
            }
        }
        public void TabsStops()
        {
            using (StringFormat smf = new StringFormat()) {
                float   firstTabOffset;
                float[] tabsSrc = { 100, 200, 300, 400 };
                float[] tabStops;

                smf.SetTabStops(200, tabsSrc);
                tabStops = smf.GetTabStops(out firstTabOffset);

                Assert.AreEqual(200, firstTabOffset);
                Assert.AreEqual(tabsSrc.Length, tabStops.Length);
                Assert.AreEqual(tabsSrc[0], tabStops[0]);
                Assert.AreEqual(tabsSrc[1], tabStops[1]);
                Assert.AreEqual(tabsSrc[2], tabStops[2]);
                Assert.AreEqual(tabsSrc[3], tabStops[3]);
            }
        }
Example #4
0
        internal void saveStringFormat(StringFormat sf)
        {
            if (sf == null)
            {
                writer.Write((int)0);
                return;
            }
            writer.Write((int)1);

            StringAlignment       al;
            int                   dsl;
            StringDigitSubstitute dsm;
            StringFormatFlags     sff;

            System.Drawing.Text.HotkeyPrefix hp;
            StringAlignment lal;
            StringTrimming  tr;
            float           fto;

            float[] ts;

            al  = sf.Alignment;
            dsl = sf.DigitSubstitutionLanguage;
            dsm = sf.DigitSubstitutionMethod;
            sff = sf.FormatFlags;
            hp  = sf.HotkeyPrefix;
            lal = sf.LineAlignment;
            tr  = sf.Trimming;
            ts  = sf.GetTabStops(out fto);

            writer.Write((int)al);
            writer.Write(dsl);
            writer.Write((int)dsm);
            writer.Write((int)sff);
            writer.Write((int)hp);
            writer.Write((int)lal);
            writer.Write((int)tr);
            writer.Write((double)fto);
            writer.Write(ts.GetLength(0));
            foreach (float f in ts)
            {
                writer.Write((double)f);
            }
        }
Example #5
0
        // Snippet for: M:System.Drawing.StringFormat.GetTabStops(System.Single@)
        // <snippet1>
        public void GetSetTabStopsExample1(PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            // Tools used for drawing, painting.
            Pen        redPen    = new Pen(Color.FromArgb(255, 255, 0, 0));
            SolidBrush blueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));

            // Layout and format for text.
            Font         myFont             = new Font("Times New Roman", 12);
            StringFormat myStringFormat     = new StringFormat();
            Rectangle    enclosingRectangle = new Rectangle(20, 20, 500, 100);

            float[] tabStops = { 150.0f, 100.0f, 100.0f };

            // Text with tabbed columns.
            string myString =
                "Name\tTab 1\tTab 2\tTab 3\nGeorge Brown\tOne\tTwo\tThree";

            // Set the tab stops, paint the text specified by myString, and draw the

            // rectangle that encloses the text.
            myStringFormat.SetTabStops(0.0f, tabStops);
            g.DrawString(myString, myFont, blueBrush,
                         enclosingRectangle, myStringFormat);
            g.DrawRectangle(redPen, enclosingRectangle);

            // Get the tab stops.
            float firstTabOffset;

            float[] tabStopsObtained = myStringFormat.GetTabStops(out firstTabOffset);
            for (int j = 0; j < tabStopsObtained.Length; j++)
            {
                // Inspect or use the value in tabStopsObtained[j].
                Console.WriteLine("\n  Tab stop {0} = {1}", j, tabStopsObtained[j]);
            }
        }
Example #6
0
            /// <summary>
            /// Gets a TextFormatFlags value from the specified StringFormat object.
            /// </summary>
            private static TextFormatFlags GetTextFormatFlagsFromStringFormat(StringFormat format)
            {
                TextFormatFlags glyphOverhangPadding = TextFormatFlags.GlyphOverhangPadding;

                if (format != null)
                {
                    float num;
                    if (format.GetTabStops(out num) != null)
                    {
                        glyphOverhangPadding |= TextFormatFlags.ExpandTabs;
                    }
                    if ((format.FormatFlags & StringFormatFlags.DirectionRightToLeft) != 0)
                    {
                        glyphOverhangPadding |= TextFormatFlags.RightToLeft;
                    }
                    if ((format.FormatFlags & StringFormatFlags.FitBlackBox) != 0)
                    {
                        glyphOverhangPadding |= TextFormatFlags.NoPadding;
                    }
                    if ((format.FormatFlags & StringFormatFlags.NoWrap) != 0)
                    {
                        glyphOverhangPadding |= TextFormatFlags.SingleLine;
                    }
                    else
                    {
                        glyphOverhangPadding |= TextFormatFlags.WordBreak;
                    }
                    if ((format.FormatFlags & StringFormatFlags.LineLimit) != 0)
                    {
                        glyphOverhangPadding |= TextFormatFlags.TextBoxControl;
                    }
                    switch (format.Alignment)
                    {
                    case StringAlignment.Center:
                        glyphOverhangPadding |= TextFormatFlags.HorizontalCenter;
                        break;

                    case StringAlignment.Far:
                        glyphOverhangPadding |= TextFormatFlags.Right;
                        break;

                    default:
                        //glyphOverhangPadding = glyphOverhangPadding;
                        break;
                    }
                    switch (format.LineAlignment)
                    {
                    case StringAlignment.Center:
                        glyphOverhangPadding |= TextFormatFlags.VerticalCenter;
                        break;

                    case StringAlignment.Far:
                        glyphOverhangPadding |= TextFormatFlags.Bottom;
                        break;

                    default:
                        //glyphOverhangPadding = glyphOverhangPadding;
                        break;
                    }
                    switch (format.Trimming)
                    {
                    case StringTrimming.EllipsisCharacter:
                        glyphOverhangPadding |= TextFormatFlags.EndEllipsis | TextFormatFlags.TextBoxControl;
                        break;

                    case StringTrimming.EllipsisWord:
                        glyphOverhangPadding |= TextFormatFlags.EndEllipsis | TextFormatFlags.TextBoxControl;
                        break;

                    case StringTrimming.EllipsisPath:
                        glyphOverhangPadding |= TextFormatFlags.PathEllipsis | TextFormatFlags.TextBoxControl;
                        break;

                    default:
                        if ((format.FormatFlags & StringFormatFlags.NoClip) != 0)
                        {
                            glyphOverhangPadding |= TextFormatFlags.NoClipping;
                        }
                        break;
                    }
                    switch (format.HotkeyPrefix)
                    {
                    case HotkeyPrefix.None:
                        return(glyphOverhangPadding | TextFormatFlags.NoPrefix);

                    case HotkeyPrefix.Show:
                        return(glyphOverhangPadding);

                    case HotkeyPrefix.Hide:
                        return(glyphOverhangPadding | TextFormatFlags.HidePrefix);
                    }
                }
                return(glyphOverhangPadding);
            }