Blender  V3.3
FrsMaterial.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #pragma once
4 
10 #include "../system/FreestyleConfig.h"
11 
12 #ifdef WITH_CXX_GUARDEDALLOC
13 # include "MEM_guardedalloc.h"
14 #endif
15 
16 namespace Freestyle {
17 
19 class FrsMaterial {
20  public:
22  inline FrsMaterial();
23 
41  inline FrsMaterial(const float *iLine,
42  const float *iDiffuse,
43  const float *iAmbiant,
44  const float *iSpecular,
45  const float *iEmission,
46  float iShininess,
47  int iPriority);
48 
50  inline FrsMaterial(const FrsMaterial &m);
51 
53  virtual ~FrsMaterial()
54  {
55  }
56 
58  inline const float *line() const
59  {
60  return Line;
61  }
62 
64  inline const float lineR() const
65  {
66  return Line[0];
67  }
68 
70  inline const float lineG() const
71  {
72  return Line[1];
73  }
74 
76  inline const float lineB() const
77  {
78  return Line[2];
79  }
80 
82  inline const float lineA() const
83  {
84  return Line[3];
85  }
86 
88  inline const float *diffuse() const
89  {
90  return Diffuse;
91  }
92 
94  inline const float diffuseR() const
95  {
96  return Diffuse[0];
97  }
98 
100  inline const float diffuseG() const
101  {
102  return Diffuse[1];
103  }
104 
106  inline const float diffuseB() const
107  {
108  return Diffuse[2];
109  }
110 
112  inline const float diffuseA() const
113  {
114  return Diffuse[3];
115  }
116 
118  inline const float *specular() const
119  {
120  return Specular;
121  }
122 
124  inline const float specularR() const
125  {
126  return Specular[0];
127  }
128 
130  inline const float specularG() const
131  {
132  return Specular[1];
133  }
134 
136  inline const float specularB() const
137  {
138  return Specular[2];
139  }
140 
142  inline const float specularA() const
143  {
144  return Specular[3];
145  }
146 
148  inline const float *ambient() const
149  {
150  return Ambient;
151  }
152 
154  inline const float ambientR() const
155  {
156  return Ambient[0];
157  }
158 
160  inline const float ambientG() const
161  {
162  return Ambient[1];
163  }
164 
166  inline const float ambientB() const
167  {
168  return Ambient[2];
169  }
170 
172  inline const float ambientA() const
173  {
174  return Ambient[3];
175  }
176 
178  inline const float *emission() const
179  {
180  return Emission;
181  }
182 
184  inline const float emissionR() const
185  {
186  return Emission[0];
187  }
188 
190  inline const float emissionG() const
191  {
192  return Emission[1];
193  }
194 
196  inline const float emissionB() const
197  {
198  return Emission[2];
199  }
200 
202  inline const float emissionA() const
203  {
204  return Emission[3];
205  }
206 
208  inline const float shininess() const
209  {
210  return Shininess;
211  }
212 
214  inline const int priority() const
215  {
216  return Priority;
217  }
218 
229  inline void setLine(float r, float g, float b, float a);
230 
241  inline void setDiffuse(float r, float g, float b, float a);
242 
253  inline void setSpecular(float r, float g, float b, float a);
254 
265  inline void setAmbient(float r, float g, float b, float a);
266 
277  inline void setEmission(float r, float g, float b, float a);
278 
283  inline void setShininess(float s);
284 
289  inline void setPriority(int priority);
290 
291  /* operators */
292  inline FrsMaterial &operator=(const FrsMaterial &m);
293  inline bool operator!=(const FrsMaterial &m) const;
294  inline bool operator==(const FrsMaterial &m) const;
295 
296  private:
298  float Line[4];
299  float Diffuse[4];
300  float Specular[4];
301  float Ambient[4];
302  float Emission[4];
303  float Shininess;
304  int Priority;
305 
306 #ifdef WITH_CXX_GUARDEDALLOC
307  MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:FrsMaterial")
308 #endif
309 };
310 
312 {
313  Line[0] = Line[1] = Line[2] = 0.0f;
314  Line[3] = 1.0f;
315 
316  Ambient[0] = Ambient[1] = Ambient[2] = 0.2f;
317  Ambient[3] = 1.0f;
318 
319  Diffuse[0] = Diffuse[1] = Diffuse[2] = 0.8f;
320  Diffuse[3] = 1.0f;
321 
322  Emission[0] = Emission[1] = Emission[2] = 0.0f;
323  Emission[3] = 1.0f;
324 
325  Specular[0] = Specular[1] = Specular[2] = 0.0f;
326  Specular[3] = 1.0f;
327 
328  Shininess = 0.0f;
329  Priority = 0;
330 }
331 
332 FrsMaterial::FrsMaterial(const float *iLine,
333  const float *iDiffuse,
334  const float *iAmbiant,
335  const float *iSpecular,
336  const float *iEmission,
337  const float iShininess,
338  const int iPriority)
339 {
340  for (int i = 0; i < 4; i++) {
341  Line[i] = iLine[i];
342  Diffuse[i] = iDiffuse[i];
343  Specular[i] = iSpecular[i];
344  Ambient[i] = iAmbiant[i];
345  Emission[i] = iEmission[i];
346  }
347 
348  Shininess = iShininess;
349  Priority = iPriority;
350 }
351 
353 {
354  for (int i = 0; i < 4; i++) {
355  Line[i] = m.line()[i];
356  Diffuse[i] = m.diffuse()[i];
357  Specular[i] = m.specular()[i];
358  Ambient[i] = m.ambient()[i];
359  Emission[i] = m.emission()[i];
360  }
361 
362  Shininess = m.shininess();
363  Priority = m.priority();
364 }
365 
366 void FrsMaterial::setLine(const float r, const float g, const float b, const float a)
367 {
368  Line[0] = r;
369  Line[1] = g;
370  Line[2] = b;
371  Line[3] = a;
372 }
373 
374 void FrsMaterial::setDiffuse(const float r, const float g, const float b, const float a)
375 {
376  Diffuse[0] = r;
377  Diffuse[1] = g;
378  Diffuse[2] = b;
379  Diffuse[3] = a;
380 }
381 
382 void FrsMaterial::setSpecular(const float r, const float g, const float b, const float a)
383 {
384  Specular[0] = r;
385  Specular[1] = g;
386  Specular[2] = b;
387  Specular[3] = a;
388 }
389 
390 void FrsMaterial::setAmbient(const float r, const float g, const float b, const float a)
391 {
392  Ambient[0] = r;
393  Ambient[1] = g;
394  Ambient[2] = b;
395  Ambient[3] = a;
396 }
397 
398 void FrsMaterial::setEmission(const float r, const float g, const float b, const float a)
399 {
400  Emission[0] = r;
401  Emission[1] = g;
402  Emission[2] = b;
403  Emission[3] = a;
404 }
405 
406 void FrsMaterial::setShininess(const float s)
407 {
408  Shininess = s;
409 }
410 
411 void FrsMaterial::setPriority(const int priority)
412 {
413  Priority = priority;
414 }
415 
417 {
418  for (int i = 0; i < 4; i++) {
419  Line[i] = m.line()[i];
420  Diffuse[i] = m.diffuse()[i];
421  Specular[i] = m.specular()[i];
422  Ambient[i] = m.ambient()[i];
423  Emission[i] = m.emission()[i];
424  }
425 
426  Shininess = m.shininess();
427  Priority = m.priority();
428  return *this;
429 }
430 
432 {
433  if (Shininess != m.shininess()) {
434  return true;
435  }
436  if (Priority != m.priority()) {
437  return true;
438  }
439 
440  for (int i = 0; i < 4; i++) {
441  if (Line[i] != m.line()[i]) {
442  return true;
443  }
444  if (Diffuse[i] != m.diffuse()[i]) {
445  return true;
446  }
447  if (Specular[i] != m.specular()[i]) {
448  return true;
449  }
450  if (Ambient[i] != m.ambient()[i]) {
451  return true;
452  }
453  if (Emission[i] != m.emission()[i]) {
454  return true;
455  }
456  }
457 
458  return false;
459 }
460 
462 {
463  return (!((*this) != m));
464 }
465 
466 } /* 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:88
void setShininess(float s)
Definition: FrsMaterial.h:406
const float ambientB() const
Definition: FrsMaterial.h:166
const float specularR() const
Definition: FrsMaterial.h:124
const float lineB() const
Definition: FrsMaterial.h:76
const float specularB() const
Definition: FrsMaterial.h:136
const float specularG() const
Definition: FrsMaterial.h:130
void setPriority(int priority)
Definition: FrsMaterial.h:411
const float diffuseG() const
Definition: FrsMaterial.h:100
const float emissionA() const
Definition: FrsMaterial.h:202
const float emissionR() const
Definition: FrsMaterial.h:184
void setDiffuse(float r, float g, float b, float a)
Definition: FrsMaterial.h:374
const float * specular() const
Definition: FrsMaterial.h:118
const float ambientG() const
Definition: FrsMaterial.h:160
void setLine(float r, float g, float b, float a)
Definition: FrsMaterial.h:366
void setAmbient(float r, float g, float b, float a)
Definition: FrsMaterial.h:390
const float ambientR() const
Definition: FrsMaterial.h:154
const float lineR() const
Definition: FrsMaterial.h:64
bool operator!=(const FrsMaterial &m) const
Definition: FrsMaterial.h:431
const int priority() const
Definition: FrsMaterial.h:214
void setSpecular(float r, float g, float b, float a)
Definition: FrsMaterial.h:382
const float emissionB() const
Definition: FrsMaterial.h:196
const float * ambient() const
Definition: FrsMaterial.h:148
const float specularA() const
Definition: FrsMaterial.h:142
const float diffuseR() const
Definition: FrsMaterial.h:94
const float diffuseA() const
Definition: FrsMaterial.h:112
bool operator==(const FrsMaterial &m) const
Definition: FrsMaterial.h:461
const float * line() const
Definition: FrsMaterial.h:58
const float lineA() const
Definition: FrsMaterial.h:82
const float ambientA() const
Definition: FrsMaterial.h:172
void setEmission(float r, float g, float b, float a)
Definition: FrsMaterial.h:398
FrsMaterial & operator=(const FrsMaterial &m)
Definition: FrsMaterial.h:416
const float lineG() const
Definition: FrsMaterial.h:70
const float diffuseB() const
Definition: FrsMaterial.h:106
const float shininess() const
Definition: FrsMaterial.h:208
const float * emission() const
Definition: FrsMaterial.h:178
const float emissionG() const
Definition: FrsMaterial.h:190
inherits from class Rep
Definition: AppCanvas.cpp:18
static unsigned a[3]
Definition: RandGen.cpp:78
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static const pxr::TfToken g("g", pxr::TfToken::Immortal)