//==== Add Color Picker ====// void GroupLayout::AddColorPicker( ColorPicker& picker ) { assert( m_Group && m_Screen ); //==== Button ====// Fl_Button* colorButton = new Fl_Button( m_X, m_Y, m_ButtonWidth, m_StdHeight * 2, "Color:" ); colorButton->box( FL_THIN_UP_BOX ); colorButton->labelfont( 1 ); colorButton->labelsize( 12 ); colorButton->labelcolor( FL_BLACK ); m_Group->add( colorButton ); AddX( m_ButtonWidth ); //==== Current Color Button ====// Fl_Button* primColorButton = new Fl_Button( m_X, m_Y, m_ButtonWidth / 2, m_StdHeight * 2 ); primColorButton->box( FL_THIN_DOWN_BOX ); primColorButton->color( ( Fl_Color )2 ); m_Group->add( primColorButton ); AddX( m_ButtonWidth / 2 + 2 ); //==== Sliders ====// int ch = 2 * m_StdHeight / 3; int cw = m_StdHeight; int sw = FitWidth( m_ButtonWidth + m_ButtonWidth / 2 + 2 + 4 * cw, m_SliderWidth ); Fl_Slider* sliders[3]; for ( int i = 0 ; i < 3 ; i++ ) { sliders[i] = new Fl_Value_Slider( m_X, m_Y + i * ch, sw, ch ); sliders[i]->type( 5 ); sliders[i]->color( FL_BACKGROUND2_COLOR ); sliders[i]->selection_color( ( Fl_Color )1 ); sliders[i]->maximum( 255 ); sliders[i]->step( 1 ); m_Group->add( sliders[i] ); } sliders[0]->selection_color( ( Fl_Color )1 ); sliders[1]->selection_color( ( Fl_Color )2 ); sliders[2]->selection_color( ( Fl_Color )4 ); AddX( sw + 2 ); //==== Color Buttons ====// vector< Fl_Button* > cvec; int color_index = 0; for ( int i = 0 ; i < 4 ; i++ ) { for ( int j = 0 ; j < 3 ; j++ ) { Fl_Button* b = new Fl_Button( m_X + i * cw, m_Y + j * ch, cw, ch ); vec3d rgb = picker.GetIndexRGB( color_index ); Fl_Color c = fl_rgb_color( ( int )rgb[0], ( int )rgb[1], ( int )rgb[2] ); b->color( c ); m_Group->add( b ); cvec.push_back( b ); color_index++; } } AddX( 3 * cw ); picker.Init( m_Screen, colorButton, primColorButton, cvec, sliders ); AddY( m_StdHeight * 2 ); NewLineX(); }