@ -1034,16 +1034,18 @@ static void ShowDemoWindowWidgets()
ImGui : : Text ( " Color button with Custom Picker Popup: " ) ;
// Generate a dummy palette
static bool saved_palette_inited = false ;
static ImVec4 saved_palette [ 32 ] ;
if ( ! saved_palette_inited )
// Generate a dummy default palette. The palette will persist and can be edited.
static bool saved_palette_init = true ;
static ImVec4 saved_palette [ 32 ] = { } ;
if ( saved_palette_init )
{
for ( int n = 0 ; n < IM_ARRAYSIZE ( saved_palette ) ; n + + )
{
ImGui : : ColorConvertHSVtoRGB ( n / 31.0f , 0.8f , 0.8f , saved_palette [ n ] . x , saved_palette [ n ] . y , saved_palette [ n ] . z ) ;
saved_palette [ n ] . w = 1.0f ; // Alpha
}
saved_palette_inited = true ;
saved_palette_init = false ;
}
static ImVec4 backup_color ;
bool open_popup = ImGui : : ColorButton ( " MyColor##3b " , color , misc_flags ) ;
@ -1056,12 +1058,12 @@ static void ShowDemoWindowWidgets()
}
if ( ImGui : : BeginPopup ( " mypicker " ) )
{
// FIXME: Adding a drag and drop example here would be perfect!
ImGui : : Text ( " MY CUSTOM COLOR PICKER WITH AN AMAZING PALETTE! " ) ;
ImGui : : Separator ( ) ;
ImGui : : ColorPicker4 ( " ##picker " , ( float * ) & color , misc_flags | ImGuiColorEditFlags_NoSidePreview | ImGuiColorEditFlags_NoSmallPreview ) ;
ImGui : : SameLine ( ) ;
ImGui : : BeginGroup ( ) ;
ImGui : : BeginGroup ( ) ; // Lock X position
ImGui : : Text ( " Current " ) ;
ImGui : : ColorButton ( " ##current " , color , ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_AlphaPreviewHalf , ImVec2 ( 60 , 40 ) ) ;
ImGui : : Text ( " Previous " ) ;
@ -1077,6 +1079,8 @@ static void ShowDemoWindowWidgets()
if ( ImGui : : ColorButton ( " ##palette " , saved_palette [ n ] , ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoTooltip , ImVec2 ( 20 , 20 ) ) )
color = ImVec4 ( saved_palette [ n ] . x , saved_palette [ n ] . y , saved_palette [ n ] . z , color . w ) ; // Preserve alpha!
// Allow user to drop colors into each palette entry
// (Note that ColorButton is already a drag source by default, unless using ImGuiColorEditFlags_NoDragDrop)
if ( ImGui : : BeginDragDropTarget ( ) )
{
if ( const ImGuiPayload * payload = ImGui : : AcceptDragDropPayload ( IMGUI_PAYLOAD_TYPE_COLOR_3F ) )