17 #ifndef QGSCOMPOSERITEM_H
18 #define QGSCOMPOSERITEM_H
21 #include <QGraphicsRectItem>
41 ComposerItem = UserType + 100,
101 virtual int type()
const {
return ComposerItem; }
104 virtual void setSelected(
bool s );
107 virtual bool selected(
void ) {
return QGraphicsRectItem::isSelected();}
110 virtual bool writeSettings(
void );
113 virtual bool readSettings(
void );
116 virtual bool removeSettings(
void );
119 void move(
double dx,
double dy );
124 virtual void moveContent(
double dx,
double dy ) { Q_UNUSED( dx ); Q_UNUSED( dy ); }
130 virtual void zoomContent(
int delta,
double x,
double y ) { Q_UNUSED( delta ); Q_UNUSED( x ); Q_UNUSED( y ); }
133 void setItemPosition(
double x,
double y, ItemPositionMode itemPoint = UpperLeft );
137 void setItemPosition(
double x,
double y,
double width,
double height, ItemPositionMode itemPoint = UpperLeft );
141 virtual void setSceneRect(
const QRectF& rectangle );
147 virtual bool writeXML( QDomElement& elem, QDomDocument & doc )
const = 0;
150 bool _writeXML( QDomElement& itemElem, QDomDocument& doc )
const;
156 virtual bool readXML(
const QDomElement& itemElem,
const QDomDocument& doc ) = 0;
159 bool _readXML(
const QDomElement& itemElem,
const QDomDocument& doc );
164 void setFrame(
bool drawFrame ) {mFrame = drawFrame;}
178 void cancelCommand();
185 void drawText( QPainter* p,
double x,
double y,
const QString& text,
const QFont& font )
const;
188 void drawText( QPainter* p,
const QRectF& rect,
const QString& text,
const QFont& font, Qt::AlignmentFlag halignement = Qt::AlignLeft, Qt::AlignmentFlag valignement = Qt::AlignTop )
const;
191 double textWidthMillimeters(
const QFont& font,
const QString& text )
const;
195 double fontHeightCharacterMM(
const QFont& font,
const QChar& c )
const;
198 double fontAscentMillimeters(
const QFont& font )
const;
201 double pixelFontSize(
double pointSize )
const;
204 QFont scaledFontPixelSize(
const QFont& font )
const;
216 void updateCursor(
const QPointF& itemPos );
221 virtual void setRotation(
double r );
251 virtual void mouseMoveEvent( QGraphicsSceneMouseEvent * event );
252 virtual void mousePressEvent( QGraphicsSceneMouseEvent * event );
253 virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent * event );
255 virtual void hoverMoveEvent( QGraphicsSceneHoverEvent * event );
258 Qt::CursorShape cursorForPosition(
const QPointF& itemCoordPos );
271 void changeItemRectangle(
const QPointF& currentPosition,
const QPointF& mouseMoveStartPos,
const QGraphicsRectItem* originalItem,
double dx,
double dy, QGraphicsRectItem* changeItem );
274 virtual void drawSelectionBoxes( QPainter* p );
277 virtual void drawFrame( QPainter* p );
280 virtual void drawBackground( QPainter* p );
283 void drawArrowHead( QPainter* p,
double x,
double y,
double angle,
double arrowHeadWidth )
const;
286 double angle(
const QPointF& p1,
const QPointF& p2 )
const;
290 double rectHandlerBorderTolerance()
const;
294 double lockSymbolSize()
const;
299 double horizontalViewScaleFactor()
const;
304 bool imageSizeConsideringRotation(
double& width,
double& height )
const;
306 bool cornerPointOnRotatedAndScaledRect(
double& x,
double& y,
double width,
double height )
const;
308 QPointF pointOnLineWithDistance(
const QPointF& startPoint,
const QPointF& directionPoint,
double distance )
const;
310 void sizeChangedByRotation(
double& width,
double& height );
315 void rotate(
double angle,
double& x,
double& y )
const;
319 void rotationChanged(
double newRotation );