Example #1
0
        private void CalculateTransform(ref ItemTransform transform, AptContext context)
        {
            var movie     = (Movie)context.Root.Character;
            var movieSize = new Vector2(movie.ScreenWidth, movie.ScreenHeight);

            var scaling = _outputSize / movieSize;

            transform.GeometryRotation.M11        *= scaling.X;
            transform.GeometryRotation.M22        *= scaling.Y;
            transform.GeometryRotation.Translation = transform.GeometryTranslation * scaling;
        }
        private void CalculateTransform(ref ItemTransform transform)
        {
            if (Window == null)
            {
                return;
            }

            var scaling = Window.GetScaling();

            transform.GeometryRotation.M11        *= scaling.X;
            transform.GeometryRotation.M22        *= scaling.Y;
            transform.GeometryRotation.Translation = transform.GeometryTranslation * scaling;
        }
Example #3
0
        public void RenderText(DrawingContext2D drawingContext, AptContext context,
                               Text text, ItemTransform transform)
        {
            var font = _contentManager.FontManager.GetOrCreateFont("Arial", text.FontHeight, FontWeight.Normal);

            CalculateTransform(ref transform, context);

            drawingContext.DrawText(
                text.Content,
                font,
                TextAlignment.Center,
                text.Color.ToColorRgbaF() * transform.ColorTransform,
                RectangleF.Transform(text.Bounds, transform.GeometryRotation));
        }
Example #4
0
        public static void RenderText(DrawingContext2D drawingContext, AptContext context,
                                      Text text, ItemTransform transform)
        {
            var content = context.ContentManager;
            var font    = context.ContentManager.GetOrCreateFont("Arial", text.FontHeight, FontWeight.Normal);
            var matrix  = transform.GeometryRotation;

            matrix.Translation = transform.GeometryTranslation;

            drawingContext.DrawText(
                text.Content,
                font,
                TextAlignment.Center,
                text.Color.ToColorRgbaF() * transform.ColorTransform,
                RectangleF.Transform(text.Bounds, matrix));
        }
Example #5
0
        public override void Render(AptRenderer renderer, ItemTransform pTransform, DrawingContext2D dc)
        {
            if (!Visible)
            {
                return;
            }

            //calculate the transform for this element
            var cTransform = pTransform * Transform;

            //render all subItems
            foreach (var item in Content.Items.Values)
            {
                item.Render(renderer, cTransform, dc);
            }
        }
Example #6
0
        public void Render(ItemTransform pTransform, DrawingContext2D dc)
        {
            if (!Visible)
            {
                return;
            }

            //calculate the transform for this element
            var cTransform = pTransform * Transform;

            //render all subitems
            foreach (var item in _content.Items.Values)
            {
                item.Render(cTransform, dc);
            }
        }
Example #7
0
        public override void Render(AptRenderer renderer, ItemTransform pTransform, DrawingContext2D dc)
        {
            var button = Character as Button;

            _curTransform = pTransform * Transform;
            _curTransform.GeometryTranslation  *= renderer.Window.GetScaling();
            _curTransform.GeometryRotation.M11 *= renderer.Window.GetScaling().X;
            _curTransform.GeometryRotation.M22 *= renderer.Window.GetScaling().Y;

            var transform = _curTransform.GeometryRotation;

            transform.Translation = _curTransform.GeometryTranslation;
            ApplyCurrentRecord(ref transform);

            var verts = button.Vertices;

            foreach (var tri in button.Triangles)
            {
                var v1 = Vector2.Transform(verts[tri.IDX0], transform);
                var v2 = Vector2.Transform(verts[tri.IDX1], transform);
                var v3 = Vector2.Transform(verts[tri.IDX2], transform);

                var color = ColorRgbaF.White;

                if (button.IsMenu)
                {
                    color = new ColorRgbaF(1.0f, 0.0f, 0.0f, 1.0f);
                }

                if (_isHovered)
                {
                    color = new ColorRgbaF(0.0f, 1.0f, 1.0f, 1.0f);
                }

                dc.DrawLine(new Line2D(v1, v2), 1.0f, color);
                dc.DrawLine(new Line2D(v2, v3), 1.0f, color);
                dc.DrawLine(new Line2D(v3, v1), 1.0f, color);
            }
        }
Example #8
0
        public static void RenderGeometry(DrawingContext2D drawingContext, AptContext context,
                                          Geometry shape, ItemTransform transform)
        {
            var matrix = transform.GeometryRotation;

            matrix.Translation = transform.GeometryTranslation;

            foreach (var e in shape.Entries)
            {
                switch (e)
                {
                case GeometryLines l:
                {
                    var color = l.Color.ToColorRgbaF() * transform.ColorTransform;
                    foreach (var line in l.Lines)
                    {
                        drawingContext.DrawLine(
                            Line2D.Transform(line, matrix),
                            l.Thickness,
                            color);
                    }
                    break;
                }

                case GeometrySolidTriangles st:
                {
                    var color = st.Color.ToColorRgbaF() * transform.ColorTransform;
                    foreach (var tri in st.Triangles)
                    {
                        drawingContext.FillTriangle(
                            Triangle2D.Transform(tri, matrix),
                            color);
                    }
                    break;
                }

                case GeometryTexturedTriangles tt:
                {
                    var coordinatesTransform = new Matrix3x2
                    {
                        M11 = tt.RotScale.M11,
                        M12 = tt.RotScale.M12,
                        M21 = tt.RotScale.M21,
                        M22 = tt.RotScale.M22,
                        M31 = tt.Translation.X,
                        M32 = tt.Translation.Y
                    };

                    foreach (var tri in tt.Triangles)
                    {
                        //if (assignment is RectangleAssignment)
                        //    throw new NotImplementedException();

                        var tex = context.GetTexture(tt.Image, shape);

                        drawingContext.FillTriangle(
                            tex,
                            Triangle2D.Transform(tri, coordinatesTransform),
                            Triangle2D.Transform(tri, matrix),
                            transform.ColorTransform);
                    }
                    break;
                }
                }
            }
        }
Example #9
0
        public void RenderGeometry(DrawingContext2D drawingContext, AptContext context,
                                   Geometry shape, ItemTransform transform, Texture solidTexture)
        {
            CalculateTransform(ref transform, context);
            var matrix = transform.GeometryRotation;

            foreach (var e in shape.Entries)
            {
                switch (e)
                {
                case GeometryLines l:
                {
                    var color = l.Color.ToColorRgbaF() * transform.ColorTransform;
                    foreach (var line in l.Lines)
                    {
                        drawingContext.DrawLine(
                            Line2D.Transform(line, matrix),
                            l.Thickness,
                            color);
                    }
                    break;
                }

                case GeometrySolidTriangles st:
                {
                    var color = st.Color.ToColorRgbaF() * transform.ColorTransform;
                    foreach (var tri in st.Triangles)
                    {
                        if (solidTexture == null)
                        {
                            drawingContext.FillTriangle(
                                Triangle2D.Transform(tri, matrix),
                                color);
                        }
                        else
                        {
                            var destTri  = Triangle2D.Transform(tri, matrix);
                            var coordTri = new Triangle2D(new Vector2(tri.V0.X / 100.0f * solidTexture.Width,
                                                                      tri.V0.Y / 100.0f * solidTexture.Height),
                                                          new Vector2(tri.V1.X / 100.0f * solidTexture.Width,
                                                                      tri.V1.Y / 100.0f * solidTexture.Height),
                                                          new Vector2(tri.V2.X / 100.0f * solidTexture.Width,
                                                                      tri.V2.Y / 100.0f * solidTexture.Height));

                            drawingContext.FillTriangle(
                                solidTexture,
                                coordTri,
                                destTri,
                                new ColorRgbaF(1.0f, 1.0f, 1.0f, color.A));
                        }
                    }
                    break;
                }

                case GeometryTexturedTriangles tt:
                {
                    var coordinatesTransform = new Matrix3x2
                    {
                        M11 = tt.RotScale.M11,
                        M12 = tt.RotScale.M12,
                        M21 = tt.RotScale.M21,
                        M22 = tt.RotScale.M22,
                        M31 = tt.Translation.X,
                        M32 = tt.Translation.Y
                    };

                    foreach (var tri in tt.Triangles)
                    {
                        //if (assignment is RectangleAssignment)
                        //    throw new NotImplementedException();

                        var tex = context.GetTexture(tt.Image, shape);

                        drawingContext.FillTriangle(
                            tex,
                            Triangle2D.Transform(tri, coordinatesTransform),
                            Triangle2D.Transform(tri, matrix),
                            transform.ColorTransform);
                    }
                    break;
                }
                }
            }
        }