void drawing_mode(int mode, BITMAP *pattern, int x_anchor, int y_anchor);
Ajusta el modo de dibujo gr�fico. Esto s�lo afecta a las rutinas
geom�tricas como putpixel, lines, rectangles, circles, polygons,
floodfill, etc, y no a la salida de texto, blits o dibujado de sprites.
El modo deber�a ser uno de los siguientes valores.
En DRAW_MODE_XOR, los pixels son escritos en el bitmap con una operaci�n or-exclusiva en vez de con la copia simple, por lo que dibujar la misma figura dos veces la borrar�. Como esto requiere tanto leer como escribir en el bitmap de memoria, el dibujado xor es mucho m�s lento que el modo normal.DRAW_MODE_SOLID - por defecto, dibujado s�lido DRAW_MODE_XOR - dibujado or-exclusivo DRAW_MODE_COPY_PATTERN - rellenado con patr�n multicolor DRAW_MODE_SOLID_PATTERN - rellenado con patr�n de un solo color DRAW_MODE_MASKED_PATTERN - rellenado con patr�n enmascarado DRAW_MODE_TRANS - fundido de color transl�cido
Con los modos con patr�n, usted indica un bitmap de patr�n que ser� dibujado sobre la superficie de la figura. Allegro almacena un puntero a este bitmap en vez de una copia, por lo que no debe destruir el bitmap mientras sea usado como patr�n. El ancho y alto del patr�n debe ser un m�ltiplo de dos, pero pueden ser diferentes, es decir, un patr�n de 64x16 est� bien, pero uno de 17x3 no. El patr�n ser� repetido en una rejilla comenzando en el punto (x_anchor, y_anchor). Normalmente deber�a pasar cero para estos valores, lo que le dejar� dibujar varias figuras y que sus patrones se junten en los bordes. Un alineamiento de cero puede sin embargo ser peculiar cuando mueva una figura con patr�n por la pantalla, porque la figura se mover�, pero el patr�n no, por lo que en algunas situaciones quiz�s le interese alterar las posiciones del ancla (anchor).
Cuando selecciona DRAW_MODE_COPY_PATTERN, los pixels simplemente son copiados del bitmap de patr�n al bitmap destino. Esto le permite usar patrones multicolor, y significa que el color que pase a la rutina de dibujado es ignorado. Este es el m�s r�pido de los modos con patr�n.
En DRAW_MODE_SOLID_PATTERN, cada pixel del patr�n es comparado con el color de m�scara (cero en modos de 256 colores, rosa fucsia en modos truecolor). Si el pixel del patr�n es s�lido, un pixel del color que pas� a la rutina de dibujado es escrito en el bitmap destino, de otro modo escribe un cero. El patr�n es por esto tratado como una m�scara monocroma, que le permite usar el mismo patr�n para dibujar diferentes figuras con colores diferentes, pero previene el uso de patrones multicolores.
DRAW_MODE_MASKED_PATTERN es casi lo mismo que DRAW_MODE_SOLID_PATTERN, pero los pixels enmascarados son ignorados en vez de copiados como cero, por lo que el fondo se ver� a trav�s de los agujeros.
En DRAW_MODE_TRANS, la tabla global color_map o las funciones de fundido se usan para sobreimprimir pixels encima de la im�gen existente. Esta s�lo debe usarse despu�s de haber constu�do la tabla de mapeo de color (para modos de 256 colores) o las funciones de fundido (para modos truecolor). Dado que debe leer y escribir en la memoria del bitmap, el dibujado transparente es muy lento si dibuja directamente en la memora de v�deo, as� que siempre que sea posible deber�a dibujar en bitmaps de memor�a.
Relacionado con: xor_mode, solid_mode, color_map, set_trans_blender.void xor_mode(int on);
Relacionado con: drawing_mode.void solid_mode();
Relacionado con: drawing_mode.
En modos de v�deo con paleta, la translucidez y la iluminaci�n son implementadas con una tabla precalculada de 64k, que contiene el resultado de la combinaci�n de cualquier color c1 con c2. Tiene que crear esta tabla antes de usar cualquiera de las rutinas de iluminaci�n o translucidez. Dependiendo de c�mo se crea tabla, ser� posible hacer un rango diferente de efectos. Por ejemplo, la translucidez se puede implementar usando un color intermedio entre c1 y c2 como resultado de su combinaci�n. La iluminaci�n se consigue tratando uno de los colores como nivel de luz (0-255) en vez de como color, y creando la tabla apropiadamente. Un rango de efectos especializados es posible, si por ejemplo sustituye cualquier color con otro color haciendo los colores individuales de origen o destino totalmente s�lidos o invisibles.
Las tablas de color pueden ser precalculadas con la utilidad colormap, o generadas en tiempo real. La estructura COLOR_MAP se define as�:
extern COLOR_MAP *color_map;typedef struct { unsigned char data[PAL_SIZE][PAL_SIZE]; } COLOR_MAP;
Relacionado con: create_color_table, create_light_table, create_trans_table, set_trans_blender, draw_trans_sprite, draw_lit_sprite, drawing_mode.void create_light_table(COLOR_MAP *table, const PALETTE pal, int r, g, b, void (*callback)(int pos));
Relacionado con: color_map, create_trans_table, create_color_table, create_blender_table, draw_lit_sprite.void create_trans_table(COLOR_MAP *table, const PALETTE pal, int r, g, b, void (*callback)(int pos));
Relacionado con: color_map, create_light_table, create_color_table, draw_trans_sprite.void create_color_table(COLOR_MAP *table, const PALETTE pal, void (*blend)(PALETTE pal, int x, int y, RGB *rgb), void (*callback)(int pos));
Relacionado con: color_map, create_light_table, create_trans_table, create_blender_table.void create_blender_table(COLOR_MAP *table, const PALETTE pal, void (*callback)(int pos));
Relacionado con: color_map, create_light_table, create_trans_table, create_color_table, set_trans_blender, set_blender_mode.
En los modo de video truecolor, la translucidez y la iluminaci�n est�n implementadas por una funci�n de fundido de la forma:
Esta rutina toma dos colores como par�metros, los descompone en sus componenetes rojo, verde y azul, los combina acorde con el valor de interpolaci�n n, y entonces fusiona de nuevo el resultado en un solo valor de color, que devuelve.unsigned long (*BLENDER_FUNC)(unsigned long x, y, n);
Como estas rutinas se pueden usar desde diferentes profundidades de color, hay tres callbacks, una para usar con p�xels de 15 bits (5.5.5), una para p�xels de 16 bits (5.6.5), y otra para p�xels de 24 bits (8.8.8), que puede compartirse entre el c�digo de 24 y 32 bits dado que el empaquetamiento de bits es el mismo.
void set_trans_blender(int r, int g, int b, int a);
Selecciona el conjunto de rutinas de fundido por defecto, que hacen una
interpolaci�n lineal simple entre los colores fuente y destino. Cuando se
llama a una funci�n de dibujo transl�cido, el par�metro alfa ajustado por
esta rutina se usa como factor de interpolaci�n, que controla la solidez
del dibujado (de 0 a 255). Cuando una funci�n de dibujo iluminado de
es llamada, el valor alfa se ignora, y se usa el color pasado a la
funci�n de sprite para seleccionar un nivel alfa. La rutina de fundido
se usar� para interpolar entre el color del sprite y los valores RGB que
se le pasaron a esta funci�n (en un rango de 0 a 255).
Relacionado con: color_map, draw_trans_sprite, draw_lit_sprite, drawing_mode, set_add_blender, set_burn_blender, set_color_blender, set_blender_mode, set_alpha_blender, set_write_alpha_blender, set_difference_blender, set_dissolve_blender, set_dodge_blender, set_hue_blender, set_invert_blender, set_luminance_blender, set_multiply_blender, set_saturation_blender, set_screen_blender.void set_alpha_blender();
Relacionado con: set_trans_blender, draw_trans_sprite, draw_trans_rle_sprite, set_write_alpha_blender.void set_write_alpha_blender();
Relacionado con: set_alpha_blender, draw_trans_sprite, drawing_mode.void set_add_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_burn_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_color_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_difference_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_dissolve_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_dodge_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_hue_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_invert_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_luminance_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_multiply_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_saturation_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_screen_blender(int r, int g, int b, int a);
Relacionado con: set_trans_blender, drawing_mode.void set_blender_mode(BLENDER_FUNC b15, b16, b24, int r, g, b, a);
Relacionado con: draw_lit_sprite, drawing_mode, set_blender_mode_ex, set_trans_blender, color_map, draw_trans_sprite.void set_blender_mode_ex(BLENDER_FUNC b15, b16, b24, b32, b15x, b16x, b24x, int r, g, b, a);
Relacionado con: set_blender_mode, set_alpha_blender.