Render reference layers only in the sprite editor

This commit is contained in:
David Capello 2016-10-26 15:16:22 -03:00
parent 609946c33f
commit bcb775a88b
4 changed files with 24 additions and 1 deletions

View File

@ -173,6 +173,7 @@ protected:
virtual void onPaint(PaintEvent& ev) override {
Graphics* g = ev.graphics();
AppRender& render = m_editor->renderEngine();
render.setRefLayersVisiblity(false);
render.setProjection(render::Projection());
render.disableOnionskin();
render.setBgType(render::BgType::TRANSPARENT);

View File

@ -546,6 +546,7 @@ void Editor::drawOneSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& sprite
// Create a temporary RGB bitmap to draw all to it
rendered.reset(Image::create(IMAGE_RGB, rc.w, rc.h, m_renderBuffer));
m_renderEngine.setRefLayersVisiblity(true);
m_renderEngine.setProjection(m_proj);
m_renderEngine.setupBackground(m_document, rendered->pixelFormat());
m_renderEngine.disableOnionskin();

View File

@ -474,7 +474,8 @@ bool has_visible_reference_layers(const LayerGroup* group)
} // anonymous namespace
Render::Render()
: m_sprite(NULL)
: m_flags(0)
, m_sprite(nullptr)
, m_currentLayer(NULL)
, m_currentFrame(0)
, m_extraType(ExtraType::NONE)
@ -491,6 +492,14 @@ Render::Render()
{
}
void Render::setRefLayersVisiblity(const bool visible)
{
if (visible)
m_flags |= Flags::ShowRefLayers;
else
m_flags &= ~Flags::ShowRefLayers;
}
void Render::setProjection(const Projection& projection)
{
m_proj = projection;
@ -882,6 +891,11 @@ void Render::renderLayer(
(!render_transparent && !layer->isBackground()))
break;
// Ignore reference layers
if (!(m_flags & Flags::ShowRefLayers) &&
layer->isReference())
break;
const Cel* cel = layer->cel(frame);
if (cel) {
Palette* pal = m_sprite->palette(frame);

View File

@ -97,9 +97,15 @@ namespace render {
const double sy);
class Render {
enum Flags {
ShowRefLayers = 1,
};
public:
Render();
void setRefLayersVisiblity(const bool visible);
// Viewport configuration
void setProjection(const Projection& projection);
@ -213,6 +219,7 @@ namespace render {
const PixelFormat srcFormat,
const Layer* layer);
int m_flags;
const Sprite* m_sprite;
const Layer* m_currentLayer;
frame_t m_currentFrame;