X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fbase%2Frs_solid.cpp;h=100dcc01fce19c16a8adbc899575a72372eacef7;hb=27d4a138d23453e93a833e9347444b828a971cb4;hp=2badd754754d78ee1a3e7974e7f75b4d45a1218b;hpb=89e127aa3dbd74d3158e6dbe0ca1703420c04395;p=architektonas diff --git a/src/base/rs_solid.cpp b/src/base/rs_solid.cpp index 2badd75..100dcc0 100644 --- a/src/base/rs_solid.cpp +++ b/src/base/rs_solid.cpp @@ -14,27 +14,66 @@ #include "rs_solid.h" -#include "rs_graphicview.h" +#include "graphicview.h" #include "paintintf.h" /** * Default constructor. */ -RS_Solid::RS_Solid(RS_EntityContainer * parent, const RS_SolidData& d): +RS_Solid::RS_Solid(RS_EntityContainer * parent, const RS_SolidData & d): RS_AtomicEntity(parent), data(d) { calculateBorders(); } +/*virtual*/ RS_Entity * RS_Solid::clone() +{ + RS_Solid * s = new RS_Solid(*this); + s->initId(); + return s; +} + +/** @return RS_ENTITY_POINT */ +/*virtual*/ RS2::EntityType RS_Solid::rtti() const +{ + return RS2::EntitySolid; +} + +/** + * @return Start point of the entity. + */ +/*virtual*/ Vector RS_Solid::getStartpoint() const +{ + return Vector(false); +} + +/** + * @return End point of the entity. + */ +/*virtual*/ Vector RS_Solid::getEndpoint() const +{ + return Vector(false); +} + +/** @return Copy of data that defines the point. */ +RS_SolidData RS_Solid::getData() const +{ + return data; +} + +/** @return true if this is a triangle. */ +bool RS_Solid::isTriangle() +{ + return !data.corner[3].valid; +} + /** * @return Corner number 'num'. */ Vector RS_Solid::getCorner(int num) { if (num >= 0 && num < 4) - { return data.corner[num]; - } else { RS_DEBUG->print("Illegal corner requested from Solid", RS_Debug::D_WARNING); @@ -52,12 +91,12 @@ Vector RS_Solid::getCorner(int num) void RS_Solid::shapeArrow(const Vector & point, double angle, double arrowSize) { double cosv1, sinv1, cosv2, sinv2; - double arrowSide = arrowSize/cos(0.165); + double arrowSide = arrowSize / cos(0.165); - cosv1 = cos(angle+0.165)*arrowSide; - sinv1 = sin(angle+0.165)*arrowSide; - cosv2 = cos(angle-0.165)*arrowSide; - sinv2 = sin(angle-0.165)*arrowSide; + cosv1 = cos(angle + 0.165) * arrowSide; + sinv1 = sin(angle + 0.165) * arrowSide; + cosv2 = cos(angle - 0.165) * arrowSide; + sinv2 = sin(angle - 0.165) * arrowSide; data.corner[0] = point; data.corner[1] = Vector(point.x - cosv1, point.y - sinv1); @@ -87,7 +126,7 @@ Vector RS_Solid::getNearestEndpoint(const Vector & coord, double * dist) double curDist; Vector ret; - for (int i=0; i<4; ++i) + for(int i=0; i<4; ++i) { if (data.corner[i].valid) { @@ -101,7 +140,7 @@ Vector RS_Solid::getNearestEndpoint(const Vector & coord, double * dist) } } - if (dist != NULL) + if (dist) *dist = minDist; return ret; @@ -110,8 +149,8 @@ Vector RS_Solid::getNearestEndpoint(const Vector & coord, double * dist) /** * @todo Implement this. */ -Vector RS_Solid::getNearestPointOnEntity(const Vector & /*coord*/, - bool /*onEntity*/, double * /*dist*/, RS_Entity ** /*entity*/) +Vector RS_Solid::getNearestPointOnEntity(const Vector & /*coord*/, bool /*onEntity*/, + double * /*dist*/, RS_Entity ** /*entity*/) { Vector ret(false); return ret; @@ -119,7 +158,7 @@ Vector RS_Solid::getNearestPointOnEntity(const Vector & /*coord*/, Vector RS_Solid::getNearestCenter(const Vector & /*coord*/, double * dist) { - if (dist != NULL) + if (dist) *dist = RS_MAXDOUBLE; return Vector(false); @@ -127,16 +166,16 @@ Vector RS_Solid::getNearestCenter(const Vector & /*coord*/, double * dist) Vector RS_Solid::getNearestMiddle(const Vector & /*coord*/, double * dist) { - if (dist != NULL) - *dist = RS_MAXDOUBLE; + if (dist) + *dist = RS_MAXDOUBLE; return Vector(false); } Vector RS_Solid::getNearestDist(double /*distance*/, const Vector & /*coord*/, double * dist) { - if (dist != NULL) - *dist = RS_MAXDOUBLE; + if (dist) + *dist = RS_MAXDOUBLE; return Vector(false); } @@ -184,10 +223,9 @@ void RS_Solid::mirror(Vector axisPoint1, Vector axisPoint2) calculateBorders(); } -//void RS_Solid::draw(RS_Painter* painter, RS_GraphicView* view, double /*patternOffset*/) -void RS_Solid::draw(PaintInterface * painter, RS_GraphicView * view, double /*patternOffset*/) +void RS_Solid::draw(PaintInterface * painter, GraphicView * view, double /*patternOffset*/) { - if (painter == NULL || view == NULL) + if (!painter || !view) return; RS_SolidData d = getData();