예제 #1
0
        public bloFont setFont(bloFont font)
        {
            bloFont oldFont = mFont;

            mFont = font;
            return(oldFont);
        }
예제 #2
0
        protected override void loadBlo1(aBinaryReader reader)
        {
            base.loadBlo1(reader);

            var finder = bloResourceFinder.getFinder();

            int numparams = reader.Read8();

            mFont = finder.find <bloResFont>(reader, "font");

            mTopColor    = new bloColor(reader.Read32());
            mBottomColor = new bloColor(reader.Read32());

            int binding = reader.Read8();

            mHBinding = (bloTextboxHBinding)((binding >> 2) & 3);
            mVBinding = (bloTextboxVBinding)((binding >> 0) & 3);

            mFontSpacing = reader.ReadS16();
            mFontLeading = reader.ReadS16();
            mFontWidth   = reader.Read16();
            mFontHeight  = reader.Read16();

            int strlen = reader.Read16();

            setString(reader.Read8s(strlen));

            numparams -= 10;

            if (numparams > 0)
            {
                if (reader.Read8() != 0)
                {
                    setConnectParent(true);
                }
                --numparams;
            }

            if (numparams > 0)
            {
                mFromColor = new bloColor(reader.Read32());
                --numparams;
            }
            else
            {
                mFromColor = new bloColor(bloColor.cZero);
            }

            if (numparams > 0)
            {
                mToColor = new bloColor(reader.Read32());
                --numparams;
            }
            else
            {
                mToColor = new bloColor(bloColor.cOne);
            }

            reader.Skip(4);
        }
예제 #3
0
 public static ushort[] loadTextBuffer(xElement element, bloFont font)
 {
     if (element == null || font == null)
     {
         return(new ushort[0]);
     }
     return(font.encode(element.Value));
 }
예제 #4
0
 public bloTextbox(uint name, bloRectangle rectangle, bloFont font, string text, bloTextboxHBinding hbind, bloTextboxVBinding vbind)
 {
     mName     = name;
     mRect     = rectangle;
     mFont     = font;
     mHBinding = hbind;
     mVBinding = vbind;
     setString(text);
 }
예제 #5
0
 internal bloTextbox()
 {
     mFont        = null;
     mText        = new ushort[0];
     mFromColor   = new bloColor(bloColor.cZero);
     mToColor     = new bloColor(bloColor.cOne);
     mTopColor    = new bloColor(bloColor.cWhite);
     mBottomColor = new bloColor(bloColor.cWhite);
 }
예제 #6
0
        protected override void loadCompact(aBinaryReader reader)
        {
            base.loadCompact(reader);

            var finder = bloResourceFinder.getFinder();

            mFont = finder.find <bloResFont>(reader, "font");

            mTopColor    = new bloColor(reader.Read32());
            mBottomColor = new bloColor(reader.Read32());

            int hbinding = reader.Read8();

            mHBinding = (bloTextboxHBinding)(hbinding & 127);
            mVBinding = (bloTextboxVBinding)reader.Read8();

            if ((hbinding & 0x80) != 0)
            {
                mFontSpacing = reader.ReadS16();
                mFontLeading = reader.ReadS16();
                mFontWidth   = reader.Read16();
                mFontHeight  = reader.Read16();
            }
            else if (mFont != null)
            {
                mFontSpacing = 0;
                mFontLeading = mFont.getLeading();
                mFontWidth   = mFont.getWidth();
                mFontHeight  = mFont.getHeight();
            }
            else
            {
                mFontSpacing = 0;
                mFontLeading = 0;
                mFontWidth   = 0;
                mFontHeight  = 0;
            }

            int strlen = reader.Read16();

            setString(reader.Read8s(strlen));

            mFromColor = new bloColor(bloColor.cZero);
            mToColor   = new bloColor(bloColor.cOne);

            reader.Skip(4);
        }
예제 #7
0
        public static void saveTextBuffer(XmlWriter writer, ushort[] buffer, bloFont font, string name)
        {
            if (font == null)
            {
                return;
            }
            writer.WriteStartElement(name);
            var text    = font.decodeToUtf16(buffer);
            var sbuffer = new StringBuilder(text.Length);

            for (int i = 0; i < text.Length; ++i)
            {
                if (Char.IsHighSurrogate(text[i]))
                {
                    if (i < (text.Length - 1) && Char.IsLowSurrogate(text[++i]))
                    {
                        if (sbuffer.Length > 0)
                        {
                            writer.WriteString(sbuffer.ToString());
                            sbuffer.Clear();
                        }
                        writer.WriteSurrogateCharEntity(text[i], text[i - 1]);
                    }
                    continue;
                }
                else if (Char.IsControl(text[i]))
                {
                    if (sbuffer.Length > 0)
                    {
                        writer.WriteString(sbuffer.ToString());
                        sbuffer.Clear();
                    }
                    writer.WriteCharEntity(text[i]);
                }
                else
                {
                    sbuffer.Append(text[i]);
                }
            }
            if (sbuffer.Length > 0)
            {
                writer.WriteString(sbuffer.ToString());
                sbuffer.Clear();
            }
            writer.WriteEndElement();
        }
예제 #8
0
        protected override void loadXml(xElement element)
        {
            base.loadXml(element);

            var finder = bloResourceFinder.getFinder();

            mFont = finder.find <bloResFont>(element.Element("font"), "font");

            mText = bloXml.loadTextBuffer(element.Element("text"), mFont);

            var white  = new bloColor(bloColor.cWhite);
            var colors = element.Element("colors");

            mTopColor    = bloXml.loadColor(colors.Element("top"), white);
            mBottomColor = bloXml.loadColor(colors.Element("bottom"), white);

            var binding = element.Element("binding");

            if (!Enum.TryParse <bloTextboxHBinding>(binding.Element("horizontal"), true, out mHBinding))
            {
                mHBinding = bloTextboxHBinding.Left;
            }

            if (!Enum.TryParse <bloTextboxVBinding>(binding.Element("vertical"), true, out mVBinding))
            {
                mVBinding = bloTextboxVBinding.Top;
            }

            var typesetting = element.Element("typesetting");
            int leading     = (mFont != null ? mFont.getLeading() : 20);
            int width       = (mFont != null ? mFont.getWidth() : 20);
            int height      = (mFont != null ? mFont.getHeight() : 20);

            mFontSpacing = (typesetting.Element("spacing") | 0);
            mFontLeading = (typesetting.Element("leading") | leading);
            mFontWidth   = (typesetting.Element("width") | width);
            mFontHeight  = (typesetting.Element("height") | height);

            bloXml.loadGradient(element.Element("gradient"), out mFromColor, out mToColor);
        }
예제 #9
0
 void initialize(bloFont font, int spacing, int leading, bloColor topColor, bloColor bottomColor)
 {
     mFont          = font;
     mState.spacing = spacing;
     if (mFont != null)
     {
         mState.leading = (leading != Int32.MinValue ? leading : mFont.getLeading());
     }
     else
     {
         mState.leading = 32;
     }
     mState.gradientMode = true;
     mState.topColor     = topColor;
     mState.bottomColor  = bottomColor;
     mFromColor          = new bloColor(bloColor.cZero);
     mToColor            = new bloColor(bloColor.cOne);
     if (mFont != null)
     {
         mState.tabWidth = (short)(mFont.getWidth() * 4);
     }
     else
     {
         mState.tabWidth = 80;
     }
     if (mFont != null)
     {
         setFontSize();
         mFont.setGL(mFromColor, mToColor);
     }
     else
     {
         mState.fontWidth  = Int32.MinValue;
         mState.fontHeight = Int32.MinValue;
     }
     locate(0, 0);
     initchar();
 }
예제 #10
0
 public bloPrint(bloFont font, int spacing, int leading, bloColor topColor, bloColor bottomColor)
 {
     initialize(font, spacing, leading, topColor, bottomColor);
 }
예제 #11
0
 public bloPrint(bloFont font, int spacing, bloColor topColor, bloColor bottomColor)
 {
     initialize(font, spacing, Int32.MinValue, topColor, bottomColor);
 }
예제 #12
0
        public bloPrint(bloFont font, int spacing, int leading)
        {
            var white = new bloColor(bloColor.cWhite);

            initialize(font, spacing, leading, white, white);
        }
예제 #13
0
        public bloPrint(bloFont font, int spacing)
        {
            var white = new bloColor(bloColor.cWhite);

            initialize(font, spacing, Int32.MinValue, white, white);
        }