Mercurial > mxe-octave
annotate src/libpng-test.c @ 3580:51563235a7c6
curl: update to 7.36.0
* src/curl.mk: update to 7.36.0
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Wed, 23 Apr 2014 20:12:41 -0400 |
parents | 14b3f5ea78ae |
children |
rev | line source |
---|---|
2351
8a6c466753e2
Improve comment style of all test programs
Volker Grabsch <vog@notjusthosting.com>
parents:
2333
diff
changeset
|
1 /* |
8a6c466753e2
Improve comment style of all test programs
Volker Grabsch <vog@notjusthosting.com>
parents:
2333
diff
changeset
|
2 * This file is part of MXE. |
2353
99516e73b368
Move doc/index.html -> index.html
Volker Grabsch <vog@notjusthosting.com>
parents:
2351
diff
changeset
|
3 * See index.html for further information. |
2351
8a6c466753e2
Improve comment style of all test programs
Volker Grabsch <vog@notjusthosting.com>
parents:
2333
diff
changeset
|
4 * |
8a6c466753e2
Improve comment style of all test programs
Volker Grabsch <vog@notjusthosting.com>
parents:
2333
diff
changeset
|
5 * This is a slightly modified version of: |
8a6c466753e2
Improve comment style of all test programs
Volker Grabsch <vog@notjusthosting.com>
parents:
2333
diff
changeset
|
6 * http://ironalbatross.net/wiki/index.php5?title=CPP_LIBPNG#Minimal_Example_of_writing_a_PNG_File |
8a6c466753e2
Improve comment style of all test programs
Volker Grabsch <vog@notjusthosting.com>
parents:
2333
diff
changeset
|
7 */ |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
8 |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
9 #include <stdio.h> |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
10 #include <stdlib.h> |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
11 #include <unistd.h> |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
12 #include <string.h> |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
13 #include <png.h> |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
14 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
15 int main(int argc, char *argv[]) |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
16 { |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
17 (void)argc; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
18 (void)argv; |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
19 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
20 /* PNG structs and types */ |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
21 png_byte color_type; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
22 png_byte bit_depth; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
23 png_structp png_ptr; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
24 png_infop info_ptr; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
25 png_bytep *row_pointers; |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
26 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
27 int height, width; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
28 FILE *fp; |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
29 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
30 width = 640; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
31 height = 480; |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
32 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
33 color_type = PNG_COLOR_TYPE_RGB; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
34 bit_depth = 8; /* Number of bits per color, not per pixel */ |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
35 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
36 /* Dynamic 2D array in C */ |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
37 row_pointers = (png_bytep *)malloc( sizeof(png_bytep) * height); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
38 int i; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
39 for(i = 0; i < height; i++) |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
40 { |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
41 int j; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
42 row_pointers[i] = malloc(sizeof(png_byte) * width * 3); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
43 for(j = 0; j < width; j++) |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
44 { |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
45 row_pointers[i][0+3*j] = i % 255; /* R */ |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
46 row_pointers[i][1+3*j] = j % 255; /* G */ |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
47 row_pointers[i][2+3*j] = (i * j) % 255; /* B */ |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
48 } |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
49 } |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
50 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
51 /* Write the data out to the PNG file */ |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
52 fp = fopen("test.png","wb"); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
53 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,NULL,NULL,NULL); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
54 info_ptr = png_create_info_struct(png_ptr); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
55 png_init_io(png_ptr,fp); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
56 png_set_IHDR(png_ptr, info_ptr, width, height, |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
57 bit_depth, color_type, PNG_INTERLACE_NONE, |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
58 PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
59 png_write_info(png_ptr, info_ptr); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
60 png_write_image(png_ptr, row_pointers); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
61 png_write_end(png_ptr, NULL); |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
62 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
63 /* Free up memory after use */ |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
64 for(i = 0; i < height; i++) |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
65 { |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
66 free(row_pointers[i]); |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
67 } |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
68 free(row_pointers); |
2358
14b3f5ea78ae
Cleanup coding style via "make cleanup-style"
Volker Grabsch <vog@notjusthosting.com>
parents:
2353
diff
changeset
|
69 |
1631
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
70 return 0; |
9a86031b8ee0
package libpng: add test program
Tony Theodore <tonyt@logyst.com>
parents:
diff
changeset
|
71 } |