1 // Copyright (C) 2012-2019 The VPaint Developers.
2 // See the COPYRIGHT file at the top-level directory of this distribution
3 // and at https://github.com/dalboris/vpaint/blob/master/COPYRIGHT
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 
17 #ifndef GLWIDGET_MATERIAL_H
18 #define GLWIDGET_MATERIAL_H
19 
20 class GLWidget_Material
21 {
22 public:
23     GLWidget_Material(QString s = QString("unnamed material")) :
name_(s)24         name_(s),
25 
26         ambientFront_r(0.8f),
27         ambientFront_g(0.8f),
28         ambientFront_b(0.8f),
29         ambientFront_a(1.0f),
30 
31         diffuseFront_r(0.8f),
32         diffuseFront_g(0.8f),
33         diffuseFront_b(0.8f),
34         diffuseFront_a(1.0f),
35 
36         specularFront_r(0.8f),
37         specularFront_g(0.8f),
38         specularFront_b(0.8f),
39         specularFront_a(1.0f),
40 
41         emissionFront_r(0.0f),
42         emissionFront_g(0.0f),
43         emissionFront_b(0.0f),
44         emissionFront_a(0.0f),
45 
46         shininessFront(96),
47 
48         ambientBack_r(0.8f),
49         ambientBack_g(0.8f),
50         ambientBack_b(0.8f),
51         ambientBack_a(1.0f),
52 
53         diffuseBack_r(0.8f),
54         diffuseBack_g(0.8f),
55         diffuseBack_b(0.8f),
56         diffuseBack_a(1.0f),
57 
58         specularBack_r(0.8f),
59         specularBack_g(0.8f),
60         specularBack_b(0.8f),
61         specularBack_a(1.0f),
62 
63         emissionBack_r(0.0f),
64         emissionBack_g(0.0f),
65         emissionBack_b(0.0f),
66         emissionBack_a(0.0f),
67 
68         shininessBack(96)
69     {
70     }
71 
72 
73     GLWidget_Material(float r, float g, float b, QString s = QString("unnammed material"), float specular = 0.8f, float shininess = 96.0f) :
name_(s)74         name_(s),
75 
76         ambientFront_r(r),
77         ambientFront_g(g),
78         ambientFront_b(b),
79         ambientFront_a(1.0f),
80 
81         diffuseFront_r(r),
82         diffuseFront_g(g),
83         diffuseFront_b(b),
84         diffuseFront_a(1.0f),
85 
86         specularFront_r(specular),
87         specularFront_g(specular),
88         specularFront_b(specular),
89         specularFront_a(1.0f),
90 
91         emissionFront_r(0.0f),
92         emissionFront_g(0.0f),
93         emissionFront_b(0.0f),
94         emissionFront_a(0.0f),
95 
96         shininessFront(shininess),
97 
98         ambientBack_r(r),
99         ambientBack_g(g),
100         ambientBack_b(b),
101         ambientBack_a(1.0f),
102 
103         diffuseBack_r(r),
104         diffuseBack_g(g),
105         diffuseBack_b(b),
106         diffuseBack_a(1.0f),
107 
108         specularBack_r(specular),
109         specularBack_g(specular),
110         specularBack_b(specular),
111         specularBack_a(1.0f),
112 
113         emissionBack_r(0.0f),
114         emissionBack_g(0.0f),
115         emissionBack_b(0.0f),
116         emissionBack_a(0.0f),
117 
118         shininessBack(shininess)
119     {
120     }
121 
name()122     QString name() const {return name_;}
123 
124     QString name_;
125 
126     float ambientFront_r,
127     ambientFront_g,
128     ambientFront_b,
129     ambientFront_a,
130 
131     diffuseFront_r,
132     diffuseFront_g,
133     diffuseFront_b,
134     diffuseFront_a,
135 
136     specularFront_r,
137     specularFront_g,
138     specularFront_b,
139     specularFront_a,
140 
141     emissionFront_r,
142     emissionFront_g,
143     emissionFront_b,
144     emissionFront_a,
145 
146     shininessFront,
147 
148 
149     ambientBack_r,
150     ambientBack_g,
151     ambientBack_b,
152     ambientBack_a,
153 
154     diffuseBack_r,
155     diffuseBack_g,
156     diffuseBack_b,
157     diffuseBack_a,
158 
159     specularBack_r,
160     specularBack_g,
161     specularBack_b,
162     specularBack_a,
163 
164     emissionBack_r,
165     emissionBack_g,
166     emissionBack_b,
167     emissionBack_a,
168 
169     shininessBack;
170 };
171 
172 #endif
173