1
/*=========================================================================
3
Program: Ionization FRont Interactive Tool (IFRIT)
7
Copyright (c) 2002-2006 Nick Gnedin
10
This file may be distributed and/or modified under the terms of the
11
GNU General Public License version 2 as published by the Free Software
12
Foundation and appearing in the file LICENSE.GPL included in the
13
packaging of this file.
15
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
16
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
19
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
=========================================================================*/
1
/*=========================================================================
3
Program: Ionization FRont Interactive Tool (IFRIT)
7
Copyright (c) 2002-2006 Nick Gnedin
10
This file may be distributed and/or modified under the terms of the
11
GNU General Public License version 2 as published by the Free Software
12
Foundation and appearing in the file LICENSE.GPL included in the
13
packaging of this file.
15
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
16
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
19
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
=========================================================================*/
29
29
#include "isolidviewsubject.h"
69
iSolidViewSubject::iSolidViewSubject(iViewModule *vm, const iDataType &type, const iString &name, int numActors, unsigned int flags, float maxOpacity) : iViewSubject(vm,type,name,flags), mNoColor((flags&_ViewSubjectNoColor)!=0U), mNoOpacity((flags&_ViewSubjectNoOpacity)!=0U), mNoPalette((flags&_ViewSubjectNoPalette)!=0U), mSameColor((flags&_ViewSubjectSameColor)!=0U), mSameOpacity((flags&_ViewSubjectSameOpacity)!=0U), mSamePalette((flags&_ViewSubjectSamePalette)!=0U), mMaxOpacity(maxOpacity)
68
iSolidViewSubject::iSolidViewSubject(iViewModule *vm, const iDataType &type, const iString &name, int numActors, unsigned int flags, float maxOpacity) : iViewSubject(vm,type,name,flags), mNoColor((flags&ViewSubject::Flag::NoColor)!=0U), mNoOpacity((flags&ViewSubject::Flag::NoOpacity)!=0U), mNoPalette((flags&ViewSubject::Flag::NoPalette)!=0U), mSameColor((flags&ViewSubject::Flag::SameColor)!=0U), mSameOpacity((flags&ViewSubject::Flag::SameOpacity)!=0U), mSamePalette((flags&ViewSubject::Flag::SamePalette)!=0U), mMaxOpacity(maxOpacity)
92
91
a = iReplicatedActor::New(this); IERROR_ASSERT(a);
94
93
a->SetScalarVisibility(false);
95
a->GetLookupTable()->SetPalette(this->GetViewModule()->GetControlModule()->GetPalette(0));
94
a->GetLookupTable()->SetPaletteId(1);
96
95
a->GetLookupTable()->SetColor(mDefaultColor);
97
96
a->ColorByArrayComponent(0,0);
98
97
a->SetPosition(0.0,0.0,0.0);
217
void iSolidViewSubject::SetPalette(int l, int p)
216
void iSolidViewSubject::SetPaletteId(int l, int p)
219
218
if(mSamePalette && l!=0) l = 0;
221
int n = this->GetViewModule()->GetControlModule()->GetNumberOfPalettes();
222
if(!mNoPalette && l>=0 && l<mActors.Size() && p>=-n && p<=n && (p!=0 || !mNoColor))
220
if(!mNoPalette && l>=0 && l<mActors.Size() && (p!=0 || !mNoColor))
224
222
this->ShowColorBars(false);
225
223
int i, n = mSamePalette ? mActors.Size() : l+1;
226
224
for(i=l; i<n; i++)
228
mActors[i]->GetLookupTable()->SetPalette(this->GetViewModule()->GetControlModule()->GetPalette(iMath::Abs(p)-1));
229
mActors[i]->GetLookupTable()->SetReversed(p < 0);
226
mActors[i]->GetLookupTable()->SetPaletteId(p);
230
227
mPalettes[i] = p;
232
229
this->ShowColorBars(true);
310
307
n = mSamePalette ? 1 : mPalettes.Size();
311
308
ibuf.Fill(mPalettes.Data(),n);
312
if(this->UnPackValue(s,KeyPalette(),ibuf,n)) for(i=0; i<n; i++) this->SetPalette(i,ibuf[i]);
309
if(this->UnPackValue(s,KeyPalette(),ibuf,n)) for(i=0; i<n; i++) this->SetPaletteId(i,ibuf[i]);
315
312
this->SolidViewSubjectUnPackStateBody(s);