24 int i_width, i_height, maxval;
26 input = fopen(
ca.file_name,
"rb");
28 G_fatal_error(_(
"Cairo: unable to open input file <%s>"),
ca.file_name);
30 if (fscanf(input,
"P6 %d %d %d", &i_width, &i_height, &maxval) != 3)
33 if (fgetc(input) == EOF)
36 if (i_width !=
ca.width || i_height !=
ca.height)
37 G_fatal_error(_(
"Cairo: input file has incorrect dimensions: "
38 "expected: %dx%d got: %dx%d"),
39 ca.width,
ca.height, i_width, i_height);
41 mask_name[strlen(mask_name) - 2] =
'g';
43 mask = fopen(mask_name,
"rb");
45 G_fatal_error(_(
"Cairo: unable to open input mask file <%s>"),
48 if (fscanf(mask,
"P5 %d %d %d", &i_width, &i_height, &maxval) != 3)
49 G_fatal_error(_(
"Cairo: invalid input mask file <%s>"), mask_name);
51 if (fgetc(mask) == EOF)
52 G_fatal_error(_(
"Cairo: unexpected EOF reading mask <%s>"), mask_name);
54 if (i_width !=
ca.width || i_height !=
ca.height)
55 G_fatal_error(_(
"Cairo: input mask file has incorrect dimensions: "
56 "expected: %dx%d got: %dx%d"),
57 ca.width,
ca.height, i_width, i_height);
61 for (y = 0; y <
ca.height; y++) {
62 unsigned int *row = (
unsigned int *)(
ca.grid + y *
ca.stride);
64 for (
x = 0;
x <
ca.width;
x++) {
75 if (a > 0 && a < 0xFF) {
81 row[
x] = (a << 24) | (
r << 16) | (
g << 8) | (
b << 0);