@ -4777,24 +4777,24 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
// If we're not showing any slider there's no point in doing any HSV conversions
const ImGuiColorEditFlags flags_untouched = flags ;
if ( flags & ImGuiColorEditFlags_NoInputs )
flags = ( flags & ( ~ ImGuiColorEditFlags__ DisplayMask ) ) | ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_NoOptions ;
flags = ( flags & ( ~ ImGuiColorEditFlags_DisplayMask_ ) ) | ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_NoOptions ;
// Context menu: display and modify options (before defaults are applied)
if ( ! ( flags & ImGuiColorEditFlags_NoOptions ) )
ColorEditOptionsPopup ( col , flags ) ;
// Read stored options
if ( ! ( flags & ImGuiColorEditFlags__ DisplayMask ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags__ DisplayMask ) ;
if ( ! ( flags & ImGuiColorEditFlags__ DataTypeMask ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags__ DataTypeMask ) ;
if ( ! ( flags & ImGuiColorEditFlags__ PickerMask ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags__ PickerMask ) ;
if ( ! ( flags & ImGuiColorEditFlags__ InputMask ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags__ InputMask ) ;
flags | = ( g . ColorEditOptions & ~ ( ImGuiColorEditFlags__ DisplayMask | ImGuiColorEditFlags__ DataTypeMask | ImGuiColorEditFlags__ PickerMask | ImGuiColorEditFlags__ InputMask ) ) ;
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags__ DisplayMask ) ) ; // Check that only 1 is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags__ InputMask ) ) ; // Check that only 1 is selected
if ( ! ( flags & ImGuiColorEditFlags_DisplayMask_ ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags_DisplayMask_ ) ;
if ( ! ( flags & ImGuiColorEditFlags_DataTypeMask_ ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags_DataTypeMask_ ) ;
if ( ! ( flags & ImGuiColorEditFlags_PickerMask_ ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags_PickerMask_ ) ;
if ( ! ( flags & ImGuiColorEditFlags_InputMask_ ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags_InputMask_ ) ;
flags | = ( g . ColorEditOptions & ~ ( ImGuiColorEditFlags_DisplayMask_ | ImGuiColorEditFlags_DataTypeMask_ | ImGuiColorEditFlags_PickerMask_ | ImGuiColorEditFlags_InputMask_ ) ) ;
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags_DisplayMask_ ) ) ; // Check that only 1 is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags_InputMask_ ) ) ; // Check that only 1 is selected
const bool alpha = ( flags & ImGuiColorEditFlags_NoAlpha ) = = 0 ;
const bool hdr = ( flags & ImGuiColorEditFlags_HDR ) ! = 0 ;
@ -4923,8 +4923,8 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
TextEx ( label , label_display_end ) ;
Spacing ( ) ;
}
ImGuiColorEditFlags picker_flags_to_forward = ImGuiColorEditFlags__ DataTypeMask | ImGuiColorEditFlags_ _PickerMask | ImGuiColorEditFlags__ InputMask | ImGuiColorEditFlags_HDR | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaBar ;
ImGuiColorEditFlags picker_flags = ( flags_untouched & picker_flags_to_forward ) | ImGuiColorEditFlags__ DisplayMask | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf ;
ImGuiColorEditFlags picker_flags_to_forward = ImGuiColorEditFlags_DataTypeMask_ | ImGuiColorEditFlags_PickerMask_ | ImGuiColorEditFlags_InputMask_ | ImGuiColorEditFlags_HDR | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaBar ;
ImGuiColorEditFlags picker_flags = ( flags_untouched & picker_flags_to_forward ) | ImGuiColorEditFlags_DisplayMask_ | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf ;
SetNextItemWidth ( square_sz * 12.0f ) ; // Use 256 + bar sizes?
value_changed | = ColorPicker4 ( " ##picker " , col , picker_flags , & g . ColorPickerRef . x ) ;
EndPopup ( ) ;
@ -5044,12 +5044,12 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
ColorPickerOptionsPopup ( col , flags ) ;
// Read stored options
if ( ! ( flags & ImGuiColorEditFlags__ PickerMask ) )
flags | = ( ( g . ColorEditOptions & ImGuiColorEditFlags__ PickerMask ) ? g . ColorEditOptions : ImGuiColorEditFlags__Options Default ) & ImGuiColorEditFlags__ PickerMask ;
if ( ! ( flags & ImGuiColorEditFlags__ InputMask ) )
flags | = ( ( g . ColorEditOptions & ImGuiColorEditFlags__ InputMask ) ? g . ColorEditOptions : ImGuiColorEditFlags__Options Default ) & ImGuiColorEditFlags__ InputMask ;
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags__ PickerMask ) ) ; // Check that only 1 is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags__ InputMask ) ) ; // Check that only 1 is selected
if ( ! ( flags & ImGuiColorEditFlags_PickerMask_ ) )
flags | = ( ( g . ColorEditOptions & ImGuiColorEditFlags_PickerMask_ ) ? g . ColorEditOptions : ImGuiColorEditFlags_DefaultOptions_ ) & ImGuiColorEditFlags_PickerMask_ ;
if ( ! ( flags & ImGuiColorEditFlags_InputMask_ ) )
flags | = ( ( g . ColorEditOptions & ImGuiColorEditFlags_InputMask_ ) ? g . ColorEditOptions : ImGuiColorEditFlags_DefaultOptions_ ) & ImGuiColorEditFlags_InputMask_ ;
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags_PickerMask_ ) ) ; // Check that only 1 is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags_InputMask_ ) ) ; // Check that only 1 is selected
if ( ! ( flags & ImGuiColorEditFlags_NoOptions ) )
flags | = ( g . ColorEditOptions & ImGuiColorEditFlags_AlphaBar ) ;
@ -5195,7 +5195,7 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
if ( ( flags & ImGuiColorEditFlags_NoLabel ) )
Text ( " Current " ) ;
ImGuiColorEditFlags sub_flags_to_forward = ImGuiColorEditFlags__ InputMask | ImGuiColorEditFlags_HDR | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf | ImGuiColorEditFlags_NoTooltip ;
ImGuiColorEditFlags sub_flags_to_forward = ImGuiColorEditFlags_InputMask_ | ImGuiColorEditFlags_HDR | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf | ImGuiColorEditFlags_NoTooltip ;
ColorButton ( " ##current " , col_v4 , ( flags & sub_flags_to_forward ) , ImVec2 ( square_sz * 3 , square_sz * 2 ) ) ;
if ( ref_col ! = NULL )
{
@ -5234,9 +5234,9 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
if ( ( flags & ImGuiColorEditFlags_NoInputs ) = = 0 )
{
PushItemWidth ( ( alpha_bar ? bar1_pos_x : bar0_pos_x ) + bars_width - picker_pos . x ) ;
ImGuiColorEditFlags sub_flags_to_forward = ImGuiColorEditFlags__ DataTypeMask | ImGuiColorEditFlags__ InputMask | ImGuiColorEditFlags_HDR | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoOptions | ImGuiColorEditFlags_NoSmallPreview | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf ;
ImGuiColorEditFlags sub_flags_to_forward = ImGuiColorEditFlags_DataTypeMask_ | ImGuiColorEditFlags_InputMask_ | ImGuiColorEditFlags_HDR | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoOptions | ImGuiColorEditFlags_NoSmallPreview | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf ;
ImGuiColorEditFlags sub_flags = ( flags & sub_flags_to_forward ) | ImGuiColorEditFlags_NoPicker ;
if ( flags & ImGuiColorEditFlags_DisplayRGB | | ( flags & ImGuiColorEditFlags__ DisplayMask ) = = 0 )
if ( flags & ImGuiColorEditFlags_DisplayRGB | | ( flags & ImGuiColorEditFlags_DisplayMask_ ) = = 0 )
if ( ColorEdit4 ( " ##rgb " , col , sub_flags | ImGuiColorEditFlags_DisplayRGB ) )
{
// FIXME: Hackily differentiating using the DragInt (ActiveId != 0 && !ActiveIdAllowOverlap) vs. using the InputText or DropTarget.
@ -5244,9 +5244,9 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
value_changed_fix_hue_wrap = ( g . ActiveId ! = 0 & & ! g . ActiveIdAllowOverlap ) ;
value_changed = true ;
}
if ( flags & ImGuiColorEditFlags_DisplayHSV | | ( flags & ImGuiColorEditFlags__ DisplayMask ) = = 0 )
if ( flags & ImGuiColorEditFlags_DisplayHSV | | ( flags & ImGuiColorEditFlags_DisplayMask_ ) = = 0 )
value_changed | = ColorEdit4 ( " ##hsv " , col , sub_flags | ImGuiColorEditFlags_DisplayHSV ) ;
if ( flags & ImGuiColorEditFlags_DisplayHex | | ( flags & ImGuiColorEditFlags__ DisplayMask ) = = 0 )
if ( flags & ImGuiColorEditFlags_DisplayHex | | ( flags & ImGuiColorEditFlags_DisplayMask_ ) = = 0 )
value_changed | = ColorEdit4 ( " ##hex " , col , sub_flags | ImGuiColorEditFlags_DisplayHex ) ;
PopItemWidth ( ) ;
}
@ -5476,7 +5476,7 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl
// Tooltip
if ( ! ( flags & ImGuiColorEditFlags_NoTooltip ) & & hovered )
ColorTooltip ( desc_id , & col . x , flags & ( ImGuiColorEditFlags__ InputMask | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf ) ) ;
ColorTooltip ( desc_id , & col . x , flags & ( ImGuiColorEditFlags_InputMask_ | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf ) ) ;
return pressed ;
}
@ -5485,18 +5485,18 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl
void ImGui : : SetColorEditOptions ( ImGuiColorEditFlags flags )
{
ImGuiContext & g = * GImGui ;
if ( ( flags & ImGuiColorEditFlags__ DisplayMask ) = = 0 )
flags | = ImGuiColorEditFlags__Options Default & ImGuiColorEditFlags__ DisplayMask ;
if ( ( flags & ImGuiColorEditFlags__ DataTypeMask ) = = 0 )
flags | = ImGuiColorEditFlags__Options Default & ImGuiColorEditFlags__ DataTypeMask ;
if ( ( flags & ImGuiColorEditFlags__ PickerMask ) = = 0 )
flags | = ImGuiColorEditFlags__Options Default & ImGuiColorEditFlags__ PickerMask ;
if ( ( flags & ImGuiColorEditFlags__ InputMask ) = = 0 )
flags | = ImGuiColorEditFlags__Options Default & ImGuiColorEditFlags__ InputMask ;
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags__ DisplayMask ) ) ; // Check only 1 option is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags__ DataTypeMask ) ) ; // Check only 1 option is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags__ PickerMask ) ) ; // Check only 1 option is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags__ InputMask ) ) ; // Check only 1 option is selected
if ( ( flags & ImGuiColorEditFlags_DisplayMask_ ) = = 0 )
flags | = ImGuiColorEditFlags_DefaultOptions_ & ImGuiColorEditFlags_DisplayMask_ ;
if ( ( flags & ImGuiColorEditFlags_DataTypeMask_ ) = = 0 )
flags | = ImGuiColorEditFlags_DefaultOptions_ & ImGuiColorEditFlags_DataTypeMask_ ;
if ( ( flags & ImGuiColorEditFlags_PickerMask_ ) = = 0 )
flags | = ImGuiColorEditFlags_DefaultOptions_ & ImGuiColorEditFlags_PickerMask_ ;
if ( ( flags & ImGuiColorEditFlags_InputMask_ ) = = 0 )
flags | = ImGuiColorEditFlags_DefaultOptions_ & ImGuiColorEditFlags_InputMask_ ;
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags_DisplayMask_ ) ) ; // Check only 1 option is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags_DataTypeMask_ ) ) ; // Check only 1 option is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags_PickerMask_ ) ) ; // Check only 1 option is selected
IM_ASSERT ( ImIsPowerOfTwo ( flags & ImGuiColorEditFlags_InputMask_ ) ) ; // Check only 1 option is selected
g . ColorEditOptions = flags ;
}
@ -5516,9 +5516,9 @@ void ImGui::ColorTooltip(const char* text, const float* col, ImGuiColorEditFlags
ImVec2 sz ( g . FontSize * 3 + g . Style . FramePadding . y * 2 , g . FontSize * 3 + g . Style . FramePadding . y * 2 ) ;
ImVec4 cf ( col [ 0 ] , col [ 1 ] , col [ 2 ] , ( flags & ImGuiColorEditFlags_NoAlpha ) ? 1.0f : col [ 3 ] ) ;
int cr = IM_F32_TO_INT8_SAT ( col [ 0 ] ) , cg = IM_F32_TO_INT8_SAT ( col [ 1 ] ) , cb = IM_F32_TO_INT8_SAT ( col [ 2 ] ) , ca = ( flags & ImGuiColorEditFlags_NoAlpha ) ? 255 : IM_F32_TO_INT8_SAT ( col [ 3 ] ) ;
ColorButton ( " ##preview " , cf , ( flags & ( ImGuiColorEditFlags__ InputMask | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf ) ) | ImGuiColorEditFlags_NoTooltip , sz ) ;
ColorButton ( " ##preview " , cf , ( flags & ( ImGuiColorEditFlags_InputMask_ | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf ) ) | ImGuiColorEditFlags_NoTooltip , sz ) ;
SameLine ( ) ;
if ( ( flags & ImGuiColorEditFlags_InputRGB ) | | ! ( flags & ImGuiColorEditFlags__ InputMask ) )
if ( ( flags & ImGuiColorEditFlags_InputRGB ) | | ! ( flags & ImGuiColorEditFlags_InputMask_ ) )
{
if ( flags & ImGuiColorEditFlags_NoAlpha )
Text ( " #%02X%02X%02X \n R: %d, G: %d, B: %d \n (%.3f, %.3f, %.3f) " , cr , cg , cb , cr , cg , cb , col [ 0 ] , col [ 1 ] , col [ 2 ] ) ;
@ -5537,23 +5537,23 @@ void ImGui::ColorTooltip(const char* text, const float* col, ImGuiColorEditFlags
void ImGui : : ColorEditOptionsPopup ( const float * col , ImGuiColorEditFlags flags )
{
bool allow_opt_inputs = ! ( flags & ImGuiColorEditFlags__ DisplayMask ) ;
bool allow_opt_datatype = ! ( flags & ImGuiColorEditFlags__ DataTypeMask ) ;
bool allow_opt_inputs = ! ( flags & ImGuiColorEditFlags_DisplayMask_ ) ;
bool allow_opt_datatype = ! ( flags & ImGuiColorEditFlags_DataTypeMask_ ) ;
if ( ( ! allow_opt_inputs & & ! allow_opt_datatype ) | | ! BeginPopup ( " context " ) )
return ;
ImGuiContext & g = * GImGui ;
ImGuiColorEditFlags opts = g . ColorEditOptions ;
if ( allow_opt_inputs )
{
if ( RadioButton ( " RGB " , ( opts & ImGuiColorEditFlags_DisplayRGB ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags__ DisplayMask ) | ImGuiColorEditFlags_DisplayRGB ;
if ( RadioButton ( " HSV " , ( opts & ImGuiColorEditFlags_DisplayHSV ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags__ DisplayMask ) | ImGuiColorEditFlags_DisplayHSV ;
if ( RadioButton ( " Hex " , ( opts & ImGuiColorEditFlags_DisplayHex ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags__ DisplayMask ) | ImGuiColorEditFlags_DisplayHex ;
if ( RadioButton ( " RGB " , ( opts & ImGuiColorEditFlags_DisplayRGB ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags_DisplayMask_ ) | ImGuiColorEditFlags_DisplayRGB ;
if ( RadioButton ( " HSV " , ( opts & ImGuiColorEditFlags_DisplayHSV ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags_DisplayMask_ ) | ImGuiColorEditFlags_DisplayHSV ;
if ( RadioButton ( " Hex " , ( opts & ImGuiColorEditFlags_DisplayHex ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags_DisplayMask_ ) | ImGuiColorEditFlags_DisplayHex ;
}
if ( allow_opt_datatype )
{
if ( allow_opt_inputs ) Separator ( ) ;
if ( RadioButton ( " 0..255 " , ( opts & ImGuiColorEditFlags_Uint8 ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags__ DataTypeMask ) | ImGuiColorEditFlags_Uint8 ;
if ( RadioButton ( " 0.00..1.00 " , ( opts & ImGuiColorEditFlags_Float ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags__ DataTypeMask ) | ImGuiColorEditFlags_Float ;
if ( RadioButton ( " 0..255 " , ( opts & ImGuiColorEditFlags_Uint8 ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags_DataTypeMask_ ) | ImGuiColorEditFlags_Uint8 ;
if ( RadioButton ( " 0.00..1.00 " , ( opts & ImGuiColorEditFlags_Float ) ! = 0 ) ) opts = ( opts & ~ ImGuiColorEditFlags_DataTypeMask_ ) | ImGuiColorEditFlags_Float ;
}
if ( allow_opt_inputs | | allow_opt_datatype )
@ -5588,7 +5588,7 @@ void ImGui::ColorEditOptionsPopup(const float* col, ImGuiColorEditFlags flags)
void ImGui : : ColorPickerOptionsPopup ( const float * ref_col , ImGuiColorEditFlags flags )
{
bool allow_opt_picker = ! ( flags & ImGuiColorEditFlags__ PickerMask ) ;
bool allow_opt_picker = ! ( flags & ImGuiColorEditFlags_PickerMask_ ) ;
bool allow_opt_alpha_bar = ! ( flags & ImGuiColorEditFlags_NoAlpha ) & & ! ( flags & ImGuiColorEditFlags_AlphaBar ) ;
if ( ( ! allow_opt_picker & & ! allow_opt_alpha_bar ) | | ! BeginPopup ( " context " ) )
return ;
@ -5607,7 +5607,7 @@ void ImGui::ColorPickerOptionsPopup(const float* ref_col, ImGuiColorEditFlags fl
if ( picker_type = = 1 ) picker_flags | = ImGuiColorEditFlags_PickerHueWheel ;
ImVec2 backup_pos = GetCursorScreenPos ( ) ;
if ( Selectable ( " ##selectable " , false , 0 , picker_size ) ) // By default, Selectable() is closing popup
g . ColorEditOptions = ( g . ColorEditOptions & ~ ImGuiColorEditFlags__ PickerMask ) | ( picker_flags & ImGuiColorEditFlags__ PickerMask ) ;
g . ColorEditOptions = ( g . ColorEditOptions & ~ ImGuiColorEditFlags_PickerMask_ ) | ( picker_flags & ImGuiColorEditFlags_PickerMask_ ) ;
SetCursorScreenPos ( backup_pos ) ;
ImVec4 previewing_ref_col ;
memcpy ( & previewing_ref_col , ref_col , sizeof ( float ) * ( ( picker_flags & ImGuiColorEditFlags_NoAlpha ) ? 3 : 4 ) ) ;