source: libcaca/trunk/java/org_zoy_caca_Canvas.c @ 4197

Last change on this file since 4197 was 4197, checked in by Sam Hocevar, 10 years ago

Java bindings, courtesy of Adrien Grand <jpountz@dinauz.org>.

File size: 12.0 KB
Line 
1/**
2 *  libcaca       Java bindings for libcaca
3 *  Copyright (c) 2009 Adrien Grand <jpountz@dinauz.org>
4 *
5 *  $Id$
6 *
7 *  This library is free software. It comes without any warranty, to
8 *  the extent permitted by applicable law. You can redistribute it
9 *  and/or modify it under the terms of the Do What The Fuck You Want
10 *  To Public License, Version 2, as published by Sam Hocevar. See
11 *  http://sam.zoy.org/wtfpl/COPYING for more details.
12 */
13
14#include "org_zoy_caca_Canvas.h"
15
16#include "caca.h"
17
18
19JNIEXPORT jint JNICALL
20Java_org_zoy_caca_Canvas_getCursorX(JNIEnv *env, jclass cls, jlong ptr)
21{
22  return caca_get_cursor_x((caca_canvas_t *)ptr);
23}
24
25JNIEXPORT jint JNICALL
26Java_org_zoy_caca_Canvas_getCursorY (JNIEnv *env, jclass cls, jlong ptr)
27{
28  return caca_get_cursor_y((caca_canvas_t *)ptr);
29}
30
31JNIEXPORT void JNICALL
32Java_org_zoy_caca_Canvas_setCursorXY(JNIEnv *env, jclass cls, jlong ptr, jint x, jint y)
33{
34  caca_gotoxy((caca_canvas_t *)ptr, x, y);
35}
36
37JNIEXPORT jint JNICALL
38Java_org_zoy_caca_Canvas_getHandleX(JNIEnv *env, jclass cls, jlong ptr)
39{
40  return caca_get_canvas_handle_x((caca_canvas_t *)ptr);
41}
42
43JNIEXPORT jint JNICALL
44Java_org_zoy_caca_Canvas_getHandleY(JNIEnv *env, jclass cls, jlong ptr)
45{
46  return caca_get_canvas_handle_x((caca_canvas_t *)ptr);
47}
48
49JNIEXPORT void JNICALL
50Java_org_zoy_caca_Canvas_setHandleXY(JNIEnv *env, jclass cls, jlong ptr, jint x, jint y)
51{
52  caca_set_canvas_handle((caca_canvas_t *)ptr, x, y);
53}
54
55JNIEXPORT jlong JNICALL
56Java_org_zoy_caca_Canvas_createCanvas(JNIEnv *env, jclass cls, jint w, jint h)
57{
58  return (jlong)caca_create_canvas(w, h);
59}
60
61JNIEXPORT jint JNICALL
62Java_org_zoy_caca_Canvas_getCanvasWidth(JNIEnv *env, jclass cls, jlong ptr)
63{
64  return caca_get_canvas_width((caca_canvas_t *)ptr);
65}
66
67JNIEXPORT jint JNICALL
68Java_org_zoy_caca_Canvas_getCanvasHeight(JNIEnv *env, jclass cls, jlong ptr)
69{
70  return caca_get_canvas_height((caca_canvas_t *)ptr);
71}
72
73JNIEXPORT void JNICALL
74Java_org_zoy_caca_Canvas_setCanvasSize(JNIEnv *env, jclass cls, jlong ptr, jint w, jint h)
75{
76  caca_set_canvas_size((caca_canvas_t *)ptr, w, h);
77}
78
79JNIEXPORT void JNICALL
80Java_org_zoy_caca_Canvas_clearCanvas(JNIEnv *env, jclass cls, jlong ptr)
81{
82  caca_clear_canvas((caca_canvas_t *)ptr);
83}
84
85JNIEXPORT jint JNICALL
86Java_org_zoy_caca_Canvas_getCanvasChar(JNIEnv *env, jclass cls, jlong ptr, jint x, jint y)
87{
88  return caca_get_char((caca_canvas_t *)ptr, x, y); 
89}
90
91JNIEXPORT void JNICALL
92Java_org_zoy_caca_Canvas_putCanvasChar(JNIEnv *env, jclass cls, jlong ptr, jint x, jint y, jint ch)
93{
94  caca_put_char((caca_canvas_t *)ptr, x, y, ch);
95}
96
97JNIEXPORT void JNICALL
98Java_org_zoy_caca_Canvas_putCanvasString(JNIEnv *env, jclass cls, jlong ptr, jint x, jint y, jstring s)
99{
100  const char *chars;
101
102  chars = (*env)->GetStringUTFChars(env, s, 0);
103  caca_put_str((caca_canvas_t *)ptr, x, y, chars);
104  (*env)->ReleaseStringUTFChars(env, s, chars);
105}
106
107JNIEXPORT void JNICALL
108Java_org_zoy_caca_Canvas_blitCanvas(JNIEnv *env, jclass cls, jlong ptr, jint x,
109                                    jint y, jlong cv, jlong mask)
110{
111  caca_blit((caca_canvas_t *)ptr, x, y, (caca_canvas_t *)cv, (caca_canvas_t *)mask);
112}
113
114JNIEXPORT void JNICALL
115Java_org_zoy_caca_Canvas_setCanvasBoundaries(JNIEnv *env, jclass cls, jlong ptr,
116                                             jint x, jint y, jint w, jint h)
117{
118  caca_set_canvas_boundaries((caca_canvas_t *)ptr, x, y, w, h);
119}
120
121JNIEXPORT void JNICALL
122Java_org_zoy_caca_Canvas_invertCanvas(JNIEnv *env, jclass cls, jlong ptr)
123{
124  caca_invert((caca_canvas_t *)ptr);
125}
126
127JNIEXPORT void JNICALL
128Java_org_zoy_caca_Canvas_flipCanvas(JNIEnv *env, jclass cls, jlong ptr)
129{
130  caca_flip((caca_canvas_t *)ptr);
131}
132
133JNIEXPORT void JNICALL
134Java_org_zoy_caca_Canvas_flopCanvas(JNIEnv *env, jclass cls, jlong ptr)
135{
136  caca_flop((caca_canvas_t *)ptr);
137}
138
139JNIEXPORT void JNICALL
140Java_org_zoy_caca_Canvas_rotateCanvas180(JNIEnv *env, jclass cls, jlong ptr)
141{
142  caca_rotate_180((caca_canvas_t *)ptr);
143}
144
145JNIEXPORT void JNICALL
146Java_org_zoy_caca_Canvas_rotateCanvasLeft(JNIEnv *env, jclass cls, jlong ptr)
147{
148  caca_rotate_left((caca_canvas_t *)ptr);
149}
150
151JNIEXPORT void JNICALL
152Java_org_zoy_caca_Canvas_rotateCanvasRight(JNIEnv *env, jclass cls, jlong ptr)
153{
154  caca_rotate_right((caca_canvas_t *)ptr);
155}
156
157JNIEXPORT void JNICALL
158Java_org_zoy_caca_Canvas_stretchCanvasLeft(JNIEnv *env, jclass cls, jlong ptr)
159{
160  caca_stretch_left((caca_canvas_t *)ptr);
161}
162
163JNIEXPORT void JNICALL
164Java_org_zoy_caca_Canvas_stretchCanvasRight(JNIEnv *env, jclass cls, jlong ptr)
165{
166  caca_stretch_right((caca_canvas_t *)ptr);
167}
168
169JNIEXPORT jint JNICALL
170Java_org_zoy_caca_Canvas_getCanvasAttribute(JNIEnv *env, jclass cls, jlong ptr, jint x, jint y)
171{
172  return caca_get_attr((caca_canvas_t *)ptr, x, y);
173}
174
175JNIEXPORT void JNICALL
176Java_org_zoy_caca_Canvas_setCanvasAttribute(JNIEnv *env, jclass cls, jlong ptr, jint attr)
177{
178  caca_set_attr((caca_canvas_t *)ptr, attr);
179}
180
181JNIEXPORT void JNICALL
182Java_org_zoy_caca_Canvas_putCanvasAttribute(JNIEnv *env, jclass cls, jlong ptr,
183                                            jint x, jint y, jint attr)
184{
185  caca_put_attr((caca_canvas_t *)ptr, x, y, attr);
186}
187
188JNIEXPORT void JNICALL
189Java_org_zoy_caca_Canvas_setCanvasColorAnsi(JNIEnv *env, jclass cls, jlong ptr, jbyte fg, jbyte bg)
190{
191  caca_set_color_ansi((caca_canvas_t *)ptr, fg, bg);
192}
193
194JNIEXPORT void JNICALL
195Java_org_zoy_caca_Canvas_setCanvasColorArgb(JNIEnv *env, jclass cls, jlong ptr, jshort fg, jshort bg)
196{
197  caca_set_color_argb((caca_canvas_t *)ptr, fg, bg);
198}
199
200JNIEXPORT void JNICALL
201Java_org_zoy_caca_Canvas_canvasDrawLine(JNIEnv *env, jclass cls, jlong ptr, jint x1, jint y1,
202                                        jint x2, jint y2, jint ch)
203{
204  caca_draw_line((caca_canvas_t *)ptr, x1, y1, x2, y2, ch);
205}
206
207JNIEXPORT void JNICALL
208Java_org_zoy_caca_Canvas_canvasDrawPolyline(JNIEnv *env, jclass cls, jlong ptr,
209                                            jintArray xs, jintArray ys, jint ch)
210{
211  jsize size;
212  jint *x_elems;
213  jint *y_elems;
214
215  size = (*env)->GetArrayLength(env, xs);
216  x_elems = (*env)->GetIntArrayElements(env, xs, 0);
217  y_elems = (*env)->GetIntArrayElements(env, ys, 0);
218  caca_draw_polyline((caca_canvas_t *)ptr, x_elems, y_elems, size, ch);
219  (*env)->ReleaseIntArrayElements(env, xs, x_elems, 0);
220  (*env)->ReleaseIntArrayElements(env, ys, y_elems, 0);
221}
222
223JNIEXPORT void JNICALL
224Java_org_zoy_caca_Canvas_canvasDrawThinLine(JNIEnv *env, jclass cls, jlong ptr,
225                                            jint x1, jint y1, jint x2, jint y2)
226{
227  caca_draw_thin_line((caca_canvas_t *)ptr, x1, y1, x2, y2);
228}
229
230JNIEXPORT void JNICALL
231Java_org_zoy_caca_Canvas_canvasDrawThinPolyline(JNIEnv *env, jclass cls, jlong ptr,
232                                                jintArray xs, jintArray ys)
233{
234  jsize size;
235  jint *x_elems;
236  jint *y_elems;
237 
238  size = (*env)->GetArrayLength(env, xs);
239  x_elems = (*env)->GetIntArrayElements(env, xs, 0);
240  y_elems = (*env)->GetIntArrayElements(env, ys, 0);
241  caca_draw_thin_polyline((caca_canvas_t *)ptr, x_elems, y_elems, size);
242  (*env)->ReleaseIntArrayElements(env, xs, x_elems, 0);
243  (*env)->ReleaseIntArrayElements(env, ys, y_elems, 0);
244}
245
246JNIEXPORT void JNICALL
247Java_org_zoy_caca_Canvas_canvasDrawCircle(JNIEnv * env, jclass cls, jlong ptr,
248                                          jint x, jint y, jint r, jint ch)
249{
250  caca_draw_circle((caca_canvas_t *)ptr, x, y, r, ch);
251}
252
253JNIEXPORT void JNICALL
254Java_org_zoy_caca_Canvas_canvasDrawEllipse(JNIEnv *env, jclass cls, jlong ptr,
255                                           jint x, jint y, jint a, jint b, jint ch)
256{
257  caca_draw_ellipse((caca_canvas_t *)ptr, x, y, a, b, ch);
258}
259
260JNIEXPORT void JNICALL
261Java_org_zoy_caca_Canvas_canvasDrawThinEllipse(JNIEnv *env, jclass cls, jlong ptr,
262                                               jint x, jint y, jint a, jint b)
263{
264  caca_draw_thin_ellipse((caca_canvas_t *)ptr, x, y, a, b);
265}
266
267JNIEXPORT void JNICALL
268Java_org_zoy_caca_Canvas_canvasFillEllipse(JNIEnv *env, jclass cls, jlong ptr, jint x,
269                                           jint y, jint a, jint b, jint ch)
270{
271  caca_fill_ellipse((caca_canvas_t *)ptr, x, y, a, b, ch);
272}
273
274JNIEXPORT void JNICALL
275Java_org_zoy_caca_Canvas_canvasDrawBox(JNIEnv *env, jclass cls, jlong ptr, jint x, jint y,
276                                       jint w, jint h, jint ch)
277{
278  caca_draw_box((caca_canvas_t *)ptr, x, y, w, h, ch);
279}
280
281JNIEXPORT void JNICALL
282Java_org_zoy_caca_Canvas_canvasDrawThinBox(JNIEnv *env, jclass cls, jlong ptr,
283                                           jint x, jint y, jint w, jint h)
284{
285  caca_draw_thin_box((caca_canvas_t *)ptr, x, y, w, h);
286}
287
288JNIEXPORT void JNICALL
289Java_org_zoy_caca_Canvas_canvasDrawCp437Box(JNIEnv *env, jclass cls, jlong ptr,
290                                            jint x, jint y, jint w, jint h)
291{
292  caca_draw_cp437_box((caca_canvas_t *)ptr, x, y, w, h);
293}
294
295JNIEXPORT void JNICALL
296Java_org_zoy_caca_Canvas_canvasFillBox(JNIEnv *env, jclass cls, jlong ptr,
297                                       jint x, jint y, jint w, jint h, jint ch)
298{
299  caca_fill_box((caca_canvas_t *)ptr, x, y, w, h, ch);
300}
301
302JNIEXPORT void JNICALL
303Java_org_zoy_caca_Canvas_canvasDrawTriangle(JNIEnv *env, jclass cls, jlong ptr,
304                                            jint x1, jint y1, jint x2, jint y2,
305                                            jint x3, jint y3, jint ch)
306{
307  caca_draw_triangle((caca_canvas_t *)ptr, x1, y1, x2, y2, x3, y3, ch);
308}
309
310JNIEXPORT void JNICALL
311Java_org_zoy_caca_Canvas_canvasDrawThinTriangle(JNIEnv *env, jclass cls, jlong ptr,
312                                                jint x1, jint y1, jint x2, jint y2,
313                                                jint x3, jint y3)
314{
315  caca_draw_thin_triangle((caca_canvas_t *)ptr, x1, y1, x2, y2, x3, y3);
316}
317
318JNIEXPORT void JNICALL
319Java_org_zoy_caca_Canvas_canvasFillTriangle(JNIEnv *env, jclass cls, jlong ptr,
320                                            jint x1, jint y1, jint x2, jint y2,
321                                            jint x3, jint y3, jint ch)
322{
323  caca_fill_triangle((caca_canvas_t *)ptr, x1, y1, x2, y2, x3, y3, ch);
324}
325
326JNIEXPORT jint JNICALL
327Java_org_zoy_caca_Canvas_getCanvasFrameCount(JNIEnv *env, jclass cls, jlong ptr)
328{
329  return caca_get_frame_count((caca_canvas_t *)ptr);
330}
331
332JNIEXPORT void JNICALL
333Java_org_zoy_caca_Canvas_setCanvasFrame(JNIEnv *env, jclass cls, jlong ptr, jint id)
334{
335  caca_set_frame((caca_canvas_t *)ptr, id);
336}
337
338JNIEXPORT jstring JNICALL
339Java_org_zoy_caca_Canvas_getCanvasFrameName(JNIEnv *env, jclass cls, jlong ptr)
340{
341  const char *frame_name = caca_get_frame_name((caca_canvas_t *)ptr);
342  return (*env)->NewStringUTF(env, frame_name);
343}
344
345JNIEXPORT void JNICALL
346Java_org_zoy_caca_Canvas_setCanvasFrameName(JNIEnv *env, jclass cls, jlong ptr, jstring frame_name)
347{
348  const char *frame_name_chars = (*env)->GetStringUTFChars(env, frame_name, 0);
349  caca_set_frame_name((caca_canvas_t *)ptr, frame_name_chars);
350  (*env)->ReleaseStringUTFChars(env, frame_name, frame_name_chars);
351}
352
353JNIEXPORT void JNICALL
354Java_org_zoy_caca_Canvas_createCanvasFrame(JNIEnv *env, jclass cls, jlong ptr, jint id)
355{
356  caca_create_frame((caca_canvas_t *)ptr, id);
357}
358
359JNIEXPORT void JNICALL
360Java_org_zoy_caca_Canvas_freeCanvasFrame(JNIEnv *env, jclass cls, jlong ptr, jint id)
361{
362  caca_free_frame((caca_canvas_t *)ptr, id);
363}
364
365JNIEXPORT void JNICALL
366Java_org_zoy_caca_Canvas_canvasRender(JNIEnv *env, jclass cls, jlong ptr, jlong font_ptr,
367                                      jbyteArray buf, jint width, jint height, jint pitch)
368{
369  jbyte *elems = (*env)->GetByteArrayElements(env, buf, 0);
370  caca_render_canvas((caca_canvas_t *)ptr, (caca_font_t *)font_ptr, elems, width, height, pitch);
371  (*env)->ReleaseByteArrayElements(env, buf, elems, 0);
372}
373
374JNIEXPORT void JNICALL
375Java_org_zoy_caca_Canvas_canvasDitherBitmap(JNIEnv *env, jclass cls, jlong ptr, jint x, jint y,
376                                            jint w, jint h, jlong dither_ptr, jbyteArray pixels)
377{
378  jbyte *elems = (*env)->GetByteArrayElements(env, pixels, 0);
379  jsize size = (*env)->GetArrayLength(env, pixels);
380  caca_dither_bitmap((caca_canvas_t *)ptr, x, y, w, h, (caca_dither_t *)dither_ptr, elems);
381  (*env)->ReleaseByteArrayElements(env, pixels, elems, 0);
382}
383
384JNIEXPORT void JNICALL
385Java_org_zoy_caca_Canvas_freeCanvas(JNIEnv *env, jclass cls, jlong ptr)
386{
387  caca_free_canvas((caca_canvas_t *)ptr);
388}
389
Note: See TracBrowser for help on using the repository browser.