Ejemplo n.º 1
0
        /// <summary>
        /// Стандартный конструктор
        /// </summary>
        /// <param name="parDepth">Глубина</param>
        /// <param name="parX">Координата X</param>
        /// <param name="parY">Координата Y</param>
        /// <param name="parStringToRender">Текстовая строка</param>
        /// <param name="parFont">Шрифт</param>
        /// <param name="parColor">Цвет</param>
        /// <param name="parScaleX">Масштабирование по X</param>
        /// <param name="parScaleY">Масштабирование по Y</param>
        /// <param name="parHAlign">Горизонтальное выравнивание</param>
        /// <param name="parVAlign">Вертикальное выравнивание</param>
        public RenderingString(double parDepth, double parX, double parY, string parStringToRender, SubassetDataFont parFont,
                               Color parColor, double parScaleX = 1.0, double parScaleY = 1.0, EHorizontalAlign parHAlign = EHorizontalAlign.Left,
                               EVerticalAlign parVAlign         = EVerticalAlign.Top)
        {
            LinkedList <SubassetDataSprite> usedSprites = parFont.GetSymbolsSprites(parStringToRender);

            SpritesToRender = new LinkedList <RenderingSprite>();

            double totalWidth  = 0;
            double totalHeight = 0;

            foreach (var usedSprite in usedSprites)
            {
                totalWidth += usedSprite.Width;
                if (usedSprite.Height > totalHeight)
                {
                    totalHeight = usedSprite.Height;
                }
            }

            X = OpenGlUtil.GetLeftXCoordBasedOnHorizontalAlign(parX, totalWidth, parHAlign, parScaleX);
            Y = OpenGlUtil.GetTopYCoordBasedOnVerticalAlign(parY, totalHeight, parVAlign, parScaleY);

            totalWidth = 0;
            //totalHeight = 0;
            foreach (var usedSprite in usedSprites)
            {
                SpritesToRender.AddLast(new RenderingSprite(usedSprite, X + totalWidth, Y, 0, parColor,
                                                            parDepth, parScaleX, parScaleY, EHorizontalAlign.Left, EVerticalAlign.Top));

                totalWidth += usedSprite.Width * parScaleX;
            }

            Depth = parDepth;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Стандартный конструктор
        /// </summary>
        /// <param name="parSprite">Производный ассет спрайта</param>
        /// <param name="parX">Координата X</param>
        /// <param name="parY">Координата Y</param>
        /// <param name="parRotationDegrees">Поворот в градусах</param>
        /// <param name="parBlendColor">Цвет</param>
        /// <param name="parDepth">Глубина</param>
        /// <param name="parScaleX">Масштабирование по X</param>
        /// <param name="parScaleY">Масштабирование по Y</param>
        /// <param name="parHAlign">Горизонтальное выравнивание</param>
        /// <param name="parVAlign">Вертикальное выравнивание</param>
        /// <param name="parRotationPivotX">Точка опоры для поворота, координата X</param>
        /// <param name="parRotationPivotY">Точка опоры для поворота, координата Y</param>
        public RenderingSprite(SubassetDataSprite parSprite, double parX, double parY, double parRotationDegrees, Color parBlendColor,
                               double parDepth,
                               double parScaleX         = 1.0, double parScaleY = 1.0, EHorizontalAlign parHAlign = EHorizontalAlign.Left,
                               EVerticalAlign parVAlign = EVerticalAlign.Top, double parRotationPivotX = 0, double parRotationPivotY = 0)
        {
            Sprite = parSprite;

            X = OpenGlUtil.GetLeftXCoordBasedOnHorizontalAlign(parX, parSprite.Width, parHAlign, parScaleX);
            Y = OpenGlUtil.GetTopYCoordBasedOnVerticalAlign(parY, parSprite.Height, parVAlign, parScaleY);

            Depth           = parDepth;
            RotationDegrees = parRotationDegrees;
            BlendColor      = parBlendColor;
            ScaleX          = parScaleX;
            ScaleY          = parScaleY;
            PivotX          = parRotationPivotX;
            PivotY          = parRotationPivotY;
        }