GRASS GIS 8 Programmer's Manual 8.4.1(2025)-45ca3179ab
Loading...
Searching...
No Matches
smain.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <stdlib.h>
3#include <grass/bitmap.h>
4
5static int dump_map(struct BM *map);
6
7int main(int argc, char *argv[])
8{
9 int SIZE;
10 struct BM *map, *map2;
11 int i, x, y;
12 int dump;
13 FILE *fp;
14
15 if (argc < 2)
16 SIZE = 11;
17 else
18 SIZE = atoi(argv[1]);
19
20 if (NULL == getenv("NODUMP"))
21 dump = 1;
22 else
23 dump = 0;
24
25 map = BM_create_sparse(SIZE, SIZE);
26
27 /* turn on bits in X pattern */
28 for (i = 0; i < SIZE; i++) {
29 BM_set(map, i, i, 1);
30 BM_set(map, (SIZE - 1) - i, i, 1);
31 }
32
33 if (dump)
34 dump_map(map);
35
36 fprintf(stdout, "Size = %d\n", BM_get_map_size(map));
37
38 /*
39 BM_dump_map_sparse (map);
40 */
41
42 fprintf(stdout, "\n\n");
43 /* now invert it */
44 for (y = 0; y < SIZE; y++)
45 for (x = 0; x < SIZE; x++) {
46 BM_set(map, x, y, !BM_get(map, x, y));
47#ifdef FOO
48 /*DEBUG*/ if (y == 0)
49 /*DEBUG*/ BM_dump_map_row_sparse(map, y);
50#endif
51 }
52
53 if (dump)
54 dump_map(map);
55
56 fprintf(stdout, "Size = %d\n", BM_get_map_size(map));
57 /*
58 fprintf (stdout, "\n\n");
59 BM_dump_map_sparse (map);
60 */
61 {
62 fp = fopen("dumpfile", "w");
63 if (0 > BM_file_write(fp, map)) {
64 fprintf(stderr, "File_write failed\n");
65 goto nowrite;
66 }
67 fclose(fp);
68
69 fp = fopen("dumpfile", "r");
70 map2 = BM_file_read(fp);
71 fclose(fp);
72 dump_map(map2);
73 }
74
75 BM_destroy(map2);
76nowrite:
77
78 BM_destroy(map);
79
80 return 0;
81}
82
83static int dump_map(struct BM *map)
84{
85 int x, y;
86
87 for (y = 0; y < map->rows; y++) {
88 for (x = 0; x < map->cols; x++) {
89 fprintf(stdout, "%c", BM_get(map, x, y) ? '#' : '.');
90 }
91 fprintf(stdout, "\n");
92 }
93}
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
struct BM * BM_create_sparse(int x, int y)
Create a sparse bitmap of dimension 'x'/'y'.
Definition sparse.c:42
int BM_dump_map_row_sparse(struct BM *map, int y)
Debugging code to dump out structure of links for single row.
Definition sparse.c:323
int main(void)
Definition winlocale.c:201
#define x