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)
35 if (i_width !=
ca.width || i_height !=
ca.height)
36 G_fatal_error(_(
"Cairo: input file has incorrect dimensions: "
37 "expected: %dx%d got: %dx%d"),
38 ca.width,
ca.height, i_width, i_height);
40 mask_name[strlen(mask_name) - 2] =
'g';
42 mask = fopen(mask_name,
"rb");
44 G_fatal_error(_(
"Cairo: unable to open input mask file <%s>"),
47 if (fscanf(mask,
"P5 %d %d %d", &i_width, &i_height, &maxval) != 3)
48 G_fatal_error(_(
"Cairo: invalid input mask file <%s>"), mask_name);
52 if (i_width !=
ca.width || i_height !=
ca.height)
53 G_fatal_error(_(
"Cairo: input mask file has incorrect dimensions: "
54 "expected: %dx%d got: %dx%d"),
55 ca.width,
ca.height, i_width, i_height);
59 for (y = 0; y <
ca.height; y++) {
60 unsigned int *row = (
unsigned int *)(
ca.grid + y *
ca.stride);
62 for (
x = 0;
x <
ca.width;
x++) {
73 if (a > 0 && a < 0xFF) {
79 row[
x] = (a << 24) | (
r << 16) | (
g << 8) | (
b << 0);