Text archives Help
- From: abe@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r503 - in branches/AFR/Engine: Control ImageTraversers ImageTraversers/AFR
- Date: Thu, 25 Aug 2005 21:16:53 -0600 (MDT)
Author: abe
Date: Thu Aug 25 21:16:51 2005
New Revision: 503
Modified:
branches/AFR/Engine/Control/RTRT_register.cc
branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc
branches/AFR/Engine/ImageTraversers/AFImageTraverser.h
branches/AFR/Engine/ImageTraversers/AFR/CQ.h
branches/AFR/Engine/ImageTraversers/AFR/evil.h
branches/AFR/Engine/ImageTraversers/AFR/kdtree.cc
branches/AFR/Engine/ImageTraversers/AFR/kdtree.h
branches/AFR/Engine/ImageTraversers/AFR/sample.h
branches/AFR/Engine/ImageTraversers/AFR/stats.cc
branches/AFR/Engine/ImageTraversers/AFR/stats.h
branches/AFR/Engine/ImageTraversers/AFR/tiles.cc
branches/AFR/Engine/ImageTraversers/AFR/tiles.h
Log:
added namespace Afr
Modified: branches/AFR/Engine/Control/RTRT_register.cc
==============================================================================
--- branches/AFR/Engine/Control/RTRT_register.cc (original)
+++ branches/AFR/Engine/Control/RTRT_register.cc Thu Aug 25 21:16:51
2005
@@ -41,7 +41,6 @@
#include <UserInterface/XWindowUI.h>
-
namespace Manta {
void registerKnownComponents(RTRTInterface* rtrt)
{
@@ -54,7 +53,7 @@
rtrt->registerComponent("null", &NullImageTraverser::create);
rtrt->registerComponent("tiled", &TiledImageTraverser::create);
rtrt->registerComponent("frameless", &FramelessImageTraverser::create);
- rtrt->registerComponent("afr", &AFImageTraverser::create);
+ rtrt->registerComponent("afr", &Afr::AFImageTraverser::create);
rtrt->registerComponent("dissolve", &DissolveImageTraverser::create);
rtrt->registerComponent("dissolvetiled",
&DissolveTiledImageTraverser::create);
Modified: branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc (original)
+++ branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc Thu Aug 25
21:16:51 2005
@@ -18,19 +18,27 @@
#include <SCIRun/Core/Thread/Time.h>
-#include <math.h>
+#include <cmath>
+
#ifdef __sgi
#include <ieeefp.h>
#endif
+
#include <GL/glu.h>
#define MAX_MIN_RATIO 0.5
#define MAX_MERGE_SPLIT_LIMIT 50
-using namespace Manta;
using namespace std;
+using namespace Manta;
+using namespace Manta::Afr;
+
+
using SCIRun::IllegalValue;
using SCIRun::InternalError;
+
+using namespace std;
+
// args are the command line options, if the user wants to pas to th
// eimage traverser look in TiledimageTraverser.cc for usage
ImageTraverser* AFImageTraverser::create(const vector<string>& args)
@@ -66,205 +74,14 @@
// confirm!
}
-void AFImageTraverser::createStatsWin()
-{
- XHelper::Xlock.lock();
- // Open the display and make sure it has opengl
- dpy = XOpenDisplay(NULL);
- if(!dpy) {
- XHelper::Xlock.unlock();
- throw InternalError("Error opening display", __FILE__, __LINE__);
- }
- int error, event;
- if ( !glXQueryExtension( dpy, &error, &event) ) {
- XCloseDisplay(dpy);
- dpy=0;
- XHelper::Xlock.unlock();
- throw InternalError("GL extension NOT available!\n", __FILE__, __LINE__);
- }
-
- int screen=DefaultScreen(dpy);
-
- // Form the criteria for the
- vector<int> attribList;
- attribList.push_back(GLX_RGBA);
- attribList.push_back(GLX_RED_SIZE); attribList.push_back(1);
- attribList.push_back(GLX_GREEN_SIZE); attribList.push_back(1);
- attribList.push_back(GLX_BLUE_SIZE); attribList.push_back(1);
- attribList.push_back(GLX_ALPHA_SIZE); attribList.push_back(0);
- attribList.push_back(GLX_DEPTH_SIZE); attribList.push_back(0);
- attribList.push_back(GLX_DOUBLEBUFFER); // This must be the last one
- attribList.push_back(None);
-
- XVisualInfo* vi = glXChooseVisual(dpy, screen, &attribList[0]);
- if(!vi){
- // We failed to choose a visual. Try again without the double-buffer
flag
- attribList.pop_back();
- attribList.pop_back();
- attribList.push_back(None);
- vi = glXChooseVisual(dpy, screen, &attribList[0]);
- }
-
- Colormap cmap = XCreateColormap(dpy, RootWindow(dpy, screen),
- vi->visual, AllocNone);
-
- XSetWindowAttributes atts;
- int flags=CWColormap|CWEventMask|CWBackPixmap|CWBorderPixel;
- atts.background_pixmap = None;
- atts.border_pixmap = None;
- atts.border_pixel = 0;
- atts.colormap=cmap;
-
atts.event_mask=StructureNotifyMask|ExposureMask|KeyPressMask|KeyReleaseMask;
- Window parent = RootWindow(dpy, screen);
- statsWindow.window=XCreateWindow(dpy, parent, 600, 0, DISPLAY_WIDTH,
DISPLAY_HEIGHT, 0, vi->depth,
- InputOutput, vi->visual, flags, &atts);
-
- XTextProperty tp;
- char* name = "AFR Debug";
- XStringListToTextProperty(&name, 1, &tp);
- XSizeHints sh;
- sh.flags = USPosition|USSize;
-
- XSetWMProperties(dpy, statsWindow.window, &tp, &tp, 0, 0, &sh, 0, 0);
- XMapWindow(dpy, statsWindow.window);
-
- // Wait for the window to appear before proceeding
- for(;;){
- XEvent e;
- XNextEvent(dpy, &e);
- if(e.type == MapNotify)
- break;
- }
-
- windowOpen = true;
-
- gl_context = glXCreateContext(dpy, vi, NULL, True);
- XFree(vi);
-
- if(!glXMakeCurrent(dpy, statsWindow.window, gl_context)) {
- XHelper::Xlock.unlock();
- throw InternalError("glXMakeCurrent failed!\n", __FILE__, __LINE__);
- }
-
- glViewport(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(0, DISPLAY_WIDTH, 0, DISPLAY_HEIGHT);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glClearColor(.05, .1, .2, 0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- glXSwapBuffers(dpy, statsWindow.window);
- glFinish();
-
- // Get the fonts. You need to call this with a current GL context.
- fontInfo = XHelper::getX11Font(dpy);
- if (!fontInfo) {
- XHelper::Xlock.unlock();
- throw InternalError("getX11Font failed!\n", __FILE__, __LINE__);
- }
- fontbase = XHelper::getGLFont(fontInfo);
- if (fontbase == 0) {
- XHelper::Xlock.unlock();
- throw InternalError("getGLFont failed!\n", __FILE__, __LINE__);
- }
-
- if(!glXMakeCurrent(dpy, None, NULL)) {
- XHelper::Xlock.unlock();
- throw InternalError("glXMakeCurrent failed!\n", __FILE__, __LINE__);
- }
-
- XHelper::Xlock.unlock();
-}
-
-void AFImageTraverser::display_stats() {
- static int fcount = 0;
- if(samples_done/1000 > fcount)
- {
- // Display textual information on the screen:
- char text[200];
-
- switch(tmode)
- {
- case SOLID: sprintf(text, "Random Color Tiles; scale: %d",
(int)visScale); break;
- case BOUNDARY: sprintf(text, "Tiles colored by size; scale: %d",
(int)visScale); break;
- case DERIVATIVE: sprintf(text, "Derivative; scale: %d",
(int)visScale); break;
- case OCCLUSION: sprintf(text, "Occlusion; scale: %d", (int)visScale);
break;
- case ABSOLUTE_GRADIENT: sprintf(text, "ABS Gradients; scale: %d",
(int)visScale); break;
- case RELATIVE_GRADIENT: sprintf(text, "REL Gradients; scale: %d",
(int)visScale); break;
- case SAMPLING_DENSITY: sprintf(text, "Sample density; scale: %d",
(int)visScale); break;
- case UNDERSAMPLING: sprintf(text, "Undersampling; scale: %d",
(int)visScale); break;
- case AVERAGE_AGE: sprintf(text, "Average Age; scale: %d",
(int)visScale); break;
- case JITTERING: sprintf(text, "Jittering; scale: %d", (int)visScale);
break;
- default: sprintf(text, "Random Color Tiles; scale: %d",
(int)visScale); break;
- };
-
- if(!glXMakeCurrent(dpy, statsWindow.window, gl_context))
- throw InternalError("AFImageTraverser::glXMakeCurrent failed!\n",
- __FILE__, __LINE__);
- glClearColor(.05, .1, .2, 0);
- glClear(GL_COLOR_BUFFER_BIT);
- kdtree.displayTiles(tmode, samplingrate, chunkTimeStamp, visScale);
- // Figure out how wide the string is
- int width = XHelper::calc_width(fontInfo, text);
- // Now we want to draw a gray box beneth the font using blending. :)
- glEnable(GL_BLEND);
- glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
- glColor4f(0.5,0.5,0.5,0.5);
- glRecti(8,3-fontInfo->descent-2,25+width,fontInfo->ascent+3);
- glDisable(GL_BLEND);
- XHelper::printString(fontbase, 10, 3, text, RGBColor(1,1,1));
- glXSwapBuffers(dpy, statsWindow.window);
- glFinish();
- // Suck up X events to keep opengl happy
- while (XPending(dpy)) {
- XEvent e;
- XNextEvent(dpy, &e);
- switch (e.type) {
- case KeyPress:
- {
- unsigned long key = XKeycodeToKeysym(dpy, e.xkey.keycode, 0);
- switch (key) {
- case XK_m:
- case XK_M:
- toggleTileDisplayMode();
- break;
- case XK_b:
- case XK_B:
- visScale++;
- break;
- case XK_l:
- case XK_L:
- if (visScale>0) visScale--;
- break;
- }
- }
- };
- fcount++;
- }
- }
-
-}
-
void AFImageTraverser::setupBegin(SetupContext& context,
int numChannels)
{
context.loadBalancer->setupBegin(context, numChannels);
- context.setMultipleGLWindows();
- statsWindow.xres = DISPLAY_WIDTH; statsWindow.yres = DISPLAY_HEIGHT;
- createStatsWin();
}
void AFImageTraverser::setupDisplayChannel(SetupContext& context)
{
- // char **argv;
- // argv = (char**)malloc(sizeof(char*));
- // argv[0] = (char*)malloc(12*sizeof(char));
- // sprintf(argv[0],"tile_display");
- // my_main(1, argv);
- context.setMultipleGLWindows();
context.constrainPipelineDepth(1,1); // single buffer mode is set here
bool stereo; // get whether it is stereo, (shoot two rays for left
// and right eye)
@@ -329,8 +146,6 @@
//--------------------------------------------------------------------
cout << "numFragments = " << numFragments << endl;
context.loadBalancer->setupDisplayChannel(context, numFragments);
- tmode = SOLID;
- visScale = 1.0;
// make fist set of fragments from uniform tiling
allocateFragments(EVEN_FRAME);
}
@@ -576,25 +391,6 @@
}
}
-
-void AFImageTraverser::toggleTileDisplayMode()
-{
- switch(tmode)
- {
- case SOLID: tmode = BOUNDARY; break;
- case BOUNDARY: tmode = DERIVATIVE; break;
- case DERIVATIVE: tmode = OCCLUSION; break;
- case OCCLUSION: tmode = ABSOLUTE_GRADIENT; break;
- case ABSOLUTE_GRADIENT: tmode=RELATIVE_GRADIENT;
break;
- case RELATIVE_GRADIENT: tmode=SAMPLING_DENSITY; break;
- case SAMPLING_DENSITY: tmode = AVERAGE_AGE; break;
- case AVERAGE_AGE: tmode = UNDERSAMPLING; break;
- case UNDERSAMPLING: tmode = JITTERING; break;
- case JITTERING: tmode = SOLID; break;
- default: tmode = SOLID; break;
- };
-}
-
void AFImageTraverser::masterThread(const RenderContext& context,
Image* image)
{
@@ -604,8 +400,6 @@
bool stereo;
int xres, yres;
image->getResolution(stereo, xres, yres);
- // now let us do our display stuff
- display_stats();
FrameType prevFrameType = (frametype[0]==EVEN_FRAME)? ODD_FRAME :
EVEN_FRAME;
Modified: branches/AFR/Engine/ImageTraversers/AFImageTraverser.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFImageTraverser.h (original)
+++ branches/AFR/Engine/ImageTraversers/AFImageTraverser.h Thu Aug 25
21:16:51 2005
@@ -18,6 +18,7 @@
namespace Manta {
using namespace std;
+ namespace Afr {
enum FrameType { EVEN_FRAME, ODD_FRAME };
class AFImageTraverser : public ImageTraverser {
public:
@@ -36,9 +37,6 @@
void masterThread(const RenderContext& context, Image* image);
void clientThread(const RenderContext& context, Image* image, int
assignment);
void adjustTiles(Timestamp currenttime);
- void createStatsWin();
- void display_stats();
- void toggleTileDisplayMode();
static ImageTraverser* create(const vector<string>& args);
private:
AFImageTraverser(const AFImageTraverser&);
@@ -57,17 +55,8 @@
FrameType *frametype;
double chunkTimeStamp;
bool initpass;
- XWindow statsWindow;
- Display* dpy;
- GLXContext gl_context;
- // These contain stuff for font stuff.
- XFontStruct* fontInfo;
- GLuint fontbase;
- bool windowOpen;
- bool madeCurrent;
- TileDisplayMode tmode;
- float visScale;
};
+}
}
#endif
Modified: branches/AFR/Engine/ImageTraversers/AFR/CQ.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/CQ.h (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/CQ.h Thu Aug 25 21:16:51
2005
@@ -9,7 +9,8 @@
#define _CQ_H
#include <Core/Thread/Mutex.h>
-
+namespace Manta {
+namespace Afr {
template<class T>
class CQ
{
@@ -134,7 +135,8 @@
}
};
-
+} // end namespace Afr
+} // end namespacw Manta
#endif
Modified: branches/AFR/Engine/ImageTraversers/AFR/evil.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/evil.h (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/evil.h Thu Aug 25 21:16:51
2005
@@ -14,6 +14,9 @@
#ifndef EVIL_H
#define EVIL_H
+namespace Manta {
+ namespace Afr {
+
/**
* meta evil: evil documentation.
*
@@ -359,6 +362,9 @@
#endif
#undef INLINE
+
+ };
+};
#endif
Modified: branches/AFR/Engine/ImageTraversers/AFR/kdtree.cc
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/kdtree.cc (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/kdtree.cc Thu Aug 25 21:16:51
2005
@@ -9,6 +9,8 @@
#include <Engine/ImageTraversers/AFR/kdtree.h>
#include <assert.h>
+using namespace Manta;
+using namespace Manta::Afr;
KDTree::KDTree()
{
totalNodes = numLevels = numTiles = pseudostart = 0;
Modified: branches/AFR/Engine/ImageTraversers/AFR/kdtree.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/kdtree.h (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/kdtree.h Thu Aug 25 21:16:51
2005
@@ -10,9 +10,8 @@
#define _KDTREE_H
#include <Engine/ImageTraversers/AFR/tiles.h>
-//namespace Manta {
-// using namespace std;
-
+namespace Manta {
+ namespace Afr {
/*
* KD tree structure is as follows
@@ -105,5 +104,6 @@
void updateStatsAddSample(Sample *newsample, Timestamp
currenttime, int sampling_rate, float tgrad, bool occ);
void displayTiles(TileDisplayMode displaymode, int
sampling_rate, Timestamp currenttime, float visScale);
};
-//}
+ } // end namespace Afr
+} // emd namespace Manta
#endif /* _KDTREE_H */
Modified: branches/AFR/Engine/ImageTraversers/AFR/sample.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/sample.h (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/sample.h Thu Aug 25 21:16:51
2005
@@ -22,8 +22,8 @@
* This is the data type returned to us by the sampler
* from which we will reconstruct our image.
*/
-//namespace Manta {
-// using namespace std;
+namespace Manta {
+namespace Afr {
typedef float Timestamp;
typedef float FloatColor[3];
const FloatColor UNDEFINED_SAMPLE_COLOR = {0.0,0.0,0.0};
@@ -325,7 +325,8 @@
return false; //<TODO>
}
};
-//}
+} // end namespace Afr
+} // end namespace Manta
#endif
/** @} */
Modified: branches/AFR/Engine/ImageTraversers/AFR/stats.cc
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/stats.cc (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/stats.cc Thu Aug 25 21:16:51
2005
@@ -3,6 +3,8 @@
#define EPSILON 0.00001;
#include <assert.h>
+using namespace Manta;
+using namespace Manta::Afr;
Stats::Stats()
{
reset();
Modified: branches/AFR/Engine/ImageTraversers/AFR/stats.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/stats.h (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/stats.h Thu Aug 25 21:16:51
2005
@@ -1,8 +1,8 @@
#ifndef _STATS_H
#define _STATS_H
-//namespace Manta {
-// using namespace std;
+namespace Manta {
+namespace Afr {
class Stats
{
private:
@@ -27,6 +27,7 @@
Stats operator/(float denom);
void print();
};
-//}
+} // end namespace Afr
+} // end namespace Manta
#endif
Modified: branches/AFR/Engine/ImageTraversers/AFR/tiles.cc
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/tiles.cc (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/tiles.cc Thu Aug 25 21:16:51
2005
@@ -21,6 +21,9 @@
#define AMBIENT_ERROR 0.01
+using namespace Manta;
+using namespace Manta::Afr;
+
int** Tile::leafMapping;
int Tile::meanLevel=8;
int Tile::max_tile_area = 256;
@@ -411,12 +414,12 @@
return retval;
}
-void invexp_init()
+void Manta::Afr::invexp_init()
{
invexpInit();
}
-float getWeight(float A, float B, float age)
+float Manta::Afr::getWeight(float A, float B, float age)
{
return (A*invexp(B*age));
//return (A*expf(-B*age));
Modified: branches/AFR/Engine/ImageTraversers/AFR/tiles.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/tiles.h (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/tiles.h Thu Aug 25 21:16:51
2005
@@ -18,11 +18,8 @@
#define DISPLAY_WIDTH 512
#define DISPLAY_HEIGHT 512
-//namespace Manta {
-// using namespace std;
-
-using namespace Manta;
-using namespace std;
+namespace Manta {
+namespace Afr {
// returns a random integer in [0,myMax)
// use extern to define it elsewhere and use it
@@ -189,5 +186,6 @@
float getWeight(float A, float B, float age);
void invexp_init();
-//}
+} // end namespace Afr
+} // end namespace Manta
#endif /* _TILES_H */
- [MANTA] r503 - in branches/AFR/Engine: Control ImageTraversers ImageTraversers/AFR, abe, 08/25/2005
Archive powered by MHonArc 2.6.16.