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