summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmphotons.h
blob: 14ce9f6f64b629419d815d8316884837529dad4c (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
//-*-C++-*-
/*
**************************************************************************
                                 description
                             --------------------
    copyright            : (C) 2003 by Leon Pennington
    email                : leon@leonscape.co.uk
**************************************************************************

**************************************************************************
*                                                                        *
*  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 PMPHOTONS_H
#define PMPHOTONS_H

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

#include "pmobject.h"

/**
 * Class for Photons settings.
 */

class PMPhotons : public PMObject
{
   typedef PMObject Base;
public:
   /**
    * Creates a PMPhotons
    */
   PMPhotons( PMPart* part );
   /**
    * Copy constructor
    */
   PMPhotons( const PMPhotons& p );
   /**
    * deletes the PMPhotons
    */
   virtual ~PMPhotons( );

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

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

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

   /**
    * Returns a new @ref PMPhotonsEdit
    */
   virtual PMDialogEditBase* editWidget( QWidget* parent ) const;
   /**
    * Returns the name of the pixmap that is displayed in the tree view
    * and dialog view
    */
   virtual QString pixmap( ) const { return QString( "pmphotons" ); }

   /**
    * Returns the target flag
    */
   bool target( ) const { return m_target; }
   /**
    * Sets the target flag
    */
   void setTarget( bool t );

   /**
    * Returns the spacing multiplier
    */
   double spacingMulti( ) const { return m_spacingMulti; }
   /**
    * Sets the spacing multipler
    */
   void setSpacingMulti( double sm );

   /**
    * Returns the refraction flag
    */
   bool refraction( ) const { return m_refraction; }
   /**
    * Sets the refraction flag
    */
   void setRefraction( bool r );

   /**
    * Returns the reflection flag
    */
   bool reflection( ) const { return m_reflection; }
   /**
    * Sets the reflection flag
    */
   void setReflection( bool r );

   /**
    * Returns the collect flag
    */
   bool collect( ) const { return m_collect; }
   /**
    * Sets the collect flag
    */
   void setCollect( bool c );

   /**
    * Returns the pass through flag
    */
   bool passThrough( ) const { return m_passThrough; }
   /**
    * Sets the pass through flag
    */
   void setPassThrough( bool pt );

   /**
    * Returns the area light flag
    */
   bool areaLight( ) const { return m_areaLight; }
   /**
    * Sets the area light flag
    */
   void setAreaLight( bool al );

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

private:
   /**
    * IDs for @ref PMMementoData
    */
   enum PMPhotonsMementoID{ PMTargetID, PMSpacingMultiID, PMRefractionID,
                            PMReflectionID, PMCollectID, PMPassThroughID,
                            PMAreaLightID };

   bool m_target;
   double m_spacingMulti;
   bool m_refraction;
   bool m_reflection;
   bool m_collect;
   bool m_passThrough;
   bool m_areaLight;
   
   static PMMetaObject* s_pMetaObject;
};

#endif