Element editor: introduced CustomElementPart::sceneGeometricRect(), which provides a margin-less equivalent to sceneBoundingRect().

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@2035 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier 2013-02-11 18:35:13 +00:00
parent cbee08b115
commit ec6ea11d0d
19 changed files with 100 additions and 0 deletions

View File

@ -73,6 +73,7 @@ class CustomElementPart {
Typically, useless primitives are discarded when saving the element. Typically, useless primitives are discarded when saving the element.
*/ */
virtual bool isUseless() const = 0; virtual bool isUseless() const = 0;
virtual QRectF sceneGeometricRect() const = 0;
/** /**
Inform this part a user-induced transformation is about to begin. This method can be used to save data required by handleUserTransformation(). Inform this part a user-induced transformation is about to begin. This method can be used to save data required by handleUserTransformation().
*/ */

View File

@ -256,6 +256,16 @@ bool PartArc::isUseless() const {
return(rect().isNull() || !angle()); return(rect().isNull() || !angle());
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartArc::sceneGeometricRect() const {
return(mapToScene(rect()).boundingRect());
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a initial_selection_rect bounding rectangle. within the \a initial_selection_rect bounding rectangle.

View File

@ -60,6 +60,7 @@ class PartArc : public QGraphicsEllipseItem, public CustomElementGraphicPart {
virtual void setProperty(const QString &, const QVariant &); virtual void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);

View File

@ -199,6 +199,16 @@ bool PartCircle::isUseless() const {
return(rect().isNull()); return(rect().isNull());
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartCircle::sceneGeometricRect() const {
return(mapToScene(rect()).boundingRect());
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a initial_selection_rect bounding rectangle. within the \a initial_selection_rect bounding rectangle.

View File

@ -52,6 +52,7 @@ class PartCircle : public QGraphicsEllipseItem, public CustomElementGraphicPart
virtual void setProperty(const QString &, const QVariant &); virtual void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);

View File

@ -189,6 +189,16 @@ bool PartEllipse::isUseless() const {
return(rect().isNull()); return(rect().isNull());
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartEllipse::sceneGeometricRect() const {
return(mapToScene(rect()).boundingRect());
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a initial_selection_rect bounding rectangle. within the \a initial_selection_rect bounding rectangle.

View File

@ -51,6 +51,7 @@ class PartEllipse : public QGraphicsEllipseItem, public CustomElementGraphicPart
virtual void setProperty(const QString &, const QVariant &); virtual void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);

View File

@ -476,6 +476,16 @@ bool PartLine::isUseless() const {
return(sceneP1() == sceneP2()); return(sceneP1() == sceneP2());
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartLine::sceneGeometricRect() const {
return(QRectF(sceneP1(), sceneP2()));
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a initial_selection_rect bounding rectangle. within the \a initial_selection_rect bounding rectangle.

View File

@ -68,6 +68,7 @@ class PartLine : public QGraphicsLineItem, public CustomElementGraphicPart {
virtual void setProperty(const QString &, const QVariant &); virtual void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);
virtual void setFirstEndType(const QET::EndType &); virtual void setFirstEndType(const QET::EndType &);

View File

@ -163,6 +163,16 @@ bool PartPolygon::isUseless() const {
return(true); return(true);
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartPolygon::sceneGeometricRect() const {
return(mapToScene(polygon().boundingRect()).boundingRect());
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a initial_selection_rect bounding rectangle. within the \a initial_selection_rect bounding rectangle.

View File

@ -56,6 +56,7 @@ class PartPolygon : public QGraphicsPolygonItem, public CustomElementGraphicPart
void setProperty(const QString &, const QVariant &); void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);

View File

@ -196,6 +196,16 @@ bool PartRectangle::isUseless() const {
return(rect().isNull()); return(rect().isNull());
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartRectangle::sceneGeometricRect() const {
return(mapToScene(rect()).boundingRect());
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a initial_selection_rect bounding rectangle. within the \a initial_selection_rect bounding rectangle.

View File

@ -51,6 +51,7 @@ class PartRectangle : public QGraphicsRectItem, public CustomElementGraphicPart
virtual void setProperty(const QString &, const QVariant &); virtual void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);

View File

@ -220,6 +220,16 @@ bool PartTerminal::isUseless() const {
return(false); return(false);
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartTerminal::sceneGeometricRect() const {
return(sceneBoundingRect());
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a initial_selection_rect bounding rectangle. within the \a initial_selection_rect bounding rectangle.

View File

@ -57,6 +57,7 @@ class PartTerminal : public CustomElementPart, public QGraphicsItem {
virtual void setProperty(const QString &, const QVariant &); virtual void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);

View File

@ -303,6 +303,16 @@ bool PartText::isUseless() const {
return(toPlainText().isEmpty()); return(toPlainText().isEmpty());
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartText::sceneGeometricRect() const {
return(sceneBoundingRect());
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a rect bounding rectangle. within the \a rect bounding rectangle.

View File

@ -56,6 +56,7 @@ class PartText : public QGraphicsTextItem, public CustomElementPart {
virtual void setProperty(const QString &, const QVariant &); virtual void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0 ); virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0 );

View File

@ -346,6 +346,16 @@ bool PartTextField::isUseless() const {
return(false); return(false);
} }
/**
@return the minimum, margin-less rectangle this part can fit into, in scene
coordinates. It is different from boundingRect() because it is not supposed
to imply any margin, and it is different from shape because it is a regular
rectangle, not a complex shape.
*/
QRectF PartTextField::sceneGeometricRect() const {
return(sceneBoundingRect());
}
/** /**
Start the user-induced transformation, provided this primitive is contained Start the user-induced transformation, provided this primitive is contained
within the \a initial_selection_rect bounding rectangle. within the \a initial_selection_rect bounding rectangle.

View File

@ -62,6 +62,7 @@ class PartTextField : public QGraphicsTextItem, public CustomElementPart {
virtual void setProperty(const QString &, const QVariant &); virtual void setProperty(const QString &, const QVariant &);
virtual QVariant property(const QString &); virtual QVariant property(const QString &);
virtual bool isUseless() const; virtual bool isUseless() const;
virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0 ); virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0 );