1 // SPDX-License-Identifier: LGPL-2.1-or-later 2 // 3 // SPDX-FileCopyrightText: 2009 Bastian Holst <bastianholst@gmx.de> 4 // 5 6 #ifndef MARBLE_FRAMEGRAPHICSITEM_H 7 #define MARBLE_FRAMEGRAPHICSITEM_H 8 9 // Marble 10 #include "marble_export.h" 11 #include "ScreenGraphicsItem.h" 12 13 #include <Qt> // for Qt::PenStyle 14 15 class QBrush; 16 class QPainterPath; 17 18 namespace Marble 19 { 20 21 class FrameGraphicsItemPrivate; 22 23 class MARBLE_EXPORT FrameGraphicsItem : public ScreenGraphicsItem 24 { 25 public: 26 enum FrameType { 27 NoFrame, 28 RectFrame, 29 RoundedRectFrame, 30 ShadowFrame 31 }; 32 33 explicit FrameGraphicsItem( MarbleGraphicsItem *parent = nullptr ); 34 35 ~FrameGraphicsItem() override; 36 37 /** 38 * Returns the type of the frame. 39 */ 40 FrameType frame() const; 41 42 /** 43 * Sets the type of the Frame. Standard is NoFrame. 44 */ 45 void setFrame( FrameType type ); 46 47 /** 48 * Returns the margin of the item. This is used for all margins with the value 0.0. 49 * The padding is the space outside the painted space. 50 */ 51 qreal margin() const; 52 53 /** 54 * Sets the margin of the item. This is used for all margins with the value 0.0. 55 */ 56 void setMargin( qreal margin ); 57 58 /** 59 * Returns the top margin of the item. 60 */ 61 qreal marginTop() const; 62 63 /** 64 * Set the top margin of the item. 65 */ 66 void setMarginTop( qreal marginTop ); 67 68 /** 69 * Returns the bottom margin of the item. 70 */ 71 qreal marginBottom() const; 72 73 /** 74 * Set the bottom margin of the item. 75 */ 76 void setMarginBottom( qreal marginBottom ); 77 78 /** 79 * Returns the left margin of the item. 80 */ 81 qreal marginLeft() const; 82 83 /** 84 * Set the left margin of the item. 85 */ 86 void setMarginLeft( qreal marginLeft ); 87 88 /** 89 * Returns the right margin of the item. 90 */ 91 qreal marginRight() const; 92 93 /** 94 * Set the right margin of the item. 95 */ 96 void setMarginRight( qreal marginRight ); 97 98 /** 99 * Returns the border width of the item. 100 */ 101 qreal borderWidth() const; 102 103 /** 104 * Set the border width of the item. 105 */ 106 void setBorderWidth( qreal width ); 107 108 /** 109 * Returns the padding of the item. 110 * The padding is the empty space inside the border. 111 */ 112 qreal padding() const; 113 114 /** 115 * Set the padding of the item. 116 */ 117 void setPadding( qreal width ); 118 119 /** 120 * Returns the brush of the border. 121 */ 122 QBrush borderBrush() const; 123 124 /** 125 * Change the brush of the border. 126 */ 127 void setBorderBrush( const QBrush &brush ); 128 129 /** 130 * Returns the style of the border. 131 */ 132 Qt::PenStyle borderStyle () const; 133 134 /** 135 * Change the style of the border. 136 */ 137 void setBorderStyle( Qt::PenStyle style ); 138 139 /** 140 * Returns the background brush of the item. 141 */ 142 QBrush background() const; 143 144 /** 145 * Changes the background brush of the item. 146 */ 147 void setBackground( const QBrush &background ); 148 149 QRectF paintedRect() const; 150 151 QRectF contentRect() const override; 152 QSizeF contentSize() const override; 153 154 /** 155 * Sets the size of the content of the item. 156 * @p size is the size required for contents. 157 */ 158 void setContentSize( const QSizeF& size ) override; 159 160 protected: 161 /** 162 * Returns the shape of the background. 163 */ 164 virtual QPainterPath backgroundShape() const; 165 166 /** 167 * This function won't be reimplemented in most cases. 168 */ 169 void paint( QPainter *painter ) override; 170 171 /** 172 * Here the items paint their content. 173 */ 174 virtual void paintContent( QPainter *painter ); 175 176 /** 177 * Paints the background. This function won't be reimplemented in most cases. 178 */ 179 virtual void paintBackground( QPainter *painter ); 180 181 explicit FrameGraphicsItem(FrameGraphicsItemPrivate *dd); 182 183 private: 184 Q_DISABLE_COPY( FrameGraphicsItem ) 185 Q_DECLARE_PRIVATE(FrameGraphicsItem) 186 }; 187 188 } // namespace Marble 189 190 #endif 191