source: trunk/packages/vizservers/nanovis/NvFlowVisRenderer.cpp @ 2835

Last change on this file since 2835 was 2835, checked in by ldelgass, 12 years ago

Exclude unused file from build, misc. cleanups

  • Property svn:eol-style set to native
File size: 8.4 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * ----------------------------------------------------------------------
4 * NvFlowVisRenderer.cpp: particle system class
5 *
6 * ======================================================================
7 *  AUTHOR:  Wei Qiao <qiaow@purdue.edu>
8 *           Purdue Rendering and Perceptualization Lab (PURPL)
9 *
10 *  Copyright (c) 2004-2006  Purdue Research Foundation
11 *
12 *  See the file "license.terms" for information on usage and
13 *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
14 * ======================================================================
15 */
16
17#include <stdio.h>
18#include <assert.h>
19#include <malloc.h>
20#include <string.h>
21
22#include <R2/R2FilePath.h>
23
24#include "NvFlowVisRenderer.h"
25#include "NvVectorField.h"
26#include "Trace.h"
27
28#define NV_32
29
30NvFlowVisRenderer::NvFlowVisRenderer(int w, int h, CGcontext context) :
31    _activated(true)
32{
33    _psys_width = w;
34    _psys_height = h;
35
36//     licRenderer[0] = new NvLIC(NMESH, NPIX, NPIX, 0,
37//                                Vector3(0, 0, 0), g_context);
38//     licRenderer[1] = new NvLIC(NMESH, NPIX, NPIX, 1,
39//                                Vector3(0, 0, 0), g_context);
40//     licRenderer[2] = new NvLIC(NMESH, NPIX, NPIX, 2,
41//                                Vector3(0, 0, 0), g_context);
42}
43
44NvFlowVisRenderer::~NvFlowVisRenderer()
45{
46    std::map<std::string, NvVectorField *>::iterator iter;
47    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
48        delete (*iter).second;
49    }
50
51    /*
52      for (int i = 0; i < 3; ++i) {
53          delete licRenderer[i];
54      }
55    */
56}
57
58void
59NvFlowVisRenderer::initialize()
60{
61    std::map<std::string, NvVectorField *>::iterator iter;
62    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
63        (*iter).second->initialize();
64    }
65}
66
67void
68NvFlowVisRenderer::reset()
69{
70    std::map<std::string, NvVectorField *>::iterator iter;
71    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
72        (*iter).second->reset();
73    }
74}
75
76void
77NvFlowVisRenderer::initialize(const std::string& vfName)
78{
79    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
80    if (iter != _vectorFieldMap.end()) {
81        if ((*iter).second) {
82            (*iter).second->initialize();
83        }
84    }
85}
86
87void
88NvFlowVisRenderer::advect()
89{
90    std::map<std::string, NvVectorField *>::iterator iter;
91    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
92        if ((*iter).second && (*iter).second->active())
93            (*iter).second->advect();
94    }
95}
96
97void
98NvFlowVisRenderer::render()
99{
100    std::map<std::string, NvVectorField *>::iterator iter;
101    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
102        if ((*iter).second && (*iter).second->active())
103            (*iter).second->render();
104    }
105}
106
107void
108NvFlowVisRenderer::addVectorField(const std::string& vfName, Volume* volPtr,
109                                  const Vector3& ori,
110                                  float scaleX, float scaleY, float scaleZ, float max)
111{
112    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
113    if (iter != _vectorFieldMap.end()) {
114        if ((*iter).second) {
115            ((*iter).second)->setVectorField(volPtr, ori, scaleX, scaleY, scaleZ, max);
116        } else {
117            NvVectorField *vf = new NvVectorField();
118            _vectorFieldMap[vfName] = vf;
119            vf->setVectorField(volPtr, ori, scaleX, scaleY, scaleZ, max);
120        }
121    } else {
122        NvVectorField *vf = new NvVectorField();
123        _vectorFieldMap[vfName] = vf;
124        vf->setVectorField(volPtr, ori, scaleX, scaleY, scaleZ, max);
125    }
126}
127
128void
129NvFlowVisRenderer::activateVectorField(const std::string& vfName)
130{
131    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
132    if (iter != _vectorFieldMap.end()) {
133        if ((*iter).second)
134            (*iter).second->active(true);
135    }
136}
137
138void
139NvFlowVisRenderer::deactivateVectorField(const std::string& vfName)
140{
141    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
142    if (iter != _vectorFieldMap.end()) {
143        if ((*iter).second)
144            (*iter).second->active(false);
145    }
146}
147
148void
149NvFlowVisRenderer::activatePlane(const std::string& vfName, const std::string& name)
150{
151    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
152    if (iter != _vectorFieldMap.end()) {
153        if ((*iter).second)
154            (*iter).second->activatePlane(name);
155    }
156}
157
158void
159NvFlowVisRenderer::deactivatePlane(const std::string& vfName, const std::string& name)
160{
161    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
162    if (iter != _vectorFieldMap.end()) {
163        if ((*iter).second)
164            (*iter).second->deactivatePlane(name);
165    }
166}
167
168void
169NvFlowVisRenderer::setPlaneAxis(const std::string& vfName, const std::string& planeName, int axis)
170{
171    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
172    if (iter != _vectorFieldMap.end()) {
173        if ((*iter).second)
174            (*iter).second->setPlaneAxis(planeName, axis);
175    }
176}
177
178void
179NvFlowVisRenderer::setPlanePos(const std::string& vfName, const std::string& name, float pos)
180{
181    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
182    if (iter != _vectorFieldMap.end()) {
183        if ((*iter).second)
184            (*iter).second->setPlanePos(name, pos);
185    }
186}
187
188void
189NvFlowVisRenderer::setParticleColor(const std::string& vfName, const std::string& name, const Vector4& color)
190{
191    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
192    if (iter != _vectorFieldMap.end()) {
193        if ((*iter).second)
194            (*iter).second->setParticleColor(name, color);
195    }
196}
197
198void
199NvFlowVisRenderer::removeVectorField(const std::string& vfName)
200{
201    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
202    if (iter != _vectorFieldMap.end()) {
203        delete (*iter).second;
204        _vectorFieldMap.erase(iter);
205    }
206}
207
208void
209NvFlowVisRenderer::addPlane(const std::string& vfName, const std::string& name)
210{
211    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
212    if (iter != _vectorFieldMap.end()) {
213        if ((*iter).second)
214            (*iter).second->addPlane(name);
215    }
216}
217
218void
219NvFlowVisRenderer::removePlane(const std::string& vfName, const std::string& name)
220{
221    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
222    if (iter != _vectorFieldMap.end()) {
223        if ((*iter).second)
224            (*iter).second->removePlane(name);
225    }
226}
227
228void
229NvFlowVisRenderer::activateDeviceShape(const std::string& vfName, const std::string& name)
230{
231    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
232    if (iter != _vectorFieldMap.end()) {
233        if ((*iter).second)
234            (*iter).second->activateDeviceShape(name);
235    }
236}
237
238void
239NvFlowVisRenderer::deactivateDeviceShape(const std::string& vfName, const std::string& name)
240{
241    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
242    if (iter != _vectorFieldMap.end()) {
243        if ((*iter).second)
244            (*iter).second->deactivateDeviceShape(name);
245    }
246}
247
248void
249NvFlowVisRenderer::activateDeviceShape(const std::string& vfName)
250{
251    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
252    if (iter != _vectorFieldMap.end()) {
253        if ((*iter).second)
254            (*iter).second->activateDeviceShape();
255    }
256}
257
258void
259NvFlowVisRenderer::deactivateDeviceShape(const std::string& vfName)
260{
261    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
262    if (iter != _vectorFieldMap.end()) {
263        if ((*iter).second)
264            (*iter).second->deactivateDeviceShape();
265    }
266}
267
268void
269NvFlowVisRenderer::addDeviceShape(const std::string& vfName, const std::string& name, const NvDeviceShape& shape)
270{
271    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
272    if (iter != _vectorFieldMap.end()) {
273        if ((*iter).second)
274            (*iter).second->addDeviceShape(name, shape);
275    }
276}
277
278void
279NvFlowVisRenderer::removeDeviceShape(const std::string& vfName, const std::string& name)
280{
281    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
282    if (iter != _vectorFieldMap.end()) {
283        if ((*iter).second)
284            (*iter).second->removeDeviceShape(name);
285    }
286}
Note: See TracBrowser for help on using the repository browser.