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

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

fix type in Canvas::drawLine; add a minimal class Event providing a
subset of the functionality of the .NET version; added Display::getEvent
similar to the .NET version; change Dither::bitmap to take a Canvas
object rather than a caca canvas resource as its first parameter; add
Font::Render and Font::getList methods parallel to the .NET version

File size: 9.7 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
15
16class Canvas {
17        private $cv;
18
19        function importFile($path, $codec) {
20                return caca_import_file($this->cv, $path, $codec);
21        }
22
23        function importString($codec) {
24                return caca_import_string($this->cv, $codec);
25        }
26
27        function exportString($codec) {
28                return caca_export_string($this->cv, $codec);
29        }
30
31        function freeFrame($id) {
32                return caca_free_frame($this->cv, $id);
33        }
34
35        function frameCount() {
36                return caca_get_frame_count($this->cv);
37        }
38
39        function createFrame($id) {
40                return caca_create_frame($this->cv, $id);
41        }
42
43        function setFrameName($name) {
44                return caca_set_frame_name($this->cv, $name);
45        }
46
47        function setFrame($id) {
48                return caca_set_frame($this->cv, $id);
49        }
50
51        function putFigchar($char) {
52                return caca_put_figchar($this->cv, $char);
53        }
54
55        function setFigfont($path) {
56                return caca_canvas_set_figfont($this->cv, $path);
57        }
58
59        function putAttr($attr) {
60                return caca_put_attr($this->cv, $attr);
61        }
62
63        function stretchRight() {
64                return caca_stretch_right($this->cv);
65        }
66
67        function stretchLeft() {
68                return caca_stretch_left($this->cv);
69        }
70
71        function setBoundaries($width, $height) {
72                return caca_set_canvas_boundaries($this->cv, $width, $height);
73        }
74
75        function setHandle($x, $y) {
76                return caca_set_canvas_handle($this->cv, $x, $y);
77        }
78
79        function getHandleX() {
80                return caca_get_canvas_handle_x($this->cv);
81        }
82
83        function getHandleY() {
84                return caca_get_canvas_handle_y($this->cv);
85        }
86
87        function getCursorX() {
88                return caca_get_cursor_x($this->cv);
89        }
90
91        function getCursorY() {
92                return caca_get_cursor_y($this->cv);
93        }
94
95        function getChars() {
96                return caca_get_canvas_chars($this->cv);
97        }
98
99        function getAttrs() {
100                return caca_get_canvas_attrs($this->cv);
101        }
102
103        function setSize($width, $height) {
104                return caca_set_canvas_size($this->cv, $width, $height);
105        }
106
107        function getWidth() {
108                return caca_get_canvas_width($this->cv);
109        }
110
111        function getHeight() {
112                return caca_get_canvas_height($this->cv);
113        }
114       
115        function getAttr($x, $y) {
116                return caca_get_attr($this->cv, $x, $y);
117        }
118
119        function setAttr($attr) {
120                return caca_set_attr($this->cv, $x, $y, $attr);
121        }
122
123        function setColorANSI($foreground, $background) {
124                return caca_set_color_ansi($this->cv, $foreground, $background);
125        }
126
127        function setColorARGB($foreground, $background) {
128                return caca_set_color_argb($this->cv, $foreground, $background);
129        }
130
131        function putChar($x, $y, $c) {
132                return caca_put_char($this->cv, $x, $y, $c);
133        }
134
135        function getChar($x, $y) {
136                return caca_get_char($this->cv, $x, $y);
137        }
138
139        function putStr($x, $y, $str) {
140                return caca_put_str($this->cv, $x, $y, $str);
141        }
142
143        function Clear() {
144                return caca_clear_canvas($this->cv);
145        }
146
147        function Blit($x, $y, $canvas, $mask = false) {
148                return caca_blit($this->cv, $x, $y, $canvas->get_resource(), ($mask != false) ? $mask->get_resource() : false );
149        }
150
151        function Invert() {
152                return caca_invert($this->cv);
153        }
154
155        function Flip() {
156                return caca_flip($this->cv);
157        }
158
159        function Flop() {
160                return caca_flop($this->cv);
161        }
162
163        function Rotate180() {
164                return caca_rotate_180($this->cv);
165        }
166
167        function RotateLeft() {
168                return caca_rotate_left($this->cv);
169        }
170
171        function RotateRight() {
172                return caca_rotate_right($this->cv);
173        }
174
175        function drawLine($x1, $y1, $x2, $y2, $char) {
176                return caca_draw_line($this->cv, $x1, $y1, $x2, $y2, $char);
177        }
178
179        function drawPolyline($points, $char) {
180                return caca_draw_polyline($this->cv, $points, $char);
181        }
182
183        function drawThinLine($x1, $y1, $x2, $y2) {
184                return caca_draw_thin_line($this->cv, $x1, $y1, $x2, $y2);
185        }
186
187        function drawThinPolyline($points) {
188                return caca_draw_thin_polyline($this->cv, $points);
189        }
190
191        function drawCircle($x, $y, $radius, $char) {
192                return caca_draw_circle($this->cv, $x, $y, $radius, $char);
193        }
194
195        function drawEllipse($x1, $y1, $x2, $y2, $char) {
196                return caca_draw_ellipse($this->cv, $x1, $y1, $x2, $y2, $char);
197        }
198
199        function drawThinEllipse($x1, $y1, $x2, $y2) {
200                return caca_draw_thin_ellipse($this->cv, $x1, $y1, $x2, $y2);   
201        }
202
203        function fillEllipse($x1, $y1, $x2, $y2, $char) {
204                return caca_fill_ellipse($this->cv, $x1, $y1, $x2, $y2, $char);
205        }
206
207        function drawBox($x1, $y1, $x2, $y2, $char) {
208                return caca_draw_box($this->cv, $x1, $y1, $x2, $y2, $char);
209        }
210
211        function drawThinBox($x1, $y1, $x2, $y2) {
212                return caca_draw_thin_box($this->cv, $x1, $y1, $x2, $y2);
213        }
214
215        function drawCP437Box($x1, $y1, $x2, $y2) {
216                return caca_draw_cp437_box($this->cv, $x1, $y1, $x2, $y2);
217        }
218
219        function fillBox($x1, $y1, $x2, $y2, $char) {
220                return caca_fill_box($this->cv, $x1, $y1, $x2, $y2, $char);
221        }
222
223        function drawTriangle($x1, $y1, $x2, $y2, $x3, $y3, $char) {
224                return caca_draw_triangle($this->cv, $x1, $y1, $x2, $y2, $x3, $y3, $char);
225        }
226
227        function drawThinTriangle($x1, $y1, $x2, $y2, $x3, $y3) {
228                return caca_draw_thin_triangle($this->cv, $x1, $y1, $x2, $y2, $x3, $y3);
229        }
230
231        function fillTriangle($x1, $y1, $x2, $y2, $x3, $y3, $char) {
232                return caca_fill_triangle($this->cv, $x1, $y1, $x2, $y2, $x3, $y3, $char);
233        }
234
235        function __construct($width = 0, $height = 0) {
236                $this->cv = caca_create_canvas($width, $height);
237        }
238       
239        function get_resource() {
240                return $this->cv;
241        }
242}
243
244class Event {
245        private $ev;
246
247        function getType() {
248                return caca_get_event_type($this->ev);
249        }
250
251        function getKeyCh() {
252                return caca_get_event_key_ch($this->ev);
253        }
254
255        function getMouseX() {
256                return caca_get_event_mouse_x($this->ev);
257        }
258
259        function getResizeWidth() {
260                return caca_get_event_resize_width($this->ev);
261        }
262
263        function getResizeHeight() {
264                return caca_get_event_resize_height($this->ev);
265        }
266
267        function __construct($_ev) {
268                $this->ev = $_ev;
269        }
270       
271        function get_resource() {
272                return $this->ev;
273        }
274}
275
276class Display {
277        private $dp;
278
279        function setCursor($visible) {
280                return caca_set_cursor($this->dp, $visible);
281        }
282
283        function refresh() {
284                return caca_refresh_display($this->dp);
285        }
286
287        function getDriver() {
288                return caca_get_display_driver($this->dp);
289        }
290
291        function setDriver($name) {
292                return caca_set_display_driver($this->dp, $name);
293        }
294
295        function setDisplayTime($time) {
296                return caca_set_display_time($this->dp, $time);
297        }
298
299        function getDisplayTime() {
300                return caca_get_display_time($this->dp);
301        }
302
303        function getWidth() {
304                return caca_get_display_width($this->dp);
305        }
306
307        function getHeight() {
308                return caca_get_display_height($this->dp);
309        }
310
311        function setTitle($title) {
312                return caca_set_display_title($this->dp, $title);
313        }
314
315        function gotoXY($x, $y) {
316                return caca_gotoxy($this->dp, $x, $y);
317        }
318
319        function getMouseX() {
320                return caca_get_mouse_x($this->dp);
321        }
322
323        function getMouseY() {
324                return caca_get_mouse_y($this->dp);
325        }
326
327        function setMouse($state) {
328                return caca_set_mouse($this->dp, $state);
329        }
330
331        function getEvent($t, $timeout) {
332                $ev = caca_get_event($this->dp, $t, $timeout);
333                if(! $ev) {
334                        return NULL;
335                }
336                return new Event($ev);
337        }
338
339        function __construct($canvas, $driver = false) {
340                if ($driver)
341                        $this->dp = caca_create_display_with_driver($canvas->get_resource(), $driver);
342                else
343                        $this->dp = caca_create_display($canvas->get_resource());
344        }
345
346        function get_resource() {
347                return $this->dp;
348        }
349}
350
351class Dither {
352        private $dt;
353        private $img;
354
355        function setPalette($colors) {
356                return caca_set_dither_palette($this->dt, $colors);
357        }
358
359        function setBrightness($value) {
360                return caca_set_dither_brightness($this->dt, $value);
361        }
362
363        function getBrightness() {
364                return caca_get_dither_brightness($this->dt);
365        }
366       
367        function setGamme($value) {
368                return caca_set_dither_gamma($this->dt, $value);
369        }
370       
371        function getGamma() {
372                return caca_get_dither_gamma($this->dt);
373        }
374       
375        function setContrast($value) {
376                return caca_set_dither_contrast($this->dt, $value);
377        }
378       
379        function getContrast() {
380                return caca_get_dither_contrast($this->dt);
381        }
382       
383        function setAntialias($value) {
384                return caca_set_dither_antialias($this->dt, $value);
385        }
386       
387        function getAntialiasList() {
388                return caca_get_dither_antialias_list($this->dt);
389        }
390       
391        function getAntialias() {
392                return caca_get_dither_antialias($this->dt);
393        }
394       
395        function setColor($color) {
396                return caca_set_dither_color($this->dt, $color);
397        }
398       
399        function getColorList() {
400                return caca_get_dither_color_list($this->dt);
401        }
402       
403        function getColor() {
404                return caca_get_dither_color($this->dt);
405        }
406       
407        function setCharset($value) {
408                return caca_set_dither_charset($this->dt, $value);
409        }
410       
411        function getCharsetList() {
412                return caca_get_dither_charset_list($this->dt);
413        }
414       
415        function getCharset() {
416                return caca_get_dither_charset($this->dt);
417        }
418       
419        function setAlgorithm($name) {
420                return caca_set_dither_algorithm($this->dt, $name);
421        }
422       
423        function getAlgorithmList() {
424                return caca_get_dither_algorithm_list($this->dt);
425        }
426       
427        function getAlgorithm() {
428                return caca_get_dither_algorithm($this->dt);
429        }
430       
431        function bitmap($canvas, $x, $y, $width, $height, $load_palette = true) {
432                return caca_dither_bitmap($canvas->get_resource(), $x, $y, $width, $height, $this->dt, $this->img, $load_palette);
433        }
434
435        function __construct($image) {
436                $this->dt = caca_create_dither($image);
437                $this->img = $image;
438        }
439}
440
441class Font {
442        private $f;
443       
444        function getWidth() {
445                return caca_get_font_width($this->f);
446        }
447
448        function getHeight() {
449                return caca_get_font_height($this->f);
450        }
451
452        function getBlocks() {
453                return caca_get_font_blocks($this->f);
454        }
455
456        function Render($cv, $image) {
457                return caca_render_canvas($cv->get_resource(), $this->f, $image);
458        }
459
460        static function getList() {
461                return caca_get_font_list();
462        }
463
464        function __construct($name) {
465                $this->f = caca_load_builtin_font($name);
466        }
467}
Note: See TracBrowser for help on using the repository browser.