00001
00003
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
00033
00034 #ifndef GROOVX_GFX_GXLINE_CC_UTC20050626084025_DEFINED
00035 #define GROOVX_GFX_GXLINE_CC_UTC20050626084025_DEFINED
00036
00037 #include "gxline.h"
00038
00039 #include "geom/box.h"
00040
00041 #include "gfx/bbox.h"
00042 #include "gfx/canvas.h"
00043
00044 #include "io/reader.h"
00045 #include "io/writer.h"
00046
00047 #include "rutz/trace.h"
00048 #include "rutz/debug.h"
00049 GVX_DBG_REGISTER
00050
00051 namespace
00052 {
00053 const int GXLINE_SVID = 0;
00054 }
00055
00057
00058
00059
00061
00062 const FieldMap& GxLine::classFields()
00063 {
00064 GVX_TRACE("GxLine::classFields");
00065 static const Field FIELD_ARRAY[] =
00066 {
00067 Field("start", Field::ValueType(), &GxLine::start,
00068 "0. 0. 0.", "-10. -10. -10.", "10. 10. 10.", "0.1 0.1 0.1",
00069 Field::NEW_GROUP | Field::MULTI),
00070 Field("stop", Field::ValueType(), &GxLine::stop,
00071 "0. 0. 0.", "-10. -10. -10.", "10. 10. 10.", "0.1 0.1 0.1",
00072 Field::MULTI),
00073 Field("width", &GxLine::itsWidth, 1, 1, 30, 1)
00074 };
00075
00076 static FieldMap FIELD_MAP(FIELD_ARRAY);
00077
00078 return FIELD_MAP;
00079 }
00080
00081 GxLine* GxLine::make()
00082 {
00083 GVX_TRACE("GxLine::make");
00084 return new GxLine;
00085 }
00086
00087 GxLine::GxLine() :
00088 FieldContainer(&sigNodeChanged),
00089 start(0., 0., 0.),
00090 stop(0., 0., 0.),
00091 itsWidth(1)
00092 {
00093 GVX_TRACE("GxLine::GxLine");
00094 setFieldMap(GxLine::classFields());
00095 }
00096
00097 GxLine::~GxLine() throw()
00098 {
00099 GVX_TRACE("GxLine::~GxLine");
00100 }
00101
00102 io::version_id GxLine::class_version_id() const
00103 {
00104 GVX_TRACE("GxLine::class_version_id");
00105 return GXLINE_SVID;
00106 }
00107
00108 void GxLine::read_from(io::reader& reader)
00109 {
00110 GVX_TRACE("GxLine::read_from");
00111 readFieldsFrom(reader, classFields());
00112 }
00113
00114 void GxLine::write_to(io::writer& writer) const
00115 {
00116 GVX_TRACE("GxLine::write_to");
00117 writeFieldsTo(writer, classFields(), GXLINE_SVID);
00118 }
00119
00121
00123
00124 void GxLine::getBoundingCube(Gfx::Bbox& bbox) const
00125 {
00126 GVX_TRACE("GxColor::getBoundingCube");
00127
00128 bbox.vertex3(start);
00129 bbox.vertex3(stop);
00130 }
00131
00132 void GxLine::draw(Gfx::Canvas& canvas) const
00133 {
00134 GVX_TRACE("GxLine::draw");
00135
00136 Gfx::AttribSaver as(canvas);
00137
00138 if (itsWidth > 0)
00139 canvas.setLineWidth(itsWidth);
00140
00141 Gfx::LinesBlock lb(canvas);
00142 canvas.vertex3(start.vec());
00143 canvas.vertex3(stop.vec());
00144 }
00145
00146 static const char __attribute__((used)) vcid_groovx_gfx_gxline_cc_utc20050626084025[] = "$Id: gxline.cc 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00147 #endif // !GROOVX_GFX_GXLINE_CC_UTC20050626084025_DEFINED