Blender V5.0
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
11
13
14#include "MEM_guardedalloc.h"
15
16namespace Freestyle {
17
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
56 inline const float *line() const
57 {
58 return Line;
59 }
60
62 inline float lineR() const
63 {
64 return Line[0];
65 }
66
68 inline float lineG() const
69 {
70 return Line[1];
71 }
72
74 inline float lineB() const
75 {
76 return Line[2];
77 }
78
80 inline float lineA() const
81 {
82 return Line[3];
83 }
84
86 inline const float *diffuse() const
87 {
88 return Diffuse;
89 }
90
92 inline float diffuseR() const
93 {
94 return Diffuse[0];
95 }
96
98 inline float diffuseG() const
99 {
100 return Diffuse[1];
101 }
102
104 inline float diffuseB() const
105 {
106 return Diffuse[2];
107 }
108
110 inline float diffuseA() const
111 {
112 return Diffuse[3];
113 }
114
116 inline const float *specular() const
117 {
118 return Specular;
119 }
120
122 inline float specularR() const
123 {
124 return Specular[0];
125 }
126
128 inline float specularG() const
129 {
130 return Specular[1];
131 }
132
134 inline float specularB() const
135 {
136 return Specular[2];
137 }
138
140 inline float specularA() const
141 {
142 return Specular[3];
143 }
144
146 inline const float *ambient() const
147 {
148 return Ambient;
149 }
150
152 inline float ambientR() const
153 {
154 return Ambient[0];
155 }
156
158 inline float ambientG() const
159 {
160 return Ambient[1];
161 }
162
164 inline float ambientB() const
165 {
166 return Ambient[2];
167 }
168
170 inline float ambientA() const
171 {
172 return Ambient[3];
173 }
174
176 inline const float *emission() const
177 {
178 return Emission;
179 }
180
182 inline float emissionR() const
183 {
184 return Emission[0];
185 }
186
188 inline float emissionG() const
189 {
190 return Emission[1];
191 }
192
194 inline float emissionB() const
195 {
196 return Emission[2];
197 }
198
200 inline float emissionA() const
201 {
202 return Emission[3];
203 }
204
206 inline float shininess() const
207 {
208 return Shininess;
209 }
210
212 inline int priority() const
213 {
214 return Priority;
215 }
216
227 inline void setLine(float r, float g, float b, float a);
228
239 inline void setDiffuse(float r, float g, float b, float a);
240
251 inline void setSpecular(float r, float g, float b, float a);
252
263 inline void setAmbient(float r, float g, float b, float a);
264
275 inline void setEmission(float r, float g, float b, float a);
276
281 inline void setShininess(float s);
282
287 inline void setPriority(int priority);
288
289 /* operators */
290 inline FrsMaterial &operator=(const FrsMaterial &m);
291 inline bool operator!=(const FrsMaterial &m) const;
292 inline bool operator==(const FrsMaterial &m) const;
293
294 private:
296 float Line[4];
297 float Diffuse[4];
298 float Specular[4];
299 float Ambient[4];
300 float Emission[4];
301 float Shininess;
302 int Priority;
303
304 MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:FrsMaterial")
305};
306
308{
309 Line[0] = Line[1] = Line[2] = 0.0f;
310 Line[3] = 1.0f;
311
312 Ambient[0] = Ambient[1] = Ambient[2] = 0.2f;
313 Ambient[3] = 1.0f;
314
315 Diffuse[0] = Diffuse[1] = Diffuse[2] = 0.8f;
316 Diffuse[3] = 1.0f;
317
318 Emission[0] = Emission[1] = Emission[2] = 0.0f;
319 Emission[3] = 1.0f;
320
321 Specular[0] = Specular[1] = Specular[2] = 0.0f;
322 Specular[3] = 1.0f;
323
324 Shininess = 0.0f;
325 Priority = 0;
326}
327
328FrsMaterial::FrsMaterial(const float *iLine,
329 const float *iDiffuse,
330 const float *iAmbiant,
331 const float *iSpecular,
332 const float *iEmission,
333 const float iShininess,
334 const int iPriority)
335{
336 for (int i = 0; i < 4; i++) {
337 Line[i] = iLine[i];
338 Diffuse[i] = iDiffuse[i];
339 Specular[i] = iSpecular[i];
340 Ambient[i] = iAmbiant[i];
341 Emission[i] = iEmission[i];
342 }
343
344 Shininess = iShininess;
345 Priority = iPriority;
346}
347
349{
350 for (int i = 0; i < 4; i++) {
351 Line[i] = m.line()[i];
352 Diffuse[i] = m.diffuse()[i];
353 Specular[i] = m.specular()[i];
354 Ambient[i] = m.ambient()[i];
355 Emission[i] = m.emission()[i];
356 }
357
358 Shininess = m.shininess();
359 Priority = m.priority();
360}
361
362void FrsMaterial::setLine(const float r, const float g, const float b, const float a)
363{
364 Line[0] = r;
365 Line[1] = g;
366 Line[2] = b;
367 Line[3] = a;
368}
369
370void FrsMaterial::setDiffuse(const float r, const float g, const float b, const float a)
371{
372 Diffuse[0] = r;
373 Diffuse[1] = g;
374 Diffuse[2] = b;
375 Diffuse[3] = a;
376}
377
378void FrsMaterial::setSpecular(const float r, const float g, const float b, const float a)
379{
380 Specular[0] = r;
381 Specular[1] = g;
382 Specular[2] = b;
383 Specular[3] = a;
384}
385
386void FrsMaterial::setAmbient(const float r, const float g, const float b, const float a)
387{
388 Ambient[0] = r;
389 Ambient[1] = g;
390 Ambient[2] = b;
391 Ambient[3] = a;
392}
393
394void FrsMaterial::setEmission(const float r, const float g, const float b, const float a)
395{
396 Emission[0] = r;
397 Emission[1] = g;
398 Emission[2] = b;
399 Emission[3] = a;
400}
401
402void FrsMaterial::setShininess(const float s)
403{
404 Shininess = s;
405}
406
408{
409 Priority = priority;
410}
411
413{
414 for (int i = 0; i < 4; i++) {
415 Line[i] = m.line()[i];
416 Diffuse[i] = m.diffuse()[i];
417 Specular[i] = m.specular()[i];
418 Ambient[i] = m.ambient()[i];
419 Emission[i] = m.emission()[i];
420 }
421
422 Shininess = m.shininess();
423 Priority = m.priority();
424 return *this;
425}
426
428{
429 if (Shininess != m.shininess()) {
430 return true;
431 }
432 if (Priority != m.priority()) {
433 return true;
434 }
435
436 for (int i = 0; i < 4; i++) {
437 if (Line[i] != m.line()[i]) {
438 return true;
439 }
440 if (Diffuse[i] != m.diffuse()[i]) {
441 return true;
442 }
443 if (Specular[i] != m.specular()[i]) {
444 return true;
445 }
446 if (Ambient[i] != m.ambient()[i]) {
447 return true;
448 }
449 if (Emission[i] != m.emission()[i]) {
450 return true;
451 }
452 }
453
454 return false;
455}
456
458{
459 return (!((*this) != m));
460}
461
462} /* namespace Freestyle */
Configuration definitions.
Read Guarded memory(de)allocation.
const float * ambient() const
float lineR() const
Definition FrsMaterial.h:62
void setShininess(float s)
float emissionB() const
const float * specular() const
void setPriority(int priority)
float ambientG() const
float shininess() const
float specularB() const
void setDiffuse(float r, float g, float b, float a)
float ambientR() const
void setLine(float r, float g, float b, float a)
float emissionG() const
float lineA() const
Definition FrsMaterial.h:80
float emissionR() const
void setAmbient(float r, float g, float b, float a)
const float * diffuse() const
Definition FrsMaterial.h:86
float ambientA() const
float ambientB() const
float diffuseG() const
Definition FrsMaterial.h:98
float specularR() const
bool operator!=(const FrsMaterial &m) const
const float * line() const
Definition FrsMaterial.h:56
float specularG() const
const float * emission() const
void setSpecular(float r, float g, float b, float a)
float emissionA() const
float diffuseB() const
float specularA() const
bool operator==(const FrsMaterial &m) const
float lineG() const
Definition FrsMaterial.h:68
void setEmission(float r, float g, float b, float a)
FrsMaterial & operator=(const FrsMaterial &m)
float diffuseR() const
Definition FrsMaterial.h:92
float diffuseA() const
float lineB() const
Definition FrsMaterial.h:74
inherits from class Rep
Definition AppCanvas.cpp:20
static uint a[3]
Definition RandGen.cpp:82
i
Definition text_draw.cc:230