File indexing completed on 2025-10-26 04:04:59

0001 /*
0002  * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved.
0003  *
0004  * This file is part of the KD Chart library.
0005  *
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #include "KChartTextArea.h"
0010 #include "KChartTextArea_p.h"
0011 
0012 #include "KChartMath_p.h"
0013 
0014 #include <qglobal.h>
0015 
0016 #include <QPainter>
0017 #include <QRect>
0018 
0019 
0020 using namespace KChart;
0021 
0022 TextArea::Private::Private() :
0023     AbstractAreaBase::Private()
0024 {
0025     // this block left empty intentionally
0026 }
0027 
0028 
0029 TextArea::Private::~Private()
0030 {
0031     // this block left empty intentionally
0032 }
0033 
0034 
0035 TextArea::TextArea()
0036     : QObject()
0037     , KChart::AbstractAreaBase()
0038     , KChart::TextLayoutItem()
0039 {
0040     // this block left empty intentionally
0041 }
0042 
0043 TextArea::~TextArea()
0044 {
0045     // this block left empty intentionally
0046 }
0047 
0048 
0049 void TextArea::init()
0050 {
0051     // this block left empty intentionally
0052 }
0053 
0054 void TextArea::paintIntoRect( QPainter& painter, const QRect& rect )
0055 {
0056     const QRect oldGeometry( geometry() );
0057     if ( oldGeometry != rect )
0058         setGeometry( rect );
0059     painter.translate( rect.left(), rect.top() );
0060     paintAll( painter );
0061     painter.translate( -rect.left(), -rect.top() );
0062     if ( oldGeometry != rect )
0063         setGeometry( oldGeometry );
0064 }
0065 
0066 void TextArea::paintAll( QPainter& painter )
0067 {
0068     // Paint the background and frame
0069     paintBackground( painter, geometry() );
0070     paintFrame( painter, geometry() );
0071 
0072     // temporarily adjust the widget size, to be sure all content gets calculated
0073     // to fit into the inner rectangle
0074     const QRect oldGeometry( areaGeometry() );
0075     QRect inner( innerRect() );
0076     inner.moveTo(
0077         oldGeometry.left() + inner.left(),
0078         oldGeometry.top()  + inner.top() );
0079     const bool needAdjustGeometry = oldGeometry != inner;
0080     if ( needAdjustGeometry )
0081         setGeometry( inner );
0082     paint( &painter );
0083     if ( needAdjustGeometry )
0084         setGeometry( oldGeometry );
0085     //qDebug() << "TextAreaWidget::paintAll() done.";
0086 }
0087 
0088 QRect TextArea::areaGeometry() const
0089 {
0090     return geometry();
0091 }
0092 
0093 void TextArea::positionHasChanged()
0094 {
0095     Q_EMIT positionChanged( this );
0096 }
0097