… | |
… | |
9 | |
9 | |
10 | #define IW 80 |
10 | #define IW 80 |
11 | |
11 | |
12 | #define RAND (seed = (seed + 7141) * 54773 % 134456) |
12 | #define RAND (seed = (seed + 7141) * 54773 % 134456) |
13 | |
13 | |
|
|
14 | #define LINELENGTH 240 |
|
|
15 | |
|
|
16 | #define ELLIPSIS "\xe2\x80\xa6" |
|
|
17 | |
14 | static guint32 a85_val; |
18 | static guint32 a85_val; |
15 | static guint a85_cnt; |
19 | static guint a85_cnt; |
16 | static guchar a85_buf[80], *a85_ptr; |
20 | static guchar a85_buf[LINELENGTH], *a85_ptr; |
17 | |
21 | |
18 | static void |
22 | static void |
19 | a85_init (void) |
23 | a85_init (void) |
20 | { |
24 | { |
21 | a85_cnt = 4; |
25 | a85_cnt = 4; |
… | |
… | |
63 | *a85_ptr++ = '\n'; |
67 | *a85_ptr++ = '\n'; |
64 | |
68 | |
65 | PerlIO_write (fp, a85_buf, a85_ptr - a85_buf); |
69 | PerlIO_write (fp, a85_buf, a85_ptr - a85_buf); |
66 | } |
70 | } |
67 | |
71 | |
|
|
72 | ///////////////////////////////////////////////////////////////////////////// |
|
|
73 | |
68 | MODULE = Gtk2::CV PACKAGE = Gtk2::CV::ImageWindow |
74 | MODULE = Gtk2::CV PACKAGE = Gtk2::CV::ImageWindow |
69 | |
75 | |
70 | PROTOTYPES: ENABLE |
76 | PROTOTYPES: ENABLE |
71 | |
77 | |
72 | GdkPixbuf_noinc * |
78 | GdkPixbuf_noinc * |
73 | transpose (GdkPixbuf *pb) |
79 | transpose (GdkPixbuf *pb) |
74 | CODE: |
80 | CODE: |
75 | { |
81 | { |
76 | int w = gdk_pixbuf_get_width (pb); |
82 | int w = gdk_pixbuf_get_width (pb); |
77 | int h = gdk_pixbuf_get_height (pb); |
83 | int h = gdk_pixbuf_get_height (pb); |
78 | int bpp = gdk_pixbuf_get_has_alpha (pb) ? 4 : 3; |
84 | int bpp = gdk_pixbuf_get_n_channels (pb); |
79 | int x, y, i; |
85 | int x, y, i; |
80 | guchar *src = gdk_pixbuf_get_pixels (pb), *dst; |
86 | guchar *src = gdk_pixbuf_get_pixels (pb), *dst; |
81 | int sstr = gdk_pixbuf_get_rowstride (pb), dstr; |
87 | int sstr = gdk_pixbuf_get_rowstride (pb), dstr; |
82 | |
88 | |
83 | RETVAL = gdk_pixbuf_new (GDK_COLORSPACE_RGB, bpp == 4, 8, h, w); |
89 | RETVAL = gdk_pixbuf_new (GDK_COLORSPACE_RGB, bpp == 4, 8, h, w); |
… | |
… | |
97 | flop (GdkPixbuf *pb) |
103 | flop (GdkPixbuf *pb) |
98 | CODE: |
104 | CODE: |
99 | { |
105 | { |
100 | int w = gdk_pixbuf_get_width (pb); |
106 | int w = gdk_pixbuf_get_width (pb); |
101 | int h = gdk_pixbuf_get_height (pb); |
107 | int h = gdk_pixbuf_get_height (pb); |
102 | int bpp = gdk_pixbuf_get_has_alpha (pb) ? 4 : 3; |
108 | int bpp = gdk_pixbuf_get_n_channels (pb); |
103 | int x, y, i; |
109 | int x, y, i; |
104 | guchar *src = gdk_pixbuf_get_pixels (pb), *dst; |
110 | guchar *src = gdk_pixbuf_get_pixels (pb), *dst; |
105 | int sstr = gdk_pixbuf_get_rowstride (pb), dstr; |
111 | int sstr = gdk_pixbuf_get_rowstride (pb), dstr; |
106 | |
112 | |
107 | RETVAL = gdk_pixbuf_new (GDK_COLORSPACE_RGB, bpp == 4, 8, w, h); |
113 | RETVAL = gdk_pixbuf_new (GDK_COLORSPACE_RGB, bpp == 4, 8, w, h); |
… | |
… | |
114 | for (i = 0; i < bpp; i++) |
120 | for (i = 0; i < bpp; i++) |
115 | dst[(w - 1 - x) * bpp + y * dstr + i] = src[x * bpp + y * sstr + i]; |
121 | dst[(w - 1 - x) * bpp + y * dstr + i] = src[x * bpp + y * sstr + i]; |
116 | } |
122 | } |
117 | OUTPUT: |
123 | OUTPUT: |
118 | RETVAL |
124 | RETVAL |
|
|
125 | |
|
|
126 | ############################################################################# |
119 | |
127 | |
120 | MODULE = Gtk2::CV PACKAGE = Gtk2::CV::Schnauzer |
128 | MODULE = Gtk2::CV PACKAGE = Gtk2::CV::Schnauzer |
121 | |
129 | |
122 | GdkPixbuf_noinc * |
130 | GdkPixbuf_noinc * |
123 | p7_to_pb (int w, int h, guchar *src) |
131 | p7_to_pb (int w, int h, guchar *src) |
… | |
… | |
150 | { |
158 | { |
151 | int w = gdk_pixbuf_get_width (pb); |
159 | int w = gdk_pixbuf_get_width (pb); |
152 | int h = gdk_pixbuf_get_height (pb); |
160 | int h = gdk_pixbuf_get_height (pb); |
153 | int x, y; |
161 | int x, y; |
154 | guchar *dst; |
162 | guchar *dst; |
155 | int bpp = gdk_pixbuf_get_has_alpha (pb) ? 4 : 3; |
163 | int bpp = gdk_pixbuf_get_n_channels (pb); |
156 | guchar *src = gdk_pixbuf_get_pixels (pb); |
164 | guchar *src = gdk_pixbuf_get_pixels (pb); |
157 | int sstr = gdk_pixbuf_get_rowstride (pb); |
165 | int sstr = gdk_pixbuf_get_rowstride (pb); |
158 | int Er[IW], Eg[IW], Eb[IW]; |
166 | int Er[IW], Eg[IW], Eb[IW]; |
159 | int seed = 77; |
167 | int seed = 77; |
160 | |
168 | |
… | |
… | |
200 | } |
208 | } |
201 | } |
209 | } |
202 | OUTPUT: |
210 | OUTPUT: |
203 | RETVAL |
211 | RETVAL |
204 | |
212 | |
|
|
213 | ############################################################################# |
|
|
214 | |
205 | MODULE = Gtk2::CV PACKAGE = Gtk2::CV::PostScript |
215 | MODULE = Gtk2::CV PACKAGE = Gtk2::CV::PostScript |
206 | |
216 | |
207 | void |
217 | void |
208 | dump_pb (PerlIO *fp, GdkPixbuf *pb) |
218 | dump_ascii85 (PerlIO *fp, GdkPixbuf *pb) |
209 | CODE: |
219 | CODE: |
210 | { |
220 | { |
211 | int w = gdk_pixbuf_get_width (pb); |
221 | int w = gdk_pixbuf_get_width (pb); |
212 | int h = gdk_pixbuf_get_height (pb); |
222 | int h = gdk_pixbuf_get_height (pb); |
213 | int x, y, i; |
223 | int x, y, i; |
214 | guchar *dst; |
224 | guchar *dst; |
215 | int bpp = gdk_pixbuf_get_has_alpha (pb) ? 4 : 3; |
225 | int bpp = gdk_pixbuf_get_n_channels (pb); |
216 | guchar *src = gdk_pixbuf_get_pixels (pb); |
226 | guchar *src = gdk_pixbuf_get_pixels (pb); |
217 | int sstr = gdk_pixbuf_get_rowstride (pb); |
227 | int sstr = gdk_pixbuf_get_rowstride (pb); |
218 | |
228 | |
219 | a85_init (); |
229 | a85_init (); |
220 | |
230 | |
221 | for (y = 0; y < h; y++) |
231 | for (y = 0; y < h; y++) |
222 | for (x = 0; x < w; x++) |
232 | for (x = 0; x < w; x++) |
223 | for (i = 0; i < 3; i++) |
233 | for (i = 0; i < (bpp < 3 ? 1 : 3); i++) |
224 | a85_push (fp, src [x * bpp + y * sstr + i]); |
234 | a85_push (fp, src [x * bpp + y * sstr + i]); |
225 | |
235 | |
226 | a85_finish (fp); |
236 | a85_finish (fp); |
227 | } |
237 | } |
228 | |
238 | |
|
|
239 | void |
|
|
240 | dump_binary (PerlIO *fp, GdkPixbuf *pb) |
|
|
241 | CODE: |
|
|
242 | { |
|
|
243 | int w = gdk_pixbuf_get_width (pb); |
|
|
244 | int h = gdk_pixbuf_get_height (pb); |
|
|
245 | int x, y, i; |
|
|
246 | guchar *dst; |
|
|
247 | int bpp = gdk_pixbuf_get_n_channels (pb); |
|
|
248 | guchar *src = gdk_pixbuf_get_pixels (pb); |
|
|
249 | int sstr = gdk_pixbuf_get_rowstride (pb); |
229 | |
250 | |
|
|
251 | for (y = 0; y < h; y++) |
|
|
252 | for (x = 0; x < w; x++) |
|
|
253 | for (i = 0; i < (bpp < 3 ? 1 : 3); i++) |
|
|
254 | PerlIO_putc (fp, src [x * bpp + y * sstr + i]); |
|
|
255 | } |
230 | |
256 | |
231 | |
257 | |
|
|
258 | |
|
|
259 | |