Example #1
0
        private bool CheckTextPrimitive(TextPrimitive primitive, string fontFamily, double fontSize,
                                        FontStyle fontStyle, FontWeight fontWeight)
        {
            do
            {
                if (!MathEx.AmostEqual(primitive.FontSize, fontSize))
                {
                    break;
                }

                if (primitive.FontFamily != fontFamily)
                {
                    break;
                }

                if (primitive.FontStyle != fontStyle)
                {
                    break;
                }

                if (primitive.FontWeight != fontWeight)
                {
                    break;
                }

                //
                return(false);
            } while (false);

            return(true);
        }
Example #2
0
        private bool CheckTextPrimitive(TextPrimitive primitive, StyleRuleSet style)
        {
            do
            {
                if (primitive.TextChanged)
                {
                    primitive.TextChanged = false;
                    break;
                }

                double fontSize = style.FontSize;
                if (!MathEx.AmostEqual(primitive.FontSize, fontSize))
                {
                    break;
                }

                string fontFamily = style.FontFamily;
                if (primitive.FontFamily != fontFamily)
                {
                    break;
                }

                FontStyle fontStyle = style.FontStyle;
                if (primitive.FontStyle != fontStyle)
                {
                    break;
                }

                FontWeight fontWeight = style.FontWeight;
                if (primitive.FontWeight != fontWeight)
                {
                    break;
                }

                return(false);
            } while (false);

            return(true);
        }
Example #3
0
        public override void DrawEllipse(Brush brush, Pen pen, Point center, double radiusX, double radiusY)
        {
            if (brush == null && pen == null || radiusX <= 0 || radiusY <= 0)
            {
                return;
            }
            EnsureContent();

            unsafe
            {
                if (!this.content.ReadRecord(out DrawEllipseCommand record))
                {//different record type: append new record
                    record.BrushIndex = this.content.AddDependentResource(brush);
                    record.PenIndex   = this.content.AddDependentResource(pen);
                    record.Center     = center;
                    record.RadiusX    = radiusX;
                    record.RadiusY    = radiusY;
                    this.content.WriteRecord(RecordType.DrawEllipse, (byte *)&record, sizeof(DrawEllipseCommand));
                    return;
                }

                //same type: update record if different
                bool recordNeedOverwrite = false;
                if (!Point.AlmostEqual(record.Center, center))
                {
                    record.Center       = center;
                    recordNeedOverwrite = true;
                }
                if (!MathEx.AmostEqual(record.RadiusX, radiusX))
                {
                    record.RadiusX      = radiusX;
                    recordNeedOverwrite = true;
                }
                if (!MathEx.AmostEqual(record.RadiusY, radiusY))
                {
                    record.RadiusY      = radiusY;
                    recordNeedOverwrite = true;
                }

                if (this.content.ReadDependentResource(record.PenIndex, out Pen oldPen))
                {
                    if (!oldPen.Equals(pen))
                    {
                        record.PenIndex     = this.content.AddDependentResource(pen);
                        recordNeedOverwrite = true;
                    }
                }
                else
                {
                    record.PenIndex     = this.content.AddDependentResource(pen);
                    recordNeedOverwrite = true;
                }

                if (this.content.ReadDependentResource(record.BrushIndex, out Brush oldBrush))
                {
                    if (!oldBrush.Equals(brush))
                    {
                        record.BrushIndex   = this.content.AddDependentResource(brush);
                        recordNeedOverwrite = true;
                    }
                }
                else
                {
                    record.BrushIndex   = this.content.AddDependentResource(brush);
                    recordNeedOverwrite = true;
                }

                if (recordNeedOverwrite)
                {
                    content.WriteRecord(RecordType.DrawEllipse, (byte *)&record, sizeof(DrawEllipseCommand));
                }
            }
        }