Пример #1
0
        internal static SvgTransform CreateRotate(SvgAngle angle)
        {
            var rad = angle.ValueAsRadian;
            var cos = Math.Cos(rad);
            var sin = Math.Sin(rad);

            return(new SvgTransform(SvgTransformType.Rotate, new SvgMatrix(cos, sin, -sin, cos, 0.0, 0.0)));
        }
Пример #2
0
        internal static SvgTransform CreateRotate(SvgAngle angle, float cx, float cy)
        {
            var rad = angle.ValueAsRadian;
            var cos = Math.Cos(rad);
            var sin = Math.Sin(rad);

            return(new SvgTransform(SvgTransformType.Rotate, new SvgMatrix(cos, sin, -sin, cos, -cx * cos + cy * sin + cx, -cx * sin - cy * cos + cy)));
        }
Пример #3
0
        private static RgbColor ParseHslColorFunc(string color)
        {
            var ptr = new StringPtr(color);

            ptr.AdvanceWhiteSpace();

            var s1 = ptr.Index;
            var h  = SvgAngle.Parse(ptr);

            if (ptr.Index == s1)
            {
                throw new ArgumentException(nameof(color));
            }

            ptr.AdvanceWhiteSpace();
            if (ptr.Char != ',')
            {
                throw new ArgumentException(nameof(color));
            }
            ++ptr;
            ptr.AdvanceWhiteSpace();

            var s2 = ptr.Index;

            ptr.AdvanceInteger();
            if (ptr.Index == s2)
            {
                throw new ArgumentException(nameof(color));
            }
            var s = byte.Parse(color.Substring(s2, ptr.Index - s2));

            if (ptr.Char != '%')
            {
                throw new ArgumentException(nameof(color));
            }
            ++ptr;

            ptr.AdvanceWhiteSpace();
            if (ptr.Char != ',')
            {
                throw new ArgumentException(nameof(color));
            }
            ++ptr;
            ptr.AdvanceWhiteSpace();

            var s3 = ptr.Index;

            ptr.AdvanceInteger();
            if (ptr.Index == s3)
            {
                throw new ArgumentException(nameof(color));
            }
            var l = byte.Parse(color.Substring(s3, ptr.Index - s3));

            if (ptr.Char != '%')
            {
                throw new ArgumentException(nameof(color));
            }
            ++ptr;

            ptr.AdvanceWhiteSpace();

            if (ptr.Char != ')')
            {
                throw new ArgumentException(nameof(color));
            }

            return(HlsToRgb(h.ValueAsDegree, s / 100.0, l / 100.0));
        }
Пример #4
0
 internal static SvgTransform CreateSkewY(SvgAngle angle) => new SvgTransform(SvgTransformType.SkewY, new SvgMatrix(1.0, Math.Tan(angle.ValueAsRadian), 0.0, 1.0, 0.0, 0.0));
Пример #5
0
 internal SvgTransform(SvgTransformType type, SvgMatrix matrix, SvgAngle angle)
 {
     this.Type   = type;
     this.Matrix = matrix;
     this.Angle  = angle;
 }