Exemple #1
0
            protected void AddTextWithShadow(CanvasRenderer renderer, string text, Vector2 position, EHorizontalAlignment horizontalAlign,
                                             EVerticalAlignment verticalAlign, ColorValue color, double shadowOffsetInPixels)
            {
                Vector2 shadowOffset = shadowOffsetInPixels / Owner.ViewportControl.Viewport.SizeInPixels.ToVector2();

                renderer.AddText(null, GetFontSize(), text, position + shadowOffset, horizontalAlign, verticalAlign, new ColorValue(0, 0, 0, color.Alpha / 2.5f));
                renderer.AddText(null, GetFontSize(), text, position, horizontalAlign, verticalAlign, color);
            }
        public void AddTextLinesWithShadow(Component_Font font, double fontSize, IList <string> lines, Rectangle rectangle, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
        {
            if (lines.Count == 0)
            {
                return;
            }

            var renderer = ViewportControl.Viewport.CanvasRenderer;

            if (font == null || font.Disposed)
            {
                font = renderer.DefaultFont;
            }
            if (font == null || font.Disposed)
            {
                return;
            }
            //if( font == null )
            //	font = EditorFont;
            if (fontSize < 0)
            {
                fontSize = renderer.DefaultFontSize;
            }

            Vector2 shadowOffset = shadowDistanceInPixels / ViewportControl.Viewport.SizeInPixels.ToVector2();
            float   linesHeight  = (float)lines.Count * (float)fontSize;

            double posY = 0;

            switch (verticalAlign)
            {
            case EVerticalAlignment.Top:
                posY = rectangle.Top;
                break;

            case EVerticalAlignment.Center:
                posY = rectangle.Top + (rectangle.Size.Y - linesHeight) / 2;
                break;

            case EVerticalAlignment.Bottom:
                posY = rectangle.Bottom - linesHeight;
                break;
            }

            for (int n = 0; n < lines.Count; n++)
            {
                string line = lines[n];

                double posX = 0;
                switch (horizontalAlign)
                {
                case EHorizontalAlignment.Left:
                    posX = rectangle.Left;
                    break;

                case EHorizontalAlignment.Center:
                    posX = rectangle.Left + (rectangle.Size.X - font.GetTextLength(fontSize, renderer, line)) / 2;
                    break;

                case EHorizontalAlignment.Right:
                    posX = rectangle.Right - font.GetTextLength(fontSize, renderer, line);
                    break;
                }

                Vector2 position = new Vector2(posX, posY);

                renderer.AddText(font, fontSize, line, position + shadowOffset, EHorizontalAlignment.Left, EVerticalAlignment.Top, new ColorValue(0, 0, 0, color.Alpha / 2));
                renderer.AddText(font, fontSize, line, position, EHorizontalAlignment.Left, EVerticalAlignment.Top, color);
                posY += fontSize;
            }
        }
        //void CalculateFontSize()
        //{
        //	fontSizeInPixels = 12;

        //	float dpi = EditorAPI.DPI;
        //	if( dpi > 96 )
        //	{
        //		fontSizeInPixels *= dpi / 96;
        //		fontSizeInPixels = (int)fontSizeInPixels;
        //	}
        //}

        //[Browsable( false )]
        //public float FontSizeInPixels
        //{
        //	get { return fontSizeInPixels; }
        //	set { fontSizeInPixels = value; }
        //}

        //[Browsable( false )]
        //public EngineFont EditorFont
        //{
        //	get { return editorFont; }
        //}

        //void UpdateFontSize()
        //{
        //	var renderer = ViewportControl.Viewport.CanvasRenderer;

        //	int height = renderer.ViewportForScreenCanvasRenderer.SizeInPixels.Y;
        //	float screenCellSize = (float)fontSizeInPixels / (float)height;
        //	float demandFontHeight = screenCellSize;// * GetZoom();

        //	if( editorFont == null || editorFont.Height != demandFontHeight )
        //		editorFont = EngineFontManager.Instance.LoadFont( "Default", demandFontHeight );
        //}

        //!!!!!так? везде так
        public void AddTextWithShadow(Component_Font font, double fontSize, string text, Vector2 position, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
        {
            var renderer = ViewportControl.Viewport.CanvasRenderer;

            if (font == null || font.Disposed)
            {
                font = renderer.DefaultFont;
            }
            if (font == null || font.Disposed)
            {
                return;
            }
            //if( font == null )
            //	font = EditorFont;
            if (fontSize < 0)
            {
                fontSize = renderer.DefaultFontSize;
            }

            Vector2 shadowOffset = shadowDistanceInPixels / ViewportControl.Viewport.SizeInPixels.ToVector2();

            renderer.AddText(font, fontSize, text, position + shadowOffset, horizontalAlign, verticalAlign, new ColorValue(0, 0, 0, color.Alpha / 2));
            renderer.AddText(font, fontSize, text, position, horizontalAlign, verticalAlign, color);
        }
Exemple #4
0
 public extern void SetVerticalAlignment(EVerticalAlignment InVerticalAlignment);
 /// <summary>
 /// Adds text to rendering queue.
 /// </summary>
 /// <param name="font">The text font.</param>
 /// <param name="text">The text.</param>
 /// <param name="position">The text position.</param>
 /// <param name="horizontalAlign">The text horizontal align.</param>
 /// <param name="verticalAlign">The text vertical align.</param>
 /// <param name="color">The text color.</param>
 public void AddText(Component_Font font, double fontSize, string text, Vector2 position, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color, AddTextOptions options = AddTextOptions.PixelAlign)
 {
     AddText(font, fontSize, text, position.ToVector2F(), horizontalAlign, verticalAlign, color, options);
 }
Exemple #6
0
 public int AddTextWordWrapWithShadow(Component_Font font, double fontSize, string text, Rectangle rectangle, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
 {
     return(owner.AddTextWordWrapWithShadow(font, fontSize, text, rectangle, horizontalAlign, verticalAlign, color));
 }
Exemple #7
0
 public void AddTextLinesWithShadow(Component_Font font, double fontSize, IList <string> lines, Rectangle rectangle, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
 {
     owner.AddTextLinesWithShadow(font, fontSize, lines, rectangle, horizontalAlign, verticalAlign, color);
 }
Exemple #8
0
        ////public float FontSizeInPixels
        ////{
        ////	get { return fontSizeInPixels; }
        ////	set { fontSizeInPixels = value; }
        ////}

        ////public EngineFont EditorFont
        ////{
        ////	get { return editorFont; }
        ////}

        public void AddTextWithShadow(Component_Font font, double fontSize, string text, Vector2 position, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
        {
            owner.AddTextWithShadow(font, fontSize, text, position, horizontalAlign, verticalAlign, color);
        }
 public static void AddTextLinesWithShadow(Viewport viewport, IList <string> lines, Rectangle rectangle, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
 {
     AddTextLinesWithShadow(viewport, null, -1, lines, rectangle, horizontalAlign, verticalAlign, color);
 }
 public int AddTextWordWrap(string text, Rectangle rect, EHorizontalAlignment horizontalAlign,
                            bool alignByWidth, EVerticalAlignment verticalAlign, double textVerticalIndention, ColorValue color, AddTextOptions options = AddTextOptions.PixelAlign)
 {
     return(AddTextWordWrap(null, DefaultFontSize, text, rect.ToRectangleF(), horizontalAlign, alignByWidth, verticalAlign, (float)textVerticalIndention, color, options));
 }
        /////////////////////////////////////////

        public abstract int AddTextWordWrap(Component_Font font, double fontSize, string text, RectangleF rect, EHorizontalAlignment horizontalAlign,
                                            bool alignByWidth, EVerticalAlignment verticalAlign, float textVerticalIndention, ColorValue color, AddTextOptions options = AddTextOptions.PixelAlign);
 /// <summary>
 /// Adds text lines to rendering queue.
 /// </summary>
 /// <param name="lines">The text lines.</param>
 /// <param name="pos">The text position.</param>
 /// <param name="textVerticalIndention">The vertical intention between lines.</param>
 /// <param name="horizontalAlign">The text horizontal align.</param>
 /// <param name="verticalAlign">The text vertical align.</param>
 /// <param name="color">The text color.</param>
 public void AddTextLines(IList <string> lines, Vector2 pos, EHorizontalAlignment horizontalAlign,
                          EVerticalAlignment verticalAlign, double textVerticalIndention, ColorValue color, AddTextOptions options = AddTextOptions.PixelAlign)
 {
     AddTextLines(null, DefaultFontSize, lines, pos.ToVector2F(), horizontalAlign, verticalAlign, (float)textVerticalIndention, color, options);
 }
        /////////////////////////////////////////

        /// <summary>
        /// Adds text lines to rendering queue.
        /// </summary>
        /// <param name="font">The font.</param>
        /// <param name="lines">The text lines.</param>
        /// <param name="pos">The text position.</param>
        /// <param name="horizontalAlign">The text horizontal align.</param>
        /// <param name="verticalAlign">The text vertical align.</param>
        /// <param name="textVerticalIndention">The vertical intention between lines.</param>
        /// <param name="color">The text color.</param>
        public abstract void AddTextLines(Component_Font font, double fontSize, IList <string> lines, Vector2F pos, EHorizontalAlignment horizontalAlign,
                                          EVerticalAlignment verticalAlign, float textVerticalIndention, ColorValue color, AddTextOptions options = AddTextOptions.PixelAlign);
 /// <summary>
 /// Adds text to rendering queue.
 /// </summary>
 /// <param name="text">The text.</param>
 /// <param name="position">The text position.</param>
 /// <param name="horizontalAlign">The text horizontal align.</param>
 /// <param name="verticalAlign">The text vertical align.</param>
 public void AddText(string text, Vector2 position, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign)
 {
     AddText(null, DefaultFontSize, text, position.ToVector2F(), horizontalAlign, verticalAlign, new ColorValue(1, 1, 1));
 }
 /// <summary>
 /// Adds text to rendering queue.
 /// </summary>
 /// <param name="text">The text.</param>
 /// <param name="position">The text position.</param>
 /// <param name="horizontalAlign">The text horizontal align.</param>
 /// <param name="verticalAlign">The text vertical align.</param>
 /// <param name="color">The text color.</param>
 public void AddText(string text, Vector2 position, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color, AddTextOptions options = AddTextOptions.PixelAlign)
 {
     AddText(null, DefaultFontSize, text, position.ToVector2F(), horizontalAlign, verticalAlign, color, options);
 }
        public int AddTextWordWrapWithShadow(Component_Font font, double fontSize, string text, Rectangle rectangle, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
        {
            var renderer = ViewportControl.Viewport.CanvasRenderer;

            if (font == null || font.Disposed)
            {
                font = renderer.DefaultFont;
            }
            if (font == null || font.Disposed)
            {
                return(0);
            }
            //if( font == null )
            //	font = EditorFont;
            if (fontSize < 0)
            {
                fontSize = renderer.DefaultFontSize;
            }

            var items = font.GetWordWrapLines(fontSize, renderer, text, rectangle.Size.X);

            string[] lines = new string[items.Length];
            for (int n = 0; n < lines.Length; n++)
            {
                lines[n] = items[n].Text;
            }

            AddTextLinesWithShadow(font, fontSize, lines, rectangle, horizontalAlign, verticalAlign, color);

            return(lines.Length);
        }
Exemple #17
0
 public void SetVerticalAlignment(EVerticalAlignment InVerticalAlignment)
 {
     CheckIsValid();
     SetVerticalAlignment(_this.Get(), (int)InVerticalAlignment);
 }
 public static int AddTextWordWrapWithShadow(Viewport viewport, string text, Rectangle rectangle, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
 {
     return(AddTextWordWrapWithShadow(viewport, null, -1, text, rectangle, horizontalAlign, verticalAlign, color));
 }
Exemple #19
0
 public void AddTextWithShadow(string text, Vector2 position, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
 {
     owner.AddTextWithShadow(text, position, horizontalAlign, verticalAlign, color);
 }
 public static void AddTextWithShadow(Viewport viewport, string text, Vector2 position, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
 {
     AddTextWithShadow(viewport, null, -1, text, position, horizontalAlign, verticalAlign, color);
 }
Exemple #21
0
 public void AddTextLinesWithShadow(IList <string> lines, Rectangle rectangle, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
 {
     owner.AddTextLinesWithShadow(lines, rectangle, horizontalAlign, verticalAlign, color);
 }
Exemple #22
0
        void OrderComponents(List<Component> list,
                             EHorizontalAlignment HAlignment, EVerticalAlignment VAlignment,
                             EFormat format, Position origin, Size area)
        {
            if (list.Count > 0)
            {
                if (format == EFormat.Horizontal)
                {
                    switch (HAlignment)
                    {
                        case EHorizontalAlignment.HLeft:
                            {
                                int strechSegment = 0;
                                uint widthTakenUp = 0;
                                foreach (Component ele in list)
                                {
                                    if (((IElement)ele).HorizontalStyle == EElementStyle.Stretch)
                                    {
                                        ++strechSegment;
                                    }
                                    else
                                    {
                                        Size perfectSize = ele.GetPreferedSize();
                                        widthTakenUp += perfectSize.width;
                                    }
                                }

                                uint widthAvailable = (uint)(area.width - Spacer * (list.Count - 1) - widthTakenUp);
                                uint averageWidth = 0;
                                if (strechSegment > 0)
                                {
                                    averageWidth = (uint)(widthAvailable / strechSegment);
                                }

                                int tempX = origin.X;
                                foreach (Component comp in list)
                                {
                                    Size perfectSize = comp.GetPreferedSize();
                                    if (((IElement)comp).HorizontalStyle == EElementStyle.Fit)
                                    {
                                        comp.Position.X = tempX;
                                        comp.Size.width = perfectSize.width;
                                        tempX += (int)(Spacer + perfectSize.width);
                                    }
                                    else if (((IElement)comp).HorizontalStyle == EElementStyle.Stretch)
                                    {
                                        comp.Position.X = tempX;
                                        comp.Size.width = averageWidth;
                                        tempX += (int)(Spacer + averageWidth);
                                    }
                                }
                                break;
                            }
                        case EHorizontalAlignment.HRight:
                            {
                                int strechSegment = 0;
                                uint widthTakenUp = 0;
                                foreach (Component ele in list)
                                {
                                    if (((IElement)ele).HorizontalStyle == EElementStyle.Stretch)
                                    {
                                        ++strechSegment;
                                    }
                                    else
                                    {
                                        Size perfectSize = ele.GetPreferedSize();
                                        widthTakenUp += perfectSize.width;
                                    }
                                }

                                uint widthAvailable = (uint)(area.width - Spacer * (list.Count - 1) - widthTakenUp);
                                uint averageWidth = 0;
                                if (strechSegment > 0)
                                {
                                    averageWidth = (uint)(widthAvailable / strechSegment);
                                }

                                int tempX = (int)(origin.X + area.width);

                                for (int i = list.Count - 1; i >= 0; --i)
                                {
                                    Component iter = list[i];
                                    Size perfectSize = iter.GetPreferedSize();
                                    if (((IElement)iter).HorizontalStyle == EElementStyle.Fit)
                                    {
                                        tempX -= (int)perfectSize.width;
                                        iter.Position.X = tempX;
                                        iter.Size.width = perfectSize.width;
                                        tempX -= (int)Spacer;
                                    }
                                    else if (((IElement)iter).HorizontalStyle == EElementStyle.Stretch)
                                    {
                                        tempX -= (int)averageWidth;
                                        iter.Position.X = tempX;
                                        iter.Size.width = averageWidth;
                                        tempX -= (int)Spacer;
                                    }
                                }
                                break;
                            }
                        case EHorizontalAlignment.HCenter:
                            {
                                bool isStretch = false;
                                int strechSegment = 0;
                                uint widthTakenUp = 0;
                                foreach (Component ele in list)
                                {
                                    if (((IElement)ele).HorizontalStyle == EElementStyle.Stretch)
                                    {
                                        ++strechSegment;
                                        isStretch = true;
                                    }
                                    else
                                    {
                                        Size perfectSize = ele.GetPreferedSize();
                                        widthTakenUp += perfectSize.width;
                                    }
                                }

                                if (isStretch)
                                {
                                    uint widthAvailable = (uint)(area.width - Spacer * (list.Count - 1) - widthTakenUp);
                                    uint averageWidth = (uint)(widthAvailable / strechSegment);
                                    int tempX = origin.X;

                                    for (int iter = 0; iter < list.Count - 1; ++iter)
                                    {
                                        Component comp = list[iter];

                                        Size perfectSize = comp.GetPreferedSize();
                                        if (((IElement)comp).HorizontalStyle == EElementStyle.Fit)
                                        {
                                            comp.Position.X = tempX;
                                            comp.Size.width = perfectSize.width;
                                            tempX += (int)(Spacer + perfectSize.width);
                                        }
                                        else if (((IElement)comp).HorizontalStyle == EElementStyle.Stretch)
                                        {
                                            comp.Position.X = tempX;
                                            comp.Size.width = averageWidth;
                                            tempX += (int)(Spacer + averageWidth);
                                        }
                                    }
                                }
                                else
                                {
                                    widthTakenUp += (uint)(Spacer * (list.Count - 1));
                                    int tempX = (int)(origin.X + area.width * 0.5f - widthTakenUp * 0.5f);

                                    foreach (Component comp in list)
                                    {
                                        Size perfectSize = comp.GetPreferedSize();
                                        comp.Position.X = tempX;
                                        comp.Size.width = perfectSize.width;
                                        tempX += (int)(Spacer + perfectSize.width);
                                    }
                                }
                                break;
                            }
                    }

                    switch (VAlignment)
                    {
                        case EVerticalAlignment.VTop:
                            {
                                int tempY = origin.Y;
                                foreach (Component comp in list)
                                {
                                    Size perfectSize = comp.GetPreferedSize();
                                    if (((IElement)comp).VerticalStyle == EElementStyle.Stretch)
                                    {
                                        comp.Position.Y = tempY;
                                        comp.Size.height = area.height;
                                    }
                                    else if (((IElement)comp).VerticalStyle == EElementStyle.Fit)
                                    {
                                        comp.Position.Y = tempY;
                                        comp.Size.height = perfectSize.height;
                                    }
                                }
                                break;
                            }
                        case EVerticalAlignment.VBottom:
                            {
                                int tempY = origin.Y;
                                foreach (Component comp in list)
                                {
                                    Size perfectSize = comp.GetPreferedSize();
                                    if (((IElement)comp).VerticalStyle == EElementStyle.Stretch)
                                    {
                                        comp.Position.Y = tempY;
                                        comp.Size.height = area.height;
                                    }
                                    else if (((IElement)comp).VerticalStyle == EElementStyle.Fit)
                                    {
                                        comp.Position.Y = (int)(tempY + area.height - perfectSize.height);
                                        comp.Size.height = perfectSize.height;
                                    }
                                }
                                break;
                            }
                        case EVerticalAlignment.VCenter:
                            {
                                int tempY = origin.Y;
                                foreach (Component comp in list)
                                {
                                    Size perfectSize = comp.GetPreferedSize();
                                    if (((IElement)comp).VerticalStyle == EElementStyle.Stretch)
                                    {
                                        comp.Position.Y = tempY;
                                        comp.Size.height = area.height;
                                    }
                                    else if (((IElement)comp).VerticalStyle == EElementStyle.Fit)
                                    {
                                        comp.Position.Y = (int)(tempY + area.height * 0.5 - perfectSize.height * 0.5);
                                        comp.Size.height = perfectSize.height;
                                    }
                                }
                                break;
                            }
                    }
                }
                else if (format == EFormat.Vertical)
                {

                }

                foreach (Component ele in list)
                {
                    ele.Pack();
                }
            }
        }
Exemple #23
0
 public int AddTextWordWrapWithShadow(string text, Rectangle rectangle, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color)
 {
     return(owner.AddTextWordWrapWithShadow(text, rectangle, horizontalAlign, verticalAlign, color));
 }
 /// <summary>
 /// Adds text to rendering queue.
 /// </summary>
 /// <param name="font">The text font.</param>
 /// <param name="text">The text.</param>
 /// <param name="position">The text position.</param>
 /// <param name="horizontalAlign">The text horizontal align.</param>
 /// <param name="verticalAlign">The text vertical align.</param>
 /// <param name="color">The text color.</param>
 public abstract void AddText(Component_Font font, double fontSize, string text, Vector2F position, EHorizontalAlignment horizontalAlign, EVerticalAlignment verticalAlign, ColorValue color, AddTextOptions options = AddTextOptions.PixelAlign);