VideoTools
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
GX::Canvas Class Reference

A drawing surface that is embedded in a window. More...

#include <gxcanvas.h>

Public Types

enum  Stereo { left, right, normal }
 

Public Member Functions

 Canvas (GX::Window &, int dx=0, int dy=0, int colours=0, bool server_side=false)
 Constructor. More...
 
 ~Canvas ()
 Destructor.
 
int dx () const
 Returns the canvas width in pixels.
 
int dy () const
 Returns the canvas height in pixels.
 
std::pair< unsigned int,
unsigned int > 
aspect () const
 Returns the canvas aspect ratio as a fraction (normally about 0.7).
 
int colours () const
 Returns the number of colours, as passed in to the ctor.
 
Gr::Colour colour (unsigned int n) const
 Returns a colour from the palette. More...
 
Gr::Colour black () const
 Returns black.
 
Gr::Colour white () const
 Returns white.
 
void text (const std::string &s, int x, int y, Gr::Colour c)
 Draws a single-line text string at the given position.
 
void point (int x, int y, Gr::Colour c)
 Draws a single pixel.
 
bool fastable () const
 Returns true if fastpoint() can be used rather than point().
 
void fastpoint (int x, int y, Gr::Colour c)
 Draws a pixel quickly, assuming a client-side image and no stereo. More...
 
void line (int x0, int y0, int x1, int y1, Gr::Colour c)
 Draws a line.
 
void lineAcross (int y, int x_first, int x_last, const Gr::Colour &c)
 Draws a horizontal line.
 
void lineDown (int x, int y_first, int y_last, const Gr::Colour &c)
 Draws a vertical line.
 
Gr::Colour readPoint (int x, int y) const
 Reads a pixel. More...
 
void clear (bool white=false)
 Clears the canvas to black (or white).
 
void blit ()
 Blits the canvas contents to the window.
 
void stereo (Stereo mode=normal)
 Sets the left/right stereo mode for subsequent line() and point() drawing operations. More...
 

Detailed Description

A drawing surface that is embedded in a window.

Supports server-side and client-side implementations chosen at run-time. Client-side uses a local image that is transferred to the X-server by the blit() method; server-side uses a pixmap that lives on the X-server and blit() is a copy performed within the X-server. Client-side should be preferred for efficient reading of pixels and/or for dense images; server-side might be better for sparse images.

Optionally uses a palette for ancient display hardware; either 16-value bios colours, or 256 greyscale shades. If using a palette then all colours passed to point(), line() etc. should be from colour().

The point (0,0) is in the bottom left hand corner and (dx()-1,dy()-1) is the top right.

A stereo mode can be set so that colours are modified to red or green, with (if client-side) yellow pixels on intersection.

Definition at line 61 of file gxcanvas.h.

Constructor & Destructor Documentation

GX::Canvas::Canvas ( GX::Window window,
int  dx = 0,
int  dy = 0,
int  colours = 0,
bool  server_side = false 
)
explicit

Constructor.

By default the size of the canvas is the size of the window. The colours parameter can be zero, 16 or 256.

Definition at line 36 of file gxcanvas.cpp.

Member Function Documentation

Gr::Colour GX::Canvas::colour ( unsigned int  n) const

Returns a colour from the palette.

Precondition: n < colours

Definition at line 84 of file gxcanvas.cpp.

void GX::Canvas::fastpoint ( int  x,
int  y,
Gr::Colour  c 
)
inline

Draws a pixel quickly, assuming a client-side image and no stereo.

Precondition: fastable()

Definition at line 153 of file gxcanvas.h.

Gr::Colour GX::Canvas::readPoint ( int  x,
int  y 
) const

Reads a pixel.

This method might be very slow and inefficient for a server-side canvas. If using a palette then the palette index will be in the red component.

Definition at line 205 of file gxcanvas.cpp.

void GX::Canvas::stereo ( Canvas::Stereo  mode = normal)

Sets the left/right stereo mode for subsequent line() and point() drawing operations.

Definition at line 256 of file gxcanvas.cpp.


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