1 |
|
---|
2 | /* pngdebug.h - Debugging macros for libpng, also used in pngtest.c
|
---|
3 | *
|
---|
4 | * Copyright (c) 2018 Cosmin Truta
|
---|
5 | * Copyright (c) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson
|
---|
6 | * Copyright (c) 1996-1997 Andreas Dilger
|
---|
7 | * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
---|
8 | *
|
---|
9 | * This code is released under the libpng license.
|
---|
10 | * For conditions of distribution and use, see the disclaimer
|
---|
11 | * and license in png.h
|
---|
12 | */
|
---|
13 |
|
---|
14 | /* Define PNG_DEBUG at compile time for debugging information. Higher
|
---|
15 | * numbers for PNG_DEBUG mean more debugging information. This has
|
---|
16 | * only been added since version 0.95 so it is not implemented throughout
|
---|
17 | * libpng yet, but more support will be added as needed.
|
---|
18 | *
|
---|
19 | * png_debug[1-2]?(level, message ,arg{0-2})
|
---|
20 | * Expands to a statement (either a simple expression or a compound
|
---|
21 | * do..while(0) statement) that outputs a message with parameter
|
---|
22 | * substitution if PNG_DEBUG is defined to 2 or more. If PNG_DEBUG
|
---|
23 | * is undefined, 0 or 1 every png_debug expands to a simple expression
|
---|
24 | * (actually ((void)0)).
|
---|
25 | *
|
---|
26 | * level: level of detail of message, starting at 0. A level 'n'
|
---|
27 | * message is preceded by 'n' 3-space indentations (not implemented
|
---|
28 | * on Microsoft compilers unless PNG_DEBUG_FILE is also
|
---|
29 | * defined, to allow debug DLL compilation with no standard IO).
|
---|
30 | * message: a printf(3) style text string. A trailing '\n' is added
|
---|
31 | * to the message.
|
---|
32 | * arg: 0 to 2 arguments for printf(3) style substitution in message.
|
---|
33 | */
|
---|
34 | #ifndef PNGDEBUG_H
|
---|
35 | #define PNGDEBUG_H
|
---|
36 | /* These settings control the formatting of messages in png.c and pngerror.c */
|
---|
37 | /* Moved to pngdebug.h at 1.5.0 */
|
---|
38 | # ifndef PNG_LITERAL_SHARP
|
---|
39 | # define PNG_LITERAL_SHARP 0x23
|
---|
40 | # endif
|
---|
41 | # ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET
|
---|
42 | # define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b
|
---|
43 | # endif
|
---|
44 | # ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET
|
---|
45 | # define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d
|
---|
46 | # endif
|
---|
47 | # ifndef PNG_STRING_NEWLINE
|
---|
48 | # define PNG_STRING_NEWLINE "\n"
|
---|
49 | # endif
|
---|
50 |
|
---|
51 | #ifdef PNG_DEBUG
|
---|
52 | # if (PNG_DEBUG > 0)
|
---|
53 | # if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER)
|
---|
54 | # include <crtdbg.h>
|
---|
55 | # if (PNG_DEBUG > 1)
|
---|
56 | # ifndef _DEBUG
|
---|
57 | # define _DEBUG
|
---|
58 | # endif
|
---|
59 | # ifndef png_debug
|
---|
60 | # define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE)
|
---|
61 | # endif
|
---|
62 | # ifndef png_debug1
|
---|
63 | # define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1)
|
---|
64 | # endif
|
---|
65 | # ifndef png_debug2
|
---|
66 | # define png_debug2(l,m,p1,p2) \
|
---|
67 | _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2)
|
---|
68 | # endif
|
---|
69 | # endif
|
---|
70 | # else /* PNG_DEBUG_FILE || !_MSC_VER */
|
---|
71 | # ifndef PNG_STDIO_SUPPORTED
|
---|
72 | # include <stdio.h> /* not included yet */
|
---|
73 | # endif
|
---|
74 | # ifndef PNG_DEBUG_FILE
|
---|
75 | # define PNG_DEBUG_FILE stderr
|
---|
76 | # endif /* PNG_DEBUG_FILE */
|
---|
77 |
|
---|
78 | # if (PNG_DEBUG > 1)
|
---|
79 | # ifdef __STDC__
|
---|
80 | # ifndef png_debug
|
---|
81 | # define png_debug(l,m) \
|
---|
82 | do { \
|
---|
83 | int num_tabs=l; \
|
---|
84 | fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \
|
---|
85 | (num_tabs==2 ? " " : (num_tabs>2 ? " " : "")))); \
|
---|
86 | } while (0)
|
---|
87 | # endif
|
---|
88 | # ifndef png_debug1
|
---|
89 | # define png_debug1(l,m,p1) \
|
---|
90 | do { \
|
---|
91 | int num_tabs=l; \
|
---|
92 | fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \
|
---|
93 | (num_tabs==2 ? " " : (num_tabs>2 ? " " : ""))),p1); \
|
---|
94 | } while (0)
|
---|
95 | # endif
|
---|
96 | # ifndef png_debug2
|
---|
97 | # define png_debug2(l,m,p1,p2) \
|
---|
98 | do { \
|
---|
99 | int num_tabs=l; \
|
---|
100 | fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \
|
---|
101 | (num_tabs==2 ? " " : (num_tabs>2 ? " " : ""))),p1,p2);\
|
---|
102 | } while (0)
|
---|
103 | # endif
|
---|
104 | # else /* __STDC __ */
|
---|
105 | # ifndef png_debug
|
---|
106 | # define png_debug(l,m) \
|
---|
107 | do { \
|
---|
108 | int num_tabs=l; \
|
---|
109 | char format[256]; \
|
---|
110 | snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
|
---|
111 | (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
|
---|
112 | m,PNG_STRING_NEWLINE); \
|
---|
113 | fprintf(PNG_DEBUG_FILE,format); \
|
---|
114 | } while (0)
|
---|
115 | # endif
|
---|
116 | # ifndef png_debug1
|
---|
117 | # define png_debug1(l,m,p1) \
|
---|
118 | do { \
|
---|
119 | int num_tabs=l; \
|
---|
120 | char format[256]; \
|
---|
121 | snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
|
---|
122 | (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
|
---|
123 | m,PNG_STRING_NEWLINE); \
|
---|
124 | fprintf(PNG_DEBUG_FILE,format,p1); \
|
---|
125 | } while (0)
|
---|
126 | # endif
|
---|
127 | # ifndef png_debug2
|
---|
128 | # define png_debug2(l,m,p1,p2) \
|
---|
129 | do { \
|
---|
130 | int num_tabs=l; \
|
---|
131 | char format[256]; \
|
---|
132 | snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
|
---|
133 | (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
|
---|
134 | m,PNG_STRING_NEWLINE); \
|
---|
135 | fprintf(PNG_DEBUG_FILE,format,p1,p2); \
|
---|
136 | } while (0)
|
---|
137 | # endif
|
---|
138 | # endif /* __STDC __ */
|
---|
139 | # endif /* (PNG_DEBUG > 1) */
|
---|
140 |
|
---|
141 | # endif /* _MSC_VER */
|
---|
142 | # endif /* (PNG_DEBUG > 0) */
|
---|
143 | #endif /* PNG_DEBUG */
|
---|
144 | #ifndef png_debug
|
---|
145 | # define png_debug(l, m) ((void)0)
|
---|
146 | #endif
|
---|
147 | #ifndef png_debug1
|
---|
148 | # define png_debug1(l, m, p1) ((void)0)
|
---|
149 | #endif
|
---|
150 | #ifndef png_debug2
|
---|
151 | # define png_debug2(l, m, p1, p2) ((void)0)
|
---|
152 | #endif
|
---|
153 | #endif /* PNGDEBUG_H */
|
---|