21#include <grass/glocale.h>
24static unsigned int get_2(
const unsigned char **q)
26 const unsigned char *p = *q;
27 unsigned int n = (p[0] << 0) | (p[1] << 8);
33static unsigned int get_4(
const unsigned char **q)
35 const unsigned char *p = *q;
36 unsigned int n = (p[0] << 0) | (p[1] << 8) | (p[2] << 16) | (p[3] << 24);
42static int read_bmp_header(
const unsigned char *p)
60 if (get_4(&p) != (
unsigned int)
ca.width)
62 if (get_4(&p) != (
unsigned int)-
ca.height)
71 if (get_4(&p) != (
unsigned int)
ca.width *
ca.height * 4)
87 input = fopen(
ca.file_name,
"rb");
89 G_fatal_error(_(
"Cairo: unable to open input file <%s>"),
ca.file_name);
91 if (fread(header,
sizeof(header), 1, input) != 1)
94 if (!read_bmp_header(header))
97 if (fread(
ca.grid,
ca.stride,
ca.height, input) !=
98 (
unsigned int)
ca.height) {
101 "unexpected end of file"),
103 else if (ferror(input))
105 ca.file_name, strerror(errno));
void cairo_read_bmp(void)
GRASS cairo display driver - header file.
void G_fatal_error(const char *msg,...)
Print a fatal error message to stderr.