Move color picker from CSS to HTML format for colors.
This is an attempt to remove the decimal separator from the equation, which appears to be causing trouble on MSW. Fixes https://gitlab.com/kicad/code/kicad/issues/9043
This commit is contained in:
parent
45c7ef7e76
commit
e58671e2da
|
@ -512,7 +512,7 @@ void DIALOG_COLOR_PICKER::SetEditVals( CHANGED_COLOR aChanged, bool aCheckTransp
|
||||||
m_sliderBrightness->SetValue(normalizeToInt( m_val ) );
|
m_sliderBrightness->SetValue(normalizeToInt( m_val ) );
|
||||||
|
|
||||||
if( aChanged != HEX_CHANGED )
|
if( aChanged != HEX_CHANGED )
|
||||||
m_colorValue->ChangeValue( m_newColor4D.ToWxString( wxC2S_CSS_SYNTAX ) );
|
m_colorValue->ChangeValue( m_newColor4D.ToHexString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -676,7 +676,7 @@ void DIALOG_COLOR_PICKER::onHSVMouseDrag( wxMouseEvent& event )
|
||||||
|
|
||||||
void DIALOG_COLOR_PICKER::OnColorValueText( wxCommandEvent& event )
|
void DIALOG_COLOR_PICKER::OnColorValueText( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
m_newColor4D.SetFromWxString( m_colorValue->GetValue() );
|
m_newColor4D.SetFromHexString( m_colorValue->GetValue() );
|
||||||
m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
|
m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
|
||||||
|
|
||||||
SetEditVals( HEX_CHANGED, true );
|
SetEditVals( HEX_CHANGED, true );
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
#include <gal/color4d.h>
|
#include <gal/color4d.h>
|
||||||
#include <i18n_utility.h>
|
#include <i18n_utility.h>
|
||||||
|
#include <wx/crt.h>
|
||||||
|
#include <math/util.h>
|
||||||
|
|
||||||
using namespace KIGFX;
|
using namespace KIGFX;
|
||||||
|
|
||||||
|
@ -142,6 +144,35 @@ wxString COLOR4D::ToWxString( long flags ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool COLOR4D::SetFromHexString( const wxString& aColorString )
|
||||||
|
{
|
||||||
|
if( aColorString.length() != 9 || aColorString.GetChar( 0 ) != '#' )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
unsigned long tmp;
|
||||||
|
|
||||||
|
if( wxSscanf( aColorString.wx_str() + 1, wxT( "%lx" ), &tmp ) != 1 )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
r = ( (tmp >> 24) & 0xFF ) / 255.0;
|
||||||
|
g = ( (tmp >> 16) & 0xFF ) / 255.0;
|
||||||
|
b = ( (tmp >> 8) & 0xFF ) / 255.0;
|
||||||
|
a = ( tmp & 0xFF ) / 255.0;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxString COLOR4D::ToHexString() const
|
||||||
|
{
|
||||||
|
return wxString::Format( wxT("#%02X%02X%02X%02X" ),
|
||||||
|
KiROUND( r * 255.0 ),
|
||||||
|
KiROUND( g * 255.0 ),
|
||||||
|
KiROUND( b * 255.0 ),
|
||||||
|
KiROUND( a * 255.0 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
wxColour COLOR4D::ToColour() const
|
wxColour COLOR4D::ToColour() const
|
||||||
{
|
{
|
||||||
using CHAN_T = wxColourBase::ChannelType;
|
using CHAN_T = wxColourBase::ChannelType;
|
||||||
|
|
|
@ -155,6 +155,9 @@ public:
|
||||||
|
|
||||||
wxString ToWxString( long flags ) const;
|
wxString ToWxString( long flags ) const;
|
||||||
|
|
||||||
|
bool SetFromHexString( const wxString& aColorString );
|
||||||
|
wxString ToHexString() const;
|
||||||
|
|
||||||
wxColour ToColour() const;
|
wxColour ToColour() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue