00001 //=========================================================================== 00002 //= img_rgba.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_rgba.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_RGBA : public IMAGEN { 00033 private: 00034 PIXEL_RGBA *Data; // Arreglo dinamico de pixel's 00035 00036 #ifdef MESA_ENABLED 00037 OSMesaContext _contexto_osmesa; 00038 #endif 00039 00040 public: 00041 //- Metodos standard de la clase IMAGEN --------------------------------- 00042 IMAGEN_RGBA(); 00043 virtual ~IMAGEN_RGBA(); 00044 #ifdef GL_ENABLED 00045 void pintar_gl(void); 00046 void activar_gl(void); 00047 void activar_como_contexto_gl(void); 00048 void desactivar_como_contexto_gl(void); 00049 #endif 00050 BOOLEAN init(int width, int height); 00051 void elim(void); 00052 00053 //- Metodos especificos de la clase IMAGEN_RGBA ------------------------- 00054 BOOLEAN generar_con_stencil(IMAGEN_RGB *Origen, BYTE r, BYTE g, BYTE b); 00055 inline void putpixel(int x, int y, BYTE r, BYTE g, BYTE b, BYTE a); 00056 inline void getpixel(int x, int y, BYTE &r, BYTE &g, BYTE &b, BYTE &a); 00057 void exportar_ppm(FILE *fd); 00058 00059 #ifdef NNN 00060 00061 IMAGEN *copie(void); 00062 00063 //- Procesamiento de imagenes - 00064 IMAGEN_PAL *exportar_a_grises(PALETA *Pal); 00065 00066 #endif // NNN 00067 00068 }; 00069 00070 //- Definicion de metodos inline de la clase IMAGEN_RGBA --------------------- 00071 00072 inline void 00073 IMAGEN_RGBA::putpixel(int x, int y, BYTE r, BYTE g, BYTE b, BYTE a) 00074 { 00075 long int i = x_tam * (y_tam - y - 1) + x; 00076 Data[i].r = r; 00077 Data[i].g = g; 00078 Data[i].b = b; 00079 Data[i].a = a; 00080 } 00081 00082 inline void 00083 IMAGEN_RGBA::getpixel(int x, int y, BYTE &r, BYTE &g, BYTE &b, BYTE &a) 00084 { 00085 long int i = x_tam * (y_tam - y - 1) + x; 00086 r = Data[i].r; 00087 g = Data[i].g; 00088 b = Data[i].b; 00089 a = Data[i].a; 00090 } 00091 00092 //=========================================================================== 00093 //= EOF = 00094 //=========================================================================== 00095