mirror of
https://github.com/aseprite/aseprite.git
synced 2024-10-05 06:20:10 +00:00
Added ISettings::getOnionskinOpacityBase/Step() methods.
This commit is contained in:
parent
65d1ab6865
commit
1ca29538c0
@ -73,10 +73,14 @@ public:
|
||||
virtual bool getUseOnionskin() = 0;
|
||||
virtual int getOnionskinPrevFrames() = 0;
|
||||
virtual int getOnionskinNextFrames() = 0;
|
||||
virtual int getOnionskinOpacityBase() = 0;
|
||||
virtual int getOnionskinOpacityStep() = 0;
|
||||
|
||||
virtual void setUseOnionskin(bool state) = 0;
|
||||
virtual void setOnionskinPrevFrames(int frames) = 0;
|
||||
virtual void setOnionskinNextFrames(int frames) = 0;
|
||||
virtual void setOnionskinOpacityBase(int base) = 0;
|
||||
virtual void setOnionskinOpacityStep(int step) = 0;
|
||||
|
||||
// Tools settings
|
||||
|
||||
|
@ -48,6 +48,8 @@ UISettingsImpl::UISettingsImpl()
|
||||
m_use_onionskin = get_config_bool("Onionskin", "Enabled", false);
|
||||
m_prev_frames_onionskin = get_config_int("Onionskin", "PrevFrames", 1);
|
||||
m_next_frames_onionskin = get_config_int("Onionskin", "NextFrames", 0);
|
||||
m_onionskin_opacity_base = get_config_int("Onionskin", "OpacityBase", 128);
|
||||
m_onionskin_opacity_step = get_config_int("Onionskin", "OpacityStep", 32);
|
||||
}
|
||||
|
||||
UISettingsImpl::~UISettingsImpl()
|
||||
@ -63,6 +65,8 @@ UISettingsImpl::~UISettingsImpl()
|
||||
set_config_bool("Onionskin", "Enabled", m_use_onionskin);
|
||||
set_config_int("Onionskin", "PrevFrames", m_prev_frames_onionskin);
|
||||
set_config_int("Onionskin", "NextFrames", m_next_frames_onionskin);
|
||||
set_config_int("Onionskin", "OpacityBase", m_onionskin_opacity_base);
|
||||
set_config_int("Onionskin", "OpacityStep", m_onionskin_opacity_step);
|
||||
|
||||
// delete all tool settings
|
||||
std::map<std::string, IToolSettings*>::iterator it;
|
||||
@ -209,6 +213,16 @@ int UISettingsImpl::getOnionskinNextFrames()
|
||||
return m_next_frames_onionskin;
|
||||
}
|
||||
|
||||
int UISettingsImpl::getOnionskinOpacityBase()
|
||||
{
|
||||
return m_onionskin_opacity_base;
|
||||
}
|
||||
|
||||
int UISettingsImpl::getOnionskinOpacityStep()
|
||||
{
|
||||
return m_onionskin_opacity_step;
|
||||
}
|
||||
|
||||
void UISettingsImpl::setUseOnionskin(bool state)
|
||||
{
|
||||
m_use_onionskin = state;
|
||||
@ -224,6 +238,16 @@ void UISettingsImpl::setOnionskinNextFrames(int frames)
|
||||
m_next_frames_onionskin = frames;
|
||||
}
|
||||
|
||||
void UISettingsImpl::setOnionskinOpacityBase(int base)
|
||||
{
|
||||
m_onionskin_opacity_base = base;
|
||||
}
|
||||
|
||||
void UISettingsImpl::setOnionskinOpacityStep(int step)
|
||||
{
|
||||
m_onionskin_opacity_step = step;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Tools & pen settings
|
||||
|
||||
|
@ -66,10 +66,14 @@ public:
|
||||
bool getUseOnionskin();
|
||||
int getOnionskinPrevFrames();
|
||||
int getOnionskinNextFrames();
|
||||
int getOnionskinOpacityBase();
|
||||
int getOnionskinOpacityStep();
|
||||
|
||||
void setUseOnionskin(bool state);
|
||||
void setOnionskinPrevFrames(int frames);
|
||||
void setOnionskinNextFrames(int frames);
|
||||
void setOnionskinOpacityBase(int base);
|
||||
void setOnionskinOpacityStep(int step);
|
||||
|
||||
// Tools settings
|
||||
|
||||
@ -81,6 +85,8 @@ private:
|
||||
bool m_use_onionskin;
|
||||
int m_prev_frames_onionskin;
|
||||
int m_next_frames_onionskin;
|
||||
int m_onionskin_opacity_base;
|
||||
int m_onionskin_opacity_step;
|
||||
bool m_snapToGrid;
|
||||
bool m_gridVisible;
|
||||
Rect m_gridBounds;
|
||||
|
@ -459,15 +459,18 @@ Image* RenderEngine::renderSprite(Sprite* sprite,
|
||||
{
|
||||
int prevs = settings->getOnionskinPrevFrames();
|
||||
int nexts = settings->getOnionskinNextFrames();
|
||||
int opacity_base = settings->getOnionskinOpacityBase();
|
||||
int opacity_step = settings->getOnionskinOpacityStep();
|
||||
|
||||
for (int f=frame-prevs; f <= frame+nexts; ++f) {
|
||||
if (f == frame)
|
||||
continue;
|
||||
else if (f < frame)
|
||||
global_opacity = 64 + 128 - 128 * (frame - f) / prevs;
|
||||
global_opacity = opacity_base - opacity_step * ((frame - f)-1);
|
||||
else
|
||||
global_opacity = 64 + 128 - 128 * (f - frame) / nexts;
|
||||
global_opacity = opacity_base - opacity_step * ((f - frame)-1);
|
||||
|
||||
if (global_opacity > 0)
|
||||
renderLayer(sprite, sprite->getFolder(), image, source_x, source_y,
|
||||
f, zoom, zoomed_func, false, true);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user