00001 //=========================================================================== 00002 //= img_pal.h Noviembre de 1999 = 00003 //=-------------------------------------------------------------------------= 00004 //= Clases de representacion y procesamiento basico de imagenes digitales = 00005 //=-------------------------------------------------------------------------= 00006 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO = 00007 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN = 00008 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES, = 00009 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO, = 00010 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO, = 00011 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA = 00012 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES = 00013 //= ("ACTIVIDADES DE ALGO RIESGO"). = 00014 //=-------------------------------------------------------------------------= 00015 //= Autor original: Oscar J. Chavarro G. A.K.A. JEDILINK. Copyright (c), = 00016 //= 1997 - 2003, oscarchavarro@hotmail.com = 00017 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia = 00018 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la = 00019 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. = 00020 //=========================================================================== 00021 00022 #include "jed_defs.h" 00023 00024 #ifndef __JEDILINK_IMG__ 00025 #error "No incluya a img_pal.h, incluya a jed_img.h!" 00026 #endif 00027 00028 #ifdef VEL_ROSITA 00029 #include "toolkits/media/jed_img.h" 00030 #endif 00031 00032 class IMAGEN_PAL : public IMAGEN { 00033 private: 00034 PIXEL_PAL *Data; // Arreglo dinamico de pixel's 00035 BOOLEAN modo_luminancia; 00036 00037 public: 00038 //- Metodos standard de la clase IMAGEN --------------------------------- 00039 IMAGEN_PAL(); 00040 virtual ~IMAGEN_PAL(); 00041 #ifdef GL_ENABLED 00042 void pintar_gl(void); 00043 void activar_gl(void); 00044 #endif 00045 BOOLEAN init(int width, int height); 00046 void elim(void); 00047 00048 //- Metodos especificos de la clase IMAGEN_PAL -------------------------- 00049 BOOLEAN importar_wadsprite(FILE *fd); // Importacion de datos 00050 BOOLEAN importar_wadflat(FILE *fd, WORD xtam = 64, WORD ytam = 64); 00051 BOOLEAN importar_sgibw(FILE *fd); 00052 inline void putcolorindex(int x, int y, BYTE index); 00053 inline BYTE getcolorindex(int x, int y); 00054 void pegar_subimagen(IMAGEN_PAL *sprite, int offset_x, int offset_y); 00055 void set_modo_luminancia(BOOLEAN m); 00056 void exportar_ppm(FILE *fd, PALETA *Pal); 00057 00058 #ifdef NNN 00059 IMAGEN *copie(void); 00060 00061 //- Metodos de consulta y actualizacion --------------------------------- 00062 #ifdef GL_ENABLED 00063 void activar_como_contexto_gl(void); 00064 void desactivar_como_contexto_gl(void); 00065 #endif 00066 00067 //- Procesamiento de imagenes ------------------------------------------- 00068 IMAGEN_PAL *exportar_a_grises(PALETA *Pal); 00069 void umbralizar(BYTE umbral); 00070 void umbralizar_adaptativo(void); 00071 #endif // NNN 00072 00073 }; 00074 00075 //- Definicion de metodos inline de la clase IMAGEN_PAL --------------------- 00076 00077 inline void 00078 IMAGEN_PAL::putcolorindex(int x, int y, BYTE index) 00079 /* 00080 PRE: tipo == IMAGEN_PALETA256 00081 */ 00082 { 00083 PIXEL_PAL *fila = &(Data[x_tam * y]); 00084 00085 fila[x].index = index; 00086 } 00087 00088 inline BYTE 00089 IMAGEN_PAL::getcolorindex(int x, int y) 00090 /* 00091 PRE: tipo == IMAGEN_PALETA256 00092 */ 00093 { 00094 PIXEL_PAL *fila = &(Data[x_tam * y]); 00095 00096 return fila[x].index; 00097 } 00098 00099 //=========================================================================== 00100 //= EOF = 00101 //=========================================================================== 00102