Added ISettings::getOnionskinOpacityBase/Step() methods.

This commit is contained in:
David Capello 2010-07-16 18:46:19 -03:00
parent 65d1ab6865
commit 1ca29538c0
4 changed files with 42 additions and 5 deletions

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -459,17 +459,20 @@ 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;
renderLayer(sprite, sprite->getFolder(), image, source_x, source_y,
f, zoom, zoomed_func, false, true);
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);
}
}