You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
385 lines
20 KiB
385 lines
20 KiB
/*
|
|
KDChart - a multi-platform charting engine
|
|
*/
|
|
|
|
/****************************************************************************
|
|
** Copyright (C) 2001-2003 Klarälvdalens Datakonsult AB. All rights reserved.
|
|
**
|
|
** This file is part of the KDChart library.
|
|
**
|
|
** This file may be distributed and/or modified under the terms of the
|
|
** GNU General Public License version 2 as published by the Free Software
|
|
** Foundation and appearing in the file LICENSE.GPL included in the
|
|
** packaging of this file.
|
|
**
|
|
** Licensees holding valid commercial KDChart licenses may use this file in
|
|
** accordance with the KDChart Commercial License Agreement provided with
|
|
** the Software.
|
|
**
|
|
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
|
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
**
|
|
** See http://www.klaralvdalens-datakonsult.se/?page=products for
|
|
** information about KDChart Commercial License Agreements.
|
|
**
|
|
** Contact info@klaralvdalens-datakonsult.se if any conditions of this
|
|
** licensing are not clear to you.
|
|
**
|
|
**********************************************************************/
|
|
|
|
#include "KDChartPropertySet.h"
|
|
#include "KDChartParams.h"
|
|
#include <KDXMLTools.h>
|
|
|
|
#include <tqpainter.h>
|
|
#include <tqvaluestack.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
/**
|
|
\file KDChartPropertySet.cpp
|
|
|
|
\brief Implementation of property settings of a single KDChart data cell.
|
|
*/
|
|
|
|
void KDChartPropertySet::deepCopy( const KDChartPropertySet* source )
|
|
{
|
|
if( !source || this == source )
|
|
return;
|
|
mOwnID = source->mOwnID;
|
|
mName = source->mName;
|
|
mIdShowBar = source->mIdShowBar; mShowBar = source->mShowBar;
|
|
mIdBarColor = source->mIdBarColor; mBarColor = source->mBarColor;
|
|
mIdAreaBrush = source->mIdAreaBrush; mAreaBrush = source->mAreaBrush;
|
|
mIdLineWidth = source->mIdLineWidth; mLineWidth = source->mLineWidth;
|
|
mIdLineColor = source->mIdLineColor; mLineColor = source->mLineColor;
|
|
mIdLineStyle = source->mIdLineStyle; mLineStyle = source->mLineStyle;
|
|
mIdShowMarker = source->mIdShowMarker; mShowMarker = source->mShowMarker;
|
|
mIdMarkerSize = source->mIdMarkerSize; mMarkerSize = source->mMarkerSize;
|
|
mIdMarkerColor = source->mIdMarkerColor; mMarkerColor = source->mMarkerColor;
|
|
mIdMarkerStyle = source->mIdMarkerStyle; mMarkerStyle = source->mMarkerStyle;
|
|
mIdMarkerAlign = source->mIdMarkerAlign; mMarkerAlign = source->mMarkerAlign;
|
|
mIdExtraLinesAlign = source->mIdExtraLinesAlign; mExtraLinesAlign = source->mExtraLinesAlign;
|
|
mIdExtraLinesInFront = source->mIdExtraLinesInFront; mExtraLinesInFront = source->mExtraLinesInFront;
|
|
mIdExtraLinesLength = source->mIdExtraLinesLength; mExtraLinesLength = source->mExtraLinesLength;
|
|
mIdExtraLinesWidth = source->mIdExtraLinesWidth; mExtraLinesWidth = source->mExtraLinesWidth;
|
|
mIdExtraLinesColor = source->mIdExtraLinesColor; mExtraLinesColor = source->mExtraLinesColor;
|
|
mIdExtraLinesStyle = source->mIdExtraLinesStyle; mExtraLinesStyle = source->mExtraLinesStyle;
|
|
mIdExtraMarkersAlign = source->mIdExtraMarkersAlign; mExtraMarkersAlign = source->mExtraMarkersAlign;
|
|
mIdExtraMarkersSize = source->mIdExtraMarkersSize; mExtraMarkersSize = source->mExtraMarkersSize;
|
|
mIdExtraMarkersColor = source->mIdExtraMarkersColor; mExtraMarkersColor = source->mExtraMarkersColor;
|
|
mIdExtraMarkersStyle = source->mIdExtraMarkersStyle; mExtraMarkersStyle = source->mExtraMarkersStyle;
|
|
}
|
|
|
|
const KDChartPropertySet* KDChartPropertySet::clone() const
|
|
{
|
|
KDChartPropertySet* newSet = new KDChartPropertySet();
|
|
newSet->deepCopy( this );
|
|
return newSet;
|
|
}
|
|
|
|
void KDChartPropertySet::quickReset( const TQString& name, int idParent )
|
|
{
|
|
// set the name
|
|
mName = name;
|
|
// fill with idParent
|
|
mOwnID = idParent;
|
|
mIdLineWidth = idParent;
|
|
mIdLineColor = idParent;
|
|
mIdLineStyle = idParent;
|
|
mIdShowMarker = idParent;
|
|
mIdMarkerSize = idParent;
|
|
mIdMarkerColor = idParent;
|
|
mIdMarkerStyle = idParent;
|
|
mIdMarkerAlign = idParent;
|
|
mIdExtraLinesAlign = idParent;
|
|
mIdExtraLinesInFront = idParent;
|
|
mIdExtraLinesLength = idParent;
|
|
mIdExtraLinesWidth = idParent;
|
|
mIdExtraLinesColor = idParent;
|
|
mIdExtraLinesStyle = idParent;
|
|
mIdExtraMarkersAlign = idParent;
|
|
mIdExtraMarkersSize = idParent;
|
|
mIdExtraMarkersColor = idParent;
|
|
mIdExtraMarkersStyle = idParent;
|
|
mIdShowBar = idParent;
|
|
mIdBarColor = idParent;
|
|
mIdAreaBrush = idParent;
|
|
}
|
|
|
|
void KDChartPropertySet::fullReset( const TQString& name, int idParent )
|
|
{
|
|
quickReset( name, idParent );
|
|
fillValueMembersWithDummyValues();
|
|
}
|
|
|
|
void KDChartPropertySet::fillValueMembersWithDummyValues()
|
|
{
|
|
// fill with dummy values to avoid problems when saving us into a stream
|
|
mLineWidth = 1;
|
|
mLineColor = TQt::black;
|
|
mLineStyle = Qt::SolidLine;
|
|
mShowMarker = true;
|
|
mMarkerAlign = TQt::AlignCenter;
|
|
mMarkerSize = TQSize(6,6);
|
|
mMarkerColor = TQt::black;
|
|
mMarkerStyle = 0;
|
|
mExtraLinesAlign = TQt::AlignLeft|TQt::AlignTop;
|
|
mExtraLinesInFront = false;
|
|
mExtraLinesLength = -20;
|
|
mExtraLinesWidth = 1;
|
|
mExtraLinesColor = TQt::black;
|
|
mExtraLinesStyle = Qt::SolidLine;
|
|
mExtraMarkersAlign = TQt::AlignLeft|TQt::AlignTop;
|
|
mExtraMarkersSize = TQSize(6,6);
|
|
mExtraMarkersColor = TQt::black;
|
|
mExtraMarkersStyle = 0;
|
|
mShowBar = true;
|
|
mBarColor = TQt::black;
|
|
mAreaBrush = TQBrush( TQt::blue );
|
|
}
|
|
|
|
|
|
TQDomElement KDChartPropertySet::saveXML(TQDomDocument& doc) const
|
|
{
|
|
TQDomElement propertySetElement = doc.createElement( "PropertySet" );
|
|
propertySetElement.setAttribute( "OwnID", mOwnID );
|
|
KDXML::createStringNode( doc, propertySetElement, "Name", mName );
|
|
// normal bar properties:
|
|
KDXML::createIntNode( doc, propertySetElement, "IDShowBar", mIdShowBar );
|
|
KDXML::createBoolNode( doc, propertySetElement, "ShowBar", mShowBar );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDBarColor", mIdBarColor );
|
|
KDXML::createColorNode( doc, propertySetElement, "BarColor", mBarColor );
|
|
// normal area properties:
|
|
KDXML::createIntNode( doc, propertySetElement, "IDAreaBrush", mIdAreaBrush );
|
|
KDXML::createBrushNode( doc, propertySetElement, "AreaBrush", mAreaBrush );
|
|
// normal line properties:
|
|
KDXML::createIntNode( doc, propertySetElement, "IDLineWidth", mIdLineWidth );
|
|
KDXML::createIntNode( doc, propertySetElement, "LineWidth", mLineWidth );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDLineColor", mIdLineColor );
|
|
KDXML::createColorNode( doc, propertySetElement, "LineColor", mLineColor );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDLineStyle", mIdLineStyle );
|
|
TQDomElement lineStyleElement = doc.createElement( "LineStyle" );
|
|
propertySetElement.appendChild( lineStyleElement );
|
|
lineStyleElement.setAttribute( "Style", KDXML::penStyleToString( mLineStyle));
|
|
// normal marker properties:
|
|
KDXML::createIntNode( doc, propertySetElement, "IDShowMarker", mIdShowMarker);
|
|
KDXML::createBoolNode( doc, propertySetElement, "ShowMarker", mShowMarker);
|
|
KDXML::createIntNode( doc, propertySetElement, "IDMarkerAlign", mIdMarkerAlign );
|
|
KDXML::createIntNode( doc, propertySetElement, "MarkerAlign", mMarkerAlign );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDMarkerSize", mIdMarkerSize );
|
|
KDXML::createSizeNode( doc, propertySetElement, "MarkerSize", mMarkerSize );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDMarkerColor", mIdMarkerColor );
|
|
KDXML::createColorNode( doc, propertySetElement, "MarkerColor", mMarkerColor );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDMarkerStyle", mIdMarkerStyle );
|
|
TQDomElement markerStElem = doc.createElement( "MarkerStyle" );
|
|
propertySetElement.appendChild( markerStElem );
|
|
markerStElem.setAttribute("Style",
|
|
KDChartParams::lineMarkerStyleToString( (KDChartParams::LineMarkerStyle)mMarkerStyle));
|
|
// extra lines:
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraLinesAlign", mIdExtraLinesAlign );
|
|
KDXML::createIntNode( doc, propertySetElement, "ExtraLinesAlign", mExtraLinesAlign );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraLinesInFront",mIdExtraLinesInFront );
|
|
KDXML::createBoolNode( doc, propertySetElement, "ExtraLinesInFront", mExtraLinesInFront );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraLinesLength", mIdExtraLinesLength );
|
|
KDXML::createIntNode( doc, propertySetElement, "ExtraLinesLength", mExtraLinesLength );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraLinesWidth", mIdExtraLinesWidth );
|
|
KDXML::createIntNode( doc, propertySetElement, "ExtraLinesWidth", mExtraLinesWidth );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraLinesColor", mIdExtraLinesColor );
|
|
KDXML::createColorNode( doc, propertySetElement, "ExtraLinesColor", mExtraLinesColor );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraLinesStyle", mIdExtraLinesStyle );
|
|
TQDomElement specLineStElem = doc.createElement( "ExtraLinesStyle" );
|
|
propertySetElement.appendChild( specLineStElem );
|
|
specLineStElem.setAttribute( "Style", KDXML::penStyleToString( mExtraLinesStyle));
|
|
// extra markers:
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraMarkersAlign", mIdExtraMarkersAlign );
|
|
KDXML::createIntNode( doc, propertySetElement, "ExtraMarkersAlign", mExtraMarkersAlign );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraMarkersSize", mIdExtraMarkersSize );
|
|
KDXML::createSizeNode( doc, propertySetElement, "ExtraMarkersSize", mExtraMarkersSize );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraMarkersColor", mIdExtraMarkersColor );
|
|
KDXML::createColorNode( doc, propertySetElement, "ExtraMarkersColor", mExtraMarkersColor );
|
|
KDXML::createIntNode( doc, propertySetElement, "IDExtraMarkersStyle", mIdExtraMarkersStyle );
|
|
TQDomElement specMarkerStElem = doc.createElement( "ExtraMarkersStyle" );
|
|
propertySetElement.appendChild( specMarkerStElem );
|
|
specMarkerStElem.setAttribute("Style",
|
|
KDChartParams::lineMarkerStyleToString( (KDChartParams::LineMarkerStyle)mExtraMarkersStyle));
|
|
return propertySetElement;
|
|
}
|
|
|
|
bool KDChartPropertySet::loadXML( const TQDomElement& element, KDChartPropertySet& set )
|
|
{
|
|
bool bOwnIDFound = false;
|
|
TQString s;
|
|
TQColor color;
|
|
TQBrush brush;
|
|
TQSize size;
|
|
bool bValue;
|
|
int i;
|
|
// initialize the property set with default values
|
|
set.fillValueMembersWithDummyValues();
|
|
// parse the element
|
|
if( element.hasAttribute("OwnID") ){
|
|
i = element.attribute( "OwnID" ).toInt( &bOwnIDFound );
|
|
if( bOwnIDFound ){
|
|
set.mOwnID = i;
|
|
TQDomNode node = element.firstChild();
|
|
while( !node.isNull() ) {
|
|
TQDomElement element = node.toElement();
|
|
if( !element.isNull() ) { // was really an element
|
|
TQString tagName = element.tagName();
|
|
if( tagName == "Name" ) {
|
|
if( KDXML::readStringNode( element, s ) )
|
|
set.mName = s;
|
|
} else
|
|
// normal bar properties:
|
|
if( tagName == "IDShowBar" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdShowBar = i;
|
|
} else if( tagName == "ShowBar" ) {
|
|
if( KDXML::readBoolNode( element, bValue ) )
|
|
set.mShowBar = bValue;
|
|
} else if( tagName == "IDBarColor" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdBarColor = i;
|
|
} else if( tagName == "BarColor" ) {
|
|
if( KDXML::readColorNode( element, color ) )
|
|
set.mBarColor = color;
|
|
} else
|
|
// normal area properties:
|
|
if( tagName == "IDAreaBrush" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdAreaBrush = i;
|
|
} else if( tagName == "AreaBrush" ) {
|
|
if( KDXML::readBrushNode( element, brush ) )
|
|
set.mAreaBrush = TQBrush(color);
|
|
} else
|
|
// normal line properties:
|
|
if( tagName == "IDLineWidth" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdLineWidth = i;
|
|
} else if( tagName == "LineWidth" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mLineWidth = i;
|
|
} else if( tagName == "IDLineColor" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdLineColor = i;
|
|
} else if( tagName == "LineColor" ) {
|
|
if( KDXML::readColorNode( element, color ) )
|
|
set.mLineColor = color;
|
|
} else if( tagName == "IDLineStyle" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdLineStyle = i;
|
|
} else if( tagName == "LineStyle" ) {
|
|
if( element.hasAttribute( "Style" ) )
|
|
set.mLineStyle = KDXML::stringToPenStyle( element.attribute( "Style" ) );
|
|
} else
|
|
// normal marker properties:
|
|
if( tagName == "IDShowMarker" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdShowMarker = i;
|
|
} else if( tagName == "ShowMarker" ) {
|
|
if( KDXML::readBoolNode( element, bValue ) )
|
|
set.mShowMarker = bValue;
|
|
} else if( tagName == "IDMarkerAlign" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdMarkerAlign = i;
|
|
} else if( tagName == "MarkerAlign" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mMarkerAlign = i;
|
|
} else if( tagName == "IDMarkerSize" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdMarkerSize = i;
|
|
} else if( tagName == "MarkerSize" ) {
|
|
if( KDXML::readSizeNode( element, size ) )
|
|
set.mMarkerSize = size;
|
|
} else if( tagName == "IDMarkerColor" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdMarkerColor = i;
|
|
} else if( tagName == "MarkerColor" ) {
|
|
if( KDXML::readColorNode( element, color ) )
|
|
set.mMarkerColor = color;
|
|
} else if( tagName == "IDMarkerStyle" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdMarkerStyle = i;
|
|
} else if( tagName == "MarkerStyle" ) {
|
|
if( element.hasAttribute( "Style" ) )
|
|
set.mMarkerStyle
|
|
= KDChartParams::stringToLineMarkerStyle( element.attribute( "Style" ) );
|
|
} else
|
|
// extra lines:
|
|
if( tagName == "IDExtraLinesAlign" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraLinesAlign = i;
|
|
} else if( tagName == "ExtraLinesAlign" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mExtraLinesAlign = i;
|
|
} else if( tagName == "IDExtraLinesInFront" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraLinesInFront = i;
|
|
} else if( tagName == "ExtraLinesInFront" ) {
|
|
if( KDXML::readBoolNode( element, bValue ) )
|
|
set.mExtraLinesInFront = bValue;
|
|
} else if( tagName == "IDExtraLinesLength" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraLinesLength = i;
|
|
} else if( tagName == "ExtraLinesLength" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mExtraLinesLength = i;
|
|
} else if( tagName == "IDExtraLinesWidth" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraLinesWidth = i;
|
|
} else if( tagName == "ExtraLinesWidth" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mExtraLinesWidth = i;
|
|
} else if( tagName == "IDExtraLinesColor" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraLinesColor = i;
|
|
} else if( tagName == "ExtraLinesColor" ) {
|
|
if( KDXML::readColorNode( element, color ) )
|
|
set.mExtraLinesColor = color;
|
|
} else if( tagName == "IDExtraLinesStyle" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraLinesStyle = i;
|
|
} else if( tagName == "ExtraLinesStyle" ) {
|
|
if( element.hasAttribute( "Style" ) )
|
|
set.mExtraLinesStyle = KDXML::stringToPenStyle( element.attribute( "Style" ) );
|
|
} else
|
|
// extra markers:
|
|
if( tagName == "IDExtraMarkersAlign" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraMarkersAlign = i;
|
|
} else if( tagName == "ExtraMarkersAlign" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mExtraMarkersAlign = i;
|
|
} else if( tagName == "IDExtraMarkersSize" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraMarkersSize = i;
|
|
} else if( tagName == "ExtraMarkersSize" ) {
|
|
if( KDXML::readSizeNode( element, size ) )
|
|
set.mExtraMarkersSize = size;
|
|
} else if( tagName == "IDExtraMarkersColor" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraMarkersColor = i;
|
|
} else if( tagName == "ExtraMarkersColor" ) {
|
|
if( KDXML::readColorNode( element, color ) )
|
|
set.mExtraMarkersColor = color;
|
|
} else if( tagName == "IDExtraMarkersStyle" ) {
|
|
if( KDXML::readIntNode( element, i ) )
|
|
set.mIdExtraMarkersStyle = i;
|
|
} else if( tagName == "ExtraMarkersStyle" ) {
|
|
if( element.hasAttribute( "Style" ) )
|
|
set.mExtraMarkersStyle
|
|
= KDChartParams::stringToLineMarkerStyle( element.attribute( "Style" ) );
|
|
} else {
|
|
tqDebug( "Unknown subelement of KDChartPropertySet found: %s", tagName.latin1() );
|
|
}
|
|
}
|
|
node = node.nextSibling();
|
|
}
|
|
}
|
|
}
|
|
return bOwnIDFound;
|
|
}
|
|
|
|
#include "KDChartPropertySet.moc"
|