00001 //=========================================================================== 00002 //= jed_pal.h Abril de 1998 = 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 #ifndef __JEDILINK_PAL__ 00023 #define __JEDILINK_PAL__ 00024 00025 #include "jed_defs.h" 00026 #include <stdio.h> // standard 00027 00028 #ifdef UNIX_ENABLED 00029 #include <X11/X.h> // Especificos de la version X 00030 #if PLATAFORMA != CYGNUS_WIN32 00031 #include <X11/Intrinsic.h> 00032 #endif 00033 #endif 00034 00035 #ifdef MESA_ENABLED 00036 #include "GL/osmesa.h" 00037 #endif 00038 00039 #include "jed_gl.h" 00040 #include "toolkits/util/parsero.h" 00041 #include "color.h" 00042 00043 //=========================================================================== 00044 //= Clases de apoyo al esquema de representacion de imagenes digitales = 00045 //=========================================================================== 00046 00047 class PIXEL_RGB { 00048 public: 00049 BYTE r; 00050 BYTE g; 00051 BYTE b; 00052 00053 PIXEL_RGB(); 00054 }; 00055 00056 class PIXEL_RGBA { 00057 public: 00058 BYTE r; 00059 BYTE g; 00060 BYTE b; 00061 BYTE a; 00062 00063 PIXEL_RGBA(); 00064 }; 00065 00066 class PIXEL_PAL { 00067 public: 00068 BYTE index; 00069 00070 PIXEL_PAL(); 00071 PIXEL_PAL(BYTE i); 00072 }; 00073 00074 class IMAGEN; 00075 class IMAGEN_RGB; 00076 class IMAGEN_PAL; 00077 00078 class PALETA { 00079 private: 00080 PIXEL_RGB tabla[256]; 00081 float *tabla_r; // Usado para guardar una copia de la tabla normalizada 00082 float *tabla_g; // a flotantes de 0.0 a 1.0 00083 float *tabla_b; 00084 int tam_tabla; // entre 2 y 256 00085 public: 00086 PALETA(); 00087 00088 PIXEL_RGB pal2rgb(PIXEL_PAL i); 00089 BOOLEAN init(int tam); 00090 void elim(void); 00091 void importar_raw256(FILE *fd); 00092 void importar_dib(FILE *in_fd); 00093 #ifdef UNIX_ENABLED 00094 #ifdef X_ENABLED 00095 void importe_x(Display *display, Colormap cmap); 00096 #endif 00097 #endif 00098 void aplique_gamma(double factor); 00099 #ifdef GL_ENABLED 00100 void activar_gl(void); 00101 void pintar_gl(void); 00102 #endif 00103 void imprima(void); 00104 BOOLEAN leer(TOKENIZADOR *Sabiondo); 00105 COLOR escala(double val); 00106 00107 friend class IMAGEN; 00108 friend class IMAGEN_RGB; 00109 friend class IMAGEN_PAL; 00110 }; 00111 00112 //=========================================================================== 00113 //= EOF = 00114 //=========================================================================== 00115 00116 #endif 00117