ThreeB 1.1
Public Member Functions | Private Member Functions | Private Attributes
GraphicsGL Class Reference

Graphics class which draws information to the screen using OpenGL. More...

Inheritance diagram for GraphicsGL:
FitSpotsGraphics

List of all members.

Public Member Functions

 GraphicsGL ()
virtual void draw_pixels (const vector< ImageRef > &pix, float r, float g, float b, float a)
virtual void draw_bbox (const BBox &bbox)
virtual void draw_krap (const vector< Vector< 4 > > &spots, const Image< byte > &im, const BBox &box, int N, Vector< 4 > s)
virtual void glDrawCross (const Vector< 2 > &p, int size)
virtual void swap ()
virtual void init (ImageRef log_ratios_size)
virtual ~GraphicsGL ()
virtual void init (CVD::ImageRef size)=0
virtual void draw_krap (const std::vector< TooN::Vector< 4 > > &spots, const CVD::Image< CVD::byte > &im, const BBox &box, int N, TooN::Vector< 4 > s=TooN::Ones *1e99)=0
virtual void draw_pixels (const std::vector< CVD::ImageRef > &pix, float r, float g, float b, float a=1)=0
virtual void glDrawCross (const TooN::Vector< 2 > &p, int size=3)=0

Private Member Functions

 GraphicsGL (const GraphicsGL &)
void glDrawCircle (const Vector< 2 > &p, float r)
void set_GL_zoom_size (ImageRef size, double scale)

Private Attributes

std::auto_ptr< GLWindow > win
int debug_window_zoom

Detailed Description

Graphics class which draws information to the screen using OpenGL.

Definition at line 119 of file multispot5_gui.cc.


Constructor & Destructor Documentation

GraphicsGL::GraphicsGL ( const GraphicsGL ) [private]
GraphicsGL::GraphicsGL ( ) [inline]

Definition at line 172 of file multispot5_gui.cc.

        {
            debug_window_zoom = GV3::get<int>("debug.zoom", 3, 1);
        }
virtual GraphicsGL::~GraphicsGL ( ) [inline, virtual]

Definition at line 254 of file multispot5_gui.cc.

        {
        }

Member Function Documentation

void GraphicsGL::glDrawCircle ( const Vector< 2 > &  p,
float  r 
) [inline, private]

Generate circle linesegments as pair of vertices for GL_LINES.

Parameters:
pcircle centre
rcircle radius

Definition at line 129 of file multispot5_gui.cc.

        {
            float theta=0;
            for(;;)
            {
                glVertex(p + r * makeVector(cos(theta), sin(theta)));
                theta +=0.01;
                if(theta > M_PI*2)
                    break;
                glVertex(p + r * makeVector(cos(theta), sin(theta)));
            }
            glVertex(p + r * makeVector(1, 0));
        }
void GraphicsGL::set_GL_zoom_size ( ImageRef  size,
double  scale 
) [inline, private]

Set up a GL window so that glDrawPixels and glVertex line up and also so that glDrawPixels is zoomed.

Parameters:
sizeWindow size
scaleZoom level

Definition at line 147 of file multispot5_gui.cc.

        {
            double right = size.x;
            double bottom = size.y;
            //double my_scale = scale;


            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();


            glMatrixMode(GL_PROJECTION);

            glLoadIdentity();
            glOrtho(0-.5, right-.5, bottom-.5, -.5, -1 , 1);    // If the origin is the top left 

            glRasterPos2f(-.5, -.5);

            // video is now the same way as upside down to graphics!
            glPixelZoom(scale, -scale);
        }
virtual void GraphicsGL::draw_pixels ( const vector< ImageRef > &  pix,
float  r,
float  g,
float  b,
float  a 
) [inline, virtual]

Definition at line 177 of file multispot5_gui.cc.

        {
            glColor4f(r, g, b, a);
            glPointSize(1.5);
            glBegin(GL_POINTS);
            glVertex(pix);
            glEnd();
        }
virtual void GraphicsGL::draw_bbox ( const BBox bbox) [inline, virtual]

Draw a bounding box.

Parameters:
bboxBox corners

Implements FitSpotsGraphics.

Definition at line 186 of file multispot5_gui.cc.

References draw_bbox().

        {
			::draw_bbox(bbox);
        }
virtual void GraphicsGL::draw_krap ( const vector< Vector< 4 > > &  spots,
const Image< byte > &  im,
const BBox box,
int  N,
Vector< 4 >  s 
) [inline, virtual]

Definition at line 192 of file multispot5_gui.cc.

References draw_bbox().

        {

            glDrawPixels(im);
            glColor3f(1, 0, 0);
            draw_bbox(box);

            glLineWidth(0.3);
            glBegin(GL_LINES);
            for(unsigned int i=0; i < spots.size(); i++)
            {
                glColor4f(0, 1, 0, .3);

                if((int)i == N && s[0] != 1e99) 
                    glDrawCircle(s.slice<2, 2>(), s[1]);
                else
                    glDrawCircle(spots[i].slice<2, 2>(), spots[i][1]);
            }
            glEnd();

            glLineWidth(1.0);
            glBegin(GL_LINES);
            for(unsigned int i=0; i < spots.size(); i++)
            {
                glColor3f(1, 0, 0);
                if((int) i == N)
                    glColor3f(1, 1, 0);

                if((int)i == N && s[0] != 1e99) 
                    glDrawCross(s.slice<2, 2>(), 1);
                else
                    glDrawCross(spots[i].slice<2, 2>(), 1);
            }
            glEnd();

            glFlush();
        }
virtual void GraphicsGL::glDrawCross ( const Vector< 2 > &  p,
int  size 
) [inline, virtual]

Definition at line 230 of file multispot5_gui.cc.

        {
            glVertex(p + makeVector(0,  size));
            glVertex(p + makeVector(0, -size));
            glVertex(p + makeVector( size, 0));
            glVertex(p + makeVector(-size, 0));
        }
virtual void GraphicsGL::swap ( ) [inline, virtual]

Swap buffers if double buffered.

Implements FitSpotsGraphics.

Definition at line 239 of file multispot5_gui.cc.

        {
            win->swap_buffers();
        }
virtual void GraphicsGL::init ( ImageRef  log_ratios_size) [inline, virtual]

Definition at line 245 of file multispot5_gui.cc.

        {
            win = auto_ptr<GLWindow>(new GLWindow(log_ratios_size*debug_window_zoom));
            set_GL_zoom_size(log_ratios_size, debug_window_zoom);
            glEnable(GL_BLEND);
            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
            glEnable(GL_LINE_SMOOTH);
        }
virtual void FitSpotsGraphics::init ( CVD::ImageRef  size) [pure virtual, inherited]

Initialize graphics.

Parameters:
sizeSize of window for display

Implemented in NullGraphics.

virtual void FitSpotsGraphics::draw_krap ( const std::vector< TooN::Vector< 4 > > &  spots,
const CVD::Image< CVD::byte > &  im,
const BBox box,
int  N,
TooN::Vector< 4 >  s = TooN::Ones *1e99 
) [pure virtual, inherited]

Draw a bunch of stuff.

Parameters:
spotsList of spots to draw
imBackground image
boxBounding box of region
NSpot to highlight
sExtra spot to draw as a cross

Implemented in NullGraphics.

virtual void FitSpotsGraphics::draw_pixels ( const std::vector< CVD::ImageRef > &  pix,
float  r,
float  g,
float  b,
float  a = 1 
) [pure virtual, inherited]

Draw the pixel mask in an (r,g,b,a) tuple colour.

Parameters:
pixmask
rred
ggreen
bblue
aalpha

Implemented in NullGraphics.

virtual void FitSpotsGraphics::glDrawCross ( const TooN::Vector< 2 > &  p,
int  size = 3 
) [pure virtual, inherited]

Draw a cross.

Parameters:
pPosition of cross
sizeSize to draw cross

Implemented in NullGraphics.


Member Data Documentation

std::auto_ptr<GLWindow> GraphicsGL::win [private]

Definition at line 122 of file multispot5_gui.cc.

Definition at line 124 of file multispot5_gui.cc.


The documentation for this class was generated from the following file: