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

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

add a Libcaca class to the PHP class interface, parallel to the Libcaca class in the .NET interface; fix a bunch of whitespace inconsistencies

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