r3drawp
real/frio/r3drawp.h
r3frio
DrawPort Class. Tool for resolution-idependent, aspect-ratio corrected drawing to any amount of data channels. Currently works only with raw image (R3CLID_RAWIMAGE) class (other images do not support direct&fast sub channel usage). See DTYPE class for sub channel access methods. All drawing methods take care of clipping.
r3Root
R3CLID_ROOT
r3Drawport
R3CLID_DRAWPORT - 404
SELECTPEN, SETPEN, SETDRAWMODE, INITIALIZE, PIXEL, APIXEL, DISC, LINE, RECTANGLE, ASSIGN, ALLOCREADPEN, FREEREADPEN, READCHANNEL, BEGINFILLEDPOLY, ENDPOLY, POLYPOINT, MAPTOPIXELCOORDS, BEGINCHAIN, CHAINPOINT, ENDCHAIN, PIXELDISTANCE,
Output, Image, Aspect, ErrorState, Wrap, LineType, ModuloFix, ZChannelName,
int R3RegisterDrawPortClass(R3APP *app);
Pen indexes
Sub channel indexes. For example, 'Red' of 'Color' corresponds to R3DRAWP_SUBCH0
Image Drawing Modes.
R3DRAWPM_SELECTPEN
SELECTPEN
R3DRAWPM_SELECTPEN
R3INT, pen index.
obj.SELECTPEN(p3);
Defines the current pen. SETPEN methods define channel values for this pen.
R3DRAWPM_SETPEN
SETPEN
R3DRAWPM_SETPEN
char*, channel name
R3INT, sub channel index.
R3FLOAT, channel value.
obj.SETPEN(p1, p2, p3);
Defines a sub channel value for the current pen.
R3DRAWPM_SETDRAWMODE
SETDRAWMODE
R3DRAWPM_SETDRAWMODE
char*, channel name
R3INT, sub channel index.
R3INT, drawing mode, for example R3DRAWPMODE_REPLACE
obj.SETDRAWMODE(p1, p2, p3);
Defines drawing mode for a sub channel. Note: drawing modes are common for all pens.
R3DRAWPM_INITIALIZE
INITIALIZE
R3DRAWPM_INITIALIZE
obj.INITIALIZE();
Deallocates dynamical pens & drawmode definitions - clean restart for drawing
R3DRAWPM_PIXEL
PIXEL
R3DRAWPM_PIXEL
R3FLOAT, x coord
R3FLOAT, y coord
obj.PIXEL(p1, p3);
Draw a single pixel using PEN0
R3DRAWPM_APIXEL
APIXEL
R3DRAWPM_APIXEL
R3FLOAT, x coord
R3FLOAT, y coord
obj.APIXEL(p1, p3);
Draw a single antialiased pixel using PEN0
R3DRAWPM_DISC
DISC
R3DRAWPM_DISC
R3FLOAT, x coord
R3FLOAT, y coord
R3VECTOR, 3 radius values. If first rad is > 0, a ring is drawn.
obj.DISC(p1, p2, p3);
Draw a disc with pens 0-2. Attributes are defined at 3 distances using pens 0-2
R3DRAWPM_LINE
LINE
R3DRAWPM_LINE
R3VECTOR, x1, y1, radius1
R3VECTOR, x1, y1, radius2
obj.LINE(p1, p3);
Draw a line between 2 points. Pens 0 and 1 define line properties
R3DRAWPM_RECTANGLE
RECTANGLE
R3DRAWPM_RECTANGLE
R3VECTOR, bottomright (t unused)
obj.RECTANGLE(p3);
Draws non antialiased rectangle between given topleft & bottomright corners.
R3DRAWPM_ASSIGN
ASSIGN
R3DRAWPM_ASSIGN
R3OBJ*, source drawport
R3OBJ*, destination drawport
obj.ASSIGN(p1, p3);
Copies drawport to another. Only common channels which have drawmodes * defined are copied. Assignment obeys drawmodes of the destination drawport.
R3DRAWPM_ALLOCREADPEN
ALLOCREADPEN
R3DRAWPM_ALLOCREADPEN
void*, a handle or NULL if channel not found or error occurs
char*, channel name
R3INT, sub channel index
rc = obj.ALLOCREADPEN(p1, p3);
Allocates a handle for optimized sub channel reading
R3DRAWPM_FREEREADPEN
FREEREADPEN
R3DRAWPM_FREEREADPEN
void*, handle to be freed
obj.FREEREADPEN(p3);
frees handle allocated by R3DRAWPM_ALLOCREADPEN
R3DRAWPM_READCHANNEL
READCHANNEL
R3DRAWPM_READCHANNEL
void*, a channel handle allocated by R3DRAWPM_ALLOCREADPEN
obj.READCHANNEL(p1, 0);
Reads one sub channel value. Note: Draw modes & pens do not affect read values.
R3DRAWPM_BEGINFILLEDPOLY
BEGINFILLEDPOLY
R3DRAWPM_BEGINFILLEDPOLY
obj.BEGINFILLEDPOLY();
start filled polygon drawing
R3DRAWPM_ENDPOLY
ENDPOLY
R3DRAWPM_ENDPOLY
obj.ENDPOLY();
end filled polygon drawing
R3DRAWPM_POLYPOINT
POLYPOINT
R3DRAWPM_POLYPOINT
R3VECTOR, defines x & y coordinates. 3rd component unused.
obj.POLYPOINT(p3);
new point in a filled polygon
R3DRAWPM_MAPTOPIXELCOORDS
MAPTOPIXELCOORDS
R3DRAWPM_MAPTOPIXELCOORDS
int, x
int, y
obj.MAPTOPIXELCOORDS(0, p2, p3);
return vector in pixel coordinates
R3DRAWPM_BEGINCHAIN
BEGINCHAIN
R3DRAWPM_BEGINCHAIN
R3BOOL, if true draws a closed loop. Last & first point need not to be same.
obj.BEGINCHAIN(p3);
Start chain drawing
R3DRAWPM_CHAINPOINT
CHAINPOINT
R3DRAWPM_CHAINPOINT
R3VECTOR, a new point & radius <x,y,radius>
obj.CHAINPOINT(p3);
Add a new point to chain
R3DRAWPM_ENDCHAIN
ENDCHAIN
R3DRAWPM_ENDCHAIN
obj.ENDCHAIN();
Ends chain drawing
R3DRAWPM_PIXELDISTANCE
PIXELDISTANCE
R3DRAWPM_PIXELDISTANCE
R3FLOAT, address of result R3FLOAT
R3VECTOR, (p1->r, p1->s) define float coordinates of 1st point
R3VECTOR, (p2->r, p2->s) define float coordinates of 2nd point
obj.PIXELDISTANCE(p1, p2, p3);
return distance of two vectors measured in pixels
Output
Output
R3DRAWPA_Output
Object
R3OBJ*
actual output object (sub class of R3CLID_OUTPUT)
jsobj.SetOutput(value);
value = jsobj.GetOutput();
R3OBJ* value = ...;
R3SetAttrs(r3obj, R3DRAWPA_Output, value, R3TAG_END);
R3OBJ* value;
R3GetAttrs(r3obj, R3DRAWPA_Output, &value, R3TAG_END);
Image
Image
R3DRAWPA_Image
Object
R3OBJ*
read only
jsobj.SetImage(value);
value = jsobj.GetImage();
R3OBJ* value = ...;
R3SetAttrs(r3obj, R3DRAWPA_Image, value, R3TAG_END);
R3OBJ* value;
R3GetAttrs(r3obj, R3DRAWPA_Image, &value, R3TAG_END);
Aspect
Aspect
R3DRAWPA_Aspect
Number
R3FLOAT
pixel height/width ratio
jsobj.SetAspect(value);
value = jsobj.GetAspect();
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3DRAWPA_Aspect, value, R3TAG_END);
R3FLOAT value;
R3GetAttrs(r3obj, R3DRAWPA_Aspect, &value, R3TAG_END);
ErrorState
ErrorState
R3DRAWPA_ErrorState
Integer
R3INT
status attribute: if nonzero, an error has occurred
jsobj.SetErrorState(value);
value = jsobj.GetErrorState();
R3INT value = ...;
R3SetAttrs(r3obj, R3DRAWPA_ErrorState, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DRAWPA_ErrorState, &value, R3TAG_END);
Wrap
Wrap
R3DRAWPA_Wrap
Boolean
R3BOOL
if set to TRUE coordinates wrap around borders, otherwise they are cut
jsobj.SetWrap(value);
value = jsobj.GetWrap();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3DRAWPA_Wrap, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3DRAWPA_Wrap, &value, R3TAG_END);
LineType
LineType
R3DRAWPA_LineType
Integer
R3INT
see defines below
jsobj.SetLineType(value);
value = jsobj.GetLineType();
R3INT value = ...;
R3SetAttrs(r3obj, R3DRAWPA_LineType, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3DRAWPA_LineType, &value, R3TAG_END);
ModuloFix
ModuloFix
R3DRAWPA_ModuloFix
Boolean
R3BOOL
if set to TRUE drawing uses shortest modulo route
jsobj.SetModuloFix(value);
value = jsobj.GetModuloFix();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3DRAWPA_ModuloFix, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3DRAWPA_ModuloFix, &value, R3TAG_END);
ZChannelName
ZChannelName
R3DRAWPA_ZChannelName
String
char*
optional name for a z buffer channel
jsobj.SetZChannelName(value);
value = jsobj.GetZChannelName();
char* value = ...;
R3SetAttrs(r3obj, R3DRAWPA_ZChannelName, value, R3TAG_END);
char* value;
R3GetAttrs(r3obj, R3DRAWPA_ZChannelName, &value, R3TAG_END);
Line end/joining point styles (for controlling R3DRAWPM_LINE method):