public virtual void InvalidateAll(InvalidationBuffer buffer = InvalidationBuffer.All) { // NB selection does not update Base, unlike above if (m_Page == null || m_BaseBuffer == null) { return; } if ((buffer & InvalidationBuffer.Base) > 0) { m_BaseBuffer.InvalidateAll(); } Invalidate(); }
public virtual void InvalidateData(RectangleF invalid, InvalidationBuffer buffer, bool textFlowExpand = true) { // invalidate part of the picture - the area is specified in data coordinates // must invalidate both the buffer and Windows itself // last parameter can be false if we know that the change will not move the text flow arrows if (invalid.IsEmpty || m_Page == null || m_BaseBuffer == null) { return; } Rectangle screen = Rectangle.Round(DataToClient(invalid)); Invalidate(screen); if ((buffer & (InvalidationBuffer.Base | InvalidationBuffer.Selection)) > 0) { m_BaseBuffer.Invalidate(screen); //: Debug.WriteLine("Invalidate base: " + rctInvalid.ToString) } }