00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef LEGEND_HPP
00044 #define LEGEND_HPP 1
00045
00046
00047 #include <vector>
00048 #include <string>
00049 #include "graph.hpp"
00050 #include "colormap.hpp"
00051
00052
00059 class LegendEntry {
00060
00061 Graph &_drawable;
00062 std::string _label;
00063
00064 public:
00065
00068 LegendEntry( Graph &drawable, std::string &label )
00069 : _drawable(drawable), _label(label) {}
00070
00073 LegendEntry( const LegendEntry &le )
00074 : _drawable(le._drawable), _label(le._label) {}
00075
00078 ~LegendEntry() {}
00079
00082 LegendEntry &operator=( const LegendEntry &le ) {
00083 _drawable = le._drawable;
00084 _label = le._label;
00085 return( *this );
00086 }
00087
00090 void plot( cairo_t *cairo, double x, double y ) const;
00091
00094 void get_size( double &width, double &height ) const;
00095
00096 };
00097
00098
00108 class Legend {
00109
00110 public:
00111
00114 Legend() {}
00115
00118 virtual ~Legend() {}
00119
00122 virtual void plot( cairo_t *cairo, double x, double y ) const = 0;
00123
00126 virtual void get_size( double &width, double &height ) const = 0;
00127 };
00128
00129
00132 class MultiEntryLegend {
00133
00134 std::vector<LegendEntry> _entry;
00136 public:
00137
00140 MultiEntryLegend() {}
00141
00144 virtual ~MultiEntryLegend() {}
00145
00148 virtual void plot( cairo_t *cairo, double x, double y ) const;
00149
00152 virtual void get_size( double &width, double &height ) const;
00153
00156 void add_entry( const LegendEntry &entry );
00157 };
00158
00159
00162 class ColormapLegend {
00163
00164 double _height;
00165 Colormap &_colormap;
00166
00167
00168 public:
00169
00172 ColormapLegend( Colormap &colormap ) : _height(0.0), _colormap(colormap) {}
00173
00176 virtual ~ColormapLegend() {}
00177
00180 virtual void plot( cairo_t *cairo, double x, double y ) const;
00181
00184 virtual void get_size( double &width, double &height ) const;
00185
00188 void set_height( double height );
00189 };
00190
00191
00192 #endif
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210