]> Shamusworld >> Repos - architektonas/blobdiff - src/base/rs_solid.cpp
Refactoring: Moved RS_GraphicView to GraphicView.
[architektonas] / src / base / rs_solid.cpp
index 2badd754754d78ee1a3e7974e7f75b4d45a1218b..100dcc01fce19c16a8adbc899575a72372eacef7 100644 (file)
 
 #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();