summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmimagemap.h
blob: 859fb5f309dd525be572135fa1c0b06937d33108 (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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
//-*-C++-*-
/*
**************************************************************************
                                 description
                             --------------------
    copyright            : (C) 2002 by Luis Passos 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 PMIMAGEMAP_H
#define PMIMAGEMAP_H

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

#include "pmnamedobject.h"
#include "pmpalettevalue.h"

/**
 * Class for povray imagemaps.
 */

class PMImageMap : public PMNamedObject
{
   typedef PMNamedObject Base;
public:
   /**
    * The bitmap type
    */
   enum PMBitmapType { BitmapGif, BitmapTga, BitmapIff, BitmapPpm,
	               BitmapPgm, BitmapPng, BitmapJpeg, BitmapTiff,
		       BitmapSys };
   /**
    * The interpolate method
    */
   enum PMInterpolateType { InterpolateNone, InterpolateBilinear,
	                    InterpolateNormalized };
   /**
    * The mapping method
    */
   enum PMMapType { MapPlanar, MapSpherical, MapCylindrical,
	            MapToroidal };

   /**
    * Creates a PMImageMap
    */
   PMImageMap( PMPart* part );
   /**
    * Copy constructor
    */
   PMImageMap( const PMImageMap& im );
   /**
    * deletes the PMImageMap
    */
   virtual ~PMImageMap( );

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

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

   /** */
   virtual TQString pixmap( ) const { return TQString( "pmimagemap" ); }

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

   /**
    * Returns a new @ref PMImageMapEdit
    */
   virtual PMDialogEditBase* editWidget( TQWidget* tqparent ) const;

   /**
    * Gets the bitmap type
    */
   PMBitmapType bitmapType( ) const { return m_bitmapType; }
   /**
    * Gets the bitmap file name
    */
   TQString bitmapFile( ) const { return m_bitmapFile; }
   /**
    * Returns true if filter all is enabled
    */
   bool isFilterAllEnabled( ) const { return m_enableFilterAll; }
   /**
    * Gets the value of filter for all colors
    */
   double filterAll( ) const { return m_filterAll; }
   /**
    * Returns true if transmit all is enabled
    */
   bool isTransmitAllEnabled( ) const { return m_enableTransmitAll; }
   /**
    * Gets the value of transmit all for all colors
    */
   double transmitAll( ) const { return m_transmitAll; }
   /**
    * Returns true if once is enabled
    */
   bool isOnceEnabled( ) const { return m_once; }
   /**
    * Gets the bitmap file type
    */
   PMMapType mapType( ) const { return m_mapType; }
   /**
    * Gets the interpolate method type
    */
   PMInterpolateType interpolateType( ) const { return m_interpolateType; }
   /**
    * Gets the list of indexed filters
    */
   TQValueList<PMPaletteValue> filters( ) const { return m_filters; }
   /**
    * Gets the list of indexed transmits
    */
   TQValueList<PMPaletteValue> transmits( ) const { return m_transmits; }

   /**
    * Sets the imagemap type
    */
   void setBitmapType( PMBitmapType c );
   /**
    * Sets the bitmap file name*/
   void setBitmapFileName( const TQString& c );
   /**
    * Enables/Disables Filter All
    */
   void enableFilterAll( bool c );
   /**
    * Sets the filter all value
    */
   void setFilterAll( double c );
   /**
    * Enables/Disables Transmit All
    */
   void enableTransmitAll( bool c );
   /**
    * Sets the transmit all value
    */
   void setTransmitAll( double c );
   /**
    * Sets if the bitmap should be mapped once
    */
   void enableOnce( bool c );
   /**
    * Sets the mapping method
    */
   void setMapType( const PMMapType c );
   /**
    * Sets the interpolating method
    */
   void setInterpolateType( PMInterpolateType c );
   /**
    * Set the list of indexed filters
    */
   void setFilters( const TQValueList<PMPaletteValue>& filters );
   /**
    * Set the list of indexed transmits
    */
   void setTransmits( const TQValueList<PMPaletteValue>& transmits );
   /** */
   virtual void restoreMemento( PMMemento* s );
private:
   /**
    * IDs for @ref PMMementoData
    */
   enum PMImageMapMementoID { PMBitmapTypeID, PMBitmapFileID,
                              PMEnableFilterAllID,
			      PMEnableTransmitAllID,
                              PMFilterAllID, PMTransmitAllID,
                              PMOnceID, PMMapTypeID,
                              PMInterpolateID };
   /**
    * ImageMap type
    */
   PMBitmapType m_bitmapType;
   TQString m_bitmapFile;
   bool m_enableFilterAll;
   float m_filterAll;
   bool m_enableTransmitAll;
   float m_transmitAll;
   bool m_once;
   PMMapType m_mapType;
   PMInterpolateType m_interpolateType;
   TQValueList<PMPaletteValue> m_filters;
   TQValueList<PMPaletteValue> m_transmits;

   static PMMetaObject* s_pMetaObject;
};

#endif