opengl colorspace + BT2020
[goodguy/history.git] / cinelerra-5.1 / plugins / interpolate / aggregated.h
index 42eb6c4c51aab54e61efcbe79191256e3b25c70a..383a436e9c10083117455211e7988adbe1e1ac61 100644 (file)
@@ -2,21 +2,21 @@
 /*
  * CINELERRA
  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
+ *
  */
 
 #ifndef INTERPOLATE_AGGREGATED
@@ -24,7 +24,7 @@
 
 // Interpolation sections performed by other plugins
 
-static const char *interpolate_shader = 
+static const char *interpolate_shader =
 "uniform sampler2D tex;\n"
 "uniform vec2 pattern_offset;\n"
 "uniform vec2 pattern_size;\n"
@@ -38,10 +38,8 @@ static const char *interpolate_shader =
 "      vec3 result;\n"
 "      pattern_coord -= pattern_offset;\n"
 "      pattern_coord = fract(pattern_coord / pattern_size);\n"
-"      if(pattern_coord.x >= 0.5)\n"
-"      {\n"
-"              if(pattern_coord.y >= 0.5)\n"
-"              {\n"
+"      if(pattern_coord.x >= 0.5) {\n"
+"              if(pattern_coord.y >= 0.5) {\n"
 /* Bottom right of pattern */
 /* Bottom right pixels are: */
 /*    2    */
@@ -52,13 +50,12 @@ static const char *interpolate_shader =
 "                      vec2 pixel3 = pixel_coord + vec2(pixel_size.x, 0.0);\n"
 "                      vec2 pixel4 = pixel_coord + vec2(0.0, pixel_size.y);\n"
 "                      result = vec3((texture2D(tex, pixel1).r + \n"
-"                                                              texture2D(tex, pixel3).r) / 2.0, \n"
-"                                                      texture2D(tex, pixel_coord).g, \n"
-"                                                      (texture2D(tex, pixel2).b + \n"
-"                                                              texture2D(tex, pixel4).b) / 2.0);\n"
+"                                      texture2D(tex, pixel3).r) / 2.0, \n"
+"                                      texture2D(tex, pixel_coord).g, \n"
+"                                      (texture2D(tex, pixel2).b + \n"
+"                                      texture2D(tex, pixel4).b) / 2.0);\n"
 "              }\n"
-"              else\n"
-"              {\n"
+"              else {\n"
 /* Top right of pattern */
 /* Top right pixels are: */
 /*   123   */
@@ -73,20 +70,18 @@ static const char *interpolate_shader =
 "                      vec2 pixel7 = pixel_coord + vec2(0.0, pixel_size.y);\n"
 "                      vec2 pixel8 = pixel_coord + pixel_size;\n"
 "                      result = vec3((texture2D(tex, pixel1).r + \n"
-"                                                              texture2D(tex, pixel3).r + \n"
-"                                                              texture2D(tex, pixel6).r + \n"
-"                                                              texture2D(tex, pixel8).r) / 4.0, \n"
-"                                                      (texture2D(tex, pixel4).g + \n"
-"                                                              texture2D(tex, pixel2).g + \n"
-"                                                              texture2D(tex, pixel5).g + \n"
-"                                                              texture2D(tex, pixel7).g) / 4.0, \n"
-"                                                      texture2D(tex, pixel_coord).b);\n"
+"                                      texture2D(tex, pixel3).r + \n"
+"                                      texture2D(tex, pixel6).r + \n"
+"                                      texture2D(tex, pixel8).r) / 4.0, \n"
+"                                    (texture2D(tex, pixel4).g + \n"
+"                                      texture2D(tex, pixel2).g + \n"
+"                                      texture2D(tex, pixel5).g + \n"
+"                                      texture2D(tex, pixel7).g) / 4.0, \n"
+"                                    texture2D(tex, pixel_coord).b);\n"
 "              }\n"
 "      }\n"
-"      else\n"
-"      {\n"
-"              if(pattern_coord.y >= 0.5)\n"
-"              {\n"
+"      else {\n"
+"              if(pattern_coord.y >= 0.5) {\n"
 /* Bottom left of pattern */
 /* Bottom left pixels are: */
 /*   123   */
@@ -100,19 +95,17 @@ static const char *interpolate_shader =
 "                      vec2 pixel6 = pixel_coord + vec2(-pixel_size.x, pixel_size.y);\n"
 "                      vec2 pixel7 = pixel_coord + vec2(0.0, pixel_size.y);\n"
 "                      vec2 pixel8 = pixel_coord + pixel_size;\n"
-"                      result = vec3(\n"
-"                                                      texture2D(tex, pixel_coord).r, \n"
-"                                                      (texture2D(tex, pixel4).g + \n"
-"                                                              texture2D(tex, pixel2).g + \n"
-"                                                              texture2D(tex, pixel5).g + \n"
-"                                                              texture2D(tex, pixel7).g) / 4.0, \n"
-"                                                      (texture2D(tex, pixel1).b + \n"
-"                                                              texture2D(tex, pixel3).b + \n"
-"                                                              texture2D(tex, pixel6).b + \n"
-"                                                              texture2D(tex, pixel8).b) / 4.0);\n"
+"                      result = vec3(texture2D(tex, pixel_coord).r, \n"
+"                                    (texture2D(tex, pixel4).g + \n"
+"                                      texture2D(tex, pixel2).g + \n"
+"                                      texture2D(tex, pixel5).g + \n"
+"                                      texture2D(tex, pixel7).g) / 4.0, \n"
+"                                     (texture2D(tex, pixel1).b + \n"
+"                                      texture2D(tex, pixel3).b + \n"
+"                                      texture2D(tex, pixel6).b + \n"
+"                                     texture2D(tex, pixel8).b) / 4.0);\n"
 "              }\n"
-"              else\n"
-"              {\n"
+"              else {\n"
 /* Top left of pattern */
 /* Top left pixels are: */
 /*    2    */
@@ -122,27 +115,23 @@ static const char *interpolate_shader =
 "                      vec2 pixel2 = pixel_coord - vec2(0.0, pixel_size.y);\n"
 "                      vec2 pixel3 = pixel_coord + vec2(pixel_size.x, 0.0);\n"
 "                      vec2 pixel4 = pixel_coord + vec2(0.0, pixel_size.y);\n"
-"                      result = vec3(\n"
-"                                                      (texture2D(tex, pixel2).r + \n"
-"                                                              texture2D(tex, pixel4).r) / 2.0, \n"
-"                                                      texture2D(tex, pixel_coord).g, \n"
-"                                                      (texture2D(tex, pixel1).b + \n"
-"                                                              texture2D(tex, pixel3).b) / 2.0);\n"
+"                      result = vec3((texture2D(tex, pixel2).r + \n"
+"                                      texture2D(tex, pixel4).r) / 2.0, \n"
+"                                      texture2D(tex, pixel_coord).g, \n"
+"                                    (texture2D(tex, pixel1).b + \n"
+"                                      texture2D(tex, pixel3).b) / 2.0);\n"
 "              }\n"
 "      }\n"
 "\n"
-"\n"
 "      gl_FragColor = vec4(result * color_matrix, 1.0);\n"
 "}\n";
 
 
-#define INTERPOLATE_COMPILE(shader_stack, current_shader) \
-{ \
+#define INTERPOLATE_COMPILE(shader_stack, current_shader) do { \
        shader_stack[current_shader++] = interpolate_shader; \
-}
+} while(0)
 
-#define INTERPOLATE_UNIFORMS(frag) \
-{ \
+#define INTERPOLATE_UNIFORMS(frag) do { \
        int x_offset = get_output()->get_params()->get("INTERPOLATEPIXELS_X", (int)0); \
        int y_offset = get_output()->get_params()->get("INTERPOLATEPIXELS_Y", (int)0); \
        float color_matrix[9]; \
@@ -151,21 +140,12 @@ static const char *interpolate_shader =
        char string[BCTEXTLEN]; \
        string[0] = 0; \
        get_output()->get_params()->get("DCRAW_MATRIX", string); \
-       sscanf(string,  \
-               "%f %f %f %f %f %f %f %f %f",  \
-               &color_matrix[0], \
-               &color_matrix[1], \
-               &color_matrix[2], \
-               &color_matrix[3], \
-               &color_matrix[4], \
-               &color_matrix[5], \
-               &color_matrix[6], \
-               &color_matrix[7], \
-               &color_matrix[8]); \
+       sscanf(string, "%f %f %f %f %f %f %f %f %f",  \
+               &color_matrix[0], &color_matrix[1], &color_matrix[2], \
+               &color_matrix[3], &color_matrix[4], &color_matrix[5], \
+               &color_matrix[6], &color_matrix[7], &color_matrix[8]); \
        glUniformMatrix3fv(glGetUniformLocation(frag, "color_matrix"),  \
-               1, \
-               0, \
-               color_matrix); \
+               1, 0, color_matrix); \
        glUniform2f(glGetUniformLocation(frag, "pattern_offset"),  \
                (float)x_offset / get_output()->get_texture_w(), \
                (float)y_offset / get_output()->get_texture_h()); \
@@ -175,7 +155,7 @@ static const char *interpolate_shader =
        glUniform2f(glGetUniformLocation(frag, "pixel_size"),  \
                1.0 / get_output()->get_texture_w(), \
                1.0 / get_output()->get_texture_h()); \
-}
+} while(0)
 
 
 #endif