1 /*---------------------------------------------------------------------------*\
5 * Copyright (C) 2000-2002 by the OpenSG Forum *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
37 \*---------------------------------------------------------------------------*/
39 //---------------------------------------------------------------------------
41 //---------------------------------------------------------------------------
46 #include "OSGConfig.h"
48 #include "OSGColorMaskChunk.h"
49 #include "OSGDrawEnv.h"
53 // Documentation for this class is emited in the
54 // OSGColorMaskChunkBase.cpp file.
55 // To modify it, please change the .fcd file (OSGColorMaskChunk.fcd) and
56 // regenerate the base file.
58 /***************************************************************************\
60 \***************************************************************************/
62 StateChunkClass
ColorMaskChunk::_class("Color", 1, 50);
64 /***************************************************************************\
66 \***************************************************************************/
68 void ColorMaskChunk::initMethod(InitPhase ePhase
)
70 Inherited::initMethod(ePhase
);
74 /***************************************************************************\
76 \***************************************************************************/
78 /*-------------------------------------------------------------------------*\
80 \*-------------------------------------------------------------------------*/
82 /*----------------------- constructors & destructors ----------------------*/
84 ColorMaskChunk::ColorMaskChunk(void) :
89 ColorMaskChunk::ColorMaskChunk(const ColorMaskChunk
&source
) :
94 ColorMaskChunk::~ColorMaskChunk(void)
98 /*------------------------- Chunk Class Access ---------------------------*/
100 const StateChunkClass
*ColorMaskChunk::getClass(void) const
105 /*----------------------------- class specific ----------------------------*/
107 void ColorMaskChunk::changed(ConstFieldMaskArg whichField
,
111 Inherited::changed(whichField
, origin
, details
);
114 void ColorMaskChunk::dump( UInt32
,
115 const BitVector
) const
117 SLOG
<< "Dump ColorMaskChunk NI" << std::endl
;
120 /*------------------------------ State ------------------------------------*/
122 void ColorMaskChunk::activate(DrawEnv
*pEnv
, UInt32
)
124 pEnv
->incNumChunkChanges();
126 glColorMask(getMaskR(), getMaskG(), getMaskB(), getMaskA());
129 void ColorMaskChunk::changeFrom(DrawEnv
*pEnv
,
130 StateChunk
*old_chunk
,
133 old_chunk
->deactivate(pEnv
, index
);
135 activate(pEnv
, index
);
138 void ColorMaskChunk::deactivate(DrawEnv
*, UInt32
)
140 glColorMask(true, true, true, true);
143 /*-------------------------- Comparison -----------------------------------*/
145 Real32
ColorMaskChunk::switchCost(StateChunk
*)
150 /** \brief assignment
153 bool ColorMaskChunk::operator < (const StateChunk
&other
) const
155 return this < &other
;
161 bool ColorMaskChunk::operator == (const StateChunk
&other
) const
163 ColorMaskChunk
const *tother
= dynamic_cast<ColorMaskChunk
const*>(&other
);
171 if(getMaskR() != tother
->getMaskR() ||
172 getMaskG() != tother
->getMaskG() ||
173 getMaskB() != tother
->getMaskB() ||
174 getMaskA() != tother
->getMaskA() )
185 bool ColorMaskChunk::operator != (const StateChunk
&other
) const
187 return ! (*this == other
);