source: libcaca/trunk/caca-php/caca.php @ 3292

Last change on this file since 3292 was 3292, checked in by bsittler, 12 years ago

add AnsiColor?, EventType? and EventKey? constants parallel to the .NET ones

File size: 12.4 KB
Line 
1<?php
2/*
3 *  php-caca      Php binding for Libcaca
4 *  caca.php      object layer for caca-php
5 *  Copyright (c) 2008 Vion Nicolas <nico@picapo.net>
6 *
7 *
8 *  This library is free software. It comes without any warranty, to
9 *  the extent permitted by applicable law. You can redistribute it
10 *  and/or modify it under the terms of the Do What The Fuck You Want
11 *  To Public License, Version 2, as published by Sam Hocevar. See
12 *  http://sam.zoy.org/wtfpl/COPYING for more details.
13 */
14
15class AnsiColor
16{
17        const BLACK = CACA_BLACK;
18        const BLUE = CACA_BLUE;
19        const GREEN = CACA_GREEN;
20        const CYAN = CACA_CYAN;
21        const RED = CACA_RED;
22        const MAGENTA = CACA_MAGENTA;
23        const BROWN = CACA_BROWN;
24        const LIGHTGRAY = CACA_LIGHTGRAY;
25        const DARKGRAY = CACA_DARKGRAY;
26        const LIGHTBLUE = CACA_LIGHTBLUE;
27        const LIGHTGREEN = CACA_LIGHTGREEN;
28        const LIGHTCYAN = CACA_LIGHTCYAN;
29        const LIGHTRED = CACA_LIGHTRED;
30        const LIGHTMAGENTA = CACA_LIGHTMAGENTA;
31        const YELLOW = CACA_YELLOW;
32        const WHITE = CACA_WHITE;
33        /* NOTE: We can't call this one DEFAULT because that's a reserved
34         * token in PHP. */
35        const DEFAULTCOLOR = CACA_DEFAULT;
36        const TRANSPARENT = CACA_TRANSPARENT;
37}
38
39class Canvas {
40        private $cv;
41
42        function importFile($path, $codec) {
43                return caca_import_file($this->cv, $path, $codec);
44        }
45
46        function importString($codec) {
47                return caca_import_string($this->cv, $codec);
48        }
49
50        function exportString($codec) {
51                return caca_export_string($this->cv, $codec);
52        }
53
54        function freeFrame($id) {
55                return caca_free_frame($this->cv, $id);
56        }
57
58        function frameCount() {
59                return caca_get_frame_count($this->cv);
60        }
61
62        function createFrame($id) {
63                return caca_create_frame($this->cv, $id);
64        }
65
66        function setFrameName($name) {
67                return caca_set_frame_name($this->cv, $name);
68        }
69
70        function setFrame($id) {
71                return caca_set_frame($this->cv, $id);
72        }
73
74        function putFigchar($char) {
75                return caca_put_figchar($this->cv, $char);
76        }
77
78        function setFigfont($path) {
79                return caca_canvas_set_figfont($this->cv, $path);
80        }
81
82        function putAttr($attr) {
83                return caca_put_attr($this->cv, $attr);
84        }
85
86        function stretchRight() {
87                return caca_stretch_right($this->cv);
88        }
89
90        function stretchLeft() {
91                return caca_stretch_left($this->cv);
92        }
93
94        function setBoundaries($width, $height) {
95                return caca_set_canvas_boundaries($this->cv, $width, $height);
96        }
97
98        function setHandle($x, $y) {
99                return caca_set_canvas_handle($this->cv, $x, $y);
100        }
101
102        function getHandleX() {
103                return caca_get_canvas_handle_x($this->cv);
104        }
105
106        function getHandleY() {
107                return caca_get_canvas_handle_y($this->cv);
108        }
109
110        function getCursorX() {
111                return caca_get_cursor_x($this->cv);
112        }
113
114        function getCursorY() {
115                return caca_get_cursor_y($this->cv);
116        }
117
118        function getChars() {
119                return caca_get_canvas_chars($this->cv);
120        }
121
122        function getAttrs() {
123                return caca_get_canvas_attrs($this->cv);
124        }
125
126        function setSize($width, $height) {
127                return caca_set_canvas_size($this->cv, $width, $height);
128        }
129
130        function getWidth() {
131                return caca_get_canvas_width($this->cv);
132        }
133
134        function getHeight() {
135                return caca_get_canvas_height($this->cv);
136        }
137       
138        function getAttr($x, $y) {
139                return caca_get_attr($this->cv, $x, $y);
140        }
141
142        function setAttr($attr) {
143                return caca_set_attr($this->cv, $x, $y, $attr);
144        }
145
146        function setColorANSI($foreground, $background) {
147                return caca_set_color_ansi($this->cv, $foreground, $background);
148        }
149
150        function setColorARGB($foreground, $background) {
151                return caca_set_color_argb($this->cv, $foreground, $background);
152        }
153
154        function putChar($x, $y, $c) {
155                return caca_put_char($this->cv, $x, $y, $c);
156        }
157
158        function getChar($x, $y) {
159                return caca_get_char($this->cv, $x, $y);
160        }
161
162        function putStr($x, $y, $str) {
163                return caca_put_str($this->cv, $x, $y, $str);
164        }
165
166        function Clear() {
167                return caca_clear_canvas($this->cv);
168        }
169
170        function Blit($x, $y, $canvas, $mask = false) {
171                return caca_blit($this->cv, $x, $y, $canvas->get_resource(), ($mask != false) ? $mask->get_resource() : false );
172        }
173
174        function Invert() {
175                return caca_invert($this->cv);
176        }
177
178        function Flip() {
179                return caca_flip($this->cv);
180        }
181
182        function Flop() {
183                return caca_flop($this->cv);
184        }
185
186        function Rotate180() {
187                return caca_rotate_180($this->cv);
188        }
189
190        function RotateLeft() {
191                return caca_rotate_left($this->cv);
192        }
193
194        function RotateRight() {
195                return caca_rotate_right($this->cv);
196        }
197
198        function drawLine($x1, $y1, $x2, $y2, $char) {
199                return caca_draw_line($this->cv, $x1, $y1, $x2, $y2, $char);
200        }
201
202        function drawPolyline($points, $char) {
203                return caca_draw_polyline($this->cv, $points, $char);
204        }
205
206        function drawThinLine($x1, $y1, $x2, $y2) {
207                return caca_draw_thin_line($this->cv, $x1, $y1, $x2, $y2);
208        }
209
210        function drawThinPolyline($points) {
211                return caca_draw_thin_polyline($this->cv, $points);
212        }
213
214        function drawCircle($x, $y, $radius, $char) {
215                return caca_draw_circle($this->cv, $x, $y, $radius, $char);
216        }
217
218        function drawEllipse($x1, $y1, $x2, $y2, $char) {
219                return caca_draw_ellipse($this->cv, $x1, $y1, $x2, $y2, $char);
220        }
221
222        function drawThinEllipse($x1, $y1, $x2, $y2) {
223                return caca_draw_thin_ellipse($this->cv, $x1, $y1, $x2, $y2);   
224        }
225
226        function fillEllipse($x1, $y1, $x2, $y2, $char) {
227                return caca_fill_ellipse($this->cv, $x1, $y1, $x2, $y2, $char);
228        }
229
230        function drawBox($x1, $y1, $x2, $y2, $char) {
231                return caca_draw_box($this->cv, $x1, $y1, $x2, $y2, $char);
232        }
233
234        function drawThinBox($x1, $y1, $x2, $y2) {
235                return caca_draw_thin_box($this->cv, $x1, $y1, $x2, $y2);
236        }
237
238        function drawCP437Box($x1, $y1, $x2, $y2) {
239                return caca_draw_cp437_box($this->cv, $x1, $y1, $x2, $y2);
240        }
241
242        function fillBox($x1, $y1, $x2, $y2, $char) {
243                return caca_fill_box($this->cv, $x1, $y1, $x2, $y2, $char);
244        }
245
246        function drawTriangle($x1, $y1, $x2, $y2, $x3, $y3, $char) {
247                return caca_draw_triangle($this->cv, $x1, $y1, $x2, $y2, $x3, $y3, $char);
248        }
249
250        function drawThinTriangle($x1, $y1, $x2, $y2, $x3, $y3) {
251                return caca_draw_thin_triangle($this->cv, $x1, $y1, $x2, $y2, $x3, $y3);
252        }
253
254        function fillTriangle($x1, $y1, $x2, $y2, $x3, $y3, $char) {
255                return caca_fill_triangle($this->cv, $x1, $y1, $x2, $y2, $x3, $y3, $char);
256        }
257
258        function __construct($width = 0, $height = 0) {
259                $this->cv = caca_create_canvas($width, $height);
260        }
261       
262        function get_resource() {
263                return $this->cv;
264        }
265}
266
267class EventType
268{
269        const NONE = CACA_EVENT_NONE;
270
271        const KEY_PRESS = CACA_EVENT_KEY_PRESS;
272        const KEY_RELEASE = CACA_EVENT_KEY_RELEASE;
273        const MOUSE_PRESS = CACA_EVENT_MOUSE_PRESS;
274        const MOUSE_RELEASE = CACA_EVENT_MOUSE_RELEASE;
275        const MOUSE_MOTION = CACA_EVENT_MOUSE_MOTION;
276        const RESIZE = CACA_EVENT_RESIZE;
277        const QUIT = CACA_EVENT_QUIT;
278
279        const ANY = CACA_EVENT_ANY;
280}
281   
282class EventKey
283{
284        const UNKNOWN = CACA_KEY_UNKNOWN;
285
286        const CTRL_A = CACA_KEY_CTRL_A;
287        const CTRL_B = CACA_KEY_CTRL_B;
288        const CTRL_C = CACA_KEY_CTRL_C;
289        const CTRL_D = CACA_KEY_CTRL_D;
290        const CTRL_E = CACA_KEY_CTRL_E;
291        const CTRL_F = CACA_KEY_CTRL_F;
292        const CTRL_G = CACA_KEY_CTRL_G;
293        const BACKSPACE = CACA_KEY_BACKSPACE;
294        const TAB = CACA_KEY_TAB;
295        const CTRL_J = CACA_KEY_CTRL_J;
296        const CTRL_K = CACA_KEY_CTRL_K;
297        const CTRL_L = CACA_KEY_CTRL_L;
298        /* NOTE: We can't call this one RETURN because that's a
299         * reserved token in PHP */
300        const RETURN_KEY = CACA_KEY_RETURN;
301        const CTRL_N = CACA_KEY_CTRL_N;
302        const CTRL_O = CACA_KEY_CTRL_O;
303        const CTRL_P = CACA_KEY_CTRL_P;
304        const CTRL_Q = CACA_KEY_CTRL_Q;
305        const CTRL_R = CACA_KEY_CTRL_R;
306        const PAUSE = CACA_KEY_PAUSE;
307        const CTRL_T = CACA_KEY_CTRL_T;
308        const CTRL_U = CACA_KEY_CTRL_U;
309        const CTRL_V = CACA_KEY_CTRL_V;
310        const CTRL_W = CACA_KEY_CTRL_W;
311        const CTRL_X = CACA_KEY_CTRL_X;
312        const CTRL_Y = CACA_KEY_CTRL_Y;
313        const CTRL_Z = CACA_KEY_CTRL_Z;
314        const ESCAPE = CACA_KEY_ESCAPE;
315        const DELETE = CACA_KEY_DELETE;
316
317        const UP = CACA_KEY_UP;
318        const DOWN = CACA_KEY_DOWN;
319        const LEFT = CACA_KEY_LEFT;
320        const RIGHT = CACA_KEY_RIGHT;
321
322        const INSERT = CACA_KEY_INSERT;
323        const HOME = CACA_KEY_HOME;
324        const END = CACA_KEY_END;
325        const PAGEUP = CACA_KEY_PAGEUP;
326        const PAGEDOWN = CACA_KEY_PAGEDOWN;
327
328        const F1 = CACA_KEY_F1;
329        const F2 = CACA_KEY_F2;
330        const F3 = CACA_KEY_F3;
331        const F4 = CACA_KEY_F4;
332        const F5 = CACA_KEY_F5;
333        const F6 = CACA_KEY_F6;
334        const F7 = CACA_KEY_F7;
335        const F8 = CACA_KEY_F8;
336        const F9 = CACA_KEY_F9;
337        const F10 = CACA_KEY_F10;
338        const F11 = CACA_KEY_F11;
339        const F12 = CACA_KEY_F12;
340        const F13 = CACA_KEY_F13;
341        const F14 = CACA_KEY_F14;
342        const F15 = CACA_KEY_F15;
343}
344
345class Event {
346        private $ev;
347
348        function getType() {
349                return caca_get_event_type($this->ev);
350        }
351
352        function getKeyCh() {
353                return caca_get_event_key_ch($this->ev);
354        }
355
356        function getMouseX() {
357                return caca_get_event_mouse_x($this->ev);
358        }
359
360        function getResizeWidth() {
361                return caca_get_event_resize_width($this->ev);
362        }
363
364        function getResizeHeight() {
365                return caca_get_event_resize_height($this->ev);
366        }
367
368        function __construct($_ev) {
369                $this->ev = $_ev;
370        }
371       
372        function get_resource() {
373                return $this->ev;
374        }
375}
376
377class Display {
378        private $dp;
379
380        function setCursor($visible) {
381                return caca_set_cursor($this->dp, $visible);
382        }
383
384        function refresh() {
385                return caca_refresh_display($this->dp);
386        }
387
388        function getDriver() {
389                return caca_get_display_driver($this->dp);
390        }
391
392        function setDriver($name) {
393                return caca_set_display_driver($this->dp, $name);
394        }
395
396        function setDisplayTime($time) {
397                return caca_set_display_time($this->dp, $time);
398        }
399
400        function getDisplayTime() {
401                return caca_get_display_time($this->dp);
402        }
403
404        function getWidth() {
405                return caca_get_display_width($this->dp);
406        }
407
408        function getHeight() {
409                return caca_get_display_height($this->dp);
410        }
411
412        function setTitle($title) {
413                return caca_set_display_title($this->dp, $title);
414        }
415
416        function gotoXY($x, $y) {
417                return caca_gotoxy($this->dp, $x, $y);
418        }
419
420        function getMouseX() {
421                return caca_get_mouse_x($this->dp);
422        }
423
424        function getMouseY() {
425                return caca_get_mouse_y($this->dp);
426        }
427
428        function setMouse($state) {
429                return caca_set_mouse($this->dp, $state);
430        }
431
432        function getEvent($t, $timeout) {
433                $ev = caca_get_event($this->dp, $t, $timeout);
434                if(! $ev) {
435                        return NULL;
436                }
437                return new Event($ev);
438        }
439
440        function __construct($canvas, $driver = false) {
441                if ($driver)
442                        $this->dp = caca_create_display_with_driver($canvas->get_resource(), $driver);
443                else
444                        $this->dp = caca_create_display($canvas->get_resource());
445        }
446
447        function get_resource() {
448                return $this->dp;
449        }
450}
451
452class Dither {
453        private $dt;
454        private $img;
455
456        function setPalette($colors) {
457                return caca_set_dither_palette($this->dt, $colors);
458        }
459
460        function setBrightness($value) {
461                return caca_set_dither_brightness($this->dt, $value);
462        }
463
464        function getBrightness() {
465                return caca_get_dither_brightness($this->dt);
466        }
467       
468        function setGamme($value) {
469                return caca_set_dither_gamma($this->dt, $value);
470        }
471       
472        function getGamma() {
473                return caca_get_dither_gamma($this->dt);
474        }
475       
476        function setContrast($value) {
477                return caca_set_dither_contrast($this->dt, $value);
478        }
479       
480        function getContrast() {
481                return caca_get_dither_contrast($this->dt);
482        }
483       
484        function setAntialias($value) {
485                return caca_set_dither_antialias($this->dt, $value);
486        }
487       
488        function getAntialiasList() {
489                return caca_get_dither_antialias_list($this->dt);
490        }
491       
492        function getAntialias() {
493                return caca_get_dither_antialias($this->dt);
494        }
495       
496        function setColor($color) {
497                return caca_set_dither_color($this->dt, $color);
498        }
499       
500        function getColorList() {
501                return caca_get_dither_color_list($this->dt);
502        }
503       
504        function getColor() {
505                return caca_get_dither_color($this->dt);
506        }
507       
508        function setCharset($value) {
509                return caca_set_dither_charset($this->dt, $value);
510        }
511       
512        function getCharsetList() {
513                return caca_get_dither_charset_list($this->dt);
514        }
515       
516        function getCharset() {
517                return caca_get_dither_charset($this->dt);
518        }
519       
520        function setAlgorithm($name) {
521                return caca_set_dither_algorithm($this->dt, $name);
522        }
523       
524        function getAlgorithmList() {
525                return caca_get_dither_algorithm_list($this->dt);
526        }
527       
528        function getAlgorithm() {
529                return caca_get_dither_algorithm($this->dt);
530        }
531       
532        function bitmap($canvas, $x, $y, $width, $height, $load_palette = true) {
533                return caca_dither_bitmap($canvas->get_resource(), $x, $y, $width, $height, $this->dt, $this->img, $load_palette);
534        }
535
536        function __construct($image) {
537                $this->dt = caca_create_dither($image);
538                $this->img = $image;
539        }
540}
541
542class Font {
543        private $f;
544       
545        function getWidth() {
546                return caca_get_font_width($this->f);
547        }
548
549        function getHeight() {
550                return caca_get_font_height($this->f);
551        }
552
553        function getBlocks() {
554                return caca_get_font_blocks($this->f);
555        }
556
557        function Render($cv, $image) {
558                return caca_render_canvas($cv->get_resource(), $this->f, $image);
559        }
560
561        static function getList() {
562                return caca_get_font_list();
563        }
564
565        function __construct($name) {
566                $this->f = caca_load_builtin_font($name);
567        }
568}
Note: See TracBrowser for help on using the repository browser.