08 Cargando im�genes



Aviso: cuando use im�genes truecolor, siempre debe ajustar el modo gr�fico antes de cargar cualquier dato. De otro modo el formato de pixel (RGB o BGR) ser� desconocido, y el fichero podr�a ser convertido err�neamente.

BITMAP *load_bitmap(char *filename, RGB *pal);
Carga un bitmap desde un fichero, devolviendo un puntero al bitmap y almacenando los datos de la paleta en el lugar especificado, que deber�a ser un array de 256 estructuras RGB. Es responsable de destruir el bitmap cuando ya no lo necesite. Devuelve NULL si hubo errores. Por ahora esta funci�n soporta ficheros BMP, LBM, PCX y TGA, determinando el tipo por la extensi�n del fichero. Si el fichero tiene una imagen truecolor, debe ajustar el modo de v�deo o llamar set_color_conversion() antes de cargarlo.

BITMAP *load_bmp(char *filename, RGB *pal);
Carga un fichero Windows u OS/2 de 256 colores o 24 bits truecolor.

BITMAP *load_lbm(char *filename, RGB *pal);
Carga un fichero IFF ILBM/PBM de 256 colores.

BITMAP *load_pcx(char *filename, RGB *pal);
Carga un fichero PCX de 256 colores o 24 bits truecolor.

BITMAP *load_tga(char *filename, RGB *pal);
Carga un fichero TGA de 256 colores, 15 bits hicolor o 24 bits truecolor.

int save_bitmap(char *filename, BITMAP *bmp, RGB *pal);
Escribe un bitmap en un fichero, usando la paleta especificada, que deber�a ser un array de 256 estructuras RGB. Devuelve no-cero si hubo errores. El formato de salida es determinado por la extensi�n del fichero: actualmente esta funci�n soporta ficheros BMP, PCX o TGA. Una de las cosas con las que tener cuidado: si usa esto para volcar la pantalla en un fichero, puede acabar con una imagen m�s grande de lo esperado, ya que Allegro suele crear pantallas virtuales m�s grandes que la pantalla visible. Puede solucionar esto usando un sub-bitmap que especifica que parte de la pantalla quiere salvar, ejemplo:

      BITMAP *bmp;
      PALETTE pal;

get_palette(pal); bmp = create_sub_bitmap(screen, 0, 0, SCREEN_W, SCREEN_H); save_bitmap("pantalla.pcx", bmp, pal); destroy_bitmap(bmp);

int save_bmp(char *filename, BITMAP *bmp, RGB *pal);
Escribe un bitmap en un fichero BMP de 256 colores o 24 bits truecolor.

int save_pcx(char *filename, BITMAP *bmp, RGB *pal);
Escribe un bitmap en un fichero PCX de 256 colores o 24 bits truecolor.

int save_tga(char *filename, BITMAP *bmp, RGB *pal);
Escribe un bitmap en un fichero TGA de 256 colores, 15 bits hicolor o 24 bits truecolor.

void register_bitmap_file_type(char *ext, BITMAP *(*load)(char *filename, RGB *pal), int (*save)(char *filename, BITMAP *bmp, RGB *pal));
Informa a las funciones load_bitmap() y save_bitmap() de un nuevo tipo de fichero, dando rutinas para leer o escribir im�genes en este formato (cualquier funci�n puede ser NULL).

void set_color_conversion(int mode);
Indica c�mo convertir im�genes entre varias profundidades de color cuando lea un gr�fico de un fichero bitmap externo o fichero de datos. El modo es una m�scara de bits que especifica qu� tipos de conversi�n son permitidos. Si el bit apropiado est� activado, los datos ser�n convertidos al formato de pixel actual (seleccionado con la funci�n set_color_depth()), de otro modo se quedar�n en el formato en el que fueron cargados, dej�ndole a usted la tarea de convertirlos manualmente antes de visualizarlos. El modo por defecto es la conversi�n total, para que todas las im�genes que sean cargadas puedan verse con el modo de v�deo actual. Los biestables de bit v�lidos son:

      COLORCONV_EXPAND_256          // expande 256 colores en truecolor
      COLORCONV_REDUCE_TO_256       // reduce truecolor a 256 colores
      COLORCONV_EXPAND_15_TO_16     // expande 15 bit hicolor a 16 bits
      COLORCONV_REDUCE_16_TO_15     // reduce 16 bit hicolor a 15 bits
      COLORCONV_EXPAND_HI_TO_TRUE   // expande 15/16 bits a 24/32 bits
      COLORCONV_REDUCE_TRUE_TO_HI   // reduce 24/32 bits a 15/16 bits
      COLORCONV_24_EQUALS_32        // convierte entre 24 y 32 bits
      COLORCONV_DITHER              // difumina al reducir a hicolor

Por conveniencia, las siguientes macros pueden ser usadas para seleccionar una combinaci�n com�n de estos biestables:

      COLORCONV_NONE       // desactiva todas las conversiones de formato
      COLORCONV_TOTAL      // convierte todo al formato actual
      COLORCONV_PARTIAL    // convierte 15 <-> 16 y 24 <-> 32 bits
      COLORCONV_MOST       // todas excepto truecolor <-> 256

Si activa el biestable COLORCONV_DITHER, se realizar� un difuminado cuando gr�ficos truecolor sean convertidos a formato hicolor, incluyendo la funci�n blit(). Esto puede producir resultados m�s agradables a la vista, pero es obviamente m�s lento que una conversi�n directa.




Volver al Indice