20 output_buffer_ =
nullptr;
22 view_settings_ =
nullptr;
23 display_settings_ =
nullptr;
24 use_alpha_input_ =
false;
44 output_buffer_ =
nullptr;
49 int scene_render_width, scene_render_height;
52 rcti local_preferred = preferred_area;
53 local_preferred.
xmax = local_preferred.
xmin + scene_render_width;
54 local_preferred.
ymax = local_preferred.
ymin + scene_render_height;
59void ViewerOperation::init_image()
89 if (ibuf->
x > 0 && ibuf->
y > 0) {
107void ViewerOperation::update_image(
const rcti *rect)
115 float *buffer = output_buffer_;
148 if (!output_buffer_) {
155 output_buffer.
copy_from(input_image, area);
156 if (use_alpha_input_) {
172 const std::unique_ptr<MetaData> meta_data =
175 if (meta_data && meta_data->is_data) {
176 image_->
flag &= ~IMA_VIEW_AS_RENDER;
195 if (output_buffer_ ==
nullptr) {
201 memset(output_buffer_, 0, buf_bytes);
204 update_image(&display_area);
ImBuf * BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
void BKE_image_ensure_viewer_views(const RenderData *rd, Image *ima, ImageUser *iuser)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
void BKE_image_partial_update_mark_full_update(Image *image)
Mark the whole image to be updated.
void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height)
bool BKE_scene_multiview_is_render_view_first(const RenderData *rd, const char *viewname)
int BKE_scene_multiview_view_id_get(const RenderData *rd, const char *viewname)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
void BLI_thread_unlock(int type)
void BLI_thread_lock(int type)
void IMB_partial_display_buffer_update(ImBuf *ibuf, const float *linear_buffer, const unsigned char *byte_buffer, int stride, int offset_x, int offset_y, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, int xmin, int ymin, int xmax, int ymax)
void imb_freerectImBuf(ImBuf *ibuf)
void imb_freerectfloatImBuf(ImBuf *ibuf)
bool imb_addrectfloatImBuf(ImBuf *ibuf, const unsigned int channels, bool initialize_pixels=true)
Contains defines and structs used throughout the imbuf module.
@ IB_DISPLAY_BUFFER_INVALID
a MemoryBuffer contains access to the data
void copy_from(const MemoryBuffer *src, const rcti &area)
unsigned int get_height() const
virtual std::unique_ptr< MetaData > get_meta_data()
unsigned int get_width() const
NodeOperationFlags flags_
ExecutionSystem * exec_system_
NodeOperationInput * get_input_socket(unsigned int index)
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
virtual void determine_canvas(const rcti &preferred_area, rcti &r_area)
void set_image_user(ImageUser *image_user)
void deinit_execution() override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
eCompositorPriority get_render_priority() const override
get the render priority of this node.
bool is_active_viewer_output() const override
is this operation the active viewer output user can select an ViewerNode to be active (the result of ...
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
void set_image(Image *image)
void clear_display_buffer()
void init_execution() override
void update_memory_buffer_finished(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
draw_view in_light_buf[] float
eCompositorPriority
Possible priority settings.
constexpr int COM_DATA_TYPE_VALUE_CHANNELS
constexpr int COM_DATA_TYPE_COLOR_CHANNELS
ImBufFloatBuffer float_buffer