Blender V4.5
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 const float lineR() const
63 {
64 return Line[0];
65 }
66
68 inline const float lineG() const
69 {
70 return Line[1];
71 }
72
74 inline const float lineB() const
75 {
76 return Line[2];
77 }
78
80 inline const float lineA() const
81 {
82 return Line[3];
83 }
84
86 inline const float *diffuse() const
87 {
88 return Diffuse;
89 }
90
92 inline const float diffuseR() const
93 {
94 return Diffuse[0];
95 }
96
98 inline const float diffuseG() const
99 {
100 return Diffuse[1];
101 }
102
104 inline const float diffuseB() const
105 {
106 return Diffuse[2];
107 }
108
110 inline const float diffuseA() const
111 {
112 return Diffuse[3];
113 }
114
116 inline const float *specular() const
117 {
118 return Specular;
119 }
120
122 inline const float specularR() const
123 {
124 return Specular[0];
125 }
126
128 inline const float specularG() const
129 {
130 return Specular[1];
131 }
132
134 inline const float specularB() const
135 {
136 return Specular[2];
137 }
138
140 inline const float specularA() const
141 {
142 return Specular[3];
143 }
144
146 inline const float *ambient() const
147 {
148 return Ambient;
149 }
150
152 inline const float ambientR() const
153 {
154 return Ambient[0];
155 }
156
158 inline const float ambientG() const
159 {
160 return Ambient[1];
161 }
162
164 inline const float ambientB() const
165 {
166 return Ambient[2];
167 }
168
170 inline const float ambientA() const
171 {
172 return Ambient[3];
173 }
174
176 inline const float *emission() const
177 {
178 return Emission;
179 }
180
182 inline const float emissionR() const
183 {
184 return Emission[0];
185 }
186
188 inline const float emissionG() const
189 {
190 return Emission[1];
191 }
192
194 inline const float emissionB() const
195 {
196 return Emission[2];
197 }
198
200 inline const float emissionA() const
201 {
202 return Emission[3];
203 }
204
206 inline const float shininess() const
207 {
208 return Shininess;
209 }
210
212 inline const 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
void setShininess(float s)
const float ambientB() const
const float specularR() const
const float lineB() const
Definition FrsMaterial.h:74
const float * specular() const
const float specularB() const
const float specularG() const
void setPriority(int priority)
const float diffuseG() const
Definition FrsMaterial.h:98
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:86
const float lineR() const
Definition FrsMaterial.h:62
bool operator!=(const FrsMaterial &m) const
const float * line() const
Definition FrsMaterial.h:56
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:92
const float diffuseA() const
bool operator==(const FrsMaterial &m) const
const float lineA() const
Definition FrsMaterial.h:80
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:68
const float diffuseB() const
const float shininess() const
const float emissionG() const
inherits from class Rep
Definition AppCanvas.cpp:20
static uint a[3]
Definition RandGen.cpp:82
i
Definition text_draw.cc:230