1 // Aseprite 2 // Copyright (C) 2018 David Capello 3 // 4 // This program is distributed under the terms of 5 // the End-User License Agreement for Aseprite. 6 7 #ifndef APP_UI_EDITOR_RENDER_H_INCLUDED 8 #define APP_UI_EDITOR_RENDER_H_INCLUDED 9 #pragma once 10 11 #include "doc/blend_mode.h" 12 #include "doc/color.h" 13 #include "doc/frame.h" 14 #include "doc/image_buffer.h" 15 #include "doc/pixel_format.h" 16 #include "gfx/clip.h" 17 #include "gfx/point.h" 18 #include "render/extra_type.h" 19 #include "render/onionskin_options.h" 20 #include "render/projection.h" 21 22 namespace doc { 23 class Cel; 24 class Image; 25 class Layer; 26 class Palette; 27 class Sprite; 28 } 29 30 namespace render { 31 class Render; 32 } 33 34 namespace app { 35 class Doc; 36 37 class EditorRender { 38 public: 39 EditorRender(); 40 ~EditorRender(); 41 42 void setRefLayersVisiblity(const bool visible); 43 void setNonactiveLayersOpacity(const int opacity); 44 45 void setProjection(const render::Projection& projection); 46 47 void setupBackground(Doc* doc, doc::PixelFormat pixelFormat); 48 void setTransparentBackground(); 49 50 void setSelectedLayer(const doc::Layer* layer); 51 52 void setPreviewImage(const doc::Layer* layer, 53 const doc::frame_t frame, 54 const doc::Image* image, 55 const gfx::Point& pos, 56 const doc::BlendMode blendMode); 57 void removePreviewImage(); 58 59 void setExtraImage( 60 render::ExtraType type, 61 const doc::Cel* cel, 62 const doc::Image* image, 63 doc::BlendMode blendMode, 64 const doc::Layer* currentLayer, 65 doc::frame_t currentFrame); 66 void removeExtraImage(); 67 68 void setOnionskin(const render::OnionskinOptions& options); 69 void disableOnionskin(); 70 71 void renderSprite( 72 doc::Image* dstImage, 73 const doc::Sprite* sprite, 74 doc::frame_t frame); 75 void renderSprite( 76 doc::Image* dstImage, 77 const doc::Sprite* sprite, 78 doc::frame_t frame, 79 const gfx::ClipF& area); 80 void renderBackground( 81 doc::Image* image, 82 const gfx::Clip& area); 83 void renderImage( 84 doc::Image* dst_image, 85 const doc::Image* src_image, 86 const doc::Palette* pal, 87 const int x, 88 const int y, 89 const int opacity, 90 const doc::BlendMode blendMode); 91 92 doc::ImageBufferPtr getRenderImageBuffer(); 93 94 private: 95 render::Render* m_render; 96 }; 97 98 } // namespace app 99 100 #endif 101