7#include "FrameGraphicsItem.h"
8#include "FrameGraphicsItem_p.h"
11#include "MarbleDebug.h"
16#include <QPainterPath>
17#include <QPixmapCache>
23FrameGraphicsItem::FrameGraphicsItem( MarbleGraphicsItem *parent )
24 : ScreenGraphicsItem(new FrameGraphicsItemPrivate(this, parent))
26 Q_D(FrameGraphicsItem);
30FrameGraphicsItem::FrameGraphicsItem(FrameGraphicsItemPrivate *dd)
31 : ScreenGraphicsItem(dd)
33 Q_D(FrameGraphicsItem);
37FrameGraphicsItem::~FrameGraphicsItem()
41FrameGraphicsItem::FrameType FrameGraphicsItem::frame()
const
43 Q_D(
const FrameGraphicsItem);
47void FrameGraphicsItem::setFrame( FrameType type )
49 Q_D(FrameGraphicsItem);
51 setPadding( padding() );
54qreal FrameGraphicsItem::margin()
const
56 Q_D(
const FrameGraphicsItem);
60void FrameGraphicsItem::setMargin( qreal margin )
62 Q_D(FrameGraphicsItem);
68qreal FrameGraphicsItem::marginTop()
const
70 Q_D(
const FrameGraphicsItem);
71 return d->m_marginTop;
74void FrameGraphicsItem::setMarginTop( qreal marginTop )
76 Q_D(FrameGraphicsItem);
77 d->m_marginTop = marginTop;
82qreal FrameGraphicsItem::marginBottom()
const
84 Q_D(
const FrameGraphicsItem);
85 return d->m_marginBottom;
88void FrameGraphicsItem::setMarginBottom( qreal marginBottom )
90 Q_D(FrameGraphicsItem);
91 d->m_marginBottom = marginBottom;
96qreal FrameGraphicsItem::marginLeft()
const
98 Q_D(
const FrameGraphicsItem);
99 return d->m_marginLeft;
102void FrameGraphicsItem::setMarginLeft( qreal marginLeft )
104 Q_D(FrameGraphicsItem);
105 d->m_marginLeft = marginLeft;
110qreal FrameGraphicsItem::marginRight()
const
112 Q_D(
const FrameGraphicsItem);
113 return d->m_marginRight;
116void FrameGraphicsItem::setMarginRight( qreal marginRight )
118 Q_D(FrameGraphicsItem);
119 d->m_marginRight = marginRight;
124qreal FrameGraphicsItem::borderWidth()
const
126 Q_D(
const FrameGraphicsItem);
127 return d->m_borderWidth;
130void FrameGraphicsItem::setBorderWidth( qreal width )
132 Q_D(FrameGraphicsItem);
133 d->m_borderWidth = width;
138qreal FrameGraphicsItem::padding()
const
140 Q_D(
const FrameGraphicsItem);
144void FrameGraphicsItem::setPadding( qreal width )
146 Q_D(FrameGraphicsItem);
148 d->m_padding = width;
153QBrush FrameGraphicsItem::borderBrush()
const
155 Q_D(
const FrameGraphicsItem);
156 return d->m_borderBrush;
159void FrameGraphicsItem::setBorderBrush(
const QBrush &brush )
161 Q_D(FrameGraphicsItem);
162 d->m_borderBrush = brush;
168 Q_D(
const FrameGraphicsItem);
169 return d->m_borderStyle;
172void FrameGraphicsItem::setBorderStyle(
Qt::PenStyle style )
174 Q_D(FrameGraphicsItem);
175 d->m_borderStyle = style;
179QBrush FrameGraphicsItem::background()
const
181 Q_D(
const FrameGraphicsItem);
182 return d->m_backgroundBrush;
185void FrameGraphicsItem::setBackground(
const QBrush &background )
187 Q_D(FrameGraphicsItem);
188 d->m_backgroundBrush = background;
192QRectF FrameGraphicsItem::contentRect()
const
194 Q_D(
const FrameGraphicsItem);
195 qreal marginTop = ( d->m_marginTop == 0.0 ) ? d->m_margin : d->m_marginTop;
196 qreal marginLeft = ( d->m_marginLeft == 0.0 ) ? d->m_margin : d->m_marginLeft;
199 marginTop + d->m_padding,
200 d->m_contentSize.width(),
201 d->m_contentSize.height() );
206QSizeF FrameGraphicsItem::contentSize()
const
208 Q_D(
const FrameGraphicsItem);
209 return d->m_contentSize;
212QRectF FrameGraphicsItem::paintedRect()
const
214 Q_D(
const FrameGraphicsItem);
215 qreal marginTop = ( d->m_marginTop == 0.0 ) ? d->m_margin : d->m_marginTop;
216 qreal marginBottom = ( d->m_marginBottom == 0.0 ) ? d->m_margin : d->m_marginBottom;
217 qreal marginLeft = ( d->m_marginLeft == 0.0 ) ? d->m_margin : d->m_marginLeft;
218 qreal marginRight = ( d->m_marginRight == 0.0 ) ? d->m_margin : d->m_marginRight;
220 QSizeF size = this->size();
223 size.
width() - ( marginLeft + marginRight ),
224 size.
height() - ( marginTop + marginBottom ) );
228void FrameGraphicsItem::setContentSize(
const QSizeF& size )
230 Q_D(FrameGraphicsItem);
231 d->m_contentSize = size;
237 Q_D(
const FrameGraphicsItem);
239 if ( d->m_frame == RectFrame || d->m_frame == ShadowFrame ) {
240 QRectF renderedRect = paintedRect();
243 else if ( d->m_frame == RoundedRectFrame ) {
251void FrameGraphicsItem::paintBackground(
QPainter *painter )
253 Q_D(FrameGraphicsItem);
255 painter->
setPen(
QPen( d->m_borderBrush, d->m_borderWidth, d->m_borderStyle ) );
256 painter->
setBrush( d->m_backgroundBrush );
257 painter->
drawPath( backgroundShape() );
262void FrameGraphicsItem::paint(
QPainter *painter )
264 Q_D(FrameGraphicsItem);
268 if ( frame() == ShadowFrame )
272 shadow =
QPixmap(QStringLiteral(
":/marble/frames/shadowframe.png"));
275 qDrawBorderPixmap( painter,
QRect(
QPoint( 0, 0 ), size().toSize() ),
276 QMargins( 10, 10, 10, 10 ), shadow );
279 painter->
translate( paintedRect().topLeft() );
280 paintBackground( painter );
281 painter->
translate( d->m_padding, d->m_padding );
282 paintContent( painter );
286void FrameGraphicsItem::paintContent(
QPainter *painter )
Type type(const QSqlDatabase &db)
QString path(const QString &relativePath)
Binds a QML item to a specific geodetic location in screen coordinates.
void drawPath(const QPainterPath &path)
void setBrush(Qt::BrushStyle style)
void setPen(Qt::PenStyle style)
void translate(const QPoint &offset)
bool find(const Key &key, QPixmap *pixmap)
Key insert(const QPixmap &pixmap)
QSizeF size() const const
qreal height() const const
qreal width() const const