예제 #1
0
void test_dsmooth2_inplace(CuTest* tc) {
    float* img;
    int nx, ny;
    float* smooth1;
    float* smooth2;
    float sigma;
    int bites;
    float eps;

    nx = 20;
    ny = 19;
    sigma = 2.0;
    eps = 1e-6;

    bites = nx * ny * sizeof(float);

    img = random_image(nx, ny);
    smooth1 = calloc(bites, 1);
    smooth2 = calloc(bites, 1);

    dsmooth2(img, nx, ny, sigma, smooth2);

    // test: can we smooth in-place with dsmooth2?
    memcpy(smooth1, img, bites);
	CuAssertIntEquals(tc, 0, compare_images(img, smooth1, nx, ny, 0.0));

    dsmooth2(smooth1, nx, ny, sigma, smooth1);
	CuAssertIntEquals(tc, 0, compare_images(smooth1, smooth2, nx, ny, eps));

    free(img);
    free(smooth1);
    free(smooth2);
}
예제 #2
0
/* Render the image and compare with the master. */
static void score_drawing(struct drawing *drawing,
			  const struct image *master)
{
	struct image *image;

	/* We don't allocate it off the drawing, since we don't need
	 * it inside the shared area. */
	image = image_of_drawing(NULL, drawing, master);
	drawing->score = compare_images(image, master);
	talloc_free(image);
}
예제 #3
0
void test_dsmooth_vs_dsmooth2(CuTest* tc) {
    float* img;
    float* img_orig;
    int nx, ny;
    float* smooth1;
    float* smooth2;
    float sigma;
    int bites;
    float eps;

    nx = 20;
    ny = 19;
    sigma = 2.0;
    eps = 1e-6;

    bites = nx * ny * sizeof(float);

    img = random_image(nx, ny);
    img_orig = calloc(bites, 1);
    memcpy(img_orig, img, bites);

	CuAssertIntEquals(tc, 0, compare_images(img, img_orig, nx, ny, 0.0));

    smooth1 = calloc(bites, 1);
    smooth2 = calloc(bites, 1);

    dsmooth(img, nx, ny, sigma, smooth1);
    // test: don't change the input image
	CuAssertIntEquals(tc, 0, compare_images(img, img_orig, nx, ny, 0.0));
    dsmooth2(img, nx, ny, sigma, smooth2);
    // test: don't change the input image
	CuAssertIntEquals(tc, 0, compare_images(img, img_orig, nx, ny, 0.0));

    // test: dsmooth == dsmooth2
	CuAssertIntEquals(tc, 0, compare_images(smooth1, smooth2, nx, ny, eps));

    free(img);
    free(img_orig);
    free(smooth1);
    free(smooth2);
}
예제 #4
0
/* to move to image_compare.c */
void mutate() {
//  while(1) {
    int random_poly = rand() % numObjects;
    int manipulate = rand() % 3;

    //memcpy(&objects[random_poly], &parent_dna, sizeof(objects[random_poly]));
    parent_dna.v1[0] =  objects[random_poly].v1[0];
    parent_dna.v2[0] =  objects[random_poly].v2[0];
    parent_dna.v3[0] =  objects[random_poly].v3[0];
    parent_dna.v1[1] =  objects[random_poly].v1[1];
    parent_dna.v2[1] =  objects[random_poly].v2[1];
    parent_dna.v3[1] =  objects[random_poly].v3[1];
    parent_dna.color[0] =  objects[random_poly].color[0];
    parent_dna.color[1] =  objects[random_poly].color[1];
    parent_dna.color[2] =  objects[random_poly].color[2];
    parent_dna.color[3] =  objects[random_poly].color[3];

    /* chose random mutation */
    switch(manipulate) {
      case 0: // random color + location
        recolor_poly(random_poly);
        resize_poly(random_poly);
        break;
      case 1: // random color
        recolor_poly(random_poly);
        break;
      case 2: // random location
        resize_poly(random_poly);
        break;
      default:
        break;
    }

    draw();
    system("scrot -u current_out.png"); // screenshot current image temporary until i figure out glgetpixels().
    if (compare_images("current_out.png","mona.png") == 0) {
      //memcpy(&parent_dna, &objects[random_poly], sizeof(parent_dna));
      objects[random_poly].v1[0] = parent_dna.v1[0]; 
      objects[random_poly].v2[0] = parent_dna.v2[0];   
      objects[random_poly].v3[0] = parent_dna.v3[0];   
      objects[random_poly].v1[1] = parent_dna.v1[1];   
      objects[random_poly].v2[1] = parent_dna.v2[1];   
      objects[random_poly].v3[1] = parent_dna.v3[1];   
      objects[random_poly].color[0] = parent_dna.color[0];   
      objects[random_poly].color[1] = parent_dna.color[1];   
      objects[random_poly].color[2] = parent_dna.color[2];   
      objects[random_poly].color[3] = parent_dna.color[3];   
    }
    glutPostRedisplay();
    //draw();
//  }
}
예제 #5
0
파일: renderer.hpp 프로젝트: gischen/mapnik
 unsigned compare(image_type const & actual, boost::filesystem::path const& reference) const
 {
     return compare_images(actual, reference.string());
 }
예제 #6
0
파일: test.c 프로젝트: nabePi/FLIF
int main()
{
    int result = 0;

    const size_t WIDTH = 256;
    const size_t HEIGHT = 256;
    const char* dummy_file = "testFiles/dummy.flif";

    FLIF_IMAGE* im = flif_create_image(WIDTH, HEIGHT);
    if(im == 0)
    {
        printf("Error: flif_create_image failed\n");
        result = 1;
    }
    else
    {
        fill_dummy_image(im);

        void* blob = 0;
        size_t blob_size = 0;

        FLIF_ENCODER* e = flif_create_encoder();
        if(e)
        {
            flif_encoder_set_interlaced(e, 1);
            flif_encoder_set_learn_repeat(e, 3);
            flif_encoder_set_auto_color_buckets(e, 1);
            flif_encoder_set_frame_delay(e, 100);
            flif_encoder_set_palette_size(e, 512);
            flif_encoder_set_lookback(e, 1);

            flif_encoder_add_image(e, im);
            if(!flif_encoder_encode_file(e, dummy_file))
            {
                printf("Error: encoding file failed\n");
                result = 1;
            }

            if(!flif_encoder_encode_memory(e, &blob, &blob_size))
            {
                printf("Error: encoding blob failed\n");
                result = 1;
            }

            // TODO: uncommenting this causes subsequent test to fail???
            /*if(!compare_file_and_blob(blob, blob_size, dummy_file))
            {
                result = 1;
            }*/

            flif_destroy_encoder(e);
            e = 0;
        }

        FLIF_DECODER* d = flif_create_decoder();
        if(d)
        {
            flif_decoder_set_quality(d, 100);
            flif_decoder_set_scale(d, 1);

            {
                if(!flif_decoder_decode_file(d, dummy_file))
                {
                    printf("Error: decoding file failed\n");
                    result = 1;
                }

                FLIF_IMAGE* decoded = flif_decoder_get_image(d, 0);
                if(decoded == 0)
                {
                    printf("Error: No decoded image found\n");
                    result = 1;
                }
                else if(compare_images(im, decoded) != 0)
                {
                    result = 1;
                }
            }

            {
                if(!flif_decoder_decode_memory(d, blob, blob_size))
                {
                    printf("Error: decoding memory failed\n");
                    result = 1;
                }

                FLIF_IMAGE* decoded = flif_decoder_get_image(d, 0);
                if(decoded == 0)
                {
                    printf("Error: No decoded image found\n");
                    result = 1;
                }
                else if(compare_images(im, decoded) != 0)
                {
                    result = 1;
                }
            }

            flif_destroy_decoder(d);
            d = 0;
        }

        flif_destroy_image(im);
        im = 0;

        if(blob)
        {
            flif_free_memory(blob);
            blob = 0;
        }
    }

    printf("interface test has succeeded.\n");

    return result;
}
예제 #7
0
파일: test.c 프로젝트: nawawi/FLIF
int main(int argc, char** argv)
{
    if (argc < 2)
    {
        printf("first argument must be a file path for the test image");
        return 1;
    }

    int result = 0;

    const size_t WIDTH = 256;
    const size_t HEIGHT = 256;
    const char* dummy_file = argv[1];

    FLIF_IMAGE* im = flif_create_image(WIDTH, HEIGHT);
    if(im == 0)
    {
        printf("Error: flif_create_image failed\n");
        result = 1;
    }
    else
    {
        fill_dummy_image(im);

        void* blob = 0;
        size_t blob_size = 0;

        FLIF_ENCODER* e = flif_create_encoder();
        if(e)
        {
            flif_encoder_set_interlaced(e, 1);
            flif_encoder_set_learn_repeat(e, 3);
            flif_encoder_set_auto_color_buckets(e, 1);
            flif_encoder_set_palette_size(e, 512);
            flif_encoder_set_lookback(e, 1);

            flif_encoder_add_image(e, im);
            if(!flif_encoder_encode_file(e, dummy_file))
            {
                printf("Error: encoding file failed\n");
                result = 1;
            }
            flif_destroy_encoder(e);
            e = 0;
        }
        e = flif_create_encoder();
        if(e)
        {
            flif_encoder_set_interlaced(e, 1);
            flif_encoder_set_learn_repeat(e, 3);
            flif_encoder_set_auto_color_buckets(e, 1);
            flif_encoder_set_palette_size(e, 512);
            flif_encoder_set_lookback(e, 1);

            flif_encoder_add_image(e, im);
            if(!flif_encoder_encode_memory(e, &blob, &blob_size))
            {
                printf("Error: encoding blob failed\n");
                result = 1;
            }

            // TODO: uncommenting this causes subsequent test to fail???
            /*if(!compare_file_and_blob(blob, blob_size, dummy_file))
            {
                result = 1;
            }*/

            flif_destroy_encoder(e);
            e = 0;
        }

        FLIF_DECODER* d = flif_create_decoder();
        if(d)
        {
            flif_decoder_set_quality(d, 100);
            flif_decoder_set_scale(d, 1);

            {
                if(!flif_decoder_decode_file(d, dummy_file))
                {
                    printf("Error: decoding file failed\n");
                    result = 1;
                }

                FLIF_IMAGE* decoded = flif_decoder_get_image(d, 0);
                if(decoded == 0)
                {
                    printf("Error: No decoded image found\n");
                    result = 1;
                }
                else if(compare_images(im, decoded) != 0)
                {
                    result = 1;
                }
            }

            {
                if(!flif_decoder_decode_memory(d, blob, blob_size))
                {
                    printf("Error: decoding memory failed\n");
                    result = 1;
                }

                FLIF_IMAGE* decoded = flif_decoder_get_image(d, 0);
                if(decoded == 0)
                {
                    printf("Error: No decoded image found\n");
                    result = 1;
                }
                else if(compare_images(im, decoded) != 0)
                {
                    result = 1;
                }
            }

            flif_destroy_decoder(d);
            d = 0;
        }

        FLIF_INFO* info = flif_read_info_from_memory(blob, blob_size);
        if(info)
        {
            int w = flif_info_get_width(info);
            int h = flif_info_get_height(info);
            int channels = flif_info_get_nb_channels(info);
            int depth = flif_info_get_depth(info);
            int n = flif_info_num_images(info);

            if(w != WIDTH ||
               h != HEIGHT ||
               channels != 4 ||
               depth != 8 ||
               n != 1)
            {
                printf("Error: info should be %dx%d, %d channels, %d bit, %d images.\n"
                       "       Instead it is %dx%d, %d channels, %d bit, %d images.\n",
                       WIDTH, HEIGHT, 4, 8, 1,
                       w, h, channels, depth, n);
                result = 1;
            }

            flif_destroy_info(info);
            info = 0;
        }
        else
        {
            printf("Error: flif_read_info_from_memory failed\n");
            result = 1;
        }

        flif_destroy_image(im);
        im = 0;

        if(blob)
        {
            flif_free_memory(blob);
            blob = 0;
        }
    }

    if (result) printf("interface test has FAILED.\n");
    else printf("interface test has succeeded.\n");

    return result;
}
예제 #8
0
파일: main.c 프로젝트: fengye/swfdec-dumper
int main (int argc, char **argv)
{
  SwfdecPlayer *player;
  SwfdecURL *url;
  yaml_emitter_t emitter;
  yaml_event_t event;
  FILE *output;

  int i;
  const char* directory_prefix = NULL;
  char output_filename_serial[256] = {0};
  unsigned long frame_interval = 0;
  unsigned long accum_interval = 0;
  int frame_count = 1;
  unsigned int override_width = 0;
  unsigned int override_height = 0;
  float override_scale = 1.0f;
  const char* input_filename = NULL;
  const char* output_filename = NULL;
  int base_index = 0;
  cairo_surface_t *surface[2] = {NULL, NULL};
  cairo_t *cr[2] = {NULL, NULL};
  int loop = 0;
  int center_x = -1;
  int center_y = -1;
  
  /* Parse the command line arguments */
  for(i = 1; i < argc; ++i )
  {
    const char* arg = argv[i];
    if ( arg[0] == '-' )
    {
      if ( arg[1] == 'w' )
      {
        override_width = atoi(arg+3);
      }
      else if ( arg[1] == 'h' )
      {
        override_height = atoi(arg+3);
      }
      else if ( arg[1] == 's' )
      {
        override_scale = (float)atof(arg+3);
      }
      else if ( arg[1] == 'f' )
      {
        frame_count = atof(arg+3);
      }
      else if ( arg[1] == 'l' )
      {
        loop = atoi(arg+3);
      }
      else if ( arg[1] == 'd' )
      {
        directory_prefix = arg+3;
      }
      else if ( arg[1] == 'x' )
      {
        center_x = atoi(arg+3);
      }
      else if ( arg[1] == 'y' )
      {
        center_y = atoi(arg+3);
      }
      else
      {
        printf("Unknown option: %s\n", arg);
      }
    }
    else
    {
      if (!input_filename )
      {
        input_filename = arg;
      }
      else
      {
        output_filename = arg;
      }
    }
  }

  if (!input_filename || !output_filename)
  {
    print_usage(argv[0]);
    return 1;
  }

  /* Create the Emitter object. */
  yaml_emitter_initialize(&emitter);

  
  // init
  swfdec_init ();

  url = swfdec_url_new_from_input (input_filename);
  if (!url)
  {
     printf("Input file not found: %s.\n", input_filename);
     return 1;
  }

  /* Set a file output. */
  sprintf(output_filename_serial, "%s.yaml", output_filename);
  output = fopen(output_filename_serial, "wb");
  yaml_emitter_set_output_file(&emitter, output);
  //yaml_emitter_set_output(&emitter, write_handler, output);

  player = swfdec_player_new (NULL);
  swfdec_player_set_url (player, url);

  /* Create and emit the STREAM-START event. */
  yaml_stream_start_event_initialize(&event, YAML_UTF8_ENCODING);
  yaml_emitter_emit(&emitter, &event);
  /* Create document */
  yaml_document_start_event_initialize(&event, NULL, NULL, NULL, 1);
  yaml_emitter_emit(&emitter, &event);
  /* Create mapping */
  yaml_mapping_start_event_initialize(&event, NULL, NULL, 1, YAML_ANY_SCALAR_STYLE);
  yaml_emitter_emit(&emitter, &event);

  yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"type", strlen("type"), 1, 1, YAML_ANY_SCALAR_STYLE);
  yaml_emitter_emit(&emitter, &event);  
  yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"keyframe", strlen("keyframe"), 1, 1, YAML_ANY_SCALAR_STYLE);
  yaml_emitter_emit(&emitter, &event);

  swfdec_player_advance (player, 0);

  if ( override_width == 0 || override_height == 0 )
  {
    swfdec_player_get_default_size(player, &override_width, &override_height);
  }

  /* need to set player size */
  swfdec_player_set_size(player, 
    (unsigned int)override_width * override_scale, 
    (unsigned int)override_height * override_scale);

  {
  char buf[256] = {0};

  yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"defaultframerate", strlen("defaultframerate"), 1, 1, YAML_ANY_SCALAR_STYLE);
  yaml_emitter_emit(&emitter, &event);
  sprintf(buf, "%f", swfdec_player_get_rate(player));  
  yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)buf, strlen(buf), 1, 1, YAML_ANY_SCALAR_STYLE);
  yaml_emitter_emit(&emitter, &event);

  }

  yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"loop", strlen("loop"), 1, 1, YAML_ANY_SCALAR_STYLE);
  yaml_emitter_emit(&emitter, &event);  
  if ( loop )
  {
    yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"true", strlen("true"), 1, 1, YAML_ANY_SCALAR_STYLE);
    yaml_emitter_emit(&emitter, &event);
  }
  else
  {
    yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"false", strlen("false"), 1, 1, YAML_ANY_SCALAR_STYLE);
    yaml_emitter_emit(&emitter, &event);
  }

  if (center_x >= 0 )
  {
    char buf[256] = {0};
    yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"center_point_x", strlen("center_point_x"), 1, 1, YAML_ANY_SCALAR_STYLE); 
    yaml_emitter_emit(&emitter, &event);

    sprintf(buf, "%d", center_x);
    yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)buf, strlen(buf), 1, 1, YAML_ANY_SCALAR_STYLE);
    yaml_emitter_emit(&emitter, &event);
  }
  if (center_y >= 0 )
  {
    char buf[256] = {0};
    yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"center_point_y", strlen("center_point_y"), 1, 1, YAML_ANY_SCALAR_STYLE); 
    yaml_emitter_emit(&emitter, &event);

    sprintf(buf, "%d", center_y);
    yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)buf, strlen(buf), 1, 1, YAML_ANY_SCALAR_STYLE);
    yaml_emitter_emit(&emitter, &event);
  }
  

  printf("Default frame rate: %f\n", swfdec_player_get_rate(player));
  frame_interval = (unsigned long)(1000.0 / swfdec_player_get_rate(player));
  printf("Default frame interval: %ld\n", frame_interval);

  
  yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)"content", strlen("content"), 1, 1, YAML_ANY_SCALAR_STYLE);
  yaml_emitter_emit(&emitter, &event);  

  /* Create mapping */
  yaml_mapping_start_event_initialize(&event, NULL, NULL, 1, YAML_ANY_SCALAR_STYLE);
  yaml_emitter_emit(&emitter, &event);

  for(i = 0; i < frame_count; ++i )
  {
    int new_index = (base_index + 1) % 2;
    surface[new_index] = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 
      (unsigned int)(override_width * override_scale), 
      (unsigned int)(override_height * override_scale));
    cr[new_index] = cairo_create (surface[new_index]);
    // render the image
    swfdec_player_render (player, cr[new_index]);

    frame_interval = swfdec_player_get_next_event(player);
    accum_interval += frame_interval;

    if ( compare_images(surface[base_index], surface[new_index]) <= 5 )
    {
      cairo_destroy (cr[new_index]);
      cairo_surface_destroy (surface[new_index]);
      cr[new_index] = NULL;
      surface[new_index] = NULL;

      if ( frame_interval > 0 )
        swfdec_player_advance (player, frame_interval);
    }
    else
    {

      if ( surface[base_index] && surface[new_index] )
      {
        char buf[256] = {0};
        sprintf(buf, "%f", (double)accum_interval / 1000.0);
        yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)output_filename_serial, strlen(output_filename_serial), 1, 1, YAML_ANY_SCALAR_STYLE);
        yaml_emitter_emit(&emitter, &event);
        yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)buf, strlen(buf), 1, 1, YAML_ANY_SCALAR_STYLE);
        yaml_emitter_emit(&emitter, &event);
        accum_interval = 0;
      }

      cairo_destroy (cr[base_index]);
      cairo_surface_destroy (surface[base_index]);
      cr[base_index] = NULL;
      surface[base_index] = NULL;

      if (directory_prefix)
        sprintf(output_filename_serial, "%s/%s%3.3d.png", directory_prefix, output_filename, i+1);
      else
        sprintf(output_filename_serial, "%s%3.3d.png", output_filename, i+1);

      cairo_surface_write_to_png (surface[new_index], output_filename_serial);
      if ( frame_interval > 0 )
        swfdec_player_advance (player, frame_interval);
      
      base_index = new_index;
    }
  }

  /* the last frame output */
  if ( surface[base_index] )
  {
    char buf[256] = {0};
    sprintf(buf, "%f", (double)accum_interval / 1000.0);
    yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)output_filename_serial, strlen(output_filename_serial), 1, 1, YAML_ANY_SCALAR_STYLE);
    yaml_emitter_emit(&emitter, &event);
    yaml_scalar_event_initialize(&event, NULL, NULL, (yaml_char_t*)buf, strlen(buf), 1, 1, YAML_ANY_SCALAR_STYLE);
    yaml_emitter_emit(&emitter, &event);
    accum_interval = 0;
  }

  cairo_destroy (cr[base_index]);
  cairo_surface_destroy (surface[base_index]);

  g_object_unref (player);
  swfdec_url_free(url);

  /* End mapping */
  yaml_mapping_end_event_initialize(&event);
  yaml_emitter_emit(&emitter, &event);

  /* End mapping */
  yaml_mapping_end_event_initialize(&event);
  yaml_emitter_emit(&emitter, &event);

  /* End of document */
  yaml_stream_end_event_initialize(&event);
  yaml_emitter_emit(&emitter, &event);

  /* Create and emit the STREAM-END event. */
  yaml_stream_end_event_initialize(&event);
  yaml_emitter_emit(&emitter, &event);

  yaml_emitter_flush(&emitter);
  /* Destroy the Emitter object. */
  yaml_emitter_delete(&emitter);

  fclose(output);

  return 0;
}
예제 #9
0
파일: viewer.c 프로젝트: TLeaves/texgenpack
int main(int argc, char **argv) {
	gui_initialize(&argc, &argv);
	gui_create_window_layout();
	gui_draw_window();

	if (argc == 2 && strcmp(argv[1], "--help") == 0) {
		printf("texview -- a texture and image file viewer.\n"
			"Usage: texview <filename1> <filename2>\n"
			"<filename2> is optional.\n");
		exit(1);
	}

	option_quiet = 1;
	current_nu_image_sets = 0;

	if (argc >= 2) {
		source_filename[0] = argv[1];
		source_filetype[0] = determine_filename_type(source_filename[0]);
	
		if (!(source_filetype[0] & FILE_TYPE_TEXTURE_BIT) && !(source_filetype[0] & FILE_TYPE_IMAGE_BIT)) {
			printf("Error -- expected image or texture filename as argument.\n");
			exit(1);
		}
		if (!file_exists(source_filename[0])) {
			printf("Error -- source file %s doesn't exist or is unreadable.\n", source_filename[0]);
			exit(1);
		}
		current_nu_image_sets = 1;
	}

	if (argc >= 3) {
		source_filename[1] = argv[2];
		source_filetype[1] = determine_filename_type(source_filename[1]);

		if (!(source_filetype[1] & FILE_TYPE_TEXTURE_BIT) && !(source_filetype[1] & FILE_TYPE_IMAGE_BIT)) {
			printf("Error -- expected image or texture filename as second argument.\n");
			exit(1);
		}

		if (!file_exists(source_filename[1])) {
			printf("Error -- source file %s doesn't exist or is unreadable.\n", source_filename[1]);
			exit(1);
		}	

		current_nu_image_sets = 2;
	}

	for (int j = 0; j < current_nu_image_sets; j++) {
		current_file_type[j] = source_filetype[j];
		if (source_filetype[j] & FILE_TYPE_TEXTURE_BIT) {
			current_nu_mipmaps[j] = load_texture(source_filename[j], source_filetype[j], 32,
				&current_texture[j][0]);
			for (int i = 0 ; i < current_nu_mipmaps[j]; i++)
				convert_texture_to_image(&current_texture[j][i], &current_image[j][i]);
		}
		else {
			load_image(source_filename[j], source_filetype[j], &current_image[j][0]);
			current_nu_mipmaps[j] = 1;
		}
		if (current_nu_mipmaps[j] > 1)
			printf("Found %d mipmap levels.\n", current_nu_mipmaps[j]);
	}

	current_rmse[0] = -1.0;
	if (current_nu_image_sets > 1)
		current_rmse[0] = compare_images(&current_image[0][0], &current_image[1][0]);

	for (int i = 0; i < current_nu_image_sets; i++) {
		if (!current_image[i][0].is_half_float &&
		current_image[i][0].bits_per_component == 8 &&
		current_image[i][0].nu_components > 2)
			convert_image_set(i);
	}
	gui_zoom_fit_to_window();
	for (int i = 0; i < current_nu_image_sets; i++)
		gui_create_base_surface(i);
	gui_draw_and_show_window();
	gui_run();
}