~ubuntu-branches/ubuntu/edgy/koffice/edgy-updates

« back to all changes in this revision

Viewing changes to karbon/shapes/vstar.h

  • Committer: Bazaar Package Importer
  • Author(s): Ben Burton
  • Date: 2004-05-09 11:33:00 UTC
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20040509113300-xi5t1z4yxe7n03x7
Tags: upstream-1.3.1
ImportĀ upstreamĀ versionĀ 1.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* This file is part of the KDE project
 
2
   Copyright (C) 2001, 2002, 2003 The Karbon Developers
 
3
 
 
4
   This library is free software; you can redistribute it and/or
 
5
   modify it under the terms of the GNU Library General Public
 
6
   License as published by the Free Software Foundation; either
 
7
   version 2 of the License, or (at your option) any later version.
 
8
 
 
9
   This library is distributed in the hope that it will be useful,
 
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
   Library General Public License for more details.
 
13
 
 
14
   You should have received a copy of the GNU Library General Public License
 
15
   along with this library; see the file COPYING.LIB.  If not, write to
 
16
   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 
17
   Boston, MA 02111-1307, USA.
 
18
*/
 
19
 
 
20
#ifndef __VSTAR_H__
 
21
#define __VSTAR_H__
 
22
 
 
23
#include "vcomposite.h"
 
24
 
 
25
/**
 
26
 * This shape offers star-like shapes with a lot of parameters :
 
27
 *
 
28
 * Types :
 
29
 *
 
30
 * Star           - fully connected star shape.
 
31
 * Star outline   - like star but without the cross connections.
 
32
 * Framed star    - like star outline but with an enclosing path.
 
33
 * Spoke          - basically a star outline with inner radius of zero.
 
34
 * Wheel          - like spoke but with enclosing path.
 
35
 * Polygon        - like VPolygon.
 
36
 * Gear           - variant on star outline, resembling the KDE gear.
 
37
 *
 
38
 * Parameters :
 
39
 *
 
40
 * Edges          - number of edges, which must be greater or equal to 3.
 
41
 * Outer radius   - radius amount of circumcircle of the star.
 
42
 * Inner radius   - inner radius where star has to connect to. This value
 
43
 *                  doesn't apply to polygon, spoke and wheel.
 
44
 * Inner angle    - extra radius amount for inner radius.
 
45
 * Roundness      - uses curves instead of lines for the star shape.
 
46
 */
 
47
class VStar : public VPath
 
48
{
 
49
public:
 
50
        enum VStarType
 
51
        {
 
52
                star_outline,
 
53
                spoke,
 
54
                wheel,
 
55
                polygon,
 
56
                framed_star,
 
57
                star,
 
58
                gear
 
59
        };
 
60
        VStar( VObject* parent, VState state = edit );
 
61
        VStar( VObject* parent,
 
62
                const KoPoint& center, double outerRadius, double innerRadius,
 
63
                uint edges, double angle = 0.0, uint innerAngle = 0,
 
64
                double roundness = 0.0, VStarType type = star_outline );
 
65
 
 
66
        static double getOptimalInnerRadius( uint edges, double outerRadius, uint innerAngle );
 
67
 
 
68
        virtual QString name() const;
 
69
 
 
70
 
 
71
        virtual void save( QDomElement& element ) const;
 
72
        virtual void load( const QDomElement& element );
 
73
 
 
74
protected:
 
75
        void init();
 
76
 
 
77
private:
 
78
        KoPoint m_center;
 
79
        double m_outerRadius;
 
80
        double m_innerRadius;
 
81
        uint   m_edges;
 
82
        double m_angle;
 
83
        double m_innerAngle;
 
84
        double m_roundness;
 
85
        VStarType m_type;
 
86
};
 
87
 
 
88
#endif
 
89