File indexing completed on 2024-05-05 03:49:47

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2009 Bastian Holst <bastianholst@gmx.de>
0004 //
0005 
0006 #ifndef MARBLE_FRAMEGRAPHICSITEMPRIVATE_H
0007 #define MARBLE_FRAMEGRAPHICSITEMPRIVATE_H
0008 
0009 // Marble
0010 #include "FrameGraphicsItem.h"
0011 #include "ScreenGraphicsItem_p.h"
0012 
0013 // Qt
0014 #include<QDebug>
0015 #include<QBrush>
0016 
0017 namespace Marble
0018 {
0019 
0020 class FrameGraphicsItemPrivate : public ScreenGraphicsItemPrivate
0021 {
0022  public:
0023     FrameGraphicsItemPrivate(FrameGraphicsItem *frameGraphicsItem,
0024                              MarbleGraphicsItem *parent)
0025         : ScreenGraphicsItemPrivate(frameGraphicsItem, parent),
0026           m_frame(FrameGraphicsItem::NoFrame),
0027           m_contentSize( 0.0, 0.0 ),
0028           m_margin( 0.0 ),
0029           m_marginTop( 0.0 ),
0030           m_marginBottom( 0.0 ),
0031           m_marginLeft( 0.0 ),
0032           m_marginRight( 0.0 ),
0033           m_padding( 0.0 ),
0034           m_borderWidth( 1.0 ),
0035           m_borderBrush( QBrush( Qt::black ) ),
0036           m_borderStyle( Qt::SolidLine ),
0037           m_backgroundBrush(QBrush(QColor(192, 192, 192, 192)))
0038     {
0039     }
0040 
0041     void updateSize()
0042     {
0043         qreal const border2 = 0.5 * m_borderWidth;
0044         qreal marginTop = qMax( border2, ( m_marginTop == 0.0 ) ? m_margin : m_marginTop );
0045         qreal marginBottom = qMax( border2, ( m_marginBottom == 0.0 ) ? m_margin : m_marginBottom );
0046         qreal marginLeft = qMax( border2, ( m_marginLeft == 0.0 ) ? m_margin : m_marginLeft );
0047         qreal marginRight = qMax( border2, ( m_marginRight == 0.0 ) ? m_margin : m_marginRight );
0048 
0049         QSizeF totalSize = m_contentSize;
0050         totalSize += QSizeF( marginLeft + marginRight, marginTop + marginBottom );
0051         totalSize += QSizeF( m_padding * 2, m_padding * 2 );
0052 
0053         m_marbleGraphicsItem->setSize(totalSize);
0054     }
0055 
0056     FrameGraphicsItem::FrameType m_frame;
0057     QSizeF m_contentSize;
0058 
0059     // Margin
0060     qreal m_margin;
0061     qreal m_marginTop;
0062     qreal m_marginBottom;
0063     qreal m_marginLeft;
0064     qreal m_marginRight;
0065     // Padding
0066     qreal m_padding;
0067 
0068     // Background/Border painting
0069     qreal m_borderWidth;
0070     QBrush m_borderBrush;
0071     Qt::PenStyle m_borderStyle;
0072     QBrush m_backgroundBrush;
0073 };
0074 
0075 } // namespace Marble
0076 
0077 #endif