FLTK 1.3.8

cgdebug.h
1//
2// "$Id$"
3//
4// OS X Core Graphics debugging help for the Fast Light Tool Kit (FLTK).
5//
6// Copyright 1998-2010 by Bill Spitzak and others.
7//
8// This library is free software. Distribution and use rights are outlined in
9// the file "COPYING" which should have been included with this file. If this
10// file is missing or damaged, see the license at:
11//
12// http://www.fltk.org/COPYING.php
13//
14// Please report all bugs and problems on the following page:
15//
16// http://www.fltk.org/str.php
17//
18
19// This file allows easier debugging of Mac OS X Core Graphics
20// code. This file is normally not included into any FLTK builds,
21// but since it has proven to be tremendously useful in debugging
22// the FLTK port to "Quartz", I decided to add this file in case
23// more bugs show up.
24//
25// This header is activated by adding the following
26// line to "config.h"
27// #include "src/cgdebug.h"
28//
29// Running "./configure" will remove this line from "config.h".
30//
31// When used erreanously, Core Graphics prints warnings to
32// stderr. This is helpful, however it is not possible to
33// associate a line number or source file with the warning message.
34// This headr file outputs a trace of CG calls, interweaveing
35// them with CG warnings.
36//
37// Matthias
38
39#ifndef CGDEBUG
40#define CGDEBUG
41
42#include <stdio.h>
43#include <Carbon/Carbon.h>
44
45//+BitmapContextCreate
46//+BitmapContextGetData
47// ClipCGContextToRegion
48// QDBeginCGContext
49// QDEndCGContext
50
51//+AddArc
52//+AddLineToPoint
53// ClipToRect
54// ClosePath
55//+ConcatCTM
56//+DrawImage
57// FillPath
58// FillRect
59// Flush
60//+GetCTM
61// MoveToPoint
62//+Release
63// RestoreGState
64// SaveGState
65//+ScaleCTM
66//+SetLineCap
67//+SetLineDash
68//+SetLineJoin
69//+SetLineWidth
70//+SetRGBFillColor
71//+SetRGBStrokeColor
72//+SetShouldAntialias
73//+SetTextMatrix
74//+StrokePath
75//+TranslateCTM
76
77 inline OSStatus dbgLocation(const char *file, int line)
78{
79 fprintf(stderr, "%s:%d ", file, line);
80 return 0;
81}
82
83 inline OSStatus dbgEndl()
84{
85 fprintf(stderr, "\n");
86 return 0;
87}
88
89
90 inline void dbgCGContextClipToRect(CGContextRef a, CGRect b)
91{
92 CGContextClipToRect(a, b);
93}
94
95#define CGContextClipToRect(a, b) { \
96 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
97 dbgCGContextClipToRect(a, b); \
98 fprintf(stderr, "\n"); }
99
100 inline void dbgCGContextFillRect(CGContextRef a, CGRect b)
101{
102 CGContextFillRect(a, b);
103}
104
105#define CGContextFillRect(a, b) { \
106 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
107 dbgCGContextFillRect(a, b); \
108 fprintf(stderr, "\n"); }
109
110 inline OSStatus dbgQDEndCGContext(CGrafPtr a, CGContextRef *b)
111{
112 return QDEndCGContext(a, b);
113}
114
115#define QDEndCGContext(a, b) ( \
116 dbgLocation(__FILE__, __LINE__) + \
117 dbgQDEndCGContext(a, b) + \
118 dbgEndl() )
119
120 inline OSStatus dbgQDBeginCGContext(CGrafPtr a, CGContextRef *b)
121{
122 return QDBeginCGContext(a, b);
123}
124
125#define QDBeginCGContext(a, b) ( \
126 dbgLocation(__FILE__, __LINE__) + \
127 dbgQDBeginCGContext(a, b) + \
128 dbgEndl() )
129
130 inline void dbgClipCGContextToRegion(CGContextRef a, const Rect *b, RgnHandle c)
131{
132 ClipCGContextToRegion(a, b, c);
133}
134
135#define ClipCGContextToRegion(a, b, c) { \
136 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
137 dbgClipCGContextToRegion(a, b, c); \
138 fprintf(stderr, "\n"); }
139
140 inline void dbgCGContextMoveToPoint(CGContextRef context, float x, float y)
141{
142 CGContextMoveToPoint(context, x, y);
143}
144
145#define CGContextMoveToPoint(a, b, c) { \
146 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
147 dbgCGContextMoveToPoint(a, b, c); \
148 fprintf(stderr, "\n"); }
149
150 inline void dbgCGContextFillPath(CGContextRef context)
151{
152 CGContextFillPath(context);
153}
154
155#define CGContextFillPath(a) { \
156 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
157 dbgCGContextFillPath(a); \
158 fprintf(stderr, "\n"); }
159
160 inline void dbgCGContextClosePath(CGContextRef context)
161{
162 CGContextClosePath(context);
163}
164
165#define CGContextClosePath(a) { \
166 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
167 dbgCGContextClosePath(a); \
168 fprintf(stderr, "\n"); }
169
170 inline void dbgCGContextFlush(CGContextRef context)
171{
172 CGContextFlush(context);
173}
174
175#define CGContextFlush(a) { \
176 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
177 dbgCGContextFlush(a); \
178 fprintf(stderr, "\n"); }
179
180 inline void dbgCGContextSaveGState(CGContextRef context)
181{
182 CGContextSaveGState(context);
183}
184
185#define CGContextSaveGState(a) { \
186 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
187 dbgCGContextSaveGState(a); \
188 fprintf(stderr, "\n"); }
189
190 inline void dbgCGContextRestoreGState(CGContextRef context)
191{
192 CGContextRestoreGState(context);
193}
194
195#define CGContextRestoreGState(a) { \
196 fprintf(stderr, "%s:%d ", __FILE__, __LINE__); \
197 dbgCGContextRestoreGState(a); \
198 fprintf(stderr, "\n"); }
199
200
201#endif
202
203//
204// End of "$Id$".
205//
206
- Copyright © 1998-2021 by Bill Spitzak and others.