Skip to content

Commit

Permalink
- Visualize the Component origin with cross.
Browse files Browse the repository at this point in the history
  • Loading branch information
adeas31 committed May 25, 2015
1 parent 5dfb4ea commit f77f376
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 2 deletions.
22 changes: 21 additions & 1 deletion OMEdit/OMEditGUI/Component/Component.cpp
Expand Up @@ -76,11 +76,14 @@ Component::Component(QString annotation, QString name, QString className, Compon
}
setTransform(mpTransformation->getTransformationMatrix());
createActions();
mpOriginItem = new OriginItem();
createResizerItems();
setToolTip(QString("<b>").append(mClassName).append("</b> ").append(mName));
// if everything is fine with icon then add it to scene
mpGraphicsView->scene()->addItem(this);
mpGraphicsView->scene()->addItem(mpOriginItem);
connect(this, SIGNAL(componentTransformHasChanged()), SLOT(updatePlacementAnnotation()));
connect(this, SIGNAL(componentTransformHasChanged()), SLOT(updateOriginItem()));
}

/* Called for inheritance annotation instance */
Expand Down Expand Up @@ -173,7 +176,7 @@ void Component::initialize()
mpCoOrdinateSystem->setGrid(QPointF(2, 2));
//Construct the temporary polygon that is used when scaling
mpResizerRectangle = new QGraphicsRectItem;
mpResizerRectangle->setZValue(3000); // set to a very high value
mpResizerRectangle->setZValue(4000); // set to a very high value
if (mpGraphicsView) mpGraphicsView->scene()->addItem(mpResizerRectangle);
QPen pen;
pen.setStyle(Qt::DotLine);
Expand Down Expand Up @@ -475,6 +478,11 @@ void Component::getResizerItemsPositions(qreal *x1, qreal *y1, qreal *x2, qreal

void Component::showResizerItems()
{
// show the origin item
if (mpTransformation->hasOrigin()) {
mpOriginItem->setPos(mpTransformation->getOrigin());
mpOriginItem->setActive();
}
qreal x1, y1, x2, y2;
getResizerItemsPositions(&x1, &y1, &x2, &y2);
//Bottom left resizer
Expand All @@ -493,6 +501,7 @@ void Component::showResizerItems()

void Component::hideResizerItems()
{
mpOriginItem->setPassive();
mpBottomLeftResizerItem->setPassive();
mpTopLeftResizerItem->setPassive();
mpTopRightResizerItem->setPassive();
Expand Down Expand Up @@ -930,6 +939,17 @@ void Component::updatePlacementAnnotation()
}
}

/*!
* \brief Component::updateOriginItem
* Slot that updates the position of the component OriginItem.
*/
void Component::updateOriginItem()
{
if (mpTransformation->hasOrigin()) {
mpOriginItem->setPos(mpTransformation->getOrigin());
}
}

void Component::prepareResizeComponent(ResizerItem *pResizerItem)
{
mpSelectedResizerItem = pResizerItem;
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditGUI/Component/Component.h
Expand Up @@ -162,6 +162,7 @@ class Component : public QObject, public QGraphicsItem
ResizerItem *mpTopRightResizerItem;
ResizerItem *mpBottomRightResizerItem;
ResizerItem *mpSelectedResizerItem;
OriginItem *mpOriginItem;
QTransform mTransform;
QRectF mSceneBoundingRect;
QPointF mTransformationStartPosition;
Expand All @@ -182,6 +183,7 @@ class Component : public QObject, public QGraphicsItem
void componentRotationChange();
public slots:
void updatePlacementAnnotation();
void updateOriginItem();
void prepareResizeComponent(ResizerItem *pResizerItem);
void resizeComponent(QPointF newPosition);
void finishResizeComponent();
Expand Down
38 changes: 37 additions & 1 deletion OMEdit/OMEditGUI/Component/CornerItem.cpp
Expand Up @@ -180,7 +180,7 @@ QVariant CornerItem::itemChange(GraphicsItemChange change, const QVariant &value
\brief Represents a red rectangle box around the Component.
*/
/*!
\param pParent - pointer to QGraphicsItem.
\param pComponent - pointer to Component.
*/
ResizerItem::ResizerItem(Component *pComponent)
: QGraphicsItem(pComponent), mIsPressed(false)
Expand Down Expand Up @@ -313,3 +313,39 @@ void ResizerItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
}
}
}

/*!
\class OriginItem
\brief Represents a cross at the origin of the Component.
*/
/*!
\param pComponent - pointer to Component.
*/
OriginItem::OriginItem()
{
setZValue(3000);
mActivePen = QPen(Qt::red, 2);
mActivePen.setCosmetic(true);
mPassivePen = QPen(Qt::transparent);
mRectangle = QRectF (-5, -5, 10, 10);
mPen = mPassivePen;
}

/*!
Reimplementation of paint.\n
Draws the cross shape for the OriginItem.
\param painter - pointer to QPainter
\param option - pointer to QStyleOptionGraphicsItem
\param widget - pointer to QWidget
*/
void OriginItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
painter->setRenderHint(QPainter::Antialiasing);
painter->setPen(mPen);
// draw horizontal Line
painter->drawLine(-2, 0, 2, 0);
// draw vertical Line
painter->drawLine(0, -2, 0, 2);
}
15 changes: 15 additions & 0 deletions OMEdit/OMEditGUI/Component/CornerItem.h
Expand Up @@ -105,4 +105,19 @@ class ResizerItem : public QObject, public QGraphicsItem
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
};

class OriginItem : public QGraphicsItem
{
public:
OriginItem();
void setActive() {mPen = mActivePen;}
void setPassive() {mPen = mPassivePen;}
QRectF boundingRect() const {return mRectangle;}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
private:
QRectF mRectangle;
QPen mPen;
QPen mActivePen;
QPen mPassivePen;
};

#endif // CORNERITEM_H

0 comments on commit f77f376

Please sign in to comment.