Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Mon, 7 May 2018 16:02:48 +0000 (18:02 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 7 May 2018 16:02:48 +0000 (18:02 +0200)
29 files changed:
source/blender/alembic/intern/abc_customdata.cc
source/blender/alembic/intern/abc_mesh.cc
source/blender/blenkernel/intern/colortools.c
source/blender/blenkernel/intern/dynamicpaint.c
source/blender/blenkernel/intern/seqmodifier.c
source/blender/blenlib/intern/math_base_inline.c
source/blender/blenlib/intern/math_color.c
source/blender/blenlib/intern/math_color_inline.c
source/blender/collada/MeshImporter.cpp
source/blender/editors/interface/interface_templates.c
source/blender/editors/interface/interface_widgets.c
source/blender/editors/interface/resources.c
source/blender/editors/sculpt_paint/paint_image_2d.c
source/blender/editors/sculpt_paint/paint_image_proj.c
source/blender/editors/space_sequencer/sequencer_scopes.c
source/blender/gpu/intern/gpu_buffers.c
source/blender/imbuf/intern/colormanagement.c
source/blender/imbuf/intern/colormanagement_inline.c
source/blender/imbuf/intern/divers.c
source/blender/imbuf/intern/filter.c
source/blender/imbuf/intern/png.c
source/blender/imbuf/intern/rectop.c
source/blender/imbuf/intern/scaling.c
source/blender/imbuf/intern/tiff.c
source/blender/makesrna/intern/makesrna.c
source/blender/makesrna/intern/rna_ID.c
source/blender/makesrna/intern/rna_image.c
source/blender/modifiers/intern/MOD_particleinstance.c
source/blender/render/intern/source/multires_bake.c

index 3b6c87ea1a0167b6dcd3aa58c33936647de5e618..b98d82f0c7df6d8ed78924bfaf61ebbcfa0185e3 100644 (file)
@@ -362,9 +362,9 @@ static void read_custom_data_mcols(const std::string & iobject_full_name,
                                                  bounds_warning_given);
 
                                const Imath::C3f &color = (*c3f_ptr)[color_index];
-                               cface->a = FTOCHAR(color[0]);
-                               cface->r = FTOCHAR(color[1]);
-                               cface->g = FTOCHAR(color[2]);
+                               cface->a = unit_float_to_uchar_clamp(color[0]);
+                               cface->r = unit_float_to_uchar_clamp(color[1]);
+                               cface->g = unit_float_to_uchar_clamp(color[2]);
                                cface->b = 255;
                        }
                        else {
@@ -375,10 +375,10 @@ static void read_custom_data_mcols(const std::string & iobject_full_name,
                                                  bounds_warning_given);
 
                                const Imath::C4f &color = (*c4f_ptr)[color_index];
-                               cface->a = FTOCHAR(color[0]);
-                               cface->r = FTOCHAR(color[1]);
-                               cface->g = FTOCHAR(color[2]);
-                               cface->b = FTOCHAR(color[3]);
+                               cface->a = unit_float_to_uchar_clamp(color[0]);
+                               cface->r = unit_float_to_uchar_clamp(color[1]);
+                               cface->g = unit_float_to_uchar_clamp(color[2]);
+                               cface->b = unit_float_to_uchar_clamp(color[3]);
                        }
                }
        }
index 52d14f847285dca13d0e2234e85f7f5e90ad2ff5..56fa0a93532f36e74f5b0366d9bf7930e497fd84 100644 (file)
@@ -1325,7 +1325,7 @@ void AbcSubDReader::readObjectData(Main *bmain, const Alembic::Abc::ISampleSelec
                        MEdge *edge = find_edge(edges, mesh->totedge, (*indices)[i], (*indices)[i + 1]);
 
                        if (edge) {
-                               edge->crease = FTOCHAR((*sharpnesses)[s]);
+                               edge->crease = unit_float_to_uchar_clamp((*sharpnesses)[s]);
                        }
                }
 
index e7fa4cee5879fbf904ea985b17872bc7079d3e4f..337d1a1a1497a14a032bc3d8dd8e818c3f947950 100644 (file)
@@ -955,9 +955,9 @@ void curvemapping_evaluate_premulRGB(const CurveMapping *cumap, unsigned char ve
 
        curvemapping_evaluate_premulRGBF(cumap, vecout, vecin);
 
-       vecout_byte[0] = FTOCHAR(vecout[0]);
-       vecout_byte[1] = FTOCHAR(vecout[1]);
-       vecout_byte[2] = FTOCHAR(vecout[2]);
+       vecout_byte[0] = unit_float_to_uchar_clamp(vecout[0]);
+       vecout_byte[1] = unit_float_to_uchar_clamp(vecout[1]);
+       vecout_byte[2] = unit_float_to_uchar_clamp(vecout[2]);
 }
 
 int curvemapping_RGBA_does_something(const CurveMapping *cumap)
index c91d3b32e75b5c07fd57d592c915a4f322860c22..0135abc7edbd53a2bc4578635423d5317ecd5527 100644 (file)
@@ -1810,7 +1810,7 @@ static void dynamic_paint_apply_surface_vpaint_cb(
                }
                /* apply wetness */
                if (mloopcol_wet) {
-                       const char c = FTOCHAR(pPoint[v_index].wetness);
+                       const char c = unit_float_to_uchar_clamp(pPoint[v_index].wetness);
                        mloopcol_wet[l_index].r = c;
                        mloopcol_wet[l_index].g = c;
                        mloopcol_wet[l_index].b = c;
@@ -1840,7 +1840,7 @@ static void dynamic_paint_apply_surface_vpaint_cb(
                                rgb_float_to_uchar((unsigned char *)&mloopcol_preview[l_index].r, c);
                        }
                        else {
-                               const char c = FTOCHAR(pPoint[v_index].wetness);
+                               const char c = unit_float_to_uchar_clamp(pPoint[v_index].wetness);
                                mloopcol_preview[l_index].r = c;
                                mloopcol_preview[l_index].g = c;
                                mloopcol_preview[l_index].b = c;
index e2f74dbab3cf28dc64efbd466e3b6ffbabd7ca34..4a483d439e45f580cc2f6edab99086d3e5b476fc 100644 (file)
@@ -532,7 +532,7 @@ static void brightcontrast_apply_threaded(int width, int height, unsigned char *
                                                v = (float) pixel[c] / 255.0f * (1.0f - t) + v * t;
                                        }
 
-                                       pixel[c] = FTOCHAR(v);
+                                       pixel[c] = unit_float_to_uchar_clamp(v);
                                }
                        }
                        else if (rect_float) {
index 82ed6cd1cd11de303c9cd2e6a9756900284d4cd1..268279f98b198c6726f2b798deffa45a1c605b29 100644 (file)
@@ -514,35 +514,34 @@ MALWAYS_INLINE __m128 _bli_math_blend_sse(const __m128 mask,
 }
 
 /* Low level conversion functions */
-/* TODO: name sensibly. */
-MINLINE unsigned char FTOCHAR(float val)
+MINLINE unsigned char unit_float_to_uchar_clamp(float val)
 {
        return (unsigned char)(((val <= 0.0f) ? 0 : ((val > (1.0f - 0.5f / 255.0f)) ? 255 : ((255.0f * val) + 0.5f))));
 }
-#define FTOCHAR(val) ((CHECK_TYPE_INLINE(val, float)), FTOCHAR(val))
+#define unit_float_to_uchar_clamp(val) ((CHECK_TYPE_INLINE(val, float)), unit_float_to_uchar_clamp(val))
 
-MINLINE unsigned short FTOUSHORT(float val)
+MINLINE unsigned short unit_float_to_ushort_clamp(float val)
 {
        return (unsigned short)((val >= 1.0f - 0.5f / 65535) ? 65535 : (val <= 0.0f) ? 0 : (val * 65535.0f + 0.5f));
 }
-#define FTOUSHORT(val) ((CHECK_TYPE_INLINE(val, float)), FTOUSHORT(val))
+#define unit_float_to_ushort_clamp(val) ((CHECK_TYPE_INLINE(val, float)), unit_float_to_ushort_clamp(val))
 
-MINLINE unsigned char USHORTTOUCHAR(unsigned short val)
+MINLINE unsigned char unit_ushort_to_uchar(unsigned short val)
 {
        return (unsigned char)(((val) >= 65535 - 128) ? 255 : ((val) + 128) >> 8);
 }
-#define USHORTTOUCHAR(val) ((CHECK_TYPE_INLINE(val, unsigned short)), USHORTTOUCHAR(val))
+#define unit_ushort_to_uchar(val) ((CHECK_TYPE_INLINE(val, unsigned short)), unit_ushort_to_uchar(val))
 
-#define F3TOCHAR3(v2, v1) {                                                   \
-               (v1)[0] = FTOCHAR((v2[0]));                                           \
-               (v1)[1] = FTOCHAR((v2[1]));                                           \
-               (v1)[2] = FTOCHAR((v2[2]));                                           \
+#define unit_float_to_uchar_clamp_v3(v1, v2) {                                              \
+       (v1)[0] = unit_float_to_uchar_clamp((v2[0]));                                           \
+       (v1)[1] = unit_float_to_uchar_clamp((v2[1]));                                           \
+       (v1)[2] = unit_float_to_uchar_clamp((v2[2]));                                           \
 } ((void)0)
-#define F4TOCHAR4(v2, v1) {                                                   \
-               (v1)[0] = FTOCHAR((v2[0]));                                           \
-               (v1)[1] = FTOCHAR((v2[1]));                                           \
-               (v1)[2] = FTOCHAR((v2[2]));                                           \
-               (v1)[3] = FTOCHAR((v2[3]));                                           \
+#define unit_float_to_uchar_clamp_v4(v1, v2) {                                              \
+       (v1)[0] = unit_float_to_uchar_clamp((v2[0]));                                           \
+       (v1)[1] = unit_float_to_uchar_clamp((v2[1]));                                           \
+       (v1)[2] = unit_float_to_uchar_clamp((v2[2]));                                           \
+       (v1)[3] = unit_float_to_uchar_clamp((v2[3]));                                           \
 } ((void)0)
 
 #endif  /* __SSE2__ */
index 2a6f28ef6eea1638416e222de4f694c2689bd901..9399646bedf968c402585a1b5a40e55297f9b4ae 100644 (file)
@@ -441,12 +441,12 @@ void rgba_uchar_to_float(float r_col[4], const unsigned char col_ub[4])
 
 void rgb_float_to_uchar(unsigned char r_col[3], const float col_f[3])
 {
-       F3TOCHAR3(col_f, r_col);
+       unit_float_to_uchar_clamp_v3(r_col, col_f);
 }
 
 void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
 {
-       F4TOCHAR4(col_f, r_col);
+       unit_float_to_uchar_clamp_v4(r_col, col_f);
 }
 
 /* ********************************* color transforms ********************************* */
index bc3a1ee3e9085898027b4c62adb1eb17b33db5ba..d8e5d530b256e6afb9ad4ae12e17dca62e530287 100644 (file)
@@ -117,7 +117,7 @@ MINLINE void linearrgb_to_srgb_uchar3(unsigned char srgb[3], const float linear[
        float srgb_f[3];
 
        linearrgb_to_srgb_v3_v3(srgb_f, linear);
-       F3TOCHAR3(srgb_f, srgb);
+       unit_float_to_uchar_clamp_v3(srgb, srgb_f);
 }
 
 MINLINE void linearrgb_to_srgb_uchar4(unsigned char srgb[4], const float linear[4])
@@ -125,7 +125,7 @@ MINLINE void linearrgb_to_srgb_uchar4(unsigned char srgb[4], const float linear[
        float srgb_f[4];
 
        linearrgb_to_srgb_v4(srgb_f, linear);
-       F4TOCHAR4(srgb_f, srgb);
+       unit_float_to_uchar_clamp_v4(srgb, srgb_f);
 }
 
 /* predivide versions to work on associated/pre-multiplied alpha. if this should
@@ -204,7 +204,7 @@ MINLINE void linearrgb_to_srgb_ushort4(unsigned short srgb[4], const float linea
        srgb[0] = to_srgb_table_lookup(linear[0]);
        srgb[1] = to_srgb_table_lookup(linear[1]);
        srgb[2] = to_srgb_table_lookup(linear[2]);
-       srgb[3] = FTOUSHORT(linear[3]);
+       srgb[3] = unit_float_to_ushort_clamp(linear[3]);
 }
 
 MINLINE void srgb_to_linearrgb_uchar4(float linear[4], const unsigned char srgb[4])
@@ -334,9 +334,9 @@ MINLINE void float_to_byte_dither_v3(unsigned char b[3], const float f[3], float
 {
        float dither_value = dither_random_value(s, t) * 0.005f * dither;
 
-       b[0] = FTOCHAR(dither_value + f[0]);
-       b[1] = FTOCHAR(dither_value + f[1]);
-       b[2] = FTOCHAR(dither_value + f[2]);
+       b[0] = unit_float_to_uchar_clamp(dither_value + f[0]);
+       b[1] = unit_float_to_uchar_clamp(dither_value + f[1]);
+       b[2] = unit_float_to_uchar_clamp(dither_value + f[2]);
 }
 
 /**************** Alpha Transformations *****************/
@@ -391,19 +391,19 @@ MINLINE void straight_uchar_to_premul_float(float result[4], const unsigned char
 MINLINE void premul_float_to_straight_uchar(unsigned char *result, const float color[4])
 {
        if (color[3] == 0.0f || color[3] == 1.0f) {
-               result[0] = FTOCHAR(color[0]);
-               result[1] = FTOCHAR(color[1]);
-               result[2] = FTOCHAR(color[2]);
-               result[3] = FTOCHAR(color[3]);
+               result[0] = unit_float_to_uchar_clamp(color[0]);
+               result[1] = unit_float_to_uchar_clamp(color[1]);
+               result[2] = unit_float_to_uchar_clamp(color[2]);
+               result[3] = unit_float_to_uchar_clamp(color[3]);
        }
        else {
                const float alpha_inv = 1.0f / color[3];
 
                /* hopefully this would be optimized */
-               result[0] = FTOCHAR(color[0] * alpha_inv);
-               result[1] = FTOCHAR(color[1] * alpha_inv);
-               result[2] = FTOCHAR(color[2] * alpha_inv);
-               result[3] = FTOCHAR(color[3]);
+               result[0] = unit_float_to_uchar_clamp(color[0] * alpha_inv);
+               result[1] = unit_float_to_uchar_clamp(color[1] * alpha_inv);
+               result[2] = unit_float_to_uchar_clamp(color[2] * alpha_inv);
+               result[3] = unit_float_to_uchar_clamp(color[3]);
        }
 }
 
index 10b9745a6b9423a92c831a16cd23b92155f2faa6..4c6d00a79cb7c5f764a53a57b868a8c2f4560968 100644 (file)
@@ -185,9 +185,9 @@ void VCOLDataWrapper::get_vcol(int v_index, MLoopCol *mloopcol)
                        COLLADAFW::ArrayPrimitiveType<float> *values = mVData->getFloatValues();
                        if (values->empty() || values->getCount() <= (v_index * stride + 2)) return;  // xxx need to create an eror instead
 
-                       mloopcol->r = FTOCHAR((*values)[v_index * stride]);
-                       mloopcol->g = FTOCHAR((*values)[v_index * stride + 1]);
-                       mloopcol->b = FTOCHAR((*values)[v_index * stride + 2]);
+                       mloopcol->r = unit_float_to_uchar_clamp((*values)[v_index * stride]);
+                       mloopcol->g = unit_float_to_uchar_clamp((*values)[v_index * stride + 1]);
+                       mloopcol->b = unit_float_to_uchar_clamp((*values)[v_index * stride + 2]);
                }
                break;
 
@@ -196,9 +196,9 @@ void VCOLDataWrapper::get_vcol(int v_index, MLoopCol *mloopcol)
                        COLLADAFW::ArrayPrimitiveType<double> *values = mVData->getDoubleValues();
                        if (values->empty() || values->getCount() <= (v_index * stride + 2)) return; // xxx need to create an eror instead
 
-                       mloopcol->r = FTOCHAR((*values)[v_index * stride]);
-                       mloopcol->g = FTOCHAR((*values)[v_index * stride + 1]);
-                       mloopcol->b = FTOCHAR((*values)[v_index * stride + 2]);
+                       mloopcol->r = unit_float_to_uchar_clamp((*values)[v_index * stride]);
+                       mloopcol->g = unit_float_to_uchar_clamp((*values)[v_index * stride + 1]);
+                       mloopcol->b = unit_float_to_uchar_clamp((*values)[v_index * stride + 2]);
                }
                break;
                default:
index 9167bc43f4ae4e8142ba885b8a11a4ba457484d4..857ca0a9d96885a88984787dbe757c9a6a0141e3 100644 (file)
@@ -4241,7 +4241,7 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C)
 
        but = uiDefBut(block, UI_BTYPE_ROUNDBOX, 0, "", UI_UNIT_X + 10, 0, UI_UNIT_X + width, UI_UNIT_Y,
                       NULL, 0.0f, 0.0f, 0, 0, "");
-       but->col[0] = but->col[1] = but->col[2] = FTOCHAR(rti->grayscale);
+       but->col[0] = but->col[1] = but->col[2] = unit_float_to_uchar_clamp(rti->grayscale);
        but->col[3] = 255;
 
        UI_block_align_end(block);
index 60f555a61886e875a3b2decea9c0387377a88957..b1cacdc5db6970aa4edd0c6f464d059547b348d3 100644 (file)
@@ -987,7 +987,7 @@ static void shadecolors4(char coltop[4], char coldown[4], const char *color, sho
 
 static void round_box_shade_col4_r(unsigned char r_col[4], const char col1[4], const char col2[4], const float fac)
 {
-       const int faci = FTOCHAR(fac);
+       const int faci = unit_float_to_uchar_clamp(fac);
        const int facm = 255 - faci;
 
        r_col[0] = (faci * col1[0] + facm * col2[0]) / 256;
index 602a88daa14a6fff1b13454d9fefe53d00f9fc69..c78342a0713708d975772aa6203346f6bfd5c13f 100644 (file)
@@ -1549,7 +1549,7 @@ void UI_GetThemeColorBlendShade3ubv(int colorid1, int colorid2, float fac, int o
        blend[1] = offset + floorf((1.0f - fac) * cp1[1] + fac * cp2[1]);
        blend[2] = offset + floorf((1.0f - fac) * cp1[2] + fac * cp2[2]);
 
-       F3TOCHAR3(blend, col);
+       unit_float_to_uchar_clamp_v3(col, blend);
 }
 
 void UI_GetThemeColorShade4ubv(int colorid, int offset, unsigned char col[4])
index 83a5a0d0b1ba6dd2fd3d28c86811e621a6faedfa..c2ce9d8378288eda490ffbd53d2b7c0e5f979e7a 100644 (file)
@@ -433,7 +433,7 @@ static ImBuf *brush_painter_imbuf_new(BrushPainter *painter, int size, float pre
                                unsigned char *dst = (unsigned char *)ibuf->rect + (y * size + x) * 4;
 
                                rgb_float_to_uchar(dst, rgba);
-                               dst[3] = FTOCHAR(rgba[3]);
+                               dst[3] = unit_float_to_uchar_clamp(rgba[3]);
                        }
                }
        }
index cacb75b26689dda3147824d15f75971d4651bed4..8c148dcb313c5c52f24b9537df1143b0c17246db 100644 (file)
 static void partial_redraw_array_init(ImagePaintPartialRedraw *pr);
 
 /* Defines and Structs */
-/* FTOCHAR as inline function */
+/* unit_float_to_uchar_clamp as inline function */
 BLI_INLINE unsigned char f_to_char(const float val)
 {
-       return FTOCHAR(val);
+       return unit_float_to_uchar_clamp(val);
 }
 
 /* ProjectionPaint defines */
@@ -4378,7 +4378,7 @@ static void do_projectpaint_draw(
                float_to_byte_dither_v3(rgba_ub, rgb, dither, u, v);
        }
        else {
-               F3TOCHAR3(rgb, rgba_ub);
+               unit_float_to_uchar_clamp_v3(rgba_ub, rgb);
        }
        rgba_ub[3] = f_to_char(mask);
 
@@ -4582,9 +4582,9 @@ static void *do_projectpaint_thread(void *ph_v)
                                                                float_to_byte_dither_v3(projPixel->newColor.ch, color_f, ps->dither, projPixel->x_px, projPixel->y_px);
                                                        }
                                                        else {
-                                                               F3TOCHAR3(color_f, projPixel->newColor.ch);
+                                                               unit_float_to_uchar_clamp_v3(projPixel->newColor.ch, color_f);
                                                        }
-                                                       projPixel->newColor.ch[3] = FTOCHAR(color_f[3]);
+                                                       projPixel->newColor.ch[3] = unit_float_to_uchar_clamp(color_f[3]);
                                                        IMB_blend_color_byte(projPixel->pixel.ch_pt,  projPixel->origColor.ch_pt,
                                                                             projPixel->newColor.ch, ps->blend);
                                                }
index c5d6edadb53780fd4d69e290404854662934a44b..8c57089f7ab268245ed3619a9fed203a5e4a671b 100644 (file)
@@ -402,10 +402,10 @@ static void draw_zebra_float(ImBuf *src, ImBuf *ibuf, float perc)
                                }
                        }
 
-                       *o++ = FTOCHAR(r);
-                       *o++ = FTOCHAR(g);
-                       *o++ = FTOCHAR(b);
-                       *o++ = FTOCHAR(a);
+                       *o++ = unit_float_to_uchar_clamp(r);
+                       *o++ = unit_float_to_uchar_clamp(g);
+                       *o++ = unit_float_to_uchar_clamp(b);
+                       *o++ = unit_float_to_uchar_clamp(a);
                }
        }
 }
index bbee252cd20481249c79ae4741fcd72da00bcd6f..9d2a0ceef4d31b464ba32040bc5c12d249ff71e6 100644 (file)
@@ -452,7 +452,7 @@ void GPU_pbvh_grid_buffers_update(
                                                                                                 diffuse_color, color_ub);
                                                                }
                                                                else {
-                                                                       F3TOCHAR3(diffuse_color, color_ub);
+                                                                       unit_float_to_uchar_clamp_v3(color_ub, diffuse_color);
                                                                }
                                                                GWN_vertbuf_attr_set(buffers->vert_buf, g_vbo_id.col, vbo_index, color_ub);
                                                        }
@@ -495,7 +495,7 @@ void GPU_pbvh_grid_buffers_update(
                                                                                                      color_ub);
                                                                }
                                                                else {
-                                                                       F3TOCHAR3(diffuse_color, color_ub);
+                                                                       unit_float_to_uchar_clamp_v3(color_ub, diffuse_color);
                                                                }
                                                                GWN_vertbuf_attr_set(buffers->vert_buf, g_vbo_id.col, vbo_index, color_ub);
                                                        }
index b2197ecb3b5a8dea7fa7fa0081034aed950d2b35..7c7c3a7ba45eafd7b7bddce4b566cae7c633d061 100644 (file)
@@ -2870,7 +2870,7 @@ static void partial_buffer_update_rect(ImBuf *ibuf,
                                                display_buffer[display_index] =
                                                        display_buffer[display_index + 1] =
                                                        display_buffer[display_index + 2] =
-                                                       display_buffer[display_index + 3] = FTOCHAR(pixel[0]);
+                                                       display_buffer[display_index + 3] = unit_float_to_uchar_clamp(pixel[0]);
                                        }
                                }
                        }
index 8382e2a9bfa70dba42f8557d6af611215a281029..4a55f8f86ae02f756beeeaaebb4b3551db3fb26a 100644 (file)
@@ -59,7 +59,7 @@ unsigned char IMB_colormanagement_get_luminance_byte(const unsigned char rgb[3])
        rgb_uchar_to_float(rgbf, rgb);
        val = dot_v3v3(imbuf_luma_coefficients, rgbf);
 
-       return FTOCHAR(val);
+       return unit_float_to_uchar_clamp(val);
 }
 
 #endif  /* __IMB_COLORMANAGEMENT_INLINE_H__ */
index 62fd623ecfa24dbb5565f80204618d09bb959e7a..769d53a44ef306bd24be80108aff359eb0c10f77 100644 (file)
@@ -127,15 +127,15 @@ static void clear_dither_context(DitherContext *di)
 
 MINLINE void ushort_to_byte_v4(uchar b[4], const unsigned short us[4])
 {
-       b[0] = USHORTTOUCHAR(us[0]);
-       b[1] = USHORTTOUCHAR(us[1]);
-       b[2] = USHORTTOUCHAR(us[2]);
-       b[3] = USHORTTOUCHAR(us[3]);
+       b[0] = unit_ushort_to_uchar(us[0]);
+       b[1] = unit_ushort_to_uchar(us[1]);
+       b[2] = unit_ushort_to_uchar(us[2]);
+       b[3] = unit_ushort_to_uchar(us[3]);
 }
 
 MINLINE unsigned char ftochar(float value)
 {
-       return FTOCHAR(value);
+       return unit_float_to_uchar_clamp(value);
 }
 
 MINLINE void ushort_to_byte_dither_v4(uchar b[4], const unsigned short us[4], DitherContext *di, float s, float t)
@@ -146,7 +146,7 @@ MINLINE void ushort_to_byte_dither_v4(uchar b[4], const unsigned short us[4], Di
        b[0] = ftochar(dither_value + USHORTTOFLOAT(us[0]));
        b[1] = ftochar(dither_value + USHORTTOFLOAT(us[1]));
        b[2] = ftochar(dither_value + USHORTTOFLOAT(us[2]));
-       b[3] = USHORTTOUCHAR(us[3]);
+       b[3] = unit_ushort_to_uchar(us[3]);
 
 #undef USHORTTOFLOAT
 }
@@ -158,7 +158,7 @@ MINLINE void float_to_byte_dither_v4(uchar b[4], const float f[4], DitherContext
        b[0] = ftochar(dither_value + f[0]);
        b[1] = ftochar(dither_value + f[1]);
        b[2] = ftochar(dither_value + f[2]);
-       b[3] = FTOCHAR(f[3]);
+       b[3] = unit_float_to_uchar_clamp(f[3]);
 }
 
 /* float to byte pixels, output 4-channel RGBA */
@@ -188,7 +188,7 @@ void IMB_buffer_byte_from_float(uchar *rect_to, const float *rect_from,
                        uchar *to = rect_to + ((size_t)stride_to) * y * 4;
 
                        for (x = 0; x < width; x++, from++, to += 4)
-                               to[0] = to[1] = to[2] = to[3] = FTOCHAR(from[0]);
+                               to[0] = to[1] = to[2] = to[3] = unit_float_to_uchar_clamp(from[0]);
                }
                else if (channels_from == 3) {
                        /* RGB input */
@@ -339,7 +339,7 @@ void IMB_buffer_byte_from_float_mask(uchar *rect_to, const float *rect_from,
 
                        for (x = 0; x < width; x++, from++, to += 4)
                                if (*mask++ == FILTER_MASK_USED)
-                                       to[0] = to[1] = to[2] = to[3] = FTOCHAR(from[0]);
+                                       to[0] = to[1] = to[2] = to[3] = unit_float_to_uchar_clamp(from[0]);
                }
                else if (channels_from == 3) {
                        /* RGB input */
index 27711618ceeb5005a671b16d060d58c7723de9b5..93b605b74f636e9ed5fb445e4843f27aa0b3ab86 100644 (file)
@@ -661,9 +661,9 @@ void IMB_unpremultiply_rect(unsigned int *rect, char planes, int w, int h)
                for (y = 0; y < h; y++) {
                        for (x = 0; x < w; x++, cp += 4) {
                                val = cp[3] != 0 ? 1.0f / (float)cp[3] : 1.0f;
-                               cp[0] = FTOCHAR(cp[0] * val);
-                               cp[1] = FTOCHAR(cp[1] * val);
-                               cp[2] = FTOCHAR(cp[2] * val);
+                               cp[0] = unit_float_to_uchar_clamp(cp[0] * val);
+                               cp[1] = unit_float_to_uchar_clamp(cp[1] * val);
+                               cp[2] = unit_float_to_uchar_clamp(cp[2] * val);
                        }
                }
        }
index 29fbe79d8dbe708463d089a5f80ae46f63113f99..8ac206a97ea43401a8b75f82e15a14eba7e1498b 100644 (file)
@@ -124,7 +124,7 @@ static float channel_colormanage_noop(float value)
 /* wrap to avoid macro calling functions multiple times */
 BLI_INLINE unsigned short ftoshort(float val)
 {
-       return FTOUSHORT(val);
+       return unit_float_to_ushort_clamp(val);
 }
 
 int imb_savepng(struct ImBuf *ibuf, const char *name, int flags)
index c4325caac91f0ec780ae3733c386c8ae40275b17..2fe17ee56c610ddd98c796a5dada9a3e96e3e85b 100644 (file)
@@ -841,12 +841,12 @@ void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height,
                unsigned char chr = 0, chg = 0, chb = 0;
                float fr = 0, fg = 0, fb = 0;
 
-               const int alphaint = FTOCHAR(a);
+               const int alphaint = unit_float_to_uchar_clamp(a);
                
                if (a == 1.0f) {
-                       chr = FTOCHAR(col[0]);
-                       chg = FTOCHAR(col[1]);
-                       chb = FTOCHAR(col[2]);
+                       chr = unit_float_to_uchar_clamp(col[0]);
+                       chg = unit_float_to_uchar_clamp(col[1]);
+                       chb = unit_float_to_uchar_clamp(col[2]);
                }
                else {
                        fr = col[0] * a;
index 1c0b47f7942832c9ab823954f1ab32527d1dbb17..4b528160fb7720d2bc653928eea8571a1c94e880 100644 (file)
@@ -324,18 +324,18 @@ MINLINE void straight_uchar_to_premul_ushort(unsigned short result[4], const uns
 MINLINE void premul_ushort_to_straight_uchar(unsigned char *result, const unsigned short color[4])
 {
        if (color[3] <= 255) {
-               result[0] = USHORTTOUCHAR(color[0]);
-               result[1] = USHORTTOUCHAR(color[1]);
-               result[2] = USHORTTOUCHAR(color[2]);
-               result[3] = USHORTTOUCHAR(color[3]);
+               result[0] = unit_ushort_to_uchar(color[0]);
+               result[1] = unit_ushort_to_uchar(color[1]);
+               result[2] = unit_ushort_to_uchar(color[2]);
+               result[3] = unit_ushort_to_uchar(color[3]);
        }
        else {
                unsigned short alpha = color[3] / 256;
 
-               result[0] = USHORTTOUCHAR((ushort)(color[0] / alpha * 256));
-               result[1] = USHORTTOUCHAR((ushort)(color[1] / alpha * 256));
-               result[2] = USHORTTOUCHAR((ushort)(color[2] / alpha * 256));
-               result[3] = USHORTTOUCHAR(color[3]);
+               result[0] = unit_ushort_to_uchar((ushort)(color[0] / alpha * 256));
+               result[1] = unit_ushort_to_uchar((ushort)(color[1] / alpha * 256));
+               result[2] = unit_ushort_to_uchar((ushort)(color[2] / alpha * 256));
+               result[3] = unit_ushort_to_uchar(color[3]);
        }
 }
 
index afd28bb570b0195dfa35f4038be9f4496b3d90ea..a68b2aa966b12ef09dd63a7fd6fdd364f4c49885 100644 (file)
@@ -869,7 +869,7 @@ int imb_savetiff(ImBuf *ibuf, const char *name, int flags)
                                }
 
                                for (i = 0; i < samplesperpixel; i++, to_i++)
-                                       to16[to_i] = FTOUSHORT(rgb[i]);
+                                       to16[to_i] = unit_float_to_ushort_clamp(rgb[i]);
                        }
                        else {
                                for (i = 0; i < samplesperpixel; i++, to_i++, from_i++)
index 40028eec4c842ef5969d6665c8ed8918f9cca677..0b2efe2705993651d0c6a4e9be0e1b034d97d750 100644 (file)
@@ -970,7 +970,7 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr
                                                        fprintf(f, ";\n");
                                                }
                                                else if (rna_color_quantize(prop, dp)) {
-                                                       fprintf(f, "            data->%s[i] = FTOCHAR(values[i]);\n", dp->dnaname);
+                                                       fprintf(f, "            data->%s[i] = unit_float_to_uchar_clamp(values[i]);\n", dp->dnaname);
                                                }
                                                else {
                                                        if (dp->dnatype)
index 8ff46d4d17a4efd4e1ad7efb699a91bf2ebaeb98..27c3cee422cd3527f6e67091942df1a147ab9349 100644 (file)
@@ -679,7 +679,7 @@ static void rna_ImagePreview_pixels_float_set(PointerRNA *ptr, const float *valu
        }
 
        for (i = 0; i < len; i++) {
-               data[i] = FTOCHAR(values[i]);
+               data[i] = unit_float_to_uchar_clamp(values[i]);
        }
        prv_img->flag[size] |= PRV_USER_EDITED;
 }
index 4ed035c4e8697848d9d4300a38d89041abd70454..c554ab8e0fd821da592cdcbc70534822be84ce47 100644 (file)
@@ -396,7 +396,7 @@ static void rna_Image_pixels_set(PointerRNA *ptr, const float *values)
                }
                else {
                        for (i = 0; i < size; i++)
-                               ((unsigned char *)ibuf->rect)[i] = FTOCHAR(values[i]);
+                               ((unsigned char *)ibuf->rect)[i] = unit_float_to_uchar_clamp(values[i]);
                }
 
                ibuf->userflags |= IB_BITMAPDIRTY | IB_DISPLAY_BUFFER_INVALID | IB_MIPMAP_INVALID;
index b93e567fe56c25bb76cf96acb543f1af50938a25..651a5a96676b746ac5a9dde5e7405b7616ab7639 100644 (file)
@@ -197,7 +197,7 @@ static bool particle_skip(ParticleInstanceModifierData *pimd, ParticleSystem *ps
 
 static void store_float_in_vcol(MLoopCol *vcol, float float_value)
 {
-       const uchar value = FTOCHAR(float_value);
+       const uchar value = unit_float_to_uchar_clamp(float_value);
        vcol->r = vcol->g = vcol->b = value;
        vcol->a = 1.0f;
 }
index 9fb7e718b18d01ef315d915c99a32f14906c5bbb..d506028e306b67d72aeb801da58813688e9b05c5 100644 (file)
@@ -784,7 +784,7 @@ static void apply_heights_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm,
        }
        else {
                char *rrgb = (char *)ibuf->rect + pixel * 4;
-               rrgb[0] = rrgb[1] = rrgb[2] = FTOCHAR(len);
+               rrgb[0] = rrgb[1] = rrgb[2] = unit_float_to_uchar_clamp(len);
                rrgb[3] = 255;
        }
 }
@@ -1158,7 +1158,7 @@ static void apply_ao_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm, void
        }
        else {
                unsigned char *rrgb = (unsigned char *) ibuf->rect + pixel * 4;
-               rrgb[0] = rrgb[1] = rrgb[2] = FTOCHAR(value);
+               rrgb[0] = rrgb[1] = rrgb[2] = unit_float_to_uchar_clamp(value);
                rrgb[3] = 255;
        }
 }
@@ -1215,7 +1215,7 @@ static void bake_ibuf_normalize_displacement(ImBuf *ibuf, float *displacement, c
 
                        if (ibuf->rect) {
                                unsigned char *cp = (unsigned char *) (ibuf->rect + i);
-                               cp[0] = cp[1] = cp[2] = FTOCHAR(normalized_displacement);
+                               cp[0] = cp[1] = cp[2] = unit_float_to_uchar_clamp(normalized_displacement);
                                cp[3] = 255;
                        }
                }