ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CV/CV.xs
(Generate patch)

Comparing CV/CV.xs (file contents):
Revision 1.3 by root, Wed Nov 5 00:22:22 2003 UTC vs.
Revision 1.4 by root, Sat Nov 8 18:22:21 2003 UTC

5#include <gdk-pixbuf/gdk-pixbuf.h> 5#include <gdk-pixbuf/gdk-pixbuf.h>
6 6
7#include <gperl.h> 7#include <gperl.h>
8#include <gtk2perl.h> 8#include <gtk2perl.h>
9 9
10static guint32 a85_val;
11static guint a85_cnt;
12static guchar a85_buf[80], *a85_ptr;
13
14static void
15a85_init (void)
16{
17 a85_cnt = 4;
18 a85_ptr = a85_buf;
19}
20
21static void
22a85_push (PerlIO *fp, guchar c)
23{
24 a85_val = a85_val << 8 | c;
25
26 if (!--a85_cnt)
27 {
28 a85_cnt = 4;
29 if (a85_val)
30 {
31 a85_ptr[4] = (a85_val % 85) + 33; a85_val /= 85;
32 a85_ptr[3] = (a85_val % 85) + 33; a85_val /= 85;
33 a85_ptr[2] = (a85_val % 85) + 33; a85_val /= 85;
34 a85_ptr[1] = (a85_val % 85) + 33; a85_val /= 85;
35 a85_ptr[0] = (a85_val ) + 33;
36
37 a85_ptr += 5;
38 }
39 else
40 *a85_ptr++ = 'z';
41
42 if (a85_ptr >= a85_buf + sizeof (a85_buf) - 7)
43 {
44 *a85_ptr++ = '\n';
45 PerlIO_write (fp, a85_buf, a85_ptr - a85_buf);
46 a85_ptr = a85_buf;
47 }
48 }
49
50}
51
52a85_finish (PerlIO *fp)
53{
54 while (a85_cnt != 4)
55 a85_push (fp, 0);
56
57 *a85_ptr++ = '~'; // probably buggy end-marker
58 *a85_ptr++ = '>'; // probably buggy end-marker
59 *a85_ptr++ = '\n';
60
61 PerlIO_write (fp, a85_buf, a85_ptr - a85_buf);
62}
63
10MODULE = Gtk2::CV PACKAGE = Gtk2::CV::ImageWindow 64MODULE = Gtk2::CV PACKAGE = Gtk2::CV::ImageWindow
11 65
12PROTOTYPES: ENABLE 66PROTOTYPES: ENABLE
13 67
14GdkPixbuf_noinc * 68GdkPixbuf_noinc *
52 dstr = gdk_pixbuf_get_rowstride (RETVAL); 106 dstr = gdk_pixbuf_get_rowstride (RETVAL);
53 107
54 for (y = 0; y < h; y++) 108 for (y = 0; y < h; y++)
55 for (x = 0; x < w; x++) 109 for (x = 0; x < w; x++)
56 for (i = 0; i < bpp; i++) 110 for (i = 0; i < bpp; i++)
57 dst[(w - x) * bpp + y * dstr + i] = src[x * bpp + y * sstr + i]; 111 dst[(w - 1 - x) * bpp + y * dstr + i] = src[x * bpp + y * sstr + i];
58} 112}
59 OUTPUT: 113 OUTPUT:
60 RETVAL 114 RETVAL
61 115
62MODULE = Gtk2::CV PACKAGE = Gtk2::CV::Schnauzer 116MODULE = Gtk2::CV PACKAGE = Gtk2::CV::Schnauzer
131 } 185 }
132} 186}
133 OUTPUT: 187 OUTPUT:
134 RETVAL 188 RETVAL
135 189
190MODULE = Gtk2::CV PACKAGE = Gtk2::CV::PostScript
136 191
192void
193dump_pb (PerlIO *fp, GdkPixbuf *pb)
194 CODE:
195{
196 int w = gdk_pixbuf_get_width (pb);
197 int h = gdk_pixbuf_get_height (pb);
198 int x, y, i;
199 guchar *dst;
200 int bpp = gdk_pixbuf_get_has_alpha (pb) ? 4 : 3;
201 guchar *src = gdk_pixbuf_get_pixels (pb);
202 int sstr = gdk_pixbuf_get_rowstride (pb);
137 203
204 a85_init ();
205
206 for (y = 0; y < h; y++)
207 for (x = 0; x < w; x++)
208 for (i = 0; i < 3; i++)
209 a85_push (fp, src [x * bpp + y * sstr + i]);
210
211 a85_finish (fp);
212}
213
214
215
216

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines