summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmbumpmap.h
blob: 69bf53a3a7fe68822b1f51d1c83ccb034e893233 (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
//-*-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 PMBUMPMAP_H
#define PMBUMPMAP_H

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

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

/**
 * Class for povray bumpmaps.
 */

class PMBumpMap : 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 PMBumpMap
    */
   PMBumpMap( PMPart* part );
   /**
    * Copy constructor
    */
   PMBumpMap( const PMBumpMap& m );
   /**
    * deletes the PMBumpMap
    */
   virtual ~PMBumpMap( );

   /** */
   virtual PMObject* copy( ) const { return new PMBumpMap( *this ); }
   /** */
   virtual QString description( ) const;

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

   /** */
   virtual QString pixmap( ) const { return QString( "pmbumpmap" ); }

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

   /**
    * Returns a new @ref PMBumpMapEdit
    */
   virtual PMDialogEditBase* editWidget( QWidget* parent ) const;

   /**
    * Gets the bitmap type
    */
   PMBitmapType bitmapType( ) const { return m_bitmapType; }
   /**
    * Gets the bitmap file name
    */
   QString bitmapFile( ) const { return m_bitmapFile; }
   /**
    * Returns true if use_index is enabled
    */
   bool isUseIndexEnabled( ) const { return m_useIndex; }
   /**
    * Returns the bump size
    */
   double bumpSize( )  const { return m_bumpSize; }
   /**
    * 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; }


   /**
    * Sets the bumpmap type
    */
   void setBitmapType( PMBitmapType c );
   /**
    * Sets the bitmap file name*/
   void setBitmapFileName( const QString& c );
   /**
    * Sets if use_index is enabled
    */
   void enableUseIndex( bool c );
   /**
    * Set the bump size
    */
   void setBumpSize( 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 );
   /** */
   virtual void restoreMemento( PMMemento* s );
private:
   /**
    * IDs for @ref PMMementoData
    */
   enum PMBumpMapMementoID { PMBitmapTypeID, PMBitmapFileID,
                             PMOnceID, PMMapTypeID, PMInterpolateID,
                             PMUseIndexID, PMBumpSizeID };
   /**
    * BumpMap type
    */
   PMBitmapType m_bitmapType;
   QString m_bitmapFile;
   bool m_once;
   PMMapType m_mapType;
   PMInterpolateType m_interpolateType;
   bool m_useIndex;
   double m_bumpSize;

   static PMMetaObject* s_pMetaObject;
};

#endif