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