Blame tests/simple/test-color-op.c

Packit bc1512
/*
Packit bc1512
 * This program is free software; you can redistribute it and/or modify
Packit bc1512
 * it under the terms of the GNU General Public License as published by
Packit bc1512
 * the Free Software Foundation; either version 3 of the License, or
Packit bc1512
 * (at your option) any later version.
Packit bc1512
 *
Packit bc1512
 * This program is distributed in the hope that it will be useful,
Packit bc1512
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bc1512
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bc1512
 * GNU General Public License for more details.
Packit bc1512
 *
Packit bc1512
 * You should have received a copy of the GNU General Public License
Packit bc1512
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
Packit bc1512
 *
Packit bc1512
 * Copyright (C) 2009 Martin Nordholts
Packit bc1512
 */
Packit bc1512
Packit bc1512
#include <string.h>
Packit bc1512
Packit bc1512
#include "gegl.h"
Packit bc1512
Packit bc1512
#define RED      0
Packit bc1512
#define GREEN    1
Packit bc1512
#define BLUE     2
Packit bc1512
Packit bc1512
#define SUCCESS  0
Packit bc1512
#define FAILURE -1
Packit bc1512
Packit bc1512
#define RUNS     3
Packit bc1512
Packit bc1512
Packit bc1512
int main(int argc, char *argv[])
Packit bc1512
{
Packit bc1512
  int           result                    = SUCCESS;
Packit bc1512
  guchar        result_buffer[3]          = { 0, 0, 0 };
Packit bc1512
  int           i                         = 0;
Packit bc1512
  GeglNode     *color                     = NULL;
Packit bc1512
  GeglColor    *colors[RUNS]              = { 0, 0, 0 };
Packit bc1512
  guchar        expected_results[RUNS][3] = { { 255, 0,   0   },
Packit bc1512
                                              { 0,   255, 0   },
Packit bc1512
                                              { 0,   0,   255 } };
Packit bc1512
  GeglRectangle rois[RUNS]                = { { 0,                0,                1, 1 },
Packit bc1512
                                              { G_MININT / 2,     G_MININT / 2,     1, 1 },
Packit bc1512
                                              { G_MAXINT / 2 - 1, G_MAXINT / 2 - 1, 1, 1 } };
Packit bc1512
Packit bc1512
  /* Init */
Packit bc1512
  g_thread_init (NULL);
Packit bc1512
  gegl_init (&argc, &argv);
Packit bc1512
  colors[0] = gegl_color_new ("rgb(1.0, 0.0, 0.0)");
Packit bc1512
  colors[1] = gegl_color_new ("rgb(0.0, 1.0, 0.0)");
Packit bc1512
  colors[2] = gegl_color_new ("rgb(0.0, 0.0, 1.0)");
Packit bc1512
Packit bc1512
  /* Construct graph */
Packit bc1512
  color = gegl_node_new_child (NULL,
Packit bc1512
                               "operation", "gegl:color",
Packit bc1512
                               NULL);
Packit bc1512
Packit bc1512
  /* Run tests */
Packit bc1512
  for (i = 0; i < RUNS; i++)
Packit bc1512
    {
Packit bc1512
      gegl_node_set (color,
Packit bc1512
                     "value", colors[i],
Packit bc1512
                     NULL);
Packit bc1512
      memset (result_buffer, 0, sizeof (result_buffer));
Packit bc1512
      gegl_node_blit (color,
Packit bc1512
                      1.0,
Packit bc1512
                      &rois[i],
Packit bc1512
                      babl_format ("RGB u8"),
Packit bc1512
                      result_buffer,
Packit bc1512
                      GEGL_AUTO_ROWSTRIDE,
Packit bc1512
                      GEGL_BLIT_DEFAULT);
Packit bc1512
      if (!(result_buffer[RED]   == expected_results[i][RED]   &&
Packit bc1512
            result_buffer[GREEN] == expected_results[i][GREEN] &&
Packit bc1512
            result_buffer[BLUE]  == expected_results[i][BLUE]))
Packit bc1512
        {
Packit bc1512
          result = FAILURE;
Packit bc1512
          g_printerr ("Processing #%d of gegl:color failed", i + 1);
Packit bc1512
          break;
Packit bc1512
        }
Packit bc1512
    }
Packit bc1512
Packit bc1512
  /* Cleanup */
Packit bc1512
  g_object_unref (color);
Packit bc1512
  for (i = 0; i < RUNS; i++)
Packit bc1512
    g_object_unref (colors[i]);
Packit bc1512
  gegl_exit ();
Packit bc1512
Packit bc1512
  return result;
Packit bc1512
}