Bloque de dibujado BEGIN_DRAW ... END_DRAW
BEGIN_DRAW
// Instrucciones END_DRAW
Estas sentencias nos permiten acceder al buffer de dibujado de CDIV mediante "BITMAP * vbuffer" definido para este bloque, así podremos utilizar las rutinas de dibujado de ALLEGRO para modificar a nuestro antojo el "vbuffer", siempre conservando las características de los procesos.
Los bloques BEGIN_DRAW ... END_DRAW se ejecutarán según la profundidad "z", pudiendo utilizarlas conjuntamente con la presentación gráfica de un proceso.
Para poder utilizar BEGIN_DRAW ... END_DRAW dentro de un proceso o programa principal solamente hay que incluir estas sentencias detrás de END_INIT si es un proceso PROCESS_INIT o detrás de PROCESS si no lo es, y si es un proceso principal detrás de MAIN_PROGRAM_CDIV.
PROCESS_INIT( window )(int _x, int _y, int _width, int _height) BEGIN_INIT x = _x; y = _y; width = _width; height = _height; END_INIT PRIVATE int width, height; BEGIN_DRAW rectfill(vbuffer, x, y, x + width, y + 15, makecol(64, 64, 128)); textout(vbuffer, font, "Ventana de prueba", x + 3, y + 3, makecol(255, 255, 255)); rect(vbuffer, x - 1, y - 1, x + width + 1, y + height + 1, 0); rectfill(vbuffer, x, y + 16, x + width, y + height, makecol(128, 128, 128)); END_DRAW BEGIN priority = 100; // Los objetos que dependen de la posición de esta ventana deben tener menos de 100 LOOP FRAME; END MAIN_PROGRAM_CDIV BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); new window(50, 50, 200, 200); LOOP FRAME; END_PROGRAM
En este ejemplo vemos como se crea una ventana de por medio de rectángulos, en el bloque de dibujado. También se puede apreciar que esta ventana esta parametrizada con las variables: x, y, width, height; por lo que en cualquier momento se podría modificar la posición y el tamaño igual que una ventana de un SO.
Un agradecimiento especial a Wiz inventor de este sistema de dibujado.
Ver: Sintaxis