[Bf-blender-cvs] [0cce6538926] master: Cleanup: Pass double2 by reference.
Jeroen Bakker
noreply at git.blender.org
Fri Jan 27 10:27:57 CET 2023
Commit: 0cce6538926e48b7623d2ae43813aa9cfa20a242
Author: Jeroen Bakker
Date: Fri Jan 27 10:25:39 2023 +0100
Branches: master
https://developer.blender.org/rB0cce6538926e48b7623d2ae43813aa9cfa20a242
Cleanup: Pass double2 by reference.
Just to be sure if compilers aren't inlining the function that at
least the parameter isn't copied.
===================================================================
M source/blender/imbuf/intern/transform.cc
===================================================================
diff --git a/source/blender/imbuf/intern/transform.cc b/source/blender/imbuf/intern/transform.cc
index e3573bab851..0370e29124d 100644
--- a/source/blender/imbuf/intern/transform.cc
+++ b/source/blender/imbuf/intern/transform.cc
@@ -169,7 +169,7 @@ class BaseDiscard {
/**
* \brief Should the source pixel at the given uv coordinate be discarded.
*/
- virtual bool should_discard(const TransformUserData &user_data, const double2 uv) = 0;
+ virtual bool should_discard(const TransformUserData &user_data, const double2 &uv) = 0;
};
/**
@@ -182,7 +182,7 @@ class CropSource : public BaseDiscard {
*
* Uses user_data.src_crop to determine if the uv coordinate should be skipped.
*/
- bool should_discard(const TransformUserData &user_data, const double2 uv) override
+ bool should_discard(const TransformUserData &user_data, const double2 &uv) override
{
return uv.x < user_data.src_crop.xmin || uv.x >= user_data.src_crop.xmax ||
uv.y < user_data.src_crop.ymin || uv.y >= user_data.src_crop.ymax;
@@ -199,7 +199,7 @@ class NoDiscard : public BaseDiscard {
*
* Will never discard any pixels.
*/
- bool should_discard(const TransformUserData & /*user_data*/, const double2 /*uv*/) override
+ bool should_discard(const TransformUserData & /*user_data*/, const double2 & /*uv*/) override
{
return false;
}
@@ -278,7 +278,7 @@ class BaseUVWrapping {
/**
* \brief modify the given uv coordinate.
*/
- double2 modify_uv(const ImBuf *source_buffer, double2 uv)
+ double2 modify_uv(const ImBuf *source_buffer, const double2 &uv)
{
return double2(modify_u(source_buffer, uv.x), modify_v(source_buffer, uv.y));
}
@@ -391,7 +391,7 @@ class Sampler {
static const int ChannelLen = NumChannels;
using SampleType = Pixel<StorageType, NumChannels>;
- void sample(const ImBuf *source, const double2 uv, SampleType &r_sample)
+ void sample(const ImBuf *source, const double2 &uv, SampleType &r_sample)
{
if constexpr (Filter == IMB_FILTER_BILINEAR && std::is_same_v<StorageType, float> &&
NumChannels == 4) {
@@ -431,7 +431,7 @@ class Sampler {
}
else if constexpr (Filter == IMB_FILTER_NEAREST && std::is_same_v<StorageType, float>) {
const double2 wrapped_uv = uv_wrapper.modify_uv(source, uv);
- sample_nearest_float(source, UNPACK2(wrapped_uv), r_sample);
+ sample_nearest_float(source, wrapped_uv, r_sample);
}
else {
/* Unsupported sampler. */
@@ -440,16 +440,13 @@ class Sampler {
}
private:
- void sample_nearest_float(const ImBuf *source,
- const double u,
- const double v,
- SampleType &r_sample)
+ void sample_nearest_float(const ImBuf *source, const double2 &uv, SampleType &r_sample)
{
BLI_STATIC_ASSERT(std::is_same_v<StorageType, float>);
/* ImBuf in must have a valid rect or rect_float, assume this is already checked */
- int x1 = int(u);
- int y1 = int(v);
+ int x1 = int(uv.x);
+ int y1 = int(uv.y);
/* Break when sample outside image is requested. */
if (x1 < 0 || x1 >= source->x || y1 < 0 || y1 >= source->y) {
@@ -621,8 +618,8 @@ class ScanlineProcessor {
sample.clear();
int num_subsamples_added = 0;
- for (double2 delta_uv : user_data->subsampling.delta_uvs) {
- double2 subsample_uv = uv + delta_uv;
+ for (const double2 &delta_uv : user_data->subsampling.delta_uvs) {
+ const double2 subsample_uv = uv + delta_uv;
if (!discarder.should_discard(*user_data, subsample_uv)) {
typename Sampler::SampleType sub_sample;
sampler.sample(user_data->src, subsample_uv, sub_sample);
More information about the Bf-blender-cvs
mailing list