mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-02 13:14:01 +00:00
Adjust alpha color slider to make it work as percentage or value as specified by the preference settings
This commit is contained in:
parent
b10390625f
commit
fdafc585c2
@ -13,6 +13,8 @@
|
|||||||
#include "app/color_spaces.h"
|
#include "app/color_spaces.h"
|
||||||
#include "app/color_utils.h"
|
#include "app/color_utils.h"
|
||||||
#include "app/modules/gfx.h"
|
#include "app/modules/gfx.h"
|
||||||
|
#include "app/ui/alpha_entry.h"
|
||||||
|
#include "app/ui/alpha_slider.h"
|
||||||
#include "app/ui/color_sliders.h"
|
#include "app/ui/color_sliders.h"
|
||||||
#include "app/ui/expr_entry.h"
|
#include "app/ui/expr_entry.h"
|
||||||
#include "app/ui/skin/skin_slider_property.h"
|
#include "app/ui/skin/skin_slider_property.h"
|
||||||
@ -141,19 +143,25 @@ namespace {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
int minValue() const {
|
int minValue() const {
|
||||||
if (m_absSlider->isVisible())
|
auto slider = (m_absSlider->isVisible() ? m_absSlider : m_relSlider);
|
||||||
return m_absSlider->getMinValue();
|
|
||||||
else if (m_relSlider->isVisible())
|
if (slider->isVisible()) {
|
||||||
return m_relSlider->getMinValue();
|
int min;
|
||||||
|
slider->getSliderThemeInfo(&min, nullptr, nullptr);
|
||||||
|
return min;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int maxValue() const {
|
int maxValue() const {
|
||||||
if (m_absSlider->isVisible())
|
auto slider = (m_absSlider->isVisible() ? m_absSlider : m_relSlider);
|
||||||
return m_absSlider->getMaxValue();
|
|
||||||
else if (m_relSlider->isVisible())
|
if (slider->isVisible()) {
|
||||||
return m_relSlider->getMaxValue();
|
int max;
|
||||||
|
slider->getSliderThemeInfo(nullptr, &max, nullptr);
|
||||||
|
return max;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -373,7 +381,9 @@ void ColorSliders::addSlider(const Channel channel,
|
|||||||
ASSERT(!item.label);
|
ASSERT(!item.label);
|
||||||
item.label = new Label(labelText);
|
item.label = new Label(labelText);
|
||||||
item.box = new HBox();
|
item.box = new HBox();
|
||||||
item.absSlider = new Slider(absMin, absMax, 0);
|
item.absSlider = (channel != Channel::Alpha
|
||||||
|
? new Slider(absMin, absMax, 0)
|
||||||
|
: new AlphaSlider(0, AlphaSlider::Type::ALPHA));
|
||||||
item.relSlider = new Slider(relMin, relMax, 0);
|
item.relSlider = new Slider(relMin, relMax, 0);
|
||||||
item.entry = new ColorEntry(item.absSlider, item.relSlider);
|
item.entry = new ColorEntry(item.absSlider, item.relSlider);
|
||||||
|
|
||||||
@ -468,8 +478,7 @@ void ColorSliders::onEntryChange(const Channel i)
|
|||||||
Slider* slider = (m_mode == Mode::Absolute ?
|
Slider* slider = (m_mode == Mode::Absolute ?
|
||||||
m_items[i].absSlider:
|
m_items[i].absSlider:
|
||||||
m_items[i].relSlider);
|
m_items[i].relSlider);
|
||||||
value = std::clamp(value, slider->getMinValue(), slider->getMaxValue());
|
slider->updateValue(value);
|
||||||
slider->setValue(value);
|
|
||||||
|
|
||||||
onControlChange(i);
|
onControlChange(i);
|
||||||
}
|
}
|
||||||
@ -494,7 +503,10 @@ void ColorSliders::updateEntryText(const Channel i)
|
|||||||
Slider* slider = (m_mode == Mode::Absolute ? m_items[i].absSlider:
|
Slider* slider = (m_mode == Mode::Absolute ? m_items[i].absSlider:
|
||||||
m_items[i].relSlider);
|
m_items[i].relSlider);
|
||||||
|
|
||||||
m_items[i].entry->setTextf("%d", slider->getValue());
|
int value;
|
||||||
|
slider->getSliderThemeInfo(nullptr, nullptr, &value);
|
||||||
|
|
||||||
|
m_items[i].entry->setTextf("%d", value);
|
||||||
if (m_items[i].entry->hasFocus())
|
if (m_items[i].entry->hasFocus())
|
||||||
m_items[i].entry->selectAllText();
|
m_items[i].entry->selectAllText();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user