Outdated egg!
This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.
If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.
ezxdisp
TOC »
Description
A simple graphics library for X11.
Author
n-sibata and Morihiko Tamai, packaged for CHICKEN by felix winkelmann.
Requirements
Documentation
ezxdisp is a simple graphics library for 2D/3D graphical applications. (The official distribution can be found here).
Initialize/Finalize a window
- ezx-init SIZE_X SIZE_Y WINDOW_NAMEprocedure
This procedure returns a EZX object all other procedures accept.
- ezx-quit EZXprocedure
Update the graphics in the window
- ezx-redraw EZXprocedure
Erase the graphics in the window/layer
- ezx-wipe EZXprocedure
- ezx-wipe-layer EZX LAYERprocedure
LAYER should be an exact integer between 0 and 8.
Get the pointer coordinates
- ezx-sensebutton EZXprocedure
Returns the current pointer coordinates as three values: BUTTON, X and Y
- ezx-pushbutton EZXprocedure
Block until an event is received. Returns three values: BUTTON, X and Y
The BUTTON result is 1, 2 or 3 for the first, second and third mouse button, respectively. The button number is additionally bitwise OR'd with 8 if the shift key is pressed and with 16 if the control key is pressed.
Draw 2D graphics
- ezx-point-2d EZX X Y COLORprocedure
- ezx-lines-2d EZX POINTS COLOR WIDTHprocedure
- ezx-poly-2d EZX POINTS COLORprocedure
The POINTS argument should be an SRFI-4 s32vector of the form [X1 Y1 ... Xn Yn] where X and Y are the coordinates of each point.
- ezx-fillcircle-2d EZX X0 Y0 R COLORprocedure
- ezx-str-2d EZX X0 Y0 STRING COLORprocedure
Draw 3D graphics
- ezx-set-light-3d EZX EX EY EZprocedure
- ezx-c3d-to-2d EZX SX SY SZprocedure
Returns two values, DX and DY.
- ezx-str-3d EZX X0 Y0 Z0 STRING COLORprocedure
- ezx-circle-3d EZX X0 Y0 Z0 R COLORprocedure
The POINTS argument should be a SRFI-4 f64vector containing the X, Y and Z coordinates of each point.
Event handling
- ezx-next-event EZXprocedure
Removes the next event from the event queue and returns the event-specific information. If there is no event data in the event queue, this function blocks until the next event occurs. The procedure returns 5 values: the type of the event, the X- and Y-coordinates of the mouse pointer at the time of the event, the button- or keyboard-state mask and the button- or key-code of the event.
The following variables contain the event-types that may occur:
- ezx:BUTTON-PRESS or ezx:BUTTON-RELEASE
- ezx:KEY-PRESS or ezx:KEY-RELEASE
- ezx:MOTION-NOTIFY
- ezx:CLOSE
These button-codes are defined:
Code Button 1 left 2 middle 3 right 4 wheel up 5 wheel down State mask values that may be returned:
Mask State 1 shift key 2 control key 4 left button 8 middle button 16 right button For keyboard events, some special keys will return a platform independent keycode:
Home #xff50 Left #xff51 Up #xff52 Right #xff53 Down #xff54 The result values will be undefined for events for which they are not used. This table summarizes what results are valid:
Event Results ezx:CLOSE ezx:BUTTON-PRESS ezx:BUTTON-RELEASE x, y, state, k/b ezx:KEY-PRESS ezx:KEY-RELEASE x, y, state, k/b ezx:MOTION-NOTIFY x, y, state
Miscellaneous functions
- ezx-select-layer EZX LAYERprocedure
Focuses on the layer.
- ezx-raise-window EZXprocedure
Raises the window.
- ezx-window-name EZX STRINGprocedure
Sets a name of the window.
- ezx-set-background EZX COLORprocedure
Sets the background color of the window.
Colors
- make-ezx-color R G Bprocedure
This procedure returns a "color object", which is internally encoded as a f64vector. The red, green and blue components should be between 0 and 1.
Examples
(use ezxdisp) (define ezx (ezx-init 100 100 "Hello, ezxdisp")) (ezx-set-background ezx (make-ezx-color 1 1 1)) (ezx-fillcircle-2d ezx 50 50 25 (make-ezx-color 1 0 0)) (ezx-redraw ezx) (let loop () (let-values (((b _ _) (ezx-pushbutton ezx))) (loop))) (ezx-quit ezx)
A more elaborate example is in the egg distribution in a file named 3d_clock.scm, which displays an animated 3D-clock.
Changelog
- 2.9 simplified the API of ezx-lines-2d, ezx-poly-2d, ezx-poly-3d [thanks to Wim Lewis]
- 2.5 fixed use of removed pointer type
- 2.4 added ezx-resize
- 2.3 Added win32 support; ezx-next-event always returns 5 values
- 2.1 Fixed srfi-4 use issue [reported by Christian Kellermann]
- 2.0 Ported to Chicken 4; updated to upstream version 0.1.4
- 1.3 Added ezx-event-pending
- 1.2 Adapted to externalized easyffi extension
- 1.1 ezx-set-background wasn't documented
- 1.0 Initial release
License
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA