Blender V4.3
COM_MultiThreadedRowOperation.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2021 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
6
7namespace blender::compositor {
8
10 : out(nullptr), out_stride(0), row_end(nullptr), ins(num_inputs), in_strides(num_inputs)
11{
12}
13
14void MultiThreadedRowOperation::update_memory_buffer_partial(MemoryBuffer *output,
15 const rcti &area,
17{
18 BLI_assert(output != nullptr);
19 const int width = BLI_rcti_size_x(&area);
20 PixelCursor p(inputs.size());
21 p.out_stride = output->elem_stride;
22 for (int i = 0; i < p.in_strides.size(); i++) {
23 p.in_strides[i] = inputs[i]->elem_stride;
24 }
25
26 for (int y = area.ymin; y < area.ymax; y++) {
27 p.out = output->get_elem(area.xmin, y);
28 for (int i = 0; i < p.ins.size(); i++) {
29 p.ins[i] = inputs[i]->get_elem(area.xmin, y);
30 }
31 p.row_end = p.out + width * p.out_stride;
33 }
34}
35
36} // namespace blender::compositor
#define BLI_assert(a)
Definition BLI_assert.h:50
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
Definition BLI_rect.h:189
a MemoryBuffer contains access to the data
virtual void update_memory_buffer_row(PixelCursor &p)=0