GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
Loading...
Searching...
No Matches
main.c
Go to the documentation of this file.
1/****************************************************************************
2 *
3 * MODULE: bitmap
4 * AUTHOR(S): David Gerdes (CERL) (original contributor)
5 * Markus Neteler <neteler itc.it>,
6 * Bernhard Reiter <bernhard intevation.de>,
7 * Brad Douglas <rez touchofmadness.com>,
8 * Glynn Clements <glynn gclements.plus.com>
9 * PURPOSE: provides basic support for the creation and manipulation of
10 * two dimensional bitmap arrays
11 * COPYRIGHT: (C) 1999-2006 by the GRASS Development Team
12 *
13 * This program is free software under the GNU General Public
14 * License (>=v2). Read the file COPYING that comes with GRASS
15 * for details.
16 *
17 *****************************************************************************/
18
19#include <stdio.h>
20#include <stdlib.h>
21#include <grass/bitmap.h>
22
23static int dump_map(struct BM *map);
24
25int main(int argc, char *argv[])
26{
27 int SIZE;
28 struct BM *map, *map2;
29 int i, x, y;
30 int dump;
31 FILE *fp;
32
33 if (argc < 2)
34 SIZE = 11;
35 else
36 SIZE = atoi(argv[1]);
37
38 if (NULL != getenv("NODUMP"))
39 dump = 0;
40 else
41 dump = 1;
42
43 map = BM_create(SIZE, SIZE);
44
45 /* turn on bits in X pattern */
46 for (i = 0; i < SIZE; i++) {
47 BM_set(map, i, i, 1);
48 BM_set(map, (SIZE - 1) - i, i, 1);
49 }
50
51 if (dump)
52 dump_map(map);
53 fprintf(stdout, "Size = %d\n", BM_get_map_size(map));
54
55 fprintf(stdout, "\n\n");
56
57 /* now invert it */
58 for (y = 0; y < SIZE; y++)
59 for (x = 0; x < SIZE; x++)
60 BM_set(map, x, y, !BM_get(map, x, y));
61
62 if (dump)
63 dump_map(map);
64
65 fprintf(stdout, "Size = %d\n", BM_get_map_size(map));
66
67 {
68 fp = fopen("dumpfile", "w");
69 BM_file_write(fp, map);
70 fclose(fp);
71
72 fp = fopen("dumpfile", "r");
73 map2 = BM_file_read(fp);
74 fclose(fp);
75 dump_map(map2);
76 }
77
78 BM_destroy(map);
79 BM_destroy(map2);
80
81 return 0;
82}
83
84static int dump_map(struct BM *map)
85{
86 int x, y;
87
88 for (y = 0; y < map->rows; y++) {
89 for (x = 0; x < map->cols; x++) {
90 fprintf(stdout, "%c", BM_get(map, x, y) ? '#' : '.');
91 }
92 fprintf(stdout, "\n");
93 }
94}
struct BM * BM_create(int x, int y)
Create bitmap of dimension x/y and return structure token.
Definition bitmap.c:58
int BM_set(struct BM *map, int x, int y, int val)
Sets bitmap value to 'val' at location 'x' 'y'.
Definition bitmap.c:185
int BM_file_write(FILE *fp, struct BM *map)
Write bitmap out to file.
Definition bitmap.c:264
size_t BM_get_map_size(struct BM *map)
Returns size in bytes that bitmap is taking up.
Definition bitmap.c:241
int BM_get(struct BM *map, int x, int y)
Gets 'val' from the bitmap.
Definition bitmap.c:217
int BM_destroy(struct BM *map)
Destroy bitmap and free all associated memory.
Definition bitmap.c:89
struct BM * BM_file_read(FILE *fp)
Create map structure and load it from file.
Definition bitmap.c:306
#define NULL
Definition ccmath.h:32
int main(void)
Definition winlocale.c:201
#define x