25 int ColorBlendAttrib::_attrib_slot;
34 return return_new(attrib);
43 make(ColorBlendAttrib::Mode mode) {
47 return return_new(attrib);
56 make(ColorBlendAttrib::Mode mode,
57 ColorBlendAttrib::Operand a, ColorBlendAttrib::Operand b,
58 const LColor &color) {
60 return return_new(attrib);
69 make(ColorBlendAttrib::Mode mode,
70 ColorBlendAttrib::Operand a, ColorBlendAttrib::Operand b,
71 ColorBlendAttrib::Mode alpha_mode,
72 ColorBlendAttrib::Operand alpha_a, ColorBlendAttrib::Operand alpha_b,
73 const LColor &color) {
75 alpha_mode, alpha_a, alpha_b,
77 return return_new(attrib);
92 void ColorBlendAttrib::
93 output(ostream &out)
const {
94 out << get_type() <<
":" <<
get_mode();
118 int ColorBlendAttrib::
122 if (_mode != ta->_mode) {
123 return (
int)_mode - (int)ta->_mode;
127 return (
int)_a - (int)ta->_a;
131 return (
int)_b - (int)ta->_b;
134 return _color.compare_to(ta->_color);
143 size_t ColorBlendAttrib::
144 get_hash_impl()
const {
149 hash = _color.add_hash(hash);
180 _color.write_datagram(dg);
195 attrib->fillin(scan, manager);
204 void ColorBlendAttrib::
206 RenderAttrib::fillin(scan, manager);
218 if (_a >= O_incoming1_color) {
219 _a = (Operand)(_a + 4);
221 if (_b >= O_incoming1_color) {
222 _b = (Operand)(_b + 4);
231 _color.read_datagram(scan);
233 _involves_constant_color =
236 _involves_color_scale =
245 operator << (ostream &out, ColorBlendAttrib::Mode mode) {
247 case ColorBlendAttrib::M_none:
248 return out <<
"none";
250 case ColorBlendAttrib::M_add:
253 case ColorBlendAttrib::M_subtract:
254 return out <<
"subtract";
256 case ColorBlendAttrib::M_inv_subtract:
257 return out <<
"inv_subtract";
259 case ColorBlendAttrib::M_min:
262 case ColorBlendAttrib::M_max:
266 return out <<
"**invalid ColorBlendAttrib::Mode(" << (int)mode <<
")**";
273 operator << (ostream &out, ColorBlendAttrib::Operand operand) {
275 case ColorBlendAttrib::O_zero:
276 return out <<
"zero";
278 case ColorBlendAttrib::O_one:
281 case ColorBlendAttrib::O_incoming_color:
282 return out <<
"incoming_color";
284 case ColorBlendAttrib::O_one_minus_incoming_color:
285 return out <<
"one_minus_incoming_color";
287 case ColorBlendAttrib::O_fbuffer_color:
288 return out <<
"fbuffer_color";
290 case ColorBlendAttrib::O_one_minus_fbuffer_color:
291 return out <<
"one_minus_fbuffer_color";
293 case ColorBlendAttrib::O_incoming_alpha:
294 return out <<
"incoming_alpha";
296 case ColorBlendAttrib::O_one_minus_incoming_alpha:
297 return out <<
"one_minus_incoming_alpha";
299 case ColorBlendAttrib::O_fbuffer_alpha:
300 return out <<
"fbuffer_alpha";
302 case ColorBlendAttrib::O_one_minus_fbuffer_alpha:
303 return out <<
"one_minus_fbuffer_alpha";
305 case ColorBlendAttrib::O_constant_color:
306 return out <<
"constant_color";
308 case ColorBlendAttrib::O_one_minus_constant_color:
309 return out <<
"one_minus_constant_color";
311 case ColorBlendAttrib::O_constant_alpha:
312 return out <<
"constant_alpha";
314 case ColorBlendAttrib::O_one_minus_constant_alpha:
315 return out <<
"one_minus_constant_alpha";
317 case ColorBlendAttrib::O_incoming_color_saturate:
318 return out <<
"incoming_color_saturate";
320 case ColorBlendAttrib::O_color_scale:
321 return out <<
"color_scale";
323 case ColorBlendAttrib::O_one_minus_color_scale:
324 return out <<
"one_minus_color_scale";
326 case ColorBlendAttrib::O_alpha_scale:
327 return out <<
"alpha_scale";
329 case ColorBlendAttrib::O_one_minus_alpha_scale:
330 return out <<
"one_minus_alpha_scale";
332 case ColorBlendAttrib::O_incoming1_color:
333 return out <<
"incoming1_color";
335 case ColorBlendAttrib::O_one_minus_incoming1_color:
336 return out <<
"one_minus_incoming1_color";
338 case ColorBlendAttrib::O_incoming1_alpha:
339 return out <<
"incoming1_alpha";
341 case ColorBlendAttrib::O_one_minus_incoming1_alpha:
342 return out <<
"one_minus_incoming1_alpha";
345 return out <<
"**invalid ColorBlendAttrib::Operand(" << (int)operand <<
")**";