[kgraphviewer-devel] [KGraphViewer/libkgraphviz] 1b59b1f: Add element attributes accessors to CanvasElement

Kevin Funk krf at electrostorm.net
Thu Dec 16 11:31:14 CET 2010


commit 1b59b1face0faadb4e92770a13c52fa088c078a5
branch libkgraphviz
Author: Kevin Funk <krf at electrostorm.net>
Date:   Wed Dec 15 20:14:18 2010 +0100

    Add element attributes accessors to CanvasElement

diff --git a/src/kgraphviz/canvaselement.cpp b/src/kgraphviz/canvaselement.cpp
index eb464d9..89f0a47 100644
--- a/src/kgraphviz/canvaselement.cpp
+++ b/src/kgraphviz/canvaselement.cpp
@@ -43,7 +43,6 @@ using namespace KGraphViz;
 CanvasElementPrivate::CanvasElementPrivate() :
   m_scaleX(0), m_scaleY(0),
   m_xMargin(0), m_yMargin(0), m_gh(0), m_wdhcf(0), m_hdvcf(0),
-  m_font(0),
   m_hovered(false)
 {
 }
@@ -67,7 +66,7 @@ CanvasElement::CanvasElement(
   d->m_pen = Dot2QtConsts::componentData().qtColor(gelement->fontColor());
   
 //   kDebug();
-  d->m_font = FontsCache::changeable().fromName(gelement->fontName());
+  d->m_font = *FontsCache::changeable().fromName(gelement->fontName());
 /*  kDebug() << "Creating CanvasElement for "<<gelement->id();
   kDebug() << "    data: " << wdhcf << "," << hdvcf << "," << gh << "," 
     << scaleX << "," << scaleY << "," << xMargin << "," << yMargin << endl;*/
@@ -124,12 +123,67 @@ void CanvasElement::setGh(qreal gh)
   d->m_gh = gh;
 }
 
+qreal CanvasElement::marginX() const
+{
+  Q_D(const CanvasElement);
+  return d->m_xMargin;
+}
+void CanvasElement::setMarginX(qreal marginX)
+{
+  Q_D(CanvasElement);
+  d->m_xMargin = marginX;
+}
+
+qreal CanvasElement::marginY() const
+{
+  Q_D(const CanvasElement);
+  return d->m_yMargin;
+}
+void CanvasElement::setMarginY(qreal marginY)
+{
+  Q_D(CanvasElement);
+  d->m_yMargin = marginY;
+}
+
+qreal CanvasElement::scaleX() const
+{
+  Q_D(const CanvasElement);
+  return d->m_scaleX;
+}
+void CanvasElement::setScaleX(qreal scaleX)
+{
+  Q_D(CanvasElement);
+  d->m_scaleX = scaleX;
+}
+
+qreal CanvasElement::scaleY() const
+{
+  Q_D(const CanvasElement);
+  return d->m_scaleY;
+}
+void CanvasElement::setScaleY(qreal scaleY)
+{
+  Q_D(CanvasElement);
+  d->m_scaleY = scaleY;
+}
+
+QFont CanvasElement::font() const
+{
+  Q_D(const CanvasElement);
+  return d->m_font;
+}
+void CanvasElement::setFont(const QFont& font)
+{
+  Q_D(CanvasElement);
+  d->m_font = font;
+}
+
 void CanvasElement::modelChanged()
 {
   Q_D(CanvasElement);
   kDebug() ;//<< id();
   d->m_pen = QPen(Dot2QtConsts::componentData().qtColor(d->m_element->fontColor()));
-  d->m_font = FontsCache::changeable().fromName(d->m_element->fontName());
+  d->m_font = *FontsCache::changeable().fromName(d->m_element->fontName());
   prepareGeometryChange();
   computeBoundingRect();
 }
@@ -231,7 +285,7 @@ QWidget *widget)
   Q_UNUSED(option)
   Q_UNUSED(widget)
 
-  Q_D(const CanvasElement);
+  Q_D(CanvasElement);
 
   /// computes the scaling of line width
   qreal widthScaleFactor = (d->m_scaleX+d->m_scaleY)/2;
@@ -472,16 +526,16 @@ QWidget *widget)
       int stringWidthGoal = int(dro.integers[3] * d->m_scaleX);
       int fontSize = element()->fontSize();
 //       kDebug() << element()->id() << " initial fontSize " << fontSize;
-      d->m_font->setPointSize(fontSize);
-      QFontMetrics fm(*d->m_font);
+      d->m_font.setPointSize(fontSize);
+      QFontMetrics fm(d->m_font);
       while (fm.width(dro.str) > stringWidthGoal && fontSize > 1)
       {
         fontSize--;
-        d->m_font->setPointSize(fontSize);
-        fm = QFontMetrics(*d->m_font);
+        d->m_font.setPointSize(fontSize);
+        fm = QFontMetrics(d->m_font);
       }
       p->save();
-      p->setFont(*d->m_font);
+      p->setFont(d->m_font);
       QPen pen(d->m_pen);
       pen.setColor(element()->fontColor());
       p->setPen(pen);
diff --git a/src/kgraphviz/canvaselement.h b/src/kgraphviz/canvaselement.h
index 8379377..24d6c45 100644
--- a/src/kgraphviz/canvaselement.h
+++ b/src/kgraphviz/canvaselement.h
@@ -26,6 +26,7 @@
 #include <QAbstractGraphicsShapeItem>
 
 class QGraphicsScene;
+class QFont;
 
 namespace KGraphViz
 {
@@ -52,12 +53,12 @@ public:
   virtual void paint(QPainter* p, const QStyleOptionGraphicsItem *option,
         QWidget *widget = 0 );
 
+  virtual void computeBoundingRect();
   virtual QRectF boundingRect () const;
-
-  void computeBoundingRect();
   
   void initialize(qreal scaleX, qreal scaleY,
-                  qreal xMargin, qreal yMargin, qreal gh,
+                  qreal marginX, qreal marginY,
+                  qreal gh,
                   qreal wdhcf, qreal hdvcf);
 
   void setGh(qreal gh);
@@ -66,7 +67,18 @@ protected:
   virtual void mousePressEvent ( QGraphicsSceneMouseEvent * event );
   virtual void hoverEnterEvent ( QGraphicsSceneHoverEvent * event );
   virtual void hoverLeaveEvent( QGraphicsSceneHoverEvent * event );
-  
+
+  QFont font() const;
+  void setFont(const QFont& font);
+  qreal scaleX() const;
+  void setScaleX(qreal scaleX);
+  qreal scaleY() const;
+  void setScaleY(qreal scaleY);
+  qreal marginX() const;
+  void setMarginX(qreal marginX);
+  qreal marginY() const;
+  void setMarginY(qreal marginY);
+
 Q_SIGNALS:
   void selected(CanvasElement*, Qt::KeyboardModifiers);
   void hoverEnter(CanvasElement*);
diff --git a/src/kgraphviz/canvaselement_p.h b/src/kgraphviz/canvaselement_p.h
index 9fa31a8..a263930 100644
--- a/src/kgraphviz/canvaselement_p.h
+++ b/src/kgraphviz/canvaselement_p.h
@@ -22,8 +22,9 @@
 
 #include "canvaselement.h"
 
-#include <QPen>
 #include <QBrush>
+#include <QPen>
+#include <QFont>
 
 namespace KGraphViz
 {
@@ -38,7 +39,7 @@ public:
   qreal m_xMargin, m_yMargin, m_gh, m_wdhcf, m_hdvcf;
   GraphElement* m_element;
   DotGraphView* m_view;
-  QFont* m_font;
+  QFont m_font;
   QPen m_pen;
   QBrush m_brush;
   QRectF m_boundingRect;


More information about the kgraphviewer-devel mailing list