gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/agg-plot/plot.h
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.bbt@gmail.com>2012年09月14日 18:16:50 +0200
committerFrancesco Abbate <francesco.bbt@gmail.com>2012年10月15日 00:16:41 +0200
commite46aa3980de06ac7b03eea246c0c15abd8b70c50 (patch)
treef576bf83574a5ce0ba2548dd11eea0be159c1d6e /agg-plot/plot.h
parent909a55f830086edad64577b7c0f1386c42fd32ea (diff)
downloadgsl-shell-e46aa3980de06ac7b03eea246c0c15abd8b70c50.tar.gz
Add support for multiple plot windows in FOX interface
Diffstat (limited to 'agg-plot/plot.h')
-rw-r--r--agg-plot/plot.h 25
1 files changed, 22 insertions, 3 deletions
diff --git a/agg-plot/plot.h b/agg-plot/plot.h
index 925d3910..7b957136 100644
--- a/agg-plot/plot.h
+++ b/agg-plot/plot.h
@@ -229,6 +229,9 @@ public:
template <class Canvas>
void draw(Canvas& canvas, const agg::trans_affine& m);
+ template <class Canvas>
+ void draw(Canvas& canvas, const agg::rect_i& r);
+
virtual bool push_layer();
virtual bool pop_layer();
virtual void clear_current_layer();
@@ -299,7 +302,7 @@ protected:
void draw_elements(canvas_type &canvas, const agg::trans_affine& m);
void draw_element(item& c, canvas_type &canvas, const agg::trans_affine& m);
- void draw_axis(canvas_type& can, const agg::trans_affine& m, agg::rect_base<int>* clip = 0);
+ void draw_axis(canvas_type& can, const agg::trans_affine& m, const agg::rect_i* clip = 0);
agg::trans_affine draw_legends(canvas_type& canvas,
const agg::trans_affine& canvas_mtx);
@@ -417,7 +420,7 @@ static bool area_is_valid(const agg::trans_affine& b)
template <class RM>
template <class Canvas> void plot<RM>::draw(Canvas& _canvas, const agg::trans_affine& canvas_mtx)
{
- canvas_adapter<Canvas> canvas(&_canvas);
+ canvas_adapter<Canvas> canvas(&_canvas);
before_draw();
agg::rect_base<int> clip = rect_of_slot_matrix<int>(canvas_mtx);
@@ -432,6 +435,22 @@ template <class Canvas> void plot<RM>::draw(Canvas& _canvas, const agg::trans_af
};
template <class RM>
+template <class Canvas> void plot<RM>::draw(Canvas& _canvas, const agg::rect_i& r)
+{
+ canvas_adapter<Canvas> canvas(&_canvas);
+ before_draw();
+
+ agg::trans_affine canvas_mtx = affine_matrix(r);
+ agg::trans_affine area_mtx = draw_legends(canvas, canvas_mtx);
+
+ if (area_is_valid(area_mtx))
+ {
+ draw_axis(canvas, area_mtx, &r);
+ draw_elements(canvas, area_mtx);
+ }
+};
+
+template <class RM>
void plot<RM>::draw_element(item& c, canvas_type& canvas, const agg::trans_affine& m)
{
sg_object& vs = c.content();
@@ -716,7 +735,7 @@ agg::trans_affine plot<RM>::draw_legends(canvas_type& canvas,
template <class RM>
void plot<RM>::draw_axis(canvas_type& canvas, const agg::trans_affine& canvas_mtx,
- agg::rect_base<int>* clip)
+ const agg::rect_i* clip)
{
agg::trans_affine& m = m_area_mtx;
generated by cgit v1.2.3 (git 2.25.1) at 2025年09月18日 16:29:27 +0000

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