#include #include #include #include #include #include #include #include #include #include using namespace std; class ColorWin : public Fl_Window { public: ColorWin(int x, int y, int w, int h, char *title=NULL); void getColor(uchar &r, uchar &g, uchar &b) { r = red; g = green; b = blue; }; void setRGB(int r, int g, int b); private: // Color RGB actual uchar red, green, blue; // Separación entre cajas int margen; // Barras de deslizamiento Fl_Value_Slider *vsRed, *vsGreen, *vsBlue; // Cajas de entrada de texto Fl_Value_Input *viRed, *viGreen, *viBlue; Fl_Value_Input *fiRed, *fiGreen, *fiBlue; // Cajas de salida de texto Fl_Output *outRed, *outGreen, *outBlue; // Marcos Fl_Box *boxColor, *boxRGB, *boxValRGB, *boxHexRGB, *boxRealRGB; // Menú Fl_Menu_Bar *barraMenu; // Funciones auxiliares void inicializarValores(); void crearValueSliders (); void crearValueInputs(); void crearFloatInputs(); void crearOutputs(); void setCallbacks(); void crearCajaColor(); void crearBarraMenu(); void updateAll(); void updateBoxColor(); void updateInputs(); void updateRealInputs(); void updateOutputs(); void updateValueSliders (); // Manejadores de eventos static void finCB(Fl_Widget *w, void *data); static void slidersCB (Fl_Widget *w, void *data); // Funciones auxiliares (no publicas) void setColor(uchar r, uchar g, uchar b) { red = r; green = g; blue = b; updateAll(); }; void setColor(int color, uchar widgetValue); };