annotate main.c @ 5:3d6399799527

add maze generator link
author Dennis <denniscmartin@protonmail.com>
date Sun, 16 Oct 2022 16:51:53 +0200
parents 64d0988b0911
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
1 #include "algo.h"
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
2
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
3 int main(int argc, char* argv[]) {
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
4 char* unsolvedFilename;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
5 char* solvedFilename;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
6 int phases;
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
7 unsigned int width, height;
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
8
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
9 clock_t start, end;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
10 double cpuTimeUsed;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
11
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
12 FILE* unsolvedFp;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
13 png_structp unsolvedPngStruct;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
14 png_infop unsolvedPngInfo;
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
15 png_byte colorType;
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
16 png_byte bitDepth;
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
17 png_bytep* pRows;
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
18
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
19 FILE* solvedFp;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
20 png_structp solvedPngStruct;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
21 png_infop solvedPngInfo;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
22
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
23 start = clock();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
24
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
25 if (argc < 2) {
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
26 printf("Incorrect arguments\n");
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
27 abort();
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
28 }
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
29
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
30 // Get user arguments
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
31 unsolvedFilename = argv[1];
0
41a299d2b278 first commit
Dennis <denniscmartin@protonmail.com>
parents:
diff changeset
32
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
33 /*
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
34 * READ FILE
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
35 */
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
36
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
37 // Add path to unsolvedFilename
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
38 asprintf(&unsolvedFilename, "mazes/%s", unsolvedFilename);
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
39
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
40 // Open file
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
41 unsolvedFp = fopen(unsolvedFilename, "rb");
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
42
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
43 if (!unsolvedFp) {
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
44 printf("Error opening image named %s\n", unsolvedFilename);
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
45 abort();
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
46 }
0
41a299d2b278 first commit
Dennis <denniscmartin@protonmail.com>
parents:
diff changeset
47
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
48 // Allocate and initialize a unsolvedPngStruct for reading PNG file
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
49 unsolvedPngStruct = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
50
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
51 if (!unsolvedPngStruct) {
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
52 printf("png_create_read_struct failed\n");
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
53 abort();
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
54 }
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
55
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
56 // Allocate and initialize a unsolvedPngInfo structure
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
57 unsolvedPngInfo = png_create_info_struct(unsolvedPngStruct);
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
58
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
59 if (!unsolvedPngInfo) {
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
60 printf("png_create_info_struct failed\n");
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
61 abort();
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
62 }
0
41a299d2b278 first commit
Dennis <denniscmartin@protonmail.com>
parents:
diff changeset
63
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
64 /*
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
65 * When libpng encounters an error, it expects to longjmp back to your routine.
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
66 * Therefore, you will need to call setjmp and pass your png_jmpbuf(unsolvedPngStruct).
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
67 * More about setjmp -> https://es.wikipedia.org/wiki/Setjmp.h
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
68 */
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
69
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
70 if (setjmp(png_jmpbuf(unsolvedPngStruct))) {
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
71 printf("Error during init_io\n");
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
72 abort();
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
73 }
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
74
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
75 png_init_io(unsolvedPngStruct, unsolvedFp); // Initialize the default input/output functions for the PNG file
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
76 png_set_sig_bytes(unsolvedPngStruct, 0); // Set signature bytes
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
77 png_read_info(unsolvedPngStruct, unsolvedPngInfo); // Read info
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
78
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
79 width = png_get_image_width(unsolvedPngStruct, unsolvedPngInfo);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
80 height = png_get_image_height(unsolvedPngStruct, unsolvedPngInfo);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
81 colorType = png_get_color_type(unsolvedPngStruct, unsolvedPngInfo);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
82 bitDepth = png_get_bit_depth(unsolvedPngStruct, unsolvedPngInfo);
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
83
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
84 phases = png_set_interlace_handling(unsolvedPngStruct);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
85 png_read_update_info(unsolvedPngStruct, unsolvedPngInfo);
0
41a299d2b278 first commit
Dennis <denniscmartin@protonmail.com>
parents:
diff changeset
86
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
87 printf("Image width: %d\n", width);
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
88 printf("Image height: %d\n", height);
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
89 printf("Color type: %d\n", colorType);
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
90 printf("Bit depth: %d\n", bitDepth);
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
91 printf("Number of phases: %d\n", phases);
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
92
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
93 // Read file
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
94 if (setjmp(png_jmpbuf(unsolvedPngStruct))) {
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
95 printf("Error during read_image");
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
96 abort();
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
97 }
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
98
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
99 pRows = (png_bytep*) malloc(sizeof(png_bytep) * height);
0
41a299d2b278 first commit
Dennis <denniscmartin@protonmail.com>
parents:
diff changeset
100
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
101 for (int y = 0; y < height; y++) {
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
102 pRows[y] = (png_byte *) malloc(png_get_rowbytes(unsolvedPngStruct, unsolvedPngInfo));
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
103 }
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
104
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
105 // Read the image into memory
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
106 png_read_image(unsolvedPngStruct, pRows);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
107 fclose(unsolvedFp);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
108
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
109 /*
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
110 * ALGOS
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
111 */
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
112
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
113 wallFollower(pRows, width);
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
114
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
115 /*
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
116 * WRITE FILE
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
117 */
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
118
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
119 // Add path to unsolvedFilename
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
120 solvedFilename = argv[1];
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
121 asprintf(&solvedFilename, "sols/%s", solvedFilename);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
122
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
123 // Open file
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
124 solvedFp = fopen(solvedFilename, "wb");
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
125
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
126 if (!solvedFp) {
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
127 printf("File %s could not be opened for writing", solvedFilename);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
128 abort();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
129 }
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
130
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
131 // Allocate and initialize a solvedPngStruct for writting PNG file
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
132 solvedPngStruct = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
133
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
134 if (!solvedPngStruct) {
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
135 printf("png_create_read_struct failed\n");
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
136 abort();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
137 }
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
138
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
139 // Allocate and initialize a unsolvedPngInfo structure
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
140 solvedPngInfo = png_create_info_struct(solvedPngStruct);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
141
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
142 if (!solvedPngInfo) {
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
143 printf("png_create_info_struct failed\n");
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
144 abort();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
145 }
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
146
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
147 if (setjmp(png_jmpbuf(solvedPngStruct))) {
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
148 printf("Error during init_io\n");
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
149 abort();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
150 }
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
151
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
152 png_init_io(solvedPngStruct, solvedFp);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
153
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
154 // Write header
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
155 if (setjmp(png_jmpbuf(solvedPngStruct))) {
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
156 printf("Error writing header");
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
157 abort();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
158 }
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
159
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
160 png_set_IHDR(solvedPngStruct, solvedPngInfo, width, height, bitDepth, colorType, PNG_INTERLACE_NONE,
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
161 PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
162 );
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
163
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
164 png_write_info(solvedPngStruct, solvedPngInfo);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
165
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
166 // Write bytes
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
167 if (setjmp(png_jmpbuf(solvedPngStruct))) {
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
168 printf("Error writing bytes");
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
169 abort();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
170 }
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
171
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
172 png_write_image(solvedPngStruct, pRows);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
173
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
174 // End write
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
175 if (setjmp(png_jmpbuf(solvedPngStruct))) {
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
176 printf("Error during end of write");
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
177 abort();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
178 }
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
179
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
180 png_write_end(solvedPngStruct, NULL);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
181
1
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
182 // Cleanup heap allocation
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
183 for (int y = 0; y < height; y++) {
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
184 free(pRows[y]);
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
185 }
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
186
edee16cfda92 algo working but inefficient
Dennis <denniscmartin@protonmail.com>
parents: 0
diff changeset
187 free(pRows);
2
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
188 fclose(solvedFp);
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
189
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
190 end = clock();
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
191 cpuTimeUsed = ((double) (end - start)) / CLOCKS_PER_SEC;
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
192
64d0988b0911 refactor code
Dennis <denniscmartin@protonmail.com>
parents: 1
diff changeset
193 printf("Maze solved in %f seconds\n", cpuTimeUsed);
0
41a299d2b278 first commit
Dennis <denniscmartin@protonmail.com>
parents:
diff changeset
194
41a299d2b278 first commit
Dennis <denniscmartin@protonmail.com>
parents:
diff changeset
195 return 0;
41a299d2b278 first commit
Dennis <denniscmartin@protonmail.com>
parents:
diff changeset
196 }