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); }
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); }
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)); } } }