Annotation of embedaddon/php/ext/gd/libgd/gd_io.c, revision 1.1.1.1
1.1 misho 1:
2:
3: /*
4: * io.c
5: *
6: * Implements the simple I/O 'helper' routines.
7: *
8: * Not really essential, but these routines were used extensively in GD,
9: * so they were moved here. They also make IOCtx calls look better...
10: *
11: * Written (or, at least, moved) 1999, Philip Warner.
12: *
13: */
14:
15: #include <math.h>
16: #include <string.h>
17: #include <stdlib.h>
18: #include "gd.h"
19:
20: /* Use this for commenting out debug-print statements. */
21: /* Just use the first '#define' to allow all the prints... */
22: /*#define IO_DBG(s) (s) */
23: #define IO_DBG(s)
24:
25:
26: #define GD_IO_EOF_CHK(r) \
27: if (r == EOF) { \
28: return 0; \
29: } \
30:
31: /*
32: * Write out a word to the I/O context pointer
33: */
34: void Putword (int w, gdIOCtx * ctx)
35: {
36: unsigned char buf[2];
37:
38: buf[0] = w & 0xff;
39: buf[1] = (w / 256) & 0xff;
40: (ctx->putBuf) (ctx, (char *) buf, 2);
41: }
42:
43: void Putchar (int c, gdIOCtx * ctx)
44: {
45: (ctx->putC) (ctx, c & 0xff);
46: }
47:
48: void gdPutC (const unsigned char c, gdIOCtx * ctx)
49: {
50: (ctx->putC) (ctx, c);
51: }
52:
53: void gdPutWord (int w, gdIOCtx * ctx)
54: {
55: IO_DBG (php_gd_error("Putting word..."));
56: (ctx->putC) (ctx, (unsigned char) (w >> 8));
57: (ctx->putC) (ctx, (unsigned char) (w & 0xFF));
58: IO_DBG (php_gd_error("put."));
59: }
60:
61: void gdPutInt (int w, gdIOCtx * ctx)
62: {
63: IO_DBG (php_gd_error("Putting int..."));
64: (ctx->putC) (ctx, (unsigned char) (w >> 24));
65: (ctx->putC) (ctx, (unsigned char) ((w >> 16) & 0xFF));
66: (ctx->putC) (ctx, (unsigned char) ((w >> 8) & 0xFF));
67: (ctx->putC) (ctx, (unsigned char) (w & 0xFF));
68: IO_DBG (php_gd_error("put."));
69: }
70:
71: int gdGetC (gdIOCtx * ctx)
72: {
73: return ((ctx->getC) (ctx));
74: }
75:
76: int gdGetByte (int *result, gdIOCtx * ctx)
77: {
78: int r;
79: r = (ctx->getC) (ctx);
80: GD_IO_EOF_CHK(r);
81: *result = r;
82: return 1;
83: }
84:
85: int gdGetWord (int *result, gdIOCtx * ctx)
86: {
87: int r;
88: r = (ctx->getC) (ctx);
89: GD_IO_EOF_CHK(r);
90: *result = r << 8;
91: r = (ctx->getC) (ctx);
92: GD_IO_EOF_CHK(r);
93: *result += r;
94: return 1;
95: }
96:
97:
98: int gdGetInt (int *result, gdIOCtx * ctx)
99: {
100: int r;
101: r = (ctx->getC) (ctx);
102: GD_IO_EOF_CHK(r);
103: *result = r << 24;
104:
105: r = (ctx->getC) (ctx);
106: GD_IO_EOF_CHK(r);
107: *result += r << 16;
108:
109: r = (ctx->getC) (ctx);
110: if (r == EOF) {
111: return 0;
112: }
113: *result += r << 8;
114:
115: r = (ctx->getC) (ctx);
116: GD_IO_EOF_CHK(r);
117: *result += r;
118:
119: return 1;
120: }
121:
122: int gdPutBuf (const void *buf, int size, gdIOCtx * ctx)
123: {
124: IO_DBG (php_gd_error("Putting buf..."));
125: return (ctx->putBuf) (ctx, buf, size);
126: IO_DBG (php_gd_error("put."));
127: }
128:
129: int gdGetBuf (void *buf, int size, gdIOCtx * ctx)
130: {
131: return (ctx->getBuf) (ctx, buf, size);
132: }
133:
134: int gdSeek (gdIOCtx * ctx, const int pos)
135: {
136: IO_DBG (php_gd_error("Seeking..."));
137: return ((ctx->seek) (ctx, pos));
138: IO_DBG (php_gd_error("Done."));
139: }
140:
141: long gdTell (gdIOCtx * ctx)
142: {
143: IO_DBG (php_gd_error("Telling..."));
144: return ((ctx->tell) (ctx));
145: IO_DBG (php_gd_error ("told."));
146: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>