summaryrefslogtreecommitdiffstats
path: root/libkdchart/KDFrameProfileSection.h
diff options
context:
space:
mode:
Diffstat (limited to 'libkdchart/KDFrameProfileSection.h')
-rw-r--r--libkdchart/KDFrameProfileSection.h232
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