Blender V4.3
FrsMaterial.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
13
14#ifdef WITH_CXX_GUARDEDALLOC
15# include "MEM_guardedalloc.h"
16#endif
17
18namespace Freestyle {
19
22 public:
24 inline FrsMaterial();
25
43 inline FrsMaterial(const float *iLine,
44 const float *iDiffuse,
45 const float *iAmbiant,
46 const float *iSpecular,
47 const float *iEmission,
48 float iShininess,
49 int iPriority);
50
52 inline FrsMaterial(const FrsMaterial &m);
53
55 virtual ~FrsMaterial() {}
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
332FrsMaterial::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
366void 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
374void 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
382void 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
390void 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
398void 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
406void FrsMaterial::setShininess(const float s)
407{
408 Shininess = s;
409}
410
411void 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 */
Configuration definitions.
Read Guarded memory(de)allocation.
const float * ambient() const
void setShininess(float s)
const float ambientB() const
const float specularR() const
const float lineB() const
Definition FrsMaterial.h:76
const float * specular() const
const float specularB() const
const float specularG() const
void setPriority(int priority)
const float diffuseG() const
const float emissionA() const
const float emissionR() const
void setDiffuse(float r, float g, float b, float a)
const float ambientG() const
void setLine(float r, float g, float b, float a)
void setAmbient(float r, float g, float b, float a)
const float ambientR() const
const float * diffuse() const
Definition FrsMaterial.h:88
const float lineR() const
Definition FrsMaterial.h:64
bool operator!=(const FrsMaterial &m) const
const float * line() const
Definition FrsMaterial.h:58
const int priority() const
const float * emission() const
void setSpecular(float r, float g, float b, float a)
const float emissionB() const
const float specularA() const
const float diffuseR() const
Definition FrsMaterial.h:94
const float diffuseA() const
bool operator==(const FrsMaterial &m) const
const float lineA() const
Definition FrsMaterial.h:82
const float ambientA() const
void setEmission(float r, float g, float b, float a)
FrsMaterial & operator=(const FrsMaterial &m)
const float lineG() const
Definition FrsMaterial.h:70
const float diffuseB() const
const float shininess() const
const float emissionG() const
local_group_size(16, 16) .push_constant(Type b
inherits from class Rep
Definition AppCanvas.cpp:20
static uint a[3]
Definition RandGen.cpp:82