diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-07-04 22:38:03 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-07-04 22:38:03 +0000 |
commit | dadc34655c3ab961b0b0b94a10eaaba710f0b5e8 (patch) | |
tree | 99e72842fe687baea16376a147619b6048d7e441 /libkdchart/KDFrameProfileSection.h | |
download | kmymoney-dadc34655c3ab961b0b0b94a10eaaba710f0b5e8.tar.gz kmymoney-dadc34655c3ab961b0b0b94a10eaaba710f0b5e8.zip |
Added kmymoney
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kmymoney@1239792 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libkdchart/KDFrameProfileSection.h')
-rw-r--r-- | libkdchart/KDFrameProfileSection.h | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/libkdchart/KDFrameProfileSection.h b/libkdchart/KDFrameProfileSection.h new file mode 100644 index 0000000..f1b4ac8 --- /dev/null +++ b/libkdchart/KDFrameProfileSection.h @@ -0,0 +1,232 @@ +/* -*- Mode: C++ -*- + 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 [email protected] if any conditions of this + ** licensing are not clear to you. + ** + **********************************************************************/ +#ifndef __KDFRAMEPROFILESECTION__ +#define __KDFRAMEPROFILESECTION__ + +#include <qregion.h> +#include <qpen.h> +#include <qdom.h> +#include "KDChartGlobal.h" + + +/** + Settings for one profile section of one side of the frame. + */ +class KDCHART_EXPORT KDFrameProfileSection +{ +public: + /** + Profile Direction Mode: specifying whether a part of a profile looks embossed or + engraved in comparison to the next outer part (or to the surrounding area, resp.). + + \li \c DirPlain the part of the profile is neither embossed nor engraved. + \li \c DirRaising the part of the profile lookes embossed from the outer part. + \li \c DirSinking the part of the profile lookes engraved into the outer part. + + \Note Since a frame border may consist of several parts you must specify the + direction mode for each of these parts. This is quite different from the + QFrame::Shadow / QFrame::Shape schema where you would select a predefined + profile. KDFrame lets you specify both the number of sections used + to compose frame border's profile and the look of each individual + section by calling \c addProfileSection() multiple times. + + Some commonly used profiles are allready pre-defined for your convenience, + \c setSimpleProfile is used to select one of them, see \c setProfile + for an example how to do this. + + \sa addProfileSection, setProfile, setSimpleProfile, SimpleProfile + */ + enum Direction { DirPlain, DirRaising, DirSinking }; + + /** + Converts the specified direction enum to a string representation. + + \param dir the direction enum to convert + \return the string representation of the direction enum + */ + static QString directionToString( Direction dir ) { + switch( dir ) { + case DirPlain: + return "Plain"; + case DirRaising: + return "Raising"; + case DirSinking: + return "Sinking"; + default: // should not happen + return "Plain"; + } + } + + + /** + Converts the specified string to a direction enum value. + + \param string the string to convert + \return the direction enum value + */ + static Direction stringToDirection( const QString& string ) { + if( string == "Plain" ) + return DirPlain; + else if( string == "Raising" ) + return DirRaising; + else if( string == "Sinking" ) + return DirSinking; + else // default, should not happen + return DirPlain; + } + + + + /** + Profile Curvature Mode: specifying the shape of a frame profile section. + (curvature setting will be ignored for \c DirPlain profiles) + + \li \c CvtFlat looking like a evenly sloping surface. + \li \c CvtConvex looking like quarter of a torus. + \li \c CvtConcave looking like half of a groove. + */ + enum Curvature { CvtPlain, CvtConvex, CvtConcave }; + + /** + Converts the specified curvature enum to a string representation. + + \param curv the curvature enum to convert + \return the string representation of the curvature enum + */ + static QString curvatureToString( Curvature curv ) { + switch( curv ) { + case CvtPlain: + return "Plain"; + case CvtConvex: + return "Convex"; + case CvtConcave: + return "Concave"; + default: // should not happen + return "Plain"; + } + } + + + /** + Converts the specified string to a curvature enum value. + + \param string the string to convert + \return the curvature enum value + */ + static Curvature stringToCurvature( const QString& string ) { + if( string == "Plain" ) + return CvtPlain; + else if( string == "Convex" ) + return CvtConvex; + else if( string == "Concave" ) + return CvtConcave; + else // default, should not happen + return CvtPlain; + } + + + /** + Ctor of KDFrameProfileSection. + + \Note Instead of instantiating KDFrameProfileSection yourself + you would normally rather call \c KDFrame::addProfileSection() + */ + KDFrameProfileSection( Direction direction, + Curvature curvature, + int width, + QPen pen ) + : _direction( direction ), + _curvature( curvature ), + _width( width ), + _pen( pen ) {} + + /** + Default ctor of FrameProfileSection. + + \Note Instead of instantiating KDFrameProfileSection yourself, + you would normally rather call \c KDFrame::addProfileSection() + */ + KDFrameProfileSection() { + _direction = DirPlain; + _curvature = CvtPlain; + _width = 1; + _pen = QPen( Qt::SolidLine ); + } + + /** + Destructor. Only defined to have it virtual. + */ + virtual ~KDFrameProfileSection(); + + /** + Creates a DOM element node that represents a frame profile + section for use in a DOM document. + + \param document the DOM document to which the node will belong + \param parent the parent node to which the new node will be appended + \param elementName the name of the new node + \param section the section to be represented + */ + static void createFrameProfileSectionNode( QDomDocument& document, + QDomNode& parent, + const QString& elementName, + const KDFrameProfileSection* section ); + + /** + Reads data from a DOM element node that represents a frame + profile section and fills a KDFrameProfileSection object with + the data. + + \param element the DOM element to read from + \param section a pointer to the frame profile section object to + read the data into + */ + static bool readFrameProfileSectionNode( const QDomElement& element, + KDFrameProfileSection* section ); + + Direction direction() const { return _direction; } + Curvature curvature() const { return _curvature; } + int width() const { return _width; } + QPen pen() const { return _pen; } + +private: + Direction _direction; + Curvature _curvature; + int _width; + QPen _pen; +}; + +/** + Settings for all the profile sections of one side the frame. + + \sa setProfile, profile + */ +typedef QPtrList < KDFrameProfileSection > KDFrameProfile; + +#endif |