From 2eb370ffbec7d188e7ca18d24bcc39d7a2e41ba3 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 1 Nov 2012 15:46:41 +0100 Subject: Better factorization of drawing code in FOX client --- agg-plot/plot.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'agg-plot/plot.h') diff --git a/agg-plot/plot.h b/agg-plot/plot.h index 0ab76a89..06d0d35a 100644 --- a/agg-plot/plot.h +++ b/agg-plot/plot.h @@ -466,6 +466,11 @@ protected: bool m_need_redraw; opt_rect m_rect; + // keep trace of the region where changes happened since + // the last pushlayer or clear + opt_rect m_changes_accu; + opt_rect m_changes_pending; + bool m_use_units; units m_ux, m_uy; @@ -505,6 +510,7 @@ void plot::commit_pending_draw() { push_drawing_queue(); m_need_redraw = false; + m_changes_pending.clear(); } template @@ -642,6 +648,13 @@ template void plot::draw_queue(Canvas& _canvas, const agg::tr bb.add(ebb); } + m_changes_accu.add(bb); + + if (m_changes_pending.is_defined()) + { + bb.add(m_changes_pending); + } + canvas.reset_clipping(); } @@ -1114,6 +1127,8 @@ void plot::clear_current_layer() clear_drawing_queue(); layer_dispose_elements(current); current->clear(); + m_changes_pending = m_changes_accu; + m_changes_accu.clear(); } template -- cgit v1.2.3

AltStyle によって変換されたページ (->オリジナル) /