Blender  V3.3
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
blender::compositor::ScaleOperation Class Referenceabstract

#include <COM_ScaleOperation.h>

Inheritance diagram for blender::compositor::ScaleOperation:
blender::compositor::BaseScaleOperation blender::compositor::MultiThreadedOperation blender::compositor::NodeOperation blender::compositor::ScaleAbsoluteOperation blender::compositor::ScaleRelativeOperation

Public Member Functions

 ScaleOperation ()
 
 ScaleOperation (DataType data_type)
 
void init_data () override
 
void init_execution () override
 
void deinit_execution () override
 
void get_area_of_interest (int input_idx, const rcti &output_area, rcti &r_input_area) override
 Get input operation area being read by this operation on rendering given output area. More...
 
void update_memory_buffer_partial (MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
 
void determine_canvas (const rcti &preferred_area, rcti &r_area) override
 
- Public Member Functions inherited from blender::compositor::BaseScaleOperation
void set_sampler (PixelSampler sampler)
 
void set_variable_size (bool variable_size)
 
void set_scale_canvas_max_size (Size2f size)
 
- Public Member Functions inherited from blender::compositor::NodeOperation
virtual ~NodeOperation ()
 
void set_name (const std::string name)
 
const std::string get_name () const
 
void set_id (const int id)
 
const int get_id () const
 
float get_constant_value_default (float default_value)
 
const floatget_constant_elem_default (const float *default_elem)
 
const NodeOperationFlags get_flags () const
 
std::optional< NodeOperationHashgenerate_hash ()
 
unsigned int get_number_of_input_sockets () const
 
unsigned int get_number_of_output_sockets () const
 
NodeOperationOutputget_output_socket (unsigned int index=0)
 
NodeOperationInputget_input_socket (unsigned int index)
 
NodeOperationget_input_operation (int index)
 
virtual bool is_output_operation (bool) const
 is_output_operation determines whether this operation is an output of the ExecutionSystem during rendering or editing. More...
 
void set_execution_model (const eExecutionModel model)
 
void set_bnodetree (const bNodeTree *tree)
 
void set_execution_system (ExecutionSystem *system)
 
virtual void execute_region (rcti *, unsigned int)
 when a chunk is executed by a CPUDevice, this method is called More...
 
virtual void execute_opencl_region (OpenCLDevice *, rcti *, unsigned int, MemoryBuffer **, MemoryBuffer *)
 when a chunk is executed by an OpenCLDevice, this method is called More...
 
virtual void execute_opencl (OpenCLDevice *, MemoryBuffer *, cl_mem, MemoryBuffer **, std::list< cl_mem > *, std::list< cl_kernel > *)
 custom handle to add new tasks to the OpenCL command queue in order to execute a chunk on an GPUDevice. More...
 
void set_canvas (const rcti &canvas_area)
 
const rctiget_canvas () const
 
void unset_canvas ()
 
virtual bool is_active_viewer_output () const
 is this operation the active viewer output user can select an ViewerNode to be active (the result of this node will be drawn on the backdrop). More...
 
virtual bool determine_depending_area_of_interest (rcti *input, ReadBufferOperation *read_operation, rcti *output)
 
void set_canvas_input_index (unsigned int index)
 set the index of the input socket that will determine the canvas of this operation More...
 
void set_determined_canvas_modifier (std::function< void(rcti &canvas)> fn)
 
virtual eCompositorPriority get_render_priority () const
 get the render priority of this node. More...
 
bool is_braked () const
 
void update_draw ()
 
unsigned int get_width () const
 
unsigned int get_height () const
 
void read_sampled (float result[4], float x, float y, PixelSampler sampler)
 
void read_filtered (float result[4], float x, float y, float dx[2], float dy[2])
 
void read (float result[4], int x, int y, void *chunk_data)
 
virtual voidinitialize_tile_data (rcti *)
 
virtual void deinitialize_tile_data (rcti *, void *)
 
virtual MemoryBufferget_input_memory_buffer (MemoryBuffer **)
 
virtual std::unique_ptr< MetaDataget_meta_data ()
 
void render (MemoryBuffer *output_buf, Span< rcti > areas, Span< MemoryBuffer * > inputs_bufs)
 
virtual void update_memory_buffer (MemoryBuffer *UNUSED(output), const rcti &UNUSED(area), Span< MemoryBuffer * > UNUSED(inputs))
 
void get_area_of_interest (NodeOperation *input_op, const rcti &output_area, rcti &r_input_area)
 

Static Public Member Functions

static float scale_coord (const float coord, const float center, const float relative_scale)
 
static float scale_coord_inverted (const float coord, const float center, const float relative_scale)
 
static void get_scale_offset (const rcti &input_canvas, const rcti &scale_canvas, float &r_scale_offset_x, float &r_scale_offset_y)
 
static void scale_area (rcti &area, float relative_scale_x, float relative_scale_y)
 
static void get_scale_area_of_interest (const rcti &input_canvas, const rcti &scale_canvas, float relative_scale_x, float relative_scale_y, const rcti &output_area, rcti &r_input_area)
 
static void clamp_area_size_max (rcti &area, Size2f max_size)
 

Static Public Attributes

static constexpr float MIN_RELATIVE_SCALE = 0.0001f
 
- Static Public Attributes inherited from blender::compositor::BaseScaleOperation
static constexpr float DEFAULT_MAX_SCALE_CANVAS_SIZE = 12000
 

Protected Member Functions

virtual float get_relative_scale_x_factor (float width)=0
 
virtual float get_relative_scale_y_factor (float height)=0
 
- Protected Member Functions inherited from blender::compositor::BaseScaleOperation
 BaseScaleOperation ()
 
PixelSampler get_effective_sampler (PixelSampler sampler)
 
- Protected Member Functions inherited from blender::compositor::MultiThreadedOperation
 MultiThreadedOperation ()
 
virtual void update_memory_buffer_started (MemoryBuffer *UNUSED(output), const rcti &UNUSED(area), Span< MemoryBuffer * > UNUSED(inputs))
 
virtual void update_memory_buffer_finished (MemoryBuffer *UNUSED(output), const rcti &UNUSED(area), Span< MemoryBuffer * > UNUSED(inputs))
 
- Protected Member Functions inherited from blender::compositor::NodeOperation
 NodeOperation ()
 
virtual void hash_output_params ()
 
template<typename T >
void hash_param (T param)
 
template<typename T1 , typename T2 >
void hash_params (T1 param1, T2 param2)
 
template<typename T1 , typename T2 , typename T3 >
void hash_params (T1 param1, T2 param2, T3 param3)
 
void add_input_socket (DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
 
void add_output_socket (DataType datatype)
 
void set_width (unsigned int width)
 
void set_height (unsigned int height)
 
SocketReaderget_input_socket_reader (unsigned int index)
 
void deinit_mutex ()
 
void init_mutex ()
 
void lock_mutex ()
 
void unlock_mutex ()
 
void set_complex (bool complex)
 set whether this operation is complex More...
 
virtual void execute_pixel_sampled (float[4], float, float, PixelSampler)
 calculate a single pixel More...
 
virtual void execute_pixel (float output[4], int x, int y, void *)
 calculate a single pixel More...
 
virtual void execute_pixel_filtered (float[4], float, float, float[2], float[2])
 calculate a single pixel using an EWA filter More...
 

Protected Attributes

SocketReaderinput_operation_
 
SocketReaderinput_xoperation_
 
SocketReaderinput_yoperation_
 
float canvas_center_x_
 
float canvas_center_y_
 
- Protected Attributes inherited from blender::compositor::BaseScaleOperation
Size2f max_scale_canvas_size_ = {DEFAULT_MAX_SCALE_CANVAS_SIZE, DEFAULT_MAX_SCALE_CANVAS_SIZE}
 
int sampler_
 
bool variable_size_
 
- Protected Attributes inherited from blender::compositor::MultiThreadedOperation
int num_passes_
 
int current_pass_
 
- Protected Attributes inherited from blender::compositor::NodeOperation
eExecutionModel execution_model_
 
rcti canvas_ = COM_AREA_NONE
 
NodeOperationFlags flags_
 
ExecutionSystemexec_system_
 

Static Protected Attributes

static constexpr int IMAGE_INPUT_INDEX = 0
 
static constexpr int X_INPUT_INDEX = 1
 
static constexpr int Y_INPUT_INDEX = 2
 

Additional Inherited Members

- Static Protected Member Functions inherited from blender::compositor::NodeOperation
static void combine_hashes (size_t &combined, size_t other)
 

Detailed Description

Definition at line 40 of file COM_ScaleOperation.h.

Constructor & Destructor Documentation

◆ ScaleOperation() [1/2]

blender::compositor::ScaleOperation::ScaleOperation ( )

Definition at line 31 of file COM_ScaleOperation.cc.

References Color.

◆ ScaleOperation() [2/2]

blender::compositor::ScaleOperation::ScaleOperation ( DataType  data_type)

Member Function Documentation

◆ clamp_area_size_max()

void blender::compositor::ScaleOperation::clamp_area_size_max ( rcti area,
Size2f  max_size 
)
static

◆ deinit_execution()

void blender::compositor::ScaleOperation::deinit_execution ( )
overridevirtual

Reimplemented from blender::compositor::NodeOperation.

Definition at line 112 of file COM_ScaleOperation.cc.

References input_operation_, input_xoperation_, and input_yoperation_.

◆ determine_canvas()

void blender::compositor::ScaleOperation::determine_canvas ( const rcti preferred_area,
rcti r_area 
)
overridevirtual

◆ get_area_of_interest()

void blender::compositor::ScaleOperation::get_area_of_interest ( int  input_idx,
const rcti output_area,
rcti r_input_area 
)
overridevirtual

Get input operation area being read by this operation on rendering given output area.

Implementation don't need to ensure r_input_area is within input operation bounds. The caller must clamp it. TODO: See if it's possible to use parameter overloading (input_id for example).

Parameters
input_idxInput operation index for which we want to calculate the area being read.
output_areaArea being rendered by this operation.
r_input_areaReturned input operation area that needs to be read in order to render given output area.

Reimplemented from blender::compositor::NodeOperation.

Definition at line 150 of file COM_ScaleOperation.cc.

References blender::compositor::expand_area_for_sampler(), blender::compositor::NodeOperation::get_canvas(), blender::compositor::NodeOperation::get_height(), blender::compositor::NodeOperation::get_input_operation(), get_scale_area_of_interest(), blender::compositor::NodeOperation::get_width(), IMAGE_INPUT_INDEX, and blender::compositor::BaseScaleOperation::sampler_.

◆ get_relative_scale_x_factor()

virtual float blender::compositor::ScaleOperation::get_relative_scale_x_factor ( float  width)
protectedpure virtual

◆ get_relative_scale_y_factor()

virtual float blender::compositor::ScaleOperation::get_relative_scale_y_factor ( float  height)
protectedpure virtual

◆ get_scale_area_of_interest()

void blender::compositor::ScaleOperation::get_scale_area_of_interest ( const rcti input_canvas,
const rcti scale_canvas,
float  relative_scale_x,
float  relative_scale_y,
const rcti output_area,
rcti r_input_area 
)
static

◆ get_scale_offset()

void blender::compositor::ScaleOperation::get_scale_offset ( const rcti input_canvas,
const rcti scale_canvas,
float r_scale_offset_x,
float r_scale_offset_y 
)
static

◆ init_data()

void blender::compositor::ScaleOperation::init_data ( )
overridevirtual

Initializes operation data needed after operations are linked and resolutions determined. For rendering heap memory data use init_execution().

Reimplemented from blender::compositor::NodeOperation.

Definition at line 99 of file COM_ScaleOperation.cc.

References blender::compositor::NodeOperation::canvas_, canvas_center_x_, canvas_center_y_, blender::compositor::NodeOperation::get_height(), blender::compositor::NodeOperation::get_width(), rcti::xmin, and rcti::ymin.

◆ init_execution()

void blender::compositor::ScaleOperation::init_execution ( )
overridevirtual

◆ scale_area()

void blender::compositor::ScaleOperation::scale_area ( rcti area,
float  relative_scale_x,
float  relative_scale_y 
)
static

◆ scale_coord()

static float blender::compositor::ScaleOperation::scale_coord ( const float  coord,
const float  center,
const float  relative_scale 
)
inlinestatic

Definition at line 59 of file COM_ScaleOperation.h.

References center, MAX2, and MIN_RELATIVE_SCALE.

Referenced by scale_area().

◆ scale_coord_inverted()

static float blender::compositor::ScaleOperation::scale_coord_inverted ( const float  coord,
const float  center,
const float  relative_scale 
)
inlinestatic

Definition at line 64 of file COM_ScaleOperation.h.

References center, MAX2, and MIN_RELATIVE_SCALE.

Referenced by get_scale_area_of_interest(), and update_memory_buffer_partial().

◆ update_memory_buffer_partial()

void blender::compositor::ScaleOperation::update_memory_buffer_partial ( MemoryBuffer output,
const rcti area,
Span< MemoryBuffer * >  inputs 
)
overridevirtual

Member Data Documentation

◆ canvas_center_x_

float blender::compositor::ScaleOperation::canvas_center_x_
protected

◆ canvas_center_y_

float blender::compositor::ScaleOperation::canvas_center_y_
protected

◆ IMAGE_INPUT_INDEX

constexpr int blender::compositor::ScaleOperation::IMAGE_INPUT_INDEX = 0
staticconstexprprotected

◆ input_operation_

SocketReader* blender::compositor::ScaleOperation::input_operation_
protected

◆ input_xoperation_

SocketReader* blender::compositor::ScaleOperation::input_xoperation_
protected

◆ input_yoperation_

SocketReader* blender::compositor::ScaleOperation::input_yoperation_
protected

◆ MIN_RELATIVE_SCALE

constexpr float blender::compositor::ScaleOperation::MIN_RELATIVE_SCALE = 0.0001f
staticconstexpr

Definition at line 42 of file COM_ScaleOperation.h.

Referenced by scale_coord(), and scale_coord_inverted().

◆ X_INPUT_INDEX

constexpr int blender::compositor::ScaleOperation::X_INPUT_INDEX = 1
staticconstexprprotected

Definition at line 46 of file COM_ScaleOperation.h.

Referenced by determine_canvas(), and update_memory_buffer_partial().

◆ Y_INPUT_INDEX

constexpr int blender::compositor::ScaleOperation::Y_INPUT_INDEX = 2
staticconstexprprotected

Definition at line 47 of file COM_ScaleOperation.h.

Referenced by determine_canvas(), and update_memory_buffer_partial().


The documentation for this class was generated from the following files: