Changeset 3142


Ignore:
Timestamp:
Oct 30, 2008, 1:18:07 AM (11 years ago)
Author:
nico
Message:
  • Remove php function caca_create_event
  • caca_get_event return false if type == CACA_EVENT_NONE otherwise return a new php resource
  • Adapt sample program demo.php
Location:
libcaca/trunk/caca-php
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca-php/examples/demo.php

    r3141 r3142  
    1616 */
    1717
    18 
    19 
    2018function main() {
    2119        $cv = caca_create_canvas(0, 0);
     
    3129        caca_set_display_time($dp, 40000);
    3230
    33         /* Disable cursor */
     31        /* Disable X cursor */
    3432        caca_set_mouse($dp, 0);
    3533
     
    4038        $bounds = $outline = $dithering = 0;
    4139        $need_refresh = false;
    42         $ev = caca_create_event();
    4340        while(!$quit) {
    44                 while (caca_get_event($dp, CACA_EVENT_ANY, $ev, 1000)) {
     41                while ($ev = caca_get_event($dp, CACA_EVENT_ANY, 1000)) {
    4542                        if (caca_get_event_type($ev) & CACA_EVENT_KEY_PRESS) {
    4643                                switch (caca_get_event_key_ch($ev)) {
     
    117114}
    118115
    119 function demo_go($dp, $demo, $cv, $bounds, $outline) {
    120         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    121         caca_clear_canvas($cv);
    122 
    123         while (!caca_get_event($dp, CACA_EVENT_KEY_PRESS)) {
    124                 if (function_exists($demo))
    125                         $demo($cv, $bounds, $outline);
    126 
    127                 caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    128                 caca_draw_thin_box($cv, 1, 1, caca_get_canvas_width($cv) - 2, caca_get_canvas_height($cv) - 2);
    129                 $rate = sprintf("%01.2f", 1000000 / caca_get_display_time($dp));
    130                 caca_put_str($cv, 4, 1, "[$rate fps]----");
    131                 caca_refresh_display($dp);
    132         }
    133 
    134         display_menu($cv, $dp, $bounds, $outline);
    135         caca_refresh_display($dp);
    136 }
    137 
    138 
    139 function demo_all($cv, $bounds, $outline) {
    140         global $i;
    141 
    142         $i++;
    143 
    144         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    145         caca_clear_canvas($cv);
    146 
    147         /* Draw the sun */
    148         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    149         $xo = caca_get_canvas_width($cv) / 4;
    150         $yo = caca_get_canvas_height($cv) / 4 + 5 * sin(0.03 * $i);
    151 
    152         for ($j = 0; $j < 16; $j++) {
    153                 $xa = $xo - (30 + sin(0.03 * $i) * 8) * sin(0.03 * $i + M_PI * $j / 8);
    154                 $ya = $yo + (15 + sin(0.03 * $i) * 4) * cos(0.03 * $i + M_PI * $j / 8);
    155                 caca_draw_thin_line($cv, $xo, $yo, $xa, $ya);
    156         }
    157 
    158         $j = 15 + sin(0.03 * $i) * 8;
    159         caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
    160         caca_fill_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
    161         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    162         caca_draw_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
    163 
    164         /* Draw the pyramid */
    165         $xo = caca_get_canvas_width($cv) * 5 / 8;
    166         $yo = 2;
    167 
    168         $xa = caca_get_canvas_width($cv) / 8 + sin(0.03 * $i) * 5;
    169         $ya = caca_get_canvas_height($cv) / 2 + cos(0.03 * $i) * 5;
    170 
    171         $xb = caca_get_canvas_width($cv) - 10 - cos(0.02 * $i) * 10;
    172         $yb = caca_get_canvas_height($cv) * 3 / 4 - 5 + sin(0.02 * $i) * 5;
    173 
    174         $xc = caca_get_canvas_width($cv) / 4 - sin(0.02 * $i) * 5;
    175         $yc = caca_get_canvas_height($cv) * 3 / 4 + cos(0.02 * $i) * 5;
    176 
    177         caca_set_color_ansi($cv, CACA_GREEN, CACA_BLACK);
    178         caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya, ord('%'));
    179         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    180         caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya);
    181 
    182         caca_set_color_ansi($cv, CACA_RED, CACA_BLACK);
    183         caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
    184         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    185         caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
    186 
    187         caca_set_color_ansi($cv, CACA_BLUE, CACA_BLACK);
    188         caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc, ord('%'));
    189         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    190         caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc);
    191 
    192         /* Draw a background triangle */
    193         $xa = 2;
    194         $ya = 2;
    195 
    196         $xb = caca_get_canvas_width($cv) - 3;
    197         $yb = caca_get_canvas_height($cv) / 2;
    198 
    199         $xc = caca_get_canvas_width($cv) / 3;
    200         $yc = caca_get_canvas_height($cv) - 3;
    201 
    202         caca_set_color_ansi($cv, CACA_CYAN, CACA_BLACK);
    203         caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
    204 
    205         $xo = caca_get_canvas_width($cv) / 2 + cos(0.027 * $i) * caca_get_canvas_width($cv) / 3;
    206         $yo = caca_get_canvas_height($cv) / 2 - sin(0.027 * $i) * caca_get_canvas_height($cv) / 2;
    207 
    208         caca_draw_thin_line($cv, $xa, $ya, $xo, $yo);
    209         caca_draw_thin_line($cv, $xb, $yb, $xo, $yo);
    210         caca_draw_thin_line($cv, $xc, $yc, $xo, $yo);
    211 
    212         /* Draw a trail behind the foreground sprite */
    213         for($j = $i - 60; $j < $i; $j++) {
    214                 $delta = caca_rand(-5, 6);
    215                 caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
    216                 caca_put_char($cv,
    217                         caca_get_canvas_width($cv) / 2 + cos(0.02 * $j) * ($delta + caca_get_canvas_width($cv) / 4),
    218                         caca_get_canvas_height($cv) / 2 + sin(0.02 * $j) * ($delta + caca_get_canvas_height($cv) / 3),
    219                         ord('#'));
    220         }
    221 }
    222 
    223116function display_menu($cv, $dp, $bounds, $outline, $refresh = true) {
    224117        $xo = caca_get_canvas_width($cv) - 2;
     
    254147}
    255148
     149function demo_go($dp, $demo, $cv, $bounds, $outline) {
     150        caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     151        caca_clear_canvas($cv);
     152
     153        while (!caca_get_event($dp, CACA_EVENT_KEY_PRESS)) {
     154                if (function_exists($demo))
     155                        $demo($cv, $bounds, $outline);
     156
     157                caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     158                caca_draw_thin_box($cv, 1, 1, caca_get_canvas_width($cv) - 2, caca_get_canvas_height($cv) - 2);
     159                $rate = sprintf("%01.2f", 1000000 / caca_get_display_time($dp));
     160                caca_put_str($cv, 4, 1, "[$rate fps]----");
     161                caca_refresh_display($dp);
     162        }
     163
     164        display_menu($cv, $dp, $bounds, $outline);
     165        caca_refresh_display($dp);
     166}
     167
     168
     169function demo_all($cv, $bounds, $outline) {
     170        global $i;
     171
     172        $i++;
     173
     174        caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     175        caca_clear_canvas($cv);
     176
     177        /* Draw the sun */
     178        caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     179        $xo = caca_get_canvas_width($cv) / 4;
     180        $yo = caca_get_canvas_height($cv) / 4 + 5 * sin(0.03 * $i);
     181
     182        for ($j = 0; $j < 16; $j++) {
     183                $xa = $xo - (30 + sin(0.03 * $i) * 8) * sin(0.03 * $i + M_PI * $j / 8);
     184                $ya = $yo + (15 + sin(0.03 * $i) * 4) * cos(0.03 * $i + M_PI * $j / 8);
     185                caca_draw_thin_line($cv, $xo, $yo, $xa, $ya);
     186        }
     187
     188        $j = 15 + sin(0.03 * $i) * 8;
     189        caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
     190        caca_fill_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
     191        caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     192        caca_draw_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
     193
     194        /* Draw the pyramid */
     195        $xo = caca_get_canvas_width($cv) * 5 / 8;
     196        $yo = 2;
     197
     198        $xa = caca_get_canvas_width($cv) / 8 + sin(0.03 * $i) * 5;
     199        $ya = caca_get_canvas_height($cv) / 2 + cos(0.03 * $i) * 5;
     200
     201        $xb = caca_get_canvas_width($cv) - 10 - cos(0.02 * $i) * 10;
     202        $yb = caca_get_canvas_height($cv) * 3 / 4 - 5 + sin(0.02 * $i) * 5;
     203
     204        $xc = caca_get_canvas_width($cv) / 4 - sin(0.02 * $i) * 5;
     205        $yc = caca_get_canvas_height($cv) * 3 / 4 + cos(0.02 * $i) * 5;
     206
     207        caca_set_color_ansi($cv, CACA_GREEN, CACA_BLACK);
     208        caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya, ord('%'));
     209        caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     210        caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya);
     211
     212        caca_set_color_ansi($cv, CACA_RED, CACA_BLACK);
     213        caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
     214        caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     215        caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
     216
     217        caca_set_color_ansi($cv, CACA_BLUE, CACA_BLACK);
     218        caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc, ord('%'));
     219        caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     220        caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc);
     221
     222        /* Draw a background triangle */
     223        $xa = 2;
     224        $ya = 2;
     225
     226        $xb = caca_get_canvas_width($cv) - 3;
     227        $yb = caca_get_canvas_height($cv) / 2;
     228
     229        $xc = caca_get_canvas_width($cv) / 3;
     230        $yc = caca_get_canvas_height($cv) - 3;
     231
     232        caca_set_color_ansi($cv, CACA_CYAN, CACA_BLACK);
     233        caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
     234
     235        $xo = caca_get_canvas_width($cv) / 2 + cos(0.027 * $i) * caca_get_canvas_width($cv) / 3;
     236        $yo = caca_get_canvas_height($cv) / 2 - sin(0.027 * $i) * caca_get_canvas_height($cv) / 2;
     237
     238        caca_draw_thin_line($cv, $xa, $ya, $xo, $yo);
     239        caca_draw_thin_line($cv, $xb, $yb, $xo, $yo);
     240        caca_draw_thin_line($cv, $xc, $yc, $xo, $yo);
     241
     242        /* Draw a trail behind the foreground sprite */
     243        for($j = $i - 60; $j < $i; $j++) {
     244                $delta = caca_rand(-5, 6);
     245                caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
     246                caca_put_char($cv,
     247                        caca_get_canvas_width($cv) / 2 + cos(0.02 * $j) * ($delta + caca_get_canvas_width($cv) / 4),
     248                        caca_get_canvas_height($cv) / 2 + sin(0.02 * $j) * ($delta + caca_get_canvas_height($cv) / 3),
     249                        ord('#'));
     250        }
     251}
     252
    256253function demo_dots($cv, $bounds, $outline) {
    257254        $xmax = caca_get_canvas_width($cv);
  • libcaca/trunk/caca-php/php_caca.c

    r3138 r3142  
    2020
    2121static function_entry caca_functions[] = {
    22         PHP_FE(caca_create_event, NULL)
    2322        PHP_FE(caca_create_canvas, NULL)
    2423        PHP_FE(caca_set_canvas_size, NULL)
     
    382381}
    383382
    384 //------- PHP Binding's specific functions ----------//
    385 
    386 //TODO: register new resources in caca_get_event and remove caca_create_event
    387 PHP_FUNCTION(caca_create_event) {
    388         caca_event_t *event;
    389         event = emalloc(sizeof(caca_event_t));
    390         if (!event) {
    391                 RETURN_FALSE;
    392         }
    393         ZEND_REGISTER_RESOURCE(return_value, event, le_caca_event);
    394 }
    395 
    396383//------- Caca's functions ----------------//
    397384
     
    17151702
    17161703PHP_FUNCTION(caca_get_event) {
    1717         zval *_zval1, *_zval2 = NULL;
     1704        zval *_zval = NULL;
    17181705        long g, aa = 0;
    1719         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|rl", &_zval1, &g, &_zval2, &aa) == FAILURE) {
     1706        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|l", &_zval, &g, &aa) == FAILURE) {
    17201707                RETURN_FALSE;
    17211708        }
    17221709        caca_display_t *display;
    1723         ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval1, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display);
    1724 
    1725         caca_event_t *event = NULL;
    1726         if (_zval2) {
    1727                 ZEND_FETCH_RESOURCE(event, caca_event_t*, &_zval2, -1, PHP_CACA_EVENT_RES_NAME, le_caca_event);
    1728         }
    1729         RETURN_LONG(caca_get_event(display, g, event, aa));
     1710        ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display);
     1711
     1712        caca_event_t *event = emalloc(sizeof(caca_event_t));
     1713        if (!event) {
     1714                RETURN_FALSE;
     1715        }
     1716
     1717        caca_get_event(display, g, event, aa);
     1718
     1719        if (caca_get_event_type(event) == CACA_EVENT_NONE) {
     1720                efree(event);   
     1721                RETURN_FALSE;
     1722        }
     1723        ZEND_REGISTER_RESOURCE(return_value, event, le_caca_event);
    17301724}
    17311725
  • libcaca/trunk/caca-php/php_caca.h

    r3138 r3142  
    3535PHP_MINIT_FUNCTION(caca);
    3636PHP_MINFO_FUNCTION(caca);
    37 
    38 PHP_FUNCTION(caca_create_event);
    3937
    4038PHP_FUNCTION(caca_create_canvas);
Note: See TracChangeset for help on using the changeset viewer.