summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmrainbow.h
blob: 64dae5d784e73722bb212a9e854217bf379805c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//-*-C++-*-
/*
**************************************************************************
                                 description
                             --------------------
    copyright            : (C) 2001-2002 by Luis Carvalho
    email                : lpassos@mail.telepac.pt
**************************************************************************

**************************************************************************
*                                                                        *
*  This program is free software; you can redistribute it and/or modify  *
*  it under the terms of the GNU General Public License as published by  *
*  the Free Software Foundation; either version 2 of the License, or     *
*  (at your option) any later version.                                   *
*                                                                        *
**************************************************************************/


#ifndef PMRAINBOW_H
#define PMRAINBOW_H

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include "pmtexturebase.h"

/**
 * Class for povray rainbows
 */
class PMRainbow : public PMTextureBase
{
   typedef PMTextureBase Base;
public:
   /**
    * Creates an PMRainbow
    */
   PMRainbow( PMPart* part );
   /**
    * Copy constructor
    */
   PMRainbow( const PMRainbow& r );
   /**
    * Deletes the object
    */
   virtual ~PMRainbow( );

   /** */
   virtual PMObject* copy( ) const { return new PMRainbow( *this ); }
   /** */
   virtual TQString description( ) const;

   /** */
   virtual PMMetaObject* metaObject( ) const;
   /** */
   virtual void cleanUp( ) const;

   /** */
   virtual void serialize( TQDomElement& e, TQDomDocument& doc ) const;
   /** */
   virtual void readAttributes( const PMXMLHelper& h );

   /**
    * Returns a new @ref PMRainbowEdit
    */
   virtual PMDialogEditBase* editWidget( TQWidget* parent ) const;
   /** */
   virtual TQString pixmap( ) const { return TQString( "pmrainbow" ); }

   /** */
   virtual void restoreMemento( PMMemento* s );

   PMVector direction( ) const { return m_direction; }
   double angle( ) const { return m_angle; }
   double width( ) const { return m_width; }
   double distance( ) const { return m_distance; }
   double jitter( ) const { return m_jitter; }
   PMVector up( ) const { return m_up; }
   double arcAngle( ) const { return m_arcAngle; }
   double falloffAngle( ) const { return m_falloffAngle; }
   bool isDirectionEnabled( ) const { return m_enableDirection; }
   bool isAngleEnabled( ) const { return m_enableAngle; }
   bool isWidthEnabled( ) const { return m_enableWidth; }
   bool isDistanceEnabled( ) const { return m_enableDistance; }
   bool isJitterEnabled( ) const { return m_enableJitter; }
   bool isUpEnabled( ) const { return m_enableUp; }
   bool isArcAngleEnabled( ) const { return m_enableArcAngle; }
   bool isFalloffAngleEnabled( ) const { return m_enableFalloffAngle; }

   void setDirection( const PMVector& c );
   void setAngle( double c );
   void setWidth( double c );
   void setDistance( double c );
   void setJitter( double c );
   void setUp( const PMVector& c );
   void setArcAngle( double c );
   void setFalloffAngle( double c );
   void enableDirection( bool c );
   void enableAngle( bool c );
   void enableWidth( bool c );
   void enableDistance( bool c );
   void enableJitter( bool c );
   void enableUp( bool c );
   void enableArcAngle( bool c );
   void enableFalloffAngle( bool c );
private:
   /**
    * IDs for @ref PMMementoData
    */
   enum PMRainbowMementoID { PMDirectionID, PMAngleID, PMWidthID,
	                          PMDistanceID, PMJitterID, PMUpID, PMArcAngleID,
                             PMFalloffAngleID, PMEnableDirectionID,
                             PMEnableAngleID, PMEnableWidthID,
                             PMEnableDistanceID, PMEnableJitterID, PMEnableUpID,
                             PMEnableArcAngleID, PMEnableFalloffAngleID };
   PMVector m_direction;
   double m_angle;
   double m_width;
   double m_distance;
   double m_jitter;
   PMVector m_up;
   double m_arcAngle;
   double m_falloffAngle;

   bool m_enableDirection;
   bool m_enableAngle;
   bool m_enableWidth;
   bool m_enableDistance;
   bool m_enableJitter;
   bool m_enableUp;
   bool m_enableArcAngle;
   bool m_enableFalloffAngle;

   static PMMetaObject* s_pMetaObject;
};


#endif