00001
00004
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
00034
00035 #ifndef GROOVX_GFX_BBOX_H_UTC20050626084025_DEFINED
00036 #define GROOVX_GFX_BBOX_H_UTC20050626084025_DEFINED
00037
00038 namespace geom
00039 {
00040 template <class V> class box;
00041 template <class V> class rect;
00042 template <class V> class vec2;
00043 template <class V> class vec3;
00044 class txform;
00045 }
00046
00047 namespace Gfx
00048 {
00049 class Bbox;
00050 class Canvas;
00051 }
00052
00054 class Gfx::Bbox
00055 {
00056 public:
00057 Bbox(Gfx::Canvas& c);
00058
00059 Bbox(const Bbox& that);
00060
00061 ~Bbox();
00062
00063 Gfx::Bbox peer() const;
00064
00065 void push();
00066 void pop();
00067
00068 void translate(const geom::vec3<double>& v);
00069 void scale(const geom::vec3<double>& v);
00070 void transform(const geom::txform& m);
00071
00072 void vertex2(const geom::vec2<double>& v);
00073 void vertex3(const geom::vec3<double>& v);
00074
00075 void drawRect(const geom::rect<double>& rect);
00076
00077 void drawBox(const geom::box<double>& box);
00078
00079 void drawScreenRect(const geom::vec3<double>& lower_left,
00080 const geom::vec2<int>& size,
00081 const geom::vec2<double>& zoom);
00082
00083 void drawScreenRect(const geom::vec3<double>& lower_left,
00084 const geom::rect<int>& screen_rect);
00085
00086 geom::box<double> cube() const;
00087 geom::rect<double> rect() const;
00088
00089 private:
00090 Bbox& operator=(const Bbox&);
00091
00092 struct Impl;
00093 Impl* const rep;
00094 };
00095
00096 static const char __attribute__((used)) vcid_groovx_gfx_bbox_h_utc20050626084025[] = "$Id: bbox.h 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00097 #endif // !GROOVX_GFX_BBOX_H_UTC20050626084025_DEFINED