summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmmedia.h
blob: 4836bf3725263fa8cf71f50c90bb98c79b4b74de (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
//-*-C++-*-
/*
**************************************************************************
                                 description
                             --------------------
    copyright            : (C) 2001 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 PMMEDIA_H
#define PMMEDIA_H

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

#include "pmtexturebase.h"
#include "pmcolor.h"

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

   /** */
   virtual PMObject* copy( ) const { return new PMMedia( *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 PMMediaEdit
    */
   virtual PMDialogEditBase* editWidget( TQWidget* parent ) const;
   /** */
   virtual TQString pixmap( ) const { return TQString( "pmmedia" ); }

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

   int method( ) const { return m_method; }
   int intervals( ) const { return m_intervals; }
   int samplesMin( ) const { return m_samplesMin; }
   int samplesMax( ) const { return m_samplesMax; }
   double confidence( ) const { return m_confidence; }
   double variance( ) const { return m_variance; }
   double ratio( ) const { return m_ratio; }
   int aaLevel( ) const { return m_aaLevel; }
   double aaThreshold( ) const { return m_aaThreshold; }
   PMColor absorption( ) const { return m_absorption; }
   PMColor emission( ) const { return m_emission; }
   int scatteringType( ) const { return m_scatteringType; }
   PMColor scatteringColor( ) const { return m_scatteringColor; }
   double scatteringEccentricity( ) const { return m_scatteringEccentricity; }
   double scatteringExtinction( ) const { return m_scatteringExtinction; }
   bool isAbsorptionEnabled( ) const { return m_enableAbsorption; }
   bool isEmissionEnabled( ) const { return m_enableEmission; }
   bool isScatteringEnabled( ) const { return m_enableScattering; }

   void setMethod( int c );
   void setIntervals( int c );
   void setSamplesMin( int c );
   void setSamplesMax( int c );
   void setAALevel( int c );
   void setConfidence( double c );
   void setVariance( double c );
   void setRatio( double c );
   void setAAThreshold( double c );
   void setAbsorption( const PMColor& c );
   void setEmission( const PMColor& c );
   void setScatteringType( int c );
   void setScatteringColor( const PMColor& c );
   void setScatteringEccentricity( double c );
   void setScatteringExtinction( double c );
   void enableAbsorption( bool c );
   void enableEmission( bool c );
   void enableScattering( bool c );

private:
   /**
    * IDs for @ref PMMementoData
    */
   enum PMMediaMementoID { PMMethodID, PMIntervalsID, PMSamplesMinID, PMSamplesMaxID,
                            PMConfidenceID, PMVarianceID, PMRatioID,
                            PMAALevelID, PMAAThresholdID, PMAbsorptionID, PMEmissionID,
                            PMScatteringTypeID, PMScatteringColorID,
                            PMScatteringEccentricityID, PMScatteringExtinctionID,
                            PMEnableAbsorptionID, PMEnableEmissionID,
                            PMEnableScatteringID };

   int m_method;
   int m_intervals;
   int m_samplesMin;
   int m_samplesMax;
   double m_confidence;
   double m_variance;
   double m_ratio;
   int m_aaLevel;
   double m_aaThreshold;
   PMColor m_absorption;
   PMColor m_emission;
   int m_scatteringType;
   PMColor m_scatteringColor;
   double m_scatteringEccentricity;
   double m_scatteringExtinction;

   bool m_enableAbsorption;
   bool m_enableEmission;
   bool m_enableScattering;

   static PMMetaObject* s_pMetaObject;
};


#endif