Blender  V2.93
FrsMaterial.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16 
17 #pragma once
18 
24 #include "../system/FreestyleConfig.h"
25 
26 #ifdef WITH_CXX_GUARDEDALLOC
27 # include "MEM_guardedalloc.h"
28 #endif
29 
30 namespace Freestyle {
31 
33 class FrsMaterial {
34  public:
36  inline FrsMaterial();
37 
55  inline FrsMaterial(const float *iLine,
56  const float *iDiffuse,
57  const float *iAmbiant,
58  const float *iSpecular,
59  const float *iEmission,
60  const float iShininess,
61  const int iPriority);
62 
64  inline FrsMaterial(const FrsMaterial &m);
65 
67  virtual ~FrsMaterial()
68  {
69  }
70 
72  inline const float *line() const
73  {
74  return Line;
75  }
76 
78  inline const float lineR() const
79  {
80  return Line[0];
81  }
82 
84  inline const float lineG() const
85  {
86  return Line[1];
87  }
88 
90  inline const float lineB() const
91  {
92  return Line[2];
93  }
94 
96  inline const float lineA() const
97  {
98  return Line[3];
99  }
100 
102  inline const float *diffuse() const
103  {
104  return Diffuse;
105  }
106 
108  inline const float diffuseR() const
109  {
110  return Diffuse[0];
111  }
112 
114  inline const float diffuseG() const
115  {
116  return Diffuse[1];
117  }
118 
120  inline const float diffuseB() const
121  {
122  return Diffuse[2];
123  }
124 
126  inline const float diffuseA() const
127  {
128  return Diffuse[3];
129  }
130 
132  inline const float *specular() const
133  {
134  return Specular;
135  }
136 
138  inline const float specularR() const
139  {
140  return Specular[0];
141  }
142 
144  inline const float specularG() const
145  {
146  return Specular[1];
147  }
148 
150  inline const float specularB() const
151  {
152  return Specular[2];
153  }
154 
156  inline const float specularA() const
157  {
158  return Specular[3];
159  }
160 
162  inline const float *ambient() const
163  {
164  return Ambient;
165  }
166 
168  inline const float ambientR() const
169  {
170  return Ambient[0];
171  }
172 
174  inline const float ambientG() const
175  {
176  return Ambient[1];
177  }
178 
180  inline const float ambientB() const
181  {
182  return Ambient[2];
183  }
184 
186  inline const float ambientA() const
187  {
188  return Ambient[3];
189  }
190 
192  inline const float *emission() const
193  {
194  return Emission;
195  }
196 
198  inline const float emissionR() const
199  {
200  return Emission[0];
201  }
202 
204  inline const float emissionG() const
205  {
206  return Emission[1];
207  }
208 
210  inline const float emissionB() const
211  {
212  return Emission[2];
213  }
214 
216  inline const float emissionA() const
217  {
218  return Emission[3];
219  }
220 
222  inline const float shininess() const
223  {
224  return Shininess;
225  }
226 
228  inline const int priority() const
229  {
230  return Priority;
231  }
232 
243  inline void setLine(const float r, const float g, const float b, const float a);
244 
255  inline void setDiffuse(const float r, const float g, const float b, const float a);
256 
267  inline void setSpecular(const float r, const float g, const float b, const float a);
268 
279  inline void setAmbient(const float r, const float g, const float b, const float a);
280 
291  inline void setEmission(const float r, const float g, const float b, const float a);
292 
297  inline void setShininess(const float s);
298 
303  inline void setPriority(const int priority);
304 
305  /* operators */
306  inline FrsMaterial &operator=(const FrsMaterial &m);
307  inline bool operator!=(const FrsMaterial &m) const;
308  inline bool operator==(const FrsMaterial &m) const;
309 
310  private:
312  float Line[4];
313  float Diffuse[4];
314  float Specular[4];
315  float Ambient[4];
316  float Emission[4];
317  float Shininess;
318  int Priority;
319 
320 #ifdef WITH_CXX_GUARDEDALLOC
321  MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:FrsMaterial")
322 #endif
323 };
324 
326 {
327  Line[0] = Line[1] = Line[2] = 0.0f;
328  Line[3] = 1.0f;
329 
330  Ambient[0] = Ambient[1] = Ambient[2] = 0.2f;
331  Ambient[3] = 1.0f;
332 
333  Diffuse[0] = Diffuse[1] = Diffuse[2] = 0.8f;
334  Diffuse[3] = 1.0f;
335 
336  Emission[0] = Emission[1] = Emission[2] = 0.0f;
337  Emission[3] = 1.0f;
338 
339  Specular[0] = Specular[1] = Specular[2] = 0.0f;
340  Specular[3] = 1.0f;
341 
342  Shininess = 0.0f;
343  Priority = 0;
344 }
345 
346 FrsMaterial::FrsMaterial(const float *iLine,
347  const float *iDiffuse,
348  const float *iAmbiant,
349  const float *iSpecular,
350  const float *iEmission,
351  const float iShininess,
352  const int iPriority)
353 {
354  for (int i = 0; i < 4; i++) {
355  Line[i] = iLine[i];
356  Diffuse[i] = iDiffuse[i];
357  Specular[i] = iSpecular[i];
358  Ambient[i] = iAmbiant[i];
359  Emission[i] = iEmission[i];
360  }
361 
362  Shininess = iShininess;
363  Priority = iPriority;
364 }
365 
367 {
368  for (int i = 0; i < 4; i++) {
369  Line[i] = m.line()[i];
370  Diffuse[i] = m.diffuse()[i];
371  Specular[i] = m.specular()[i];
372  Ambient[i] = m.ambient()[i];
373  Emission[i] = m.emission()[i];
374  }
375 
376  Shininess = m.shininess();
377  Priority = m.priority();
378 }
379 
380 void FrsMaterial::setLine(const float r, const float g, const float b, const float a)
381 {
382  Line[0] = r;
383  Line[1] = g;
384  Line[2] = b;
385  Line[3] = a;
386 }
387 
388 void FrsMaterial::setDiffuse(const float r, const float g, const float b, const float a)
389 {
390  Diffuse[0] = r;
391  Diffuse[1] = g;
392  Diffuse[2] = b;
393  Diffuse[3] = a;
394 }
395 
396 void FrsMaterial::setSpecular(const float r, const float g, const float b, const float a)
397 {
398  Specular[0] = r;
399  Specular[1] = g;
400  Specular[2] = b;
401  Specular[3] = a;
402 }
403 
404 void FrsMaterial::setAmbient(const float r, const float g, const float b, const float a)
405 {
406  Ambient[0] = r;
407  Ambient[1] = g;
408  Ambient[2] = b;
409  Ambient[3] = a;
410 }
411 
412 void FrsMaterial::setEmission(const float r, const float g, const float b, const float a)
413 {
414  Emission[0] = r;
415  Emission[1] = g;
416  Emission[2] = b;
417  Emission[3] = a;
418 }
419 
420 void FrsMaterial::setShininess(const float s)
421 {
422  Shininess = s;
423 }
424 
425 void FrsMaterial::setPriority(const int priority)
426 {
427  Priority = priority;
428 }
429 
431 {
432  for (int i = 0; i < 4; i++) {
433  Line[i] = m.line()[i];
434  Diffuse[i] = m.diffuse()[i];
435  Specular[i] = m.specular()[i];
436  Ambient[i] = m.ambient()[i];
437  Emission[i] = m.emission()[i];
438  }
439 
440  Shininess = m.shininess();
441  Priority = m.priority();
442  return *this;
443 }
444 
446 {
447  if (Shininess != m.shininess()) {
448  return true;
449  }
450  if (Priority != m.priority()) {
451  return true;
452  }
453 
454  for (int i = 0; i < 4; i++) {
455  if (Line[i] != m.line()[i]) {
456  return true;
457  }
458  if (Diffuse[i] != m.diffuse()[i]) {
459  return true;
460  }
461  if (Specular[i] != m.specular()[i]) {
462  return true;
463  }
464  if (Ambient[i] != m.ambient()[i]) {
465  return true;
466  }
467  if (Emission[i] != m.emission()[i]) {
468  return true;
469  }
470  }
471 
472  return false;
473 }
474 
476 {
477  return (!((*this) != m));
478 }
479 
480 } /* namespace Freestyle */
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
Read Guarded memory(de)allocation.
const float * diffuse() const
Definition: FrsMaterial.h:102
const float ambientB() const
Definition: FrsMaterial.h:180
void setSpecular(const float r, const float g, const float b, const float a)
Definition: FrsMaterial.h:396
void setEmission(const float r, const float g, const float b, const float a)
Definition: FrsMaterial.h:412
const float specularR() const
Definition: FrsMaterial.h:138
void setDiffuse(const float r, const float g, const float b, const float a)
Definition: FrsMaterial.h:388
const float lineB() const
Definition: FrsMaterial.h:90
const float specularB() const
Definition: FrsMaterial.h:150
const float specularG() const
Definition: FrsMaterial.h:144
void setShininess(const float s)
Definition: FrsMaterial.h:420
const float diffuseG() const
Definition: FrsMaterial.h:114
const float emissionA() const
Definition: FrsMaterial.h:216
void setAmbient(const float r, const float g, const float b, const float a)
Definition: FrsMaterial.h:404
const float emissionR() const
Definition: FrsMaterial.h:198
void setLine(const float r, const float g, const float b, const float a)
Definition: FrsMaterial.h:380
void setPriority(const int priority)
Definition: FrsMaterial.h:425
const float * specular() const
Definition: FrsMaterial.h:132
const float ambientG() const
Definition: FrsMaterial.h:174
const float ambientR() const
Definition: FrsMaterial.h:168
const float lineR() const
Definition: FrsMaterial.h:78
bool operator!=(const FrsMaterial &m) const
Definition: FrsMaterial.h:445
const int priority() const
Definition: FrsMaterial.h:228
const float emissionB() const
Definition: FrsMaterial.h:210
const float * ambient() const
Definition: FrsMaterial.h:162
const float specularA() const
Definition: FrsMaterial.h:156
const float diffuseR() const
Definition: FrsMaterial.h:108
const float diffuseA() const
Definition: FrsMaterial.h:126
bool operator==(const FrsMaterial &m) const
Definition: FrsMaterial.h:475
const float * line() const
Definition: FrsMaterial.h:72
const float lineA() const
Definition: FrsMaterial.h:96
const float ambientA() const
Definition: FrsMaterial.h:186
FrsMaterial & operator=(const FrsMaterial &m)
Definition: FrsMaterial.h:430
const float lineG() const
Definition: FrsMaterial.h:84
const float diffuseB() const
Definition: FrsMaterial.h:120
const float shininess() const
Definition: FrsMaterial.h:222
const float * emission() const
Definition: FrsMaterial.h:192
const float emissionG() const
Definition: FrsMaterial.h:204
inherits from class Rep
Definition: AppCanvas.cpp:32
static unsigned a[3]
Definition: RandGen.cpp:92