File indexing completed on 2024-05-12 04:20:33

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 "KChartGridAttributes.h"
0010 
0011 #include "KChartMath_p.h"
0012 
0013 #include <QPen>
0014 #include <QDebug>
0015 
0016 #define d d_func()
0017 
0018 using namespace KChart;
0019 
0020 class Q_DECL_HIDDEN GridAttributes::Private
0021 {
0022     friend class GridAttributes;
0023 public:
0024     Private();
0025 private:
0026     bool visible;
0027     KChartEnums::GranularitySequence sequence;
0028     bool linesOnAnnotations;
0029     qreal stepWidth;
0030     qreal subStepWidth;
0031     bool adjustLower;
0032     bool adjustUpper;
0033     QPen pen;
0034     bool subVisible;
0035     QPen subPen;
0036     bool outerVisible;
0037     QPen zeroPen;
0038 };
0039 
0040 GridAttributes::Private::Private()
0041     : visible( true ),
0042       sequence( KChartEnums::GranularitySequence_10_20 ),
0043       linesOnAnnotations( false ),
0044       stepWidth( 0.0 ),
0045       subStepWidth( 0.0 ),
0046       adjustLower( true ),
0047       adjustUpper( true ),
0048       pen( QColor(0xa0, 0xa0, 0xa0 ) ),
0049       subVisible( true ),
0050       subPen( QColor(0xd0, 0xd0, 0xd0 ) ),
0051       outerVisible( true ),
0052       zeroPen( QColor( 0x00, 0x00, 0x80 ) )
0053 {
0054     pen.setCapStyle( Qt::FlatCap );
0055     subPen.setCapStyle( Qt::FlatCap );
0056     zeroPen.setCapStyle( Qt::FlatCap );
0057 }
0058 
0059 
0060 GridAttributes::GridAttributes()
0061     : _d( new Private() )
0062 {
0063     // this block left empty intentionally
0064 }
0065 
0066 GridAttributes::GridAttributes( const GridAttributes& r )
0067     : _d( new Private( *r.d ) )
0068 {
0069 }
0070 
0071 GridAttributes & GridAttributes::operator=( const GridAttributes& r )
0072 {
0073     if ( this == &r )
0074         return *this;
0075 
0076     *d = *r.d;
0077 
0078     return *this;
0079 }
0080 
0081 GridAttributes::~GridAttributes()
0082 {
0083     delete _d; _d = nullptr;
0084 }
0085 
0086 
0087 bool GridAttributes::operator==( const GridAttributes& r ) const
0088 {
0089     return  isGridVisible() == r.isGridVisible() &&
0090             gridGranularitySequence() == r.gridGranularitySequence() &&
0091             linesOnAnnotations() == r.linesOnAnnotations() &&
0092             adjustLowerBoundToGrid() == r.adjustLowerBoundToGrid() &&
0093             adjustUpperBoundToGrid() == r.adjustUpperBoundToGrid() &&
0094             gridPen() == r.gridPen() &&
0095             isSubGridVisible() == r.isSubGridVisible() &&
0096             subGridPen() == r.subGridPen() &&
0097             isOuterLinesVisible() == r.isOuterLinesVisible() &&
0098             zeroLinePen() == r.zeroLinePen();
0099 }
0100 
0101 
0102 void GridAttributes::setGridVisible( bool visible )
0103 {
0104     d->visible = visible;
0105 }
0106 
0107 bool GridAttributes::isGridVisible() const
0108 {
0109     return d->visible;
0110 }
0111 
0112 void GridAttributes::setLinesOnAnnotations( bool b )
0113 {
0114     d->linesOnAnnotations = b;
0115 }
0116 
0117 bool GridAttributes::linesOnAnnotations() const
0118 {
0119     return d->linesOnAnnotations;
0120 }
0121 
0122 void GridAttributes::setGridStepWidth( qreal stepWidth )
0123 {
0124     d->stepWidth = stepWidth;
0125 }
0126 
0127 qreal GridAttributes::gridStepWidth() const
0128 {
0129     return d->stepWidth;
0130 }
0131 
0132 
0133 
0134 void GridAttributes::setGridSubStepWidth( qreal subStepWidth )
0135 {
0136     d->subStepWidth = subStepWidth;
0137 }
0138 
0139 qreal GridAttributes::gridSubStepWidth() const
0140 {
0141     return d->subStepWidth;
0142 }
0143 
0144 void GridAttributes::setGridGranularitySequence( KChartEnums::GranularitySequence sequence )
0145 {
0146     d->sequence = sequence;
0147 }
0148 
0149 KChartEnums::GranularitySequence GridAttributes::gridGranularitySequence() const
0150 {
0151     return d->sequence;
0152 }
0153 
0154 void GridAttributes::setAdjustBoundsToGrid( bool adjustLower, bool adjustUpper )
0155 {
0156     d->adjustLower = adjustLower;
0157     d->adjustUpper = adjustUpper;
0158 }
0159 bool GridAttributes::adjustLowerBoundToGrid() const
0160 {
0161     return d->adjustLower;
0162 }
0163 bool GridAttributes::adjustUpperBoundToGrid() const
0164 {
0165     return d->adjustUpper;
0166 }
0167 
0168 void GridAttributes::setGridPen( const QPen & pen )
0169 {
0170     d->pen = pen;
0171     d->pen.setCapStyle( Qt::FlatCap );
0172 }
0173 
0174 QPen GridAttributes::gridPen() const
0175 {
0176     return d->pen;
0177 }
0178 
0179 void GridAttributes::setSubGridVisible( bool visible )
0180 {
0181     d->subVisible = visible;
0182 }
0183 
0184 bool GridAttributes::isSubGridVisible() const
0185 {
0186     return d->subVisible;
0187 }
0188 
0189 void GridAttributes::setSubGridPen( const QPen & pen )
0190 {
0191     d->subPen = pen;
0192     d->subPen.setCapStyle( Qt::FlatCap );
0193 }
0194 
0195 QPen GridAttributes::subGridPen() const
0196 {
0197     return d->subPen;
0198 }
0199 
0200 void GridAttributes::setOuterLinesVisible( bool visible )
0201 {
0202     d->outerVisible = visible;
0203 }
0204 
0205 bool GridAttributes::isOuterLinesVisible() const
0206 {
0207     return d->outerVisible;
0208 }
0209 
0210 void GridAttributes::setZeroLinePen( const QPen & pen )
0211 {
0212     d->zeroPen = pen;
0213     d->zeroPen.setCapStyle( Qt::FlatCap );
0214 }
0215 
0216 QPen GridAttributes::zeroLinePen() const
0217 {
0218     return d->zeroPen;
0219 }
0220 
0221 #if !defined(QT_NO_DEBUG_STREAM)
0222 QDebug operator<<(QDebug dbg, const KChart::GridAttributes& a)
0223 {
0224     dbg << "KChart::GridAttributes("
0225             << "visible="<<a.isGridVisible()
0226             << "subVisible="<<a.isSubGridVisible()
0227             // KChartEnums::GranularitySequence sequence;
0228             << "stepWidth=" << a.gridStepWidth()
0229             << "subStepWidth=" << a.gridSubStepWidth()
0230             << "pen="<<a.gridPen()
0231             << "subPen="<<a.subGridPen()
0232             << "zeroPen="<<a.zeroLinePen()
0233             << ")";
0234     return dbg;
0235 }
0236 #endif /* QT_NO_DEBUG_STREAM */
0237