From 80e5324cf70c55e96f3aa405153ed1930a26abf7 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: 2009年11月29日 18:20:31 +0000 Subject: Now the module for plotting graphs is functional. --- agg-plot/cplot.h | 64 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 10 deletions(-) (limited to 'agg-plot/cplot.h') diff --git a/agg-plot/cplot.h b/agg-plot/cplot.h index 4e81c7fb..626cb6f9 100644 --- a/agg-plot/cplot.h +++ b/agg-plot/cplot.h @@ -5,32 +5,76 @@ #include #include -#include - #include "canvas.h" #include "units.h" #include "agg_conv_transform.h" #include "agg_color_rgba.h" #include "agg_path_storage.h" +#include "agg_array.h" -class line { -public: - line(agg::rgba8 c) : path(), color(c) {}; +struct drawable { + virtual void draw(canvas& can, agg::trans_affine& t) = 0; + virtual void bounding_box(double *x1, double *y1, double *x2, double *y2) = 0; + virtual ~drawable() {}; +}; +struct line : public drawable { agg::path_storage path; agg::rgba8 color; + + line(agg::rgba8 col): path(), color(col) {}; + + virtual void draw(canvas& can, agg::trans_affine& t); + virtual void bounding_box(double *x1, double *y1, double *x2, double *y2); +}; + +struct dashed_line : public line { +public: + dashed_line(double l1, double l2, agg::rgba8 col): + line(col), m_l1(l1), m_l2(l2) + {}; + + virtual void draw(canvas& can, agg::trans_affine& t); + +private: + double m_l1; + double m_l2; +}; + +struct polygon : public line { + polygon(agg::rgba8 col): line(col) {}; + virtual void draw(canvas& can, agg::trans_affine& t); +}; + +struct poly_outline : public line { + agg::rgba8 m_outline_color; + + poly_outline(agg::rgba8 col, agg::rgba8 out_col) : + line(col), m_outline_color(out_col) + {}; + + virtual void draw(canvas& can, agg::trans_affine& t); }; class cplot { + typedef agg::pod_bvector container_type; + public: - line& new_line(agg::rgba8 color); - - const agg::trans_affine& trans() const { return m_trans; }; + + cplot() : m_lines(), m_trans(), m_bbox_set(false) {}; + + virtual ~cplot() + { + for (unsigned j = 0; j < m_lines.size(); j++) + delete m_lines[j]; + }; + + void add(drawable *d); virtual void draw(canvas &canvas); - cplot() : m_lines(), m_trans(), m_bbox_set(false) {}; + const agg::trans_affine& trans() const { return m_trans; }; protected: void draw_lines(canvas &canvas); @@ -39,7 +83,7 @@ protected: static void viewport_scale(agg::trans_affine& trans); - std::list m_lines; + container_type m_lines; agg::trans_affine m_trans; // bounding box -- cgit v1.2.3

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