Technical Manual

Global State GUI Window2D Polygon Drawing Window3D MeshObject (UPDATED FOR 2000) MeshOptions (NEW FOR 2000) VoxData

Module Cohesion and Coupling

Testing and Planning

Design Analysis

 

PolygonDrawing Member Functions

(created by Eric)

 
PolygonState GetState()

purpose:
return the state of polygon_drawing, either INACTIVE_STATE, DRAWING_STATE, or EDITING_STATE
 
 

int  CachedPolygon(void)

purpose:
return whether polygon has cached polygon
 

void AcceptPolygon(unsigned char *buffer, int width, int height)
 
purpose:
to rasterize the current polygon into a buffer & copy the edited polygon
into the polygon cache

parameters:
buffer - an array of unsigned chars interpreted as an RGBA buffer
width  - the width of the buffer
height - the height of the buffer

pre:
buffer array has size width*height*4
state == EDITING_STATE

post:
state == INACTIVE_STATE
 

void PastePolygon(void)

purpose:
copy the cached polygon to the edited polygon
 
pre:
cached_polygon == 1
state == INACTIVE_STATE
 
post:
state == EDITING_STATE
 

void Draw(float pixel_x, float pixel_y)

purpose:
draw the polyline being drawn or the polygon being edited

parameters:
pixel_x - this is a width in the polygon's space that is a single
               pixel width on screen
pixel_y - this is a height in the polygon's space that is a single
               pixel height on screen
 
pre: none - expected to exit if state is INACTIVE_STATE
 
 

int  Handle(int event, float x, float y, float pixel_x, float pixel_y)

purpose:
handle events from the window that contains polygon drawing object:
if internal state is DRAWING_STATE
  left-click creates subsequent vertices of the polygon,
  right-click closes polygon and puts polygon in EDITING_STATE
if internal state is EDITING_STATE
  shift-left-click on vertex adds vertex to selection
  shift-left-click off vertex begins dragging a rubber-band box

  shift-right-click performs same actions but de-selects vertices

  left-click in selection box begins dragging of selected vertices
  left-click outside selection box cancels selection, begins a
  dragging of a rubber-band box
 
  left-release after dragging adds vertices inside rubber-band box
  to selection
 
  pressing the 'insert' key calls Insert()
  pressing the 'delete' key calls Delete()
 
parameters:
event   - an Fl event number
x       - the x of the point clicked in the space of the polygon
y       - the y of the point clicked in the space of the polygon
pixel_x - see Draw()
pixel_y - see Draw()

pre:
window that calls this has the drawing lock
 
post:
if event is used, 1 is returned, else 0
 

 

Main

Users Manual
Technical Manual
Source Code
Download
Contact