gl2 commands 11!:2000+n
Lab "Graphics - gl2 commands" gives an overview of the isigraph control and gl2 commands. See the other graphics labs for information on other aspects of gl2.
gl2 commands are defined in the jgl2 locale by gl2.ijs.
When an isigraph control requires painting the paint event is called. If the isigraph control is called g and it is in form abc, then verb abc_g_paint is called in the form's locale.
In the paint event the drawing commands are done to a memory context and when the paint event ends this memory context is copied to the isigraph screen surface.
Drawing command coordinates are in pixels where 0 0 is the upper left corner and positive x and y values are to the right and down.
A printer context can be created as the target for commands. The drawing units when commands target a printer context are in twips (twentieths of a point).
isigraph events allow user interaction with the isigraph control with the keyboard and mouse.
glarc x y w h xa ya xz yz ; draw arc on the ellipse defined by rectangle. Arc starts at xa,ya and ends at xz,yz. Start and end points need not lie on the ellipse, they define a line from the center that intersects the ellipse.
glbrush '' ; select solid brush in current color
glbrushnull '' ; select null brush (leaves area painted with it unchanged)
glcapture type ; mouse capture. A capture is normally done in a mouse down event and a glcapture 0 is done in the mouse up. There are mmove events during a capture.
1 capture (no drawing)
5 vertical line
6 horizontal line
7 8 9 followed by one or more rectangles. Type 7 boxes are moved. Type 8 boxes are resized. Type 9 defines new boxes and is normally done in the move event of a 7 or 8 capture.
10 cross hairs with optional clipping rectangle
glcaret x y w h ; create a text caret at x,y with a width and height of w h.
glclear ; Clear memory buffer to white and initialize context: default system font; glrgb 0 0 0; glpen 1 0; glnullbrush''; gltextxy 0 0; gltextcolor''; glclipreset''; glwindoworg 0 0 .
glclip x y w h ; intersect this rectangle with the original clip rectangle to restrict drawing
glclipreset ; restore original clip rectangle
glcmds ... ; takes a series of gl2 commands. Each command starts with an integer count followed by the command and data. Commands that return results can not be used in glcmds. Character data is passed as integer values.
glcmds 4 2056 100 100 6 2038 , a.i.'test' NB. gltextxy , gltext
glcursor n ; sets mouse cursor. Values are defined as IDC_... in gl2.ijs.
glellipse x y w h ; draw an ellipse in the rectangle with pen and brush
glemfopen ; (only win32) open file set by glfile as an enhanced metafile and set it as the context to which gl2 commands will draw
glemfclose ; (only win32) Close the file and context opened by glemfopen.
glemfplay .... ; (only win32) play enhanced metafile set by glfile in the current context. An arg of x y plays the file at that location in its true size. An arg of x y w h plays the file scaled to fit the rectangle.
glfile filename ; (only win32) set filename for glemfopen and glemfplay.
glfont fontspec ; font for text commands
gllines pts ; draw connected lines. pts is 0 or more points.
glnodblbuf b ; turns off double buffering (drawing to memory context). Drawing commands draw directly to the screen surface. Used only by formedit and probably should be avoided.
glpaint ; copy memory buffer to screen
glpen i [style] ; select pen. pen color is from last glrgb and is i units wide. style is from the gl2.ijs PS_...
glpie x y w h xa ya xz yz ; draw pie shaped wedge with pen and brush. Same parameters as garc.
glpixel i j ; draw pixel at i,j in current color
glpixels x y w h pixeldata ; pixeldata is an integer per pixel with RGB values. If h is positive pixeldata is drawn top to bottom and otheriwse it is drawn from bottom to top.
glpixelsx x y w h address ; same as glpixels except the argument has the memory address of pixeldata.
glpolygon pts ; draw polygon in pen and brush
glprint [jobname [printer [filename [modes values...]]]]; jobname appears in the print queue. The default jobname is "J Print". printer is from wd'qprinters' and "" is the 1st entry. filename is for a print to file. Remaining parameters are name/value pairs. Possible names are: orientation copies papersize paperlength paperwidth scale defaultsource printquality color duplex. For example:
glprint '' NB. empty jobname on default printer
glprint ' "myjob" "Epson Stylus Photo 750" "" '
glprint ' "myjob" "" "" orientation 2 copies 3'
Jwdp requires printer and filename to be "" and only supports orientation and copies.
glprintmore n ; 0 indicates no more to print.
glqextent text ; return width and height text
glqextentw texts ; return widths for LF delimited texts
glqhandles '' ; Jwdw returns hwnd, hdc for hwnd, and hdc for drawing. Jwdp returns hwnd, 0, 0. Used in OpenGL support and probably should be restricted to that use.
glqpixels x y w h; return pixeldata as integer per pixel with RGB values
glqprintpaper '' ; return width, height, offset to left printable area, offset to top printable area, orientation, copies, and papersize. Measurements are in twips. Must be run in a print event.
glqprintwh '' ; return width and height of the printer image in twips. Must be run in a print event.
glqtextmetrics '' ; return font information: Height, Ascent, Descent, InternalLeading, ExternalLeading, AverageCharWidth, MaxCharWidth
glqwh '' ; return width and height of the control in pixels
glrect x y w h ; draw rectangle with pen and brush
glrgb color ; set current color
glroundr x y w h rw rh ; draw rectangle with rounded corners defined by ellipse with width rw and height rh
glsel id ; select isigraph child of currently selected parent for graphic commands
glsel hwndc ; hwndc is the result of wd'qhwndc' for an isigraph control. Parent and child are selected as the wd and gl command targets.
gltext text ; write text in glfont and gltextcolor at gltextxy
gltextcolor '' ; glrgb color is set as color of text for gtext
gltextxy x y ; position for gltext
glwindoworg x y ; changes origin: that is, x and y are automatically added to subsequent command coordinates