This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/source/blender/compositor/operations/COM_ViewerOperation.h
Brecht Van Lommel 7fed213ba4 Revert "Compositor: Support backdrop offset for the Viewer node"
This reverts commit 33409f9f1c, as it breaks
panning in the image editor.

Fixes T96543
2022-03-19 00:37:30 +01:00

129 lines
2.8 KiB
C++

/* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright 2011 Blender Foundation. */
#pragma once
#include "BKE_global.h"
#include "BLI_rect.h"
#include "COM_MultiThreadedOperation.h"
#include "DNA_image_types.h"
namespace blender::compositor {
class ViewerOperation : public MultiThreadedOperation {
private:
/* TODO(manzanilla): To be removed together with tiled implementation. */
float *output_buffer_;
float *depth_buffer_;
Image *image_;
ImageUser *image_user_;
bool active_;
float center_x_;
float center_y_;
ChunkOrdering chunk_order_;
bool do_depth_buffer_;
ImBuf *ibuf_;
bool use_alpha_input_;
const RenderData *rd_;
const char *view_name_;
const ColorManagedViewSettings *view_settings_;
const ColorManagedDisplaySettings *display_settings_;
SocketReader *image_input_;
SocketReader *alpha_input_;
SocketReader *depth_input_;
int display_width_;
int display_height_;
public:
ViewerOperation();
void init_execution() override;
void deinit_execution() override;
void execute_region(rcti *rect, unsigned int tile_number) override;
void determine_canvas(const rcti &preferred_area, rcti &r_area) override;
bool is_output_operation(bool /*rendering*/) const override
{
if (G.background) {
return false;
}
return is_active_viewer_output();
}
void set_image(Image *image)
{
image_ = image;
}
void set_image_user(ImageUser *image_user)
{
image_user_ = image_user;
}
bool is_active_viewer_output() const override
{
return active_;
}
void set_active(bool active)
{
active_ = active;
}
void setCenterX(float centerX)
{
center_x_ = centerX;
}
void setCenterY(float centerY)
{
center_y_ = centerY;
}
void set_chunk_order(ChunkOrdering tile_order)
{
chunk_order_ = tile_order;
}
float getCenterX() const
{
return center_x_;
}
float getCenterY() const
{
return center_y_;
}
ChunkOrdering get_chunk_order() const
{
return chunk_order_;
}
eCompositorPriority get_render_priority() const override;
void set_use_alpha_input(bool value)
{
use_alpha_input_ = value;
}
void set_render_data(const RenderData *rd)
{
rd_ = rd;
}
void set_view_name(const char *view_name)
{
view_name_ = view_name;
}
void set_view_settings(const ColorManagedViewSettings *view_settings)
{
view_settings_ = view_settings;
}
void set_display_settings(const ColorManagedDisplaySettings *display_settings)
{
display_settings_ = display_settings;
}
void update_memory_buffer_partial(MemoryBuffer *output,
const rcti &area,
Span<MemoryBuffer *> inputs) override;
void clear_display_buffer();
private:
void update_image(const rcti *rect);
void init_image();
};
} // namespace blender::compositor