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

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 "KChartMarkerAttributes.h"
0010 
0011 #include "KChartMath_p.h"
0012 
0013 #include <QColor>
0014 #include <QMap>
0015 #include <QPen>
0016 #include <QPainterPath>
0017 #include <QSizeF>
0018 #include <QDebug>
0019 #include <qglobal.h>
0020 
0021 using namespace KChart;
0022 
0023 class Q_DECL_HIDDEN MarkerAttributes::Private
0024 {
0025     friend class ::KChart::MarkerAttributes;
0026 public:
0027     Private();
0028 private:
0029     bool visible;
0030     bool threeD;
0031     QMap<uint,uint> markerStylesMap;
0032     uint markerStyle;
0033     MarkerSizeMode markerSizeMode;
0034     QSizeF markerSize;
0035     QColor markerColor;
0036     QPainterPath customMarkerPath;
0037     QPen markerPen;
0038 };
0039 
0040 MarkerAttributes::Private::Private()
0041     : visible( false ),
0042       threeD( false ),
0043       markerStyle( MarkerSquare ),
0044       markerSizeMode( AbsoluteSize ),
0045       markerSize( 10, 10 ),
0046       markerPen( Qt::black )
0047 {
0048 }
0049 
0050 
0051 MarkerAttributes::MarkerAttributes()
0052     : _d( new Private )
0053 {
0054 
0055 }
0056 
0057 MarkerAttributes::MarkerAttributes( const MarkerAttributes& r )
0058     : _d( new Private( *r._d ) )
0059 {
0060 
0061 }
0062 
0063 MarkerAttributes & MarkerAttributes::operator=( const MarkerAttributes& r )
0064 {
0065     MarkerAttributes copy( r );
0066     copy.swap( *this );
0067     return *this;
0068 }
0069 
0070 MarkerAttributes::~MarkerAttributes()
0071 {
0072     delete _d; _d = nullptr;
0073 }
0074 
0075 #define d d_func()
0076 
0077 bool MarkerAttributes::operator==( const MarkerAttributes& r ) const
0078 {
0079     /*
0080     qDebug() << "MarkerAttributes::operator== finds"
0081             << "b" << (isVisible() == r.isVisible())
0082             << "c" << (markerStylesMap() == r.markerStylesMap())
0083             << "d" << (markerStyle() == r.markerStyle()) << markerStyle() <<r.markerStyle()
0084             << "e" << (markerSize() == r.markerSize())
0085             << "f" << (markerColor() == r.markerColor())
0086             << "p" << (customMarkerPath() == r.customMarkerPath())
0087             << "g" << (pen() == r.pen())
0088             << "h" << (markerColor() == r.markerColor()) << markerColor() << r.markerColor();
0089     */
0090     return ( isVisible() == r.isVisible() &&
0091             markerStylesMap() == r.markerStylesMap() &&
0092             markerStyle() == r.markerStyle() &&
0093             markerStyle() == r.markerStyle() &&
0094             markerSizeMode() == r.markerSizeMode() &&
0095             markerColor() == r.markerColor() &&
0096             customMarkerPath() == r.customMarkerPath() &&
0097             pen() == r.pen() );
0098 }
0099 
0100 
0101 
0102 void MarkerAttributes::setVisible( bool visible )
0103 {
0104     d->visible = visible;
0105 }
0106 
0107 bool MarkerAttributes::isVisible() const
0108 {
0109     return d->visible;
0110 }
0111 
0112 void MarkerAttributes::setThreeD( bool value )
0113 {
0114     d->threeD = value;
0115 }
0116 
0117 bool MarkerAttributes::threeD() const
0118 {
0119     return d->threeD;
0120 }
0121 
0122 void MarkerAttributes::setMarkerStylesMap( const MarkerStylesMap & map )
0123 {
0124     d->markerStylesMap = map;
0125 }
0126 
0127 MarkerAttributes::MarkerStylesMap MarkerAttributes::markerStylesMap() const
0128 {
0129     return d->markerStylesMap;
0130 }
0131 
0132 void MarkerAttributes::setMarkerStyle( uint style )
0133 {
0134     d->markerStyle = style;
0135 }
0136 
0137 uint MarkerAttributes::markerStyle() const
0138 {
0139     return d->markerStyle;
0140 }
0141 
0142 void MarkerAttributes::setMarkerSize( const QSizeF& size )
0143 {
0144     d->markerSize = size;
0145 }
0146 
0147 QSizeF MarkerAttributes::markerSize() const
0148 {
0149     return d->markerSize;
0150 }
0151 
0152 void MarkerAttributes::setMarkerSizeMode( MarkerSizeMode mode )
0153 {
0154     d->markerSizeMode = mode;
0155 }
0156 
0157 MarkerAttributes::MarkerSizeMode MarkerAttributes::markerSizeMode() const
0158 {
0159     return d->markerSizeMode;
0160 }
0161 
0162 
0163 void MarkerAttributes::setMarkerColor( const QColor& color )
0164 {
0165     d->markerColor = color;
0166 }
0167 
0168 QColor MarkerAttributes::markerColor() const
0169 {
0170     return d->markerColor;
0171 }
0172 
0173 void MarkerAttributes::setCustomMarkerPath( const QPainterPath& path )
0174 {
0175     d->customMarkerPath = path;
0176 }
0177 
0178 QPainterPath MarkerAttributes::customMarkerPath() const
0179 {
0180     return d->customMarkerPath;
0181 }
0182 
0183 void MarkerAttributes::setPen( const QPen& pen )
0184 {
0185     d->markerPen = pen;
0186 }
0187 
0188 QPen MarkerAttributes::pen() const
0189 {
0190     return d->markerPen;
0191 }
0192 
0193 #undef d
0194 
0195 #ifndef QT_NO_DEBUG_STREAM
0196 QDebug operator<<( QDebug dbg, const MarkerAttributes & ma ) {
0197     return dbg << "KChart::MarkerAttributes("
0198                << "visible=" << ma.isVisible()
0199                << "markerStylesMap=" << ma.markerStylesMap()
0200                << "markerStyle=" << ma.markerStyle()
0201                << "markerColor=" << ma.markerColor()
0202                << "customMarkerPath=" << ma.customMarkerPath()
0203                << "pen=" << ma.pen()
0204                << ")";
0205 }
0206 #endif
0207