initial import
[vym] / frameobj.cpp
diff --git a/frameobj.cpp b/frameobj.cpp
new file mode 100644 (file)
index 0000000..c6bde5b
--- /dev/null
@@ -0,0 +1,258 @@
+#include "frameobj.h"
+
+#include <qcolor.h>
+
+/////////////////////////////////////////////////////////////////
+// FrameObj
+/////////////////////////////////////////////////////////////////
+FrameObj::FrameObj() : MapObj()
+{
+//    cout << "Const FrameObj ()\n";
+    init ();
+}
+
+FrameObj::FrameObj(QGraphicsScene *s) :MapObj(s)
+{
+//    cout << "Const FrameObj\n";
+    init ();
+}
+
+FrameObj::~FrameObj()
+{
+       clear();
+}
+
+void FrameObj::init()
+{
+    type=NoFrame;
+    padding=10;
+       borderWidth=1;
+       penColor=QColor (Qt::black);
+       brushColor=QColor (Qt::white);
+}
+
+void FrameObj::clear()
+{
+    switch (type)
+    {
+               case NoFrame:
+                       break;
+               case Rectangle:
+                       delete rectFrame;
+                       break;
+               case Ellipse:
+                       delete ellipseFrame;
+                       break;
+    }
+       type=NoFrame;
+       padding=0;
+}
+
+void FrameObj::move(double x, double y)
+{
+    switch (type)
+    {
+               case NoFrame:
+                       break;
+               case Rectangle:
+                       rectFrame->setPos (x,y);
+                       break;
+               case Ellipse:
+                       ellipseFrame->setPos (x,y);
+                       break;
+    }
+}
+
+void FrameObj::moveBy(double x, double y)
+{
+       MapObj::moveBy (x,y);
+}
+
+void FrameObj::positionBBox()
+{
+}
+
+void FrameObj::calcBBoxSize()
+{
+}
+
+void FrameObj::setRect(const QRectF &r)
+{
+       bbox=r;
+    switch (type)
+    {
+               case NoFrame:
+                       break;
+               case Rectangle:
+       //              rectFrame->prepareGeometryChange();
+                       rectFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ));
+                       break;
+               case Ellipse:
+       //              ellipseFrame->prepareGeometryChange();
+                       ellipseFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ));
+                       break;
+    }
+}
+
+void FrameObj::setPadding (const int &i)
+{
+       padding=i;
+       repaint();
+}
+
+int FrameObj::getPadding()
+{
+       if (type==NoFrame) 
+               return 0;
+       else    
+               return padding;
+}
+
+void FrameObj::setBorderWidth (const int &i)
+{
+       borderWidth=i;
+       repaint();
+}
+
+int FrameObj::getBorderWidth()
+{
+       return borderWidth;
+}
+
+FrameObj::FrameType FrameObj::getFrameType()
+{
+       return type;
+}
+
+QString FrameObj::getFrameTypeName()
+{
+    switch (type)
+    {
+               case Rectangle:
+                       return "Rectangle";
+                       break;
+               case Ellipse:
+                       return "Ellipse";
+                       break;
+               default:
+                       return "NoFrame";
+    }
+}
+
+void FrameObj::setFrameType(const FrameType &t)
+{
+       if (t!=type)
+       {
+               clear();
+               type=t;
+               switch (type)
+               {
+                       case NoFrame:
+                               break;
+                       case Rectangle:
+                               rectFrame = scene->addRect(QRectF(0,0,0,0), QPen(penColor), brushColor);
+                               rectFrame->setZValue(Z_FRAME);
+                               rectFrame->show();
+                               break;
+                       case Ellipse:
+                               ellipseFrame = scene->addEllipse(QRectF(0,0,0,0), QPen(penColor), brushColor);
+                               ellipseFrame->setZValue(Z_FRAME);
+                               ellipseFrame->show();
+                               break;
+               }
+       }
+       setVisibility (visible);
+}
+
+void FrameObj::setFrameType(const QString &t)
+{
+       if (t=="Rectangle")
+               FrameObj::setFrameType (Rectangle);
+       else if (t=="Ellipse")  
+               FrameObj::setFrameType (Ellipse);
+       else    
+               FrameObj::setFrameType (NoFrame);
+}
+
+void FrameObj::setPenColor (QColor col)
+{
+       penColor=col;
+       repaint();
+}
+
+QColor FrameObj::getPenColor ()
+{
+       return penColor;
+}
+
+void FrameObj::setBrushColor (QColor col)
+{
+       brushColor=col;
+       repaint();
+}
+
+QColor FrameObj::getBrushColor ()
+{
+       return brushColor;
+}
+
+void FrameObj::repaint()
+{
+       QPen pen;
+       pen.setColor (penColor);
+       pen.setWidth (borderWidth);
+       QBrush brush (brushColor);
+       switch (type)
+       {
+               case Rectangle:
+                       rectFrame->setPen   (pen);
+                       rectFrame->setBrush (brush);
+                       break;
+               case Ellipse:
+                       ellipseFrame->setPen   (pen);
+                       ellipseFrame->setBrush (brush);
+                       break;
+               default:
+                       break;
+       }
+}
+
+
+void FrameObj::setVisibility (bool v)
+{
+    MapObj::setVisibility(v);
+       switch (type)
+       {
+               case NoFrame:
+                       break;
+               case Rectangle:
+                       if (visible)
+                               rectFrame->show();
+                       else    
+                               rectFrame->hide();
+                       break;
+               case Ellipse:
+                       if (visible)
+                               ellipseFrame->show();
+                       else    
+                               ellipseFrame->hide();
+                       break;
+       }
+}
+
+QString FrameObj::saveToDir ()
+{
+       if (type==NoFrame) return QString();
+       QString frameTypeAttr=attribut ("frameType",getFrameTypeName());
+       QString penColAttr=attribut ("penColor",penColor.name() );
+       QString brushColAttr=attribut ("brushColor",brushColor.name() );
+       QString paddingAttr=attribut ("padding",QString::number (padding) );
+       QString borderWidthAttr=attribut ("borderWidth",QString::number (borderWidth) );
+       return singleElement (
+               "frame",frameTypeAttr + 
+               penColAttr + 
+               brushColAttr +
+               paddingAttr +
+               borderWidthAttr);
+}
+