Changeset 4333


Ignore:
Timestamp:
Feb 8, 2010, 2:27:22 AM (8 years ago)
Author:
Sam Hocevar
Message:

Large source code cleanup, getting rid of spaces, tabs, and svn keywords.

Location:
libcaca/trunk
Files:
220 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/AUTHORS

    r4197 r4333  
    1 /* $Id$ */ /** \page libcaca-authors Libcaca authors
     1/** \page libcaca-authors Libcaca authors
    22
    33Sam Hocevar <sam@hocevar.net>
  • libcaca/trunk/ChangeLog

    r4330 r4333  
    1 Commit: UNSUBMITTED
    2 Author: Sam
    3 Date:   Sun Feb 7 22:30:20 2010 +0000
     1Commit: 4332
     2Author: sam
     3Date:   Mon Feb 8 00:40:21 2010 +0000
     4
     5    Nicer make check output for our custom tests.
     6
     7 test/check-doxygen |   10 +++++++---
     8 test/check-source  |   20 +++++++++++++-------
     9 test/check-win32   |   11 +++++++----
     10 3 files changed, 27 insertions(+), 14 deletions(-)
     11
     12Commit: 4331
     13Author: sam
     14Date:   Sun Feb 7 23:44:38 2010 +0000
     15
     16    Add missing ruby/test file to the distributed tarball.
     17
     18 ruby/Makefile.am |    1 +
     19 1 files changed, 1 insertions(+), 0 deletions(-)
     20
     21Commit: 4330
     22Author: sam
     23Date:   Sun Feb 7 22:37:18 2010 +0000
    424
    525    Improve changelog generation.
  • libcaca/trunk/Makefile.am

    r4330 r4333  
    1 # $Id$
    21
    32SUBDIRS = kernel caca src examples tools \
  • libcaca/trunk/NEWS

    r3600 r4333  
    1 /* $Id$ */ /** \page libcaca-news Libcaca news
    2 
    3 \section news0_99_beta17 Changes between 0.9.beta17 and 0.99.beta16
     1/** \page libcaca-news Libcaca news
     2
     3\section news0_99_beta17 Changes between 0.99.beta17 and 0.99.beta16
    44
    55 - new dirty rectangle framework for accelerated rendering
     
    77 - XCode and Visual Studio build improvements
    88 - improved HTML output
     9 - new troff output
    910 - improved Ruby and .NET bindings
    1011 - new comprehensive PHP bindings
    1112 - Cocoa driver enhancements
    1213 - documentation updates
    13  - minor improvements and bugfixes
    14 
    15 \section news0_99_beta16 Changes between 0.9.beta16 and 0.99.beta15
     14 - numerous improvements and bugfixes
     15
     16\section news0_99_beta16 Changes between 0.99.beta16 and 0.99.beta15
    1617
    1718 - many build fixes, especially for nonstandard platforms
    1819
    19 \section news0_99_beta15 Changes between 0.9.beta15 and 0.99.beta14
     20\section news0_99_beta15 Changes between 0.99.beta15 and 0.99.beta14
    2021
    2122 - libcucul was merged back into libcaca for more clarity
    2223
    23 \section news0_99_beta14 Changes between 0.9.beta14 and 0.99.beta13
     24\section news0_99_beta14 Changes between 0.99.beta14 and 0.99.beta13
    2425
    2526 - internal FIGlet font support
     
    2829 - BBcode export support
    2930
    30 \section news0_99_beta13 Changes between 0.9.beta13 and 0.99.beta12
     31\section news0_99_beta13 Changes between 0.99.beta13 and 0.99.beta12
    3132
    3233 - device-dependent cursor support
     
    3940 - Visual Studio build solution
    4041
    41 \section news0_99_beta12 Changes between 0.9.beta12 and 0.99.beta11
     42\section news0_99_beta12 Changes between 0.99.beta12 and 0.99.beta11
    4243
    4344 - support for 90-degree canvas rotation
     
    5051 - many bugfixes and documentation changes
    5152
    52 \section news0_99_beta11 Changes between 0.9.beta11 and 0.99.beta10
     53\section news0_99_beta11 Changes between 0.99.beta11 and 0.99.beta10
    5354
    5455 - fixed compilation of the C++ bindings
     
    5758 - minor bugfixes
    5859
    59 \section news0_99_beta10 Changes between 0.9.beta10 and 0.99.beta9
     60\section news0_99_beta10 Changes between 0.99.beta10 and 0.99.beta9
    6061
    6162 - new debug mode
     
    6667 - many bugfixes and documentation changes
    6768
    68 \section news0_99_beta9 Changes between 0.9.beta9 and 0.99.beta8
     69\section news0_99_beta9 Changes between 0.99.beta9 and 0.99.beta8
    6970
    7071 - support for blink, bold, italics and underline attributes
     
    7475 - big documentation updates
    7576
    76 \section news0_99_beta8 Changes between 0.9.beta8 and 0.99.beta7
     77\section news0_99_beta8 Changes between 0.99.beta8 and 0.99.beta7
    7778
    7879 - allow to build the X11 and GL drivers as separate plugins
     
    8182 - minor bugfixes and documentation updates
    8283
    83 \section news0_99_beta7 Changes between 0.9.beta7 and 0.99.beta6
     84\section news0_99_beta7 Changes between 0.99.beta7 and 0.99.beta6
    8485
    8586 - transparency support in the UTF-8 importer and exporter
     
    8788 - updated C++ bindings
    8889
    89 \section news0_99_beta6 Changes between 0.9.beta6 and 0.99.beta5
     90\section news0_99_beta6 Changes between 0.99.beta6 and 0.99.beta5
    9091
    9192 - ANSI importer now handles transparency and UTF-8
     
    9394 - various memory leaks were fixed
    9495
    95 \section news0_99_beta5 Changes between 0.9.beta5 and 0.99.beta4
     96\section news0_99_beta5 Changes between 0.99.beta5 and 0.99.beta4
    9697
    9798 - implemented cucul_getchar() and cucul_get_color()
     
    102103 - all demos except cacafire were merged into cacademo
    103104
    104 \section news0_99_beta4 Changes between 0.9.beta4 and 0.99.beta3
     105\section news0_99_beta4 Changes between 0.99.beta4 and 0.99.beta3
    105106
    106107 - added a compatibility layer for pre-1.x libcaca applications
     
    108109 - minor bugfixes and documentation updates
    109110
    110 \section news0_99_beta3 Changes between 0.9.beta3 and 0.99.beta2
     111\section news0_99_beta3 Changes between 0.99.beta3 and 0.99.beta2
    111112
    112113 - libcaca functions use errno for error reporting
     
    114115 - minor improvements, bugfixes and documentation updates
    115116
    116 \section news0_99_beta2 Changes between 0.9.beta2 and 0.99.beta1
     117\section news0_99_beta2 Changes between 0.99.beta2 and 0.99.beta1
    117118
    118119 - ANSI importer
  • libcaca/trunk/NOTES

    r820 r4333  
    1 $Id$
    21
    32   o  Colour does not work with all backends and all terminals. I tested
  • libcaca/trunk/README

    r2182 r4333  
    1 $Id$
    2  
     1
    32Building libcaca
    43
     
    1817
    1918   o  Cross-compilation examples:
    20  
     19
    2120     ./configure --disable-imlib2 --host=i386-pc-msdosdjgpp
    2221
     
    3231      gcc -c foobar.c -o foobar.o `pkg-config --cflags caca`
    3332      gcc foobar.o -o foobar `pkg-config --libs caca`
    34  
     33
  • libcaca/trunk/THANKS

    r3598 r4333  
    1 /* $Id$ */ /** \page libcaca-thanks Libcaca thanks
     1/** \page libcaca-thanks Libcaca thanks
    22
    33\section thanks1 Bugfixes and improvements
  • libcaca/trunk/bootstrap

    r4094 r4333  
    11#! /bin/sh
    2 # $Id$
    32
    43# bootstrap: generic bootstrap/autogen.sh script for autotools projects
  • libcaca/trunk/build-dos

    r4148 r4333  
    22
    33##  DOS cross-compilation for libcaca -- Sam Hocevar <sam@hocevar.net>
    4 ##  $Id$
    54
    65set -x
  • libcaca/trunk/build-kernel

    r4317 r4333  
    11#! /bin/sh
    22
    3 ##  Kernel-mode libcaca compilation script -- Sam Hocevar <sam@zoy.org>
    4 ##  $Id$
     3##  Kernel-mode libcaca compilation script -- Sam Hocevar <sam@hocevar.net>
    54
    65set -x
  • libcaca/trunk/build-win32

    r4317 r4333  
    22
    33##  Win32 cross-compilation for libcaca -- Sam Hocevar <sam@hocevar.net>
    4 ##  $Id$
    54
    65set -x
  • libcaca/trunk/caca-config.in

    r4148 r4333  
    22
    33##  config script for libcaca -- Sam Hocevar <sam@hocevar.net>
    4 ##  $Id$
    54
    65prefix=@prefix@
  • libcaca/trunk/caca-php/examples/cacainfo.php

    r3234 r4333  
    2020         (__)
    2121         (oo)
    22    /------\/ 
    23   / |    || 
    24  *  /\---/\ 
    25     ~~   ~~ 
     22   /------\/
     23  / |    ||
     24 *  /\---/\
     25    ~~   ~~
    2626EOT;
    2727
    28         $cv = caca_create_canvas(0, 0);
    29         caca_set_color_ansi($cv, CACA_LIGHTBLUE, CACA_DEFAULT);
    30         caca_import_string($cv, $moo, "text");
     28    $cv = caca_create_canvas(0, 0);
     29    caca_set_color_ansi($cv, CACA_LIGHTBLUE, CACA_DEFAULT);
     30    caca_import_string($cv, $moo, "text");
    3131
    32         for($j = 0; $j < caca_get_canvas_height($cv); $j++) {
    33                 for($i = 0; $i < caca_get_canvas_width($cv); $i += 2) {
    34                         caca_set_color_ansi($cv, (caca_rand(1, 10) > 5 ? CACA_LIGHTBLUE  : CACA_WHITE), CACA_DEFAULT);
    35                         $a = caca_get_attr($cv, -1, -1);
    36                         caca_put_attr($cv, $i, $j, $a);
    37                         caca_put_attr($cv, $i + 1, $j, $a);
    38                 }
    39         }
    40         caca_set_canvas_size($cv, 18, 6);
    41         caca_set_color_ansi($cv, CACA_LIGHTGREEN, CACA_DEFAULT);
    42         caca_put_str($cv, 14, 0, "Moo!");
    43         caca_set_color_ansi($cv, CACA_LIGHTRED, CACA_DEFAULT);
    44         caca_put_char($cv, 14, 1, hexdec("2765")); //U+2765
    45         caca_put_char($cv, 16, 1, hexdec("2764")); //U+2764
    46         echo caca_export_string($cv, "utf8");
     32    for($j = 0; $j < caca_get_canvas_height($cv); $j++) {
     33        for($i = 0; $i < caca_get_canvas_width($cv); $i += 2) {
     34            caca_set_color_ansi($cv, (caca_rand(1, 10) > 5 ? CACA_LIGHTBLUE  : CACA_WHITE), CACA_DEFAULT);
     35            $a = caca_get_attr($cv, -1, -1);
     36            caca_put_attr($cv, $i, $j, $a);
     37            caca_put_attr($cv, $i + 1, $j, $a);
     38        }
     39    }
     40    caca_set_canvas_size($cv, 18, 6);
     41    caca_set_color_ansi($cv, CACA_LIGHTGREEN, CACA_DEFAULT);
     42    caca_put_str($cv, 14, 0, "Moo!");
     43    caca_set_color_ansi($cv, CACA_LIGHTRED, CACA_DEFAULT);
     44    caca_put_char($cv, 14, 1, hexdec("2765")); //U+2765
     45    caca_put_char($cv, 16, 1, hexdec("2764")); //U+2764
     46    echo caca_export_string($cv, "utf8");
    4747}
    48        
     48
    4949
    5050if (php_sapi_name() != "cli") {
    51         die("You have to run this program with php-cli!\n");
     51    die("You have to run this program with php-cli!\n");
    5252}
    5353
     
    6060$list = caca_get_display_driver_list();
    6161foreach($list as $type => $name)
    62         echo "* $name ($type)\n";
     62    echo "* $name ($type)\n";
    6363echo "\n";
    6464
     
    6666$list = caca_get_import_list();
    6767foreach($list as $format => $name)
    68         echo "* $name ($format)\n";
     68    echo "* $name ($format)\n";
    6969echo "\n";
    7070
     
    7272$list = caca_get_export_list();
    7373foreach($list as $format => $name)
    74         echo "* $name ($format)\n";
     74    echo "* $name ($format)\n";
    7575echo "\n";
    7676
     
    7878$list = caca_get_font_list();
    7979foreach($list as $name)
    80         echo "* $name\n";
     80    echo "* $name\n";
    8181echo "\n";
    8282
  • libcaca/trunk/caca-php/examples/cacapig.php

    r3296 r4333  
    66 *
    77 *  This file is a Php port of "cxx/cxxtest.cpp"
    8  *  which is: 
     8 *  which is:
    99 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
    1010 *                All Rights Reserved
     
    1818
    1919if (php_sapi_name() != "cli") {
    20         die("You have to run this program with php-cli!\n");
     20    die("You have to run this program with php-cli!\n");
    2121}
    2222
     
    2424
    2525$pig_str = <<<EOT
    26                                    
    27     _._ _..._ .-',     _.._(`))   
    28    '-. `     '  /-._.-'    ',/     
    29       )         \            '.   
    30      / _    _    |             \   
    31     |  a    a    /   PHP        | 
    32     \   .-.                     ; 
    33      '-('' ).-'       ,'       ;   
    34         '-;           |      .'   
    35            \           \    /   
    36            | 7  .__  _.-\   \   
    37            | |  |  ``/  /`  /     
    38       jgs /,_|  |   /,_/   /       
    39              /,_/      '`-'       
     26
     27    _._ _..._ .-',     _.._(`))
     28   '-. `     '  /-._.-'    ',/
     29      )         \            '.
     30     / _    _    |             \
     31    |  a    a    /   PHP        |
     32    \   .-.                     ;
     33     '-('' ).-'       ,'       ;
     34        '-;           |      .'
     35           \           \    /
     36           | 7  .__  _.-\   \
     37           | |  |  ``/  /`  /
     38      jgs /,_|  |   /,_/   /
     39             /,_/      '`-'
    4040EOT;
    4141
    4242$canvas = new Canvas();
    4343if (!$canvas) {
    44         die("Error while creating main canvas\n");
     44    die("Error while creating main canvas\n");
    4545}
    4646
    4747$pig = new Canvas();
    4848if (!$pig) {
    49         die("Error while creating canvas pig\n");
     49    die("Error while creating canvas pig\n");
    5050}
    5151
    5252$display = new Display($canvas);
    5353if (!$display) {
    54         die("Error while attaching canvas to display\n");
     54    die("Error while attaching canvas to display\n");
    5555}
    5656
     
    6464
    6565while (! $display->getEvent(EventType::KEY_PRESS)) {
    66         // In case of resize ...
    67         if ($x + $pig->getWidth() - 1 >= $canvas->getWidth() || $x < 0 )
    68                 $x = 0;
    69         if ($y + $pig->getHeight() - 1 >= $canvas->getHeight() || $y < 0 )
    70                 $y = 0;
     66    // In case of resize ...
     67    if ($x + $pig->getWidth() - 1 >= $canvas->getWidth() || $x < 0 )
     68        $x = 0;
     69    if ($y + $pig->getHeight() - 1 >= $canvas->getHeight() || $y < 0 )
     70        $y = 0;
    7171
    72         $canvas->Clear();
     72    $canvas->Clear();
    7373
    74         // Draw
    75         $canvas->Blit($x, $y, $pig, NULL);
    76         $canvas->setColorANSI(AnsiColor::LIGHTBLUE, AnsiColor::BLACK);
    77         $canvas->putStr($canvas->getWidth() / 2 - 10, $canvas->getHeight() / 2, "Powered by libcaca ".Libcaca::getVersion());
    78         $display->refresh();
     74    // Draw
     75    $canvas->Blit($x, $y, $pig, NULL);
     76    $canvas->setColorANSI(AnsiColor::LIGHTBLUE, AnsiColor::BLACK);
     77    $canvas->putStr($canvas->getWidth() / 2 - 10, $canvas->getHeight() / 2, "Powered by libcaca ".Libcaca::getVersion());
     78    $display->refresh();
    7979
    8080
    81         // Move cursor
    82         $x += $ix;
    83         $y += $iy;
    84         if ($x + $pig->getWidth() >= $canvas->getWidth() || $x < 0 )
    85                 $ix = -$ix;
    86         if ($y + $pig->getHeight() >= $canvas->getHeight() || $y < 0 )
    87                 $iy = -$iy;
     81    // Move cursor
     82    $x += $ix;
     83    $y += $iy;
     84    if ($x + $pig->getWidth() >= $canvas->getWidth() || $x < 0 )
     85        $ix = -$ix;
     86    if ($y + $pig->getHeight() >= $canvas->getHeight() || $y < 0 )
     87        $iy = -$iy;
    8888}
    8989
  • libcaca/trunk/caca-php/examples/colors.php

    r4148 r4333  
    99   *                All Rights Reserved
    1010   *
    11    *  $Id$
    12    *
    1311   *  This program is free software. It comes without any warranty, to
    1412   *  the extent permitted by applicable law. You can redistribute it
     
    1917
    2018if (php_sapi_name() != "cli") {
    21         die("You have to run this program with php-cli!\n");
     19    die("You have to run this program with php-cli!\n");
    2220}
    2321
     
    2523if(!$cv)
    2624{
    27         die("Failed to create canvas\n");
     25    die("Failed to create canvas\n");
    2826}
    2927
     
    3129if(!$dp)
    3230{
    33         die("Failed to create display\n");
     31    die("Failed to create display\n");
    3432}
    3533
     
    3836for($i = 0; $i < 16; $i++)
    3937{
    40         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    41         caca_put_str($cv, 3, $i + ($i >= 8 ? 3 : 2), "ANSI " . $i);
    42         for($j = 0; $j < 16; $j++)
    43         {
    44                 caca_set_color_ansi($cv, $i, $j);
    45                 caca_put_str($cv, ($j >= 8 ? 13 : 12) + $j * 4, $i + ($i >= 8 ? 3 : 2),
    46                                         "Aaホ");
    47         }
     38    caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     39    caca_put_str($cv, 3, $i + ($i >= 8 ? 3 : 2), "ANSI " . $i);
     40    for($j = 0; $j < 16; $j++)
     41    {
     42        caca_set_color_ansi($cv, $i, $j);
     43        caca_put_str($cv, ($j >= 8 ? 13 : 12) + $j * 4, $i + ($i >= 8 ? 3 : 2),
     44                    "Aaホ");
     45    }
    4846}
    4947
  • libcaca/trunk/caca-php/examples/demo.php

    r4148 r4333  
    55 *  Copyright (c) 2008 Nicolas Vion <nico@yojik.eu>
    66 *
    7  *  This file is a Php port of the official libcaca's sample program "demo.c" 
    8  *  which is: 
     7 *  This file is a Php port of the official libcaca's sample program "demo.c"
     8 *  which is:
    99 *  Copyright (c) 2003 Sam Hocevar <sam@hocevar.net>
    1010 *
     
    1717
    1818function main() {
    19         $cv = caca_create_canvas(0, 0);
    20         if (!$cv) {
    21                 die("Error while creating canvas\n");
    22         }
    23 
    24         $dp = caca_create_display($cv);
    25         if (!$dp) {
    26                 die("Error while attaching canvas to display\n");
    27         }
    28 
    29         caca_set_display_time($dp, 40000);
    30 
    31         /* Disable X cursor */
    32         caca_set_mouse($dp, 0);
    33 
    34         /* Main menu */
    35         $bounds = $outline = $dithering = 0;
    36 
    37         display_menu($cv, $dp, $bounds, $outline);
    38 
    39         /* Go ! */
    40         $need_refresh = false;
    41         $quit = 0;
    42         while(!$quit) {
    43                 while ($ev = caca_get_event($dp, CACA_EVENT_ANY, 1000)) {
    44                         if (caca_get_event_type($ev) & CACA_EVENT_KEY_PRESS) {
    45                                 switch (caca_get_event_key_ch($ev)) {
    46                                         case ord('q'):
    47                                         case ord('Q'):
    48                                         case CACA_KEY_ESCAPE:
    49                                                 $demo = false;
    50                                                 $quit = 1;
    51                                                 break;
    52                                         case ord('o'):
    53                                         case ord('O'):
    54                                                 $outline = ($outline + 1) % 3;
    55                                                 display_menu($cv, $dp, $bounds, $outline);
    56                                                 break;
    57                                         case ord('b'):
    58                                         case ord('B'):
    59                                                 $bounds = ($bounds + 1) % 2;
    60                                                 display_menu($cv, $dp, $bounds, $outline);
    61                                                 break;
    62                                         case ord('d'):
    63                                         case ord('D'):
    64                                                 $dithering = ($dithering + 1) % 5;
    65                                                 caca_set_feature($cv, $dithering);
    66                                                 display_menu($cv, $dp, $bounds, $outline);
    67                                                 break;
    68                                         case ord('f'):
    69                                         case ord('F'):
    70                                                 demo_go($dp, "demo_all", $cv, $bounds, $outline);
    71                                                 break;
    72                                         case ord('1'):
    73                                                 demo_go($dp, "demo_dots", $cv, $bounds, $outline);
    74                                                 break;
    75                                         case ord('2'):
    76                                                 demo_go($dp, "demo_lines", $cv, $bounds, $outline);
    77                                                 break;
    78                                         case ord('3'):
    79                                                 demo_go($dp, "demo_boxes", $cv, $bounds, $outline);
    80                                                 break;
    81                                         case ord('4'):
    82                                                 demo_go($dp, "demo_triangles", $cv, $bounds, $outline);
    83                                                 break;
    84                                         case ord('5'):
    85                                                 demo_go($dp, "demo_ellipses", $cv, $bounds, $outline);
    86                                                 break;
    87                                         case ord('s'):
    88                                         case ord('S'):
    89                                                 demo_go($dp, "demo_sprites", $cv, $bounds, $outline);
    90                                                 break;
    91                                         case ord('r'):
    92                                         case ord('R'):
    93                                                 demo_go($dp, "demo_render", $cv, $bounds, $outline);
    94                                                 break;
    95                                 }
    96                         }
    97                         else if(caca_get_event_type($ev) & CACA_EVENT_MOUSE_MOTION) {
    98                                 $x = caca_get_event_mouse_x($ev);
    99                                 $y = caca_get_event_mouse_y($ev);
    100                                 display_menu($cv, $dp, $bounds, $outline, false);
    101                                 caca_set_color_ansi($cv, CACA_RED, CACA_BLACK);
    102                                 caca_put_str($cv, $x, $y, ".");
    103                                 caca_put_str($cv, $x, $y + 1, "|\\");
    104                                 $need_refresh = true;
    105                         }
    106                         else if(caca_get_event_type($ev) & CACA_EVENT_RESIZE) {
    107                                 display_menu($cv, $dp, $bounds, $outline);
    108                         }
    109                 }
    110 
    111                 if ($need_refresh) {
    112                         caca_refresh_display($dp);
    113                         $need_refresh = false;
    114                 }
    115         }
     19    $cv = caca_create_canvas(0, 0);
     20    if (!$cv) {
     21        die("Error while creating canvas\n");
     22    }
     23
     24    $dp = caca_create_display($cv);
     25    if (!$dp) {
     26        die("Error while attaching canvas to display\n");
     27    }
     28
     29    caca_set_display_time($dp, 40000);
     30
     31    /* Disable X cursor */
     32    caca_set_mouse($dp, 0);
     33
     34    /* Main menu */
     35    $bounds = $outline = $dithering = 0;
     36
     37    display_menu($cv, $dp, $bounds, $outline);
     38
     39    /* Go ! */
     40    $need_refresh = false;
     41    $quit = 0;
     42    while(!$quit) {
     43        while ($ev = caca_get_event($dp, CACA_EVENT_ANY, 1000)) {
     44            if (caca_get_event_type($ev) & CACA_EVENT_KEY_PRESS) {
     45                switch (caca_get_event_key_ch($ev)) {
     46                    case ord('q'):
     47                    case ord('Q'):
     48                    case CACA_KEY_ESCAPE:
     49                        $demo = false;
     50                        $quit = 1;
     51                        break;
     52                    case ord('o'):
     53                    case ord('O'):
     54                        $outline = ($outline + 1) % 3;
     55                        display_menu($cv, $dp, $bounds, $outline);
     56                        break;
     57                    case ord('b'):
     58                    case ord('B'):
     59                        $bounds = ($bounds + 1) % 2;
     60                        display_menu($cv, $dp, $bounds, $outline);
     61                        break;
     62                    case ord('d'):
     63                    case ord('D'):
     64                        $dithering = ($dithering + 1) % 5;
     65                        caca_set_feature($cv, $dithering);
     66                        display_menu($cv, $dp, $bounds, $outline);
     67                        break;
     68                    case ord('f'):
     69                    case ord('F'):
     70                        demo_go($dp, "demo_all", $cv, $bounds, $outline);
     71                        break;
     72                    case ord('1'):
     73                        demo_go($dp, "demo_dots", $cv, $bounds, $outline);
     74                        break;
     75                    case ord('2'):
     76                        demo_go($dp, "demo_lines", $cv, $bounds, $outline);
     77                        break;
     78                    case ord('3'):
     79                        demo_go($dp, "demo_boxes", $cv, $bounds, $outline);
     80                        break;
     81                    case ord('4'):
     82                        demo_go($dp, "demo_triangles", $cv, $bounds, $outline);
     83                        break;
     84                    case ord('5'):
     85                        demo_go($dp, "demo_ellipses", $cv, $bounds, $outline);
     86                        break;
     87                    case ord('s'):
     88                    case ord('S'):
     89                        demo_go($dp, "demo_sprites", $cv, $bounds, $outline);
     90                        break;
     91                    case ord('r'):
     92                    case ord('R'):
     93                        demo_go($dp, "demo_render", $cv, $bounds, $outline);
     94                        break;
     95                }
     96            }
     97            else if(caca_get_event_type($ev) & CACA_EVENT_MOUSE_MOTION) {
     98                $x = caca_get_event_mouse_x($ev);
     99                $y = caca_get_event_mouse_y($ev);
     100                display_menu($cv, $dp, $bounds, $outline, false);
     101                caca_set_color_ansi($cv, CACA_RED, CACA_BLACK);
     102                caca_put_str($cv, $x, $y, ".");
     103                caca_put_str($cv, $x, $y + 1, "|\\");
     104                $need_refresh = true;
     105            }
     106            else if(caca_get_event_type($ev) & CACA_EVENT_RESIZE) {
     107                display_menu($cv, $dp, $bounds, $outline);
     108            }
     109        }
     110
     111        if ($need_refresh) {
     112            caca_refresh_display($dp);
     113            $need_refresh = false;
     114        }
     115    }
    116116}
    117117
    118118function display_menu($cv, $dp, $bounds, $outline, $refresh = true) {
    119         $xo = caca_get_canvas_width($cv) - 2;
    120         $yo = caca_get_canvas_height($cv) - 2;
    121 
    122         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    123         caca_clear_canvas($cv);
    124         caca_draw_thin_box($cv, 1, 1, $xo, $yo);
    125 
    126         caca_put_str($cv, ($xo - strlen("libcaca demo")) / 2, 3, "libcaca demo");
    127         caca_put_str($cv, ($xo - strlen("==============")) / 2, 4, "==============");
    128 
    129         caca_put_str($cv, 4, 6, "demos:");
    130         caca_put_str($cv, 4, 7, "'f': full");
    131         caca_put_str($cv, 4, 8, "'1': dots");
    132         caca_put_str($cv, 4, 9, "'2': lines");
    133         caca_put_str($cv, 4, 10, "'3': boxes");
    134         caca_put_str($cv, 4, 11, "'4': triangles");
    135         caca_put_str($cv, 4, 12, "'5': ellipses");
    136 //      caca_put_str($cv, 4, 13, "'c': colour");
    137 //      caca_put_str($cv, 4, 14, "'r': render");
    138 
    139 //      caca_put_str($cv, 4, 15, "'s': sprites");
    140 
    141         caca_put_str($cv, 4, 16, "settings:");
    142         caca_put_str($cv, 4, 17, "'o': outline: ".(($outline == 0) ? "none" : (($outline == 1) ? "solid" : "thin")));
    143         caca_put_str($cv, 4, 18, "'b': drawing boundaries: ".(($bounds == 0) ? "screen" : "infinite"));
    144         caca_put_str($cv, 4, $yo - 2, "'q': quit");
    145 
    146         if ($refresh)
    147                 caca_refresh_display($dp);
     119    $xo = caca_get_canvas_width($cv) - 2;
     120    $yo = caca_get_canvas_height($cv) - 2;
     121
     122    caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     123    caca_clear_canvas($cv);
     124    caca_draw_thin_box($cv, 1, 1, $xo, $yo);
     125
     126    caca_put_str($cv, ($xo - strlen("libcaca demo")) / 2, 3, "libcaca demo");
     127    caca_put_str($cv, ($xo - strlen("==============")) / 2, 4, "==============");
     128
     129    caca_put_str($cv, 4, 6, "demos:");
     130    caca_put_str($cv, 4, 7, "'f': full");
     131    caca_put_str($cv, 4, 8, "'1': dots");
     132    caca_put_str($cv, 4, 9, "'2': lines");
     133    caca_put_str($cv, 4, 10, "'3': boxes");
     134    caca_put_str($cv, 4, 11, "'4': triangles");
     135    caca_put_str($cv, 4, 12, "'5': ellipses");
     136//    caca_put_str($cv, 4, 13, "'c': colour");
     137//    caca_put_str($cv, 4, 14, "'r': render");
     138
     139//    caca_put_str($cv, 4, 15, "'s': sprites");
     140
     141    caca_put_str($cv, 4, 16, "settings:");
     142    caca_put_str($cv, 4, 17, "'o': outline: ".(($outline == 0) ? "none" : (($outline == 1) ? "solid" : "thin")));
     143    caca_put_str($cv, 4, 18, "'b': drawing boundaries: ".(($bounds == 0) ? "screen" : "infinite"));
     144    caca_put_str($cv, 4, $yo - 2, "'q': quit");
     145
     146    if ($refresh)
     147        caca_refresh_display($dp);
    148148}
    149149
    150150function demo_go($dp, $demo, $cv, $bounds, $outline) {
    151         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    152         caca_clear_canvas($cv);
    153 
    154         while (!caca_get_event($dp, CACA_EVENT_KEY_PRESS)) {
    155                 if (function_exists($demo))
    156                         $demo($cv, $bounds, $outline);
    157 
    158                 caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    159                 caca_draw_thin_box($cv, 1, 1, caca_get_canvas_width($cv) - 2, caca_get_canvas_height($cv) - 2);
    160                 $rate = sprintf("%01.2f", 1000000 / caca_get_display_time($dp));
    161                 caca_put_str($cv, 4, 1, "[$rate fps]----");
    162                 caca_refresh_display($dp);
    163         }
    164 
    165         display_menu($cv, $dp, $bounds, $outline);
    166         caca_refresh_display($dp);
     151    caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     152    caca_clear_canvas($cv);
     153
     154    while (!caca_get_event($dp, CACA_EVENT_KEY_PRESS)) {
     155        if (function_exists($demo))
     156            $demo($cv, $bounds, $outline);
     157
     158        caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     159        caca_draw_thin_box($cv, 1, 1, caca_get_canvas_width($cv) - 2, caca_get_canvas_height($cv) - 2);
     160        $rate = sprintf("%01.2f", 1000000 / caca_get_display_time($dp));
     161        caca_put_str($cv, 4, 1, "[$rate fps]----");
     162        caca_refresh_display($dp);
     163    }
     164
     165    display_menu($cv, $dp, $bounds, $outline);
     166    caca_refresh_display($dp);
    167167}
    168168
    169169
    170170function demo_all($cv, $bounds, $outline) {
    171         global $i;
    172 
    173         $i++;
    174 
    175         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    176         caca_clear_canvas($cv);
    177 
    178         /* Draw the sun */
    179         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    180         $xo = caca_get_canvas_width($cv) / 4;
    181         $yo = caca_get_canvas_height($cv) / 4 + 5 * sin(0.03 * $i);
    182 
    183         for ($j = 0; $j < 16; $j++) {
    184                 $xa = $xo - (30 + sin(0.03 * $i) * 8) * sin(0.03 * $i + M_PI * $j / 8);
    185                 $ya = $yo + (15 + sin(0.03 * $i) * 4) * cos(0.03 * $i + M_PI * $j / 8);
    186                 caca_draw_thin_line($cv, $xo, $yo, $xa, $ya);
    187         }
    188 
    189         $j = 15 + sin(0.03 * $i) * 8;
    190         caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
    191         caca_fill_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
    192         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    193         caca_draw_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
    194 
    195         /* Draw the pyramid */
    196         $xo = caca_get_canvas_width($cv) * 5 / 8;
    197         $yo = 2;
    198 
    199         $xa = caca_get_canvas_width($cv) / 8 + sin(0.03 * $i) * 5;
    200         $ya = caca_get_canvas_height($cv) / 2 + cos(0.03 * $i) * 5;
    201 
    202         $xb = caca_get_canvas_width($cv) - 10 - cos(0.02 * $i) * 10;
    203         $yb = caca_get_canvas_height($cv) * 3 / 4 - 5 + sin(0.02 * $i) * 5;
    204 
    205         $xc = caca_get_canvas_width($cv) / 4 - sin(0.02 * $i) * 5;
    206         $yc = caca_get_canvas_height($cv) * 3 / 4 + cos(0.02 * $i) * 5;
    207 
    208         caca_set_color_ansi($cv, CACA_GREEN, CACA_BLACK);
    209         caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya, ord('%'));
    210         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    211         caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya);
    212 
    213         caca_set_color_ansi($cv, CACA_RED, CACA_BLACK);
    214         caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
    215         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    216         caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
    217 
    218         caca_set_color_ansi($cv, CACA_BLUE, CACA_BLACK);
    219         caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc, ord('%'));
    220         caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
    221         caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc);
    222 
    223         /* Draw a background triangle */
    224         $xa = 2;
    225         $ya = 2;
    226 
    227         $xb = caca_get_canvas_width($cv) - 3;
    228         $yb = caca_get_canvas_height($cv) / 2;
    229 
    230         $xc = caca_get_canvas_width($cv) / 3;
    231         $yc = caca_get_canvas_height($cv) - 3;
    232 
    233         caca_set_color_ansi($cv, CACA_CYAN, CACA_BLACK);
    234         caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
    235 
    236         $xo = caca_get_canvas_width($cv) / 2 + cos(0.027 * $i) * caca_get_canvas_width($cv) / 3;
    237         $yo = caca_get_canvas_height($cv) / 2 - sin(0.027 * $i) * caca_get_canvas_height($cv) / 2;
    238 
    239         caca_draw_thin_line($cv, $xa, $ya, $xo, $yo);
    240         caca_draw_thin_line($cv, $xb, $yb, $xo, $yo);
    241         caca_draw_thin_line($cv, $xc, $yc, $xo, $yo);
    242 
    243         /* Draw a trail behind the foreground sprite */
    244         for($j = $i - 60; $j < $i; $j++) {
    245                 $delta = caca_rand(-5, 6);
    246                 caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
    247                 caca_put_char($cv,
    248                         caca_get_canvas_width($cv) / 2 + cos(0.02 * $j) * ($delta + caca_get_canvas_width($cv) / 4),
    249                         caca_get_canvas_height($cv) / 2 + sin(0.02 * $j) * ($delta + caca_get_canvas_height($cv) / 3),
    250                         ord('#'));
    251         }
     171    global $i;
     172
     173    $i++;
     174
     175    caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     176    caca_clear_canvas($cv);
     177
     178    /* Draw the sun */
     179    caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     180    $xo = caca_get_canvas_width($cv) / 4;
     181    $yo = caca_get_canvas_height($cv) / 4 + 5 * sin(0.03 * $i);
     182
     183    for ($j = 0; $j < 16; $j++) {
     184        $xa = $xo - (30 + sin(0.03 * $i) * 8) * sin(0.03 * $i + M_PI * $j / 8);
     185        $ya = $yo + (15 + sin(0.03 * $i) * 4) * cos(0.03 * $i + M_PI * $j / 8);
     186        caca_draw_thin_line($cv, $xo, $yo, $xa, $ya);
     187    }
     188
     189    $j = 15 + sin(0.03 * $i) * 8;
     190    caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
     191    caca_fill_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
     192    caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     193    caca_draw_ellipse($cv, $xo, $yo, $j, $j / 2, ord('#'));
     194
     195    /* Draw the pyramid */
     196    $xo = caca_get_canvas_width($cv) * 5 / 8;
     197    $yo = 2;
     198
     199    $xa = caca_get_canvas_width($cv) / 8 + sin(0.03 * $i) * 5;
     200    $ya = caca_get_canvas_height($cv) / 2 + cos(0.03 * $i) * 5;
     201
     202    $xb = caca_get_canvas_width($cv) - 10 - cos(0.02 * $i) * 10;
     203    $yb = caca_get_canvas_height($cv) * 3 / 4 - 5 + sin(0.02 * $i) * 5;
     204
     205    $xc = caca_get_canvas_width($cv) / 4 - sin(0.02 * $i) * 5;
     206    $yc = caca_get_canvas_height($cv) * 3 / 4 + cos(0.02 * $i) * 5;
     207
     208    caca_set_color_ansi($cv, CACA_GREEN, CACA_BLACK);
     209    caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya, ord('%'));
     210    caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     211    caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xa, $ya);
     212
     213    caca_set_color_ansi($cv, CACA_RED, CACA_BLACK);
     214    caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
     215    caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     216    caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
     217
     218    caca_set_color_ansi($cv, CACA_BLUE, CACA_BLACK);
     219    caca_fill_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc, ord('%'));
     220    caca_set_color_ansi($cv, CACA_YELLOW, CACA_BLACK);
     221    caca_draw_thin_triangle($cv, $xo, $yo, $xb, $yb, $xc, $yc);
     222
     223    /* Draw a background triangle */
     224    $xa = 2;
     225    $ya = 2;
     226
     227    $xb = caca_get_canvas_width($cv) - 3;
     228    $yb = caca_get_canvas_height($cv) / 2;
     229
     230    $xc = caca_get_canvas_width($cv) / 3;
     231    $yc = caca_get_canvas_height($cv) - 3;
     232
     233    caca_set_color_ansi($cv, CACA_CYAN, CACA_BLACK);
     234    caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
     235
     236    $xo = caca_get_canvas_width($cv) / 2 + cos(0.027 * $i) * caca_get_canvas_width($cv) / 3;
     237    $yo = caca_get_canvas_height($cv) / 2 - sin(0.027 * $i) * caca_get_canvas_height($cv) / 2;
     238
     239    caca_draw_thin_line($cv, $xa, $ya, $xo, $yo);
     240    caca_draw_thin_line($cv, $xb, $yb, $xo, $yo);
     241    caca_draw_thin_line($cv, $xc, $yc, $xo, $yo);
     242
     243    /* Draw a trail behind the foreground sprite */
     244    for($j = $i - 60; $j < $i; $j++) {
     245        $delta = caca_rand(-5, 6);
     246        caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
     247        caca_put_char($cv,
     248            caca_get_canvas_width($cv) / 2 + cos(0.02 * $j) * ($delta + caca_get_canvas_width($cv) / 4),
     249            caca_get_canvas_height($cv) / 2 + sin(0.02 * $j) * ($delta + caca_get_canvas_height($cv) / 3),
     250            ord('#'));
     251    }
    252252}
    253253
    254254function demo_dots($cv, $bounds, $outline) {
    255         $xmax = caca_get_canvas_width($cv);
    256         $ymax = caca_get_canvas_height($cv);
    257 
    258         $chars = array('+', '-', '*', '#', 'X', '@', '%', '$', 'M', 'W');
    259 
    260         for ($i = 1000; $i--;) {
    261                 /* Putpixel */
    262                 caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
    263                 caca_put_char($cv, caca_rand(0, $xmax), caca_rand(0, $ymax), ord($chars[caca_rand(0, 9)]));
    264         }
     255    $xmax = caca_get_canvas_width($cv);
     256    $ymax = caca_get_canvas_height($cv);
     257
     258    $chars = array('+', '-', '*', '#', 'X', '@', '%', '$', 'M', 'W');
     259
     260    for ($i = 1000; $i--;) {
     261        /* Putpixel */
     262        caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
     263        caca_put_char($cv, caca_rand(0, $xmax), caca_rand(0, $ymax), ord($chars[caca_rand(0, 9)]));
     264    }
    265265}
    266266
    267267function demo_lines($cv, $bounds, $outline) {
    268         $w = caca_get_canvas_width($cv);
    269         $h = caca_get_canvas_height($cv);
    270 
    271         if ($bounds) {
    272                 $xa = caca_rand(- $w, 2 * $w); $ya = caca_rand(- $h, 2 * $h);
    273                 $xb = caca_rand(- $w, 2 * $w); $yb = caca_rand(- $h, 2 * $h);
    274         }
    275         else {
    276                 $xa = caca_rand(0, $w); $ya = caca_rand(0, $h);
    277                 $xb = caca_rand(0, $w); $yb = caca_rand(0, $h);
    278         }
    279 
    280         caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
    281         if ($outline > 1)
    282                 caca_draw_thin_line($cv, $xa, $ya, $xb, $yb);
    283         else
    284                 caca_draw_line($cv, $xa, $ya, $xb, $yb, ord('#'));
     268    $w = caca_get_canvas_width($cv);
     269    $h = caca_get_canvas_height($cv);
     270
     271    if ($bounds) {
     272        $xa = caca_rand(- $w, 2 * $w); $ya = caca_rand(- $h, 2 * $h);
     273        $xb = caca_rand(- $w, 2 * $w); $yb = caca_rand(- $h, 2 * $h);
     274    }
     275    else {
     276        $xa = caca_rand(0, $w); $ya = caca_rand(0, $h);
     277        $xb = caca_rand(0, $w); $yb = caca_rand(0, $h);
     278    }
     279
     280    caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
     281    if ($outline > 1)
     282        caca_draw_thin_line($cv, $xa, $ya, $xb, $yb);
     283    else
     284        caca_draw_line($cv, $xa, $ya, $xb, $yb, ord('#'));
    285285}
    286286
    287287function demo_boxes($cv, $bounds, $outline) {
    288         $w = caca_get_canvas_width($cv);
    289         $h = caca_get_canvas_height($cv);
    290 
    291         if ($bounds) {
    292                 $xa = caca_rand(- $w, 2 * $w); $ya = caca_rand(- $h, 2 * $h);
    293                 $xb = caca_rand(- $w, 2 * $w); $yb = caca_rand(- $h, 2 * $h);
    294         }
    295         else {
    296                 $xa = caca_rand(0, $w); $ya = caca_rand(0, $h);
    297                 $xb = caca_rand(0, $w); $yb = caca_rand(0, $h);
    298         }
    299 
    300         caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
    301         caca_fill_box($cv, $xa, $ya, $xb, $yb, ord('#'));
    302 
    303         caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
    304         if($outline == 2)
    305                 caca_draw_thin_box($cv, $xa, $ya, $xb, $yb);
    306         else if($outline == 1)
    307                 caca_draw_box($cv, $xa, $ya, $xb, $yb, ord('#'));
     288    $w = caca_get_canvas_width($cv);
     289    $h = caca_get_canvas_height($cv);
     290
     291    if ($bounds) {
     292        $xa = caca_rand(- $w, 2 * $w); $ya = caca_rand(- $h, 2 * $h);
     293        $xb = caca_rand(- $w, 2 * $w); $yb = caca_rand(- $h, 2 * $h);
     294    }
     295    else {
     296        $xa = caca_rand(0, $w); $ya = caca_rand(0, $h);
     297        $xb = caca_rand(0, $w); $yb = caca_rand(0, $h);
     298    }
     299
     300    caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
     301    caca_fill_box($cv, $xa, $ya, $xb, $yb, ord('#'));
     302
     303    caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
     304    if($outline == 2)
     305        caca_draw_thin_box($cv, $xa, $ya, $xb, $yb);
     306    else if($outline == 1)
     307        caca_draw_box($cv, $xa, $ya, $xb, $yb, ord('#'));
    308308}
    309309
    310310function demo_ellipses($cv, $bounds, $outline) {
    311         $w = caca_get_canvas_width($cv);
    312         $h = caca_get_canvas_height($cv);
    313 
    314         if ($bounds) {
    315                 $x = caca_rand(- $w, 2 * $w); $y = caca_rand(- $h, 2 * $h);
    316                 $a = caca_rand(0, $w); $b = caca_rand(0, $h);
    317         }
    318         else {
    319                 do {
    320                         $x = caca_rand(0, $w); $y = caca_rand(0, $h);
    321                         $a = caca_rand(0, $w); $b = caca_rand(0, $h);
    322                 } while ($x - $a < 0 || $x + $a >= $w || $y - $b < 0 || $y + $b >= $h);
    323         }
    324 
    325         caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
    326         caca_fill_ellipse($cv, $x, $y, $a, $b, ord('#'));
    327 
    328         caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
    329         if ($outline == 2)
    330                 caca_draw_thin_ellipse($cv, $x, $y, $a, $b);
    331         else if ($outline == 1)
    332                 caca_draw_ellipse($cv, $x, $y, $a, $b, ord('#'));
     311    $w = caca_get_canvas_width($cv);
     312    $h = caca_get_canvas_height($cv);
     313
     314    if ($bounds) {
     315        $x = caca_rand(- $w, 2 * $w); $y = caca_rand(- $h, 2 * $h);
     316        $a = caca_rand(0, $w); $b = caca_rand(0, $h);
     317    }
     318    else {
     319        do {
     320            $x = caca_rand(0, $w); $y = caca_rand(0, $h);
     321            $a = caca_rand(0, $w); $b = caca_rand(0, $h);
     322        } while ($x - $a < 0 || $x + $a >= $w || $y - $b < 0 || $y + $b >= $h);
     323    }
     324
     325    caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
     326    caca_fill_ellipse($cv, $x, $y, $a, $b, ord('#'));
     327
     328    caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
     329    if ($outline == 2)
     330        caca_draw_thin_ellipse($cv, $x, $y, $a, $b);
     331    else if ($outline == 1)
     332        caca_draw_ellipse($cv, $x, $y, $a, $b, ord('#'));
    333333}
    334334
    335335function demo_triangles($cv, $bounds, $outline) {
    336         $w = caca_get_canvas_width($cv);
    337         $h = caca_get_canvas_height($cv);
    338 
    339         if ($bounds) {
    340                 $xa = caca_rand(- $w, 2 * $w); $ya = caca_rand(- $h, 2 * $h);
    341                 $xb = caca_rand(- $w, 2 * $w); $yb = caca_rand(- $h, 2 * $h);
    342                 $xc = caca_rand(- $w, 2 * $w); $yc = caca_rand(- $h, 2 * $h);
    343         }
    344         else {
    345                 $xa = caca_rand(0, $w); $ya = caca_rand(0, $h);
    346                 $xb = caca_rand(0, $w); $yb = caca_rand(0, $h);
    347                 $xc = caca_rand(0, $w); $yc = caca_rand(0, $h);
    348         }
    349 
    350         caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
    351         caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
    352 
    353         caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
    354         if ($outline == 2)
    355                 caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
    356         else if ($outline == 1)
    357                 caca_draw_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
     336    $w = caca_get_canvas_width($cv);
     337    $h = caca_get_canvas_height($cv);
     338
     339    if ($bounds) {
     340        $xa = caca_rand(- $w, 2 * $w); $ya = caca_rand(- $h, 2 * $h);
     341        $xb = caca_rand(- $w, 2 * $w); $yb = caca_rand(- $h, 2 * $h);
     342        $xc = caca_rand(- $w, 2 * $w); $yc = caca_rand(- $h, 2 * $h);
     343    }
     344    else {
     345        $xa = caca_rand(0, $w); $ya = caca_rand(0, $h);
     346        $xb = caca_rand(0, $w); $yb = caca_rand(0, $h);
     347        $xc = caca_rand(0, $w); $yc = caca_rand(0, $h);
     348    }
     349
     350    caca_set_color_ansi($cv, caca_rand(0, 16), caca_rand(0, 16));
     351    caca_fill_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
     352
     353    caca_set_color_ansi($cv, caca_rand(0, 16), CACA_BLACK);
     354    if ($outline == 2)
     355        caca_draw_thin_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc);
     356    else if ($outline == 1)
     357        caca_draw_triangle($cv, $xa, $ya, $xb, $yb, $xc, $yc, ord('#'));
    358358}
    359359
     
    363363
    364364if (php_sapi_name() != "cli") {
    365         die("You have to run this program with php-cli!\n");
     365    die("You have to run this program with php-cli!\n");
    366366}
    367367
  • libcaca/trunk/caca-php/examples/dithering.php

    r3177 r4333  
    1313
    1414if (php_sapi_name() != "cli") {
    15         die("You have to run this program with php-cli!\n");
     15    die("You have to run this program with php-cli!\n");
    1616}
    1717
    1818$img = imagecreatefrompng(dirname(__FILE__)."/logo-caca.png");
    1919if (!$img)  {
    20         die("Can not open image.\n");
     20    die("Can not open image.\n");
    2121}
    2222
    2323$dither = caca_create_dither($img);
    2424if (!$dither)  {
    25         die("Can not create dither. Maybe you compiled caca-php without gd support.\n");
     25    die("Can not create dither. Maybe you compiled caca-php without gd support.\n");
    2626}
    2727
     
    2929$display = caca_create_display($canvas);
    3030if (!$display)  {
    31         die("Can not create display.\n");
     31    die("Can not create display.\n");
    3232}
    3333
  • libcaca/trunk/caca-php/examples/export.php

    r4148 r4333  
    66 *
    77 *  This file is a Php port of "examples/export.c"
    8  *  which is: 
     8 *  which is:
    99 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    1010 *                All Rights Reserved
    11  *
    12  *  $Id$
    1311 *
    1412 *  This program is free software. It comes without any warranty, to
     
    2018
    2119if (php_sapi_name() != "cli") {
    22         die("You have to run this program with php-cli!\n");
     20    die("You have to run this program with php-cli!\n");
    2321}
    2422
     
    3230if($argc < 2 || $argc > 3)
    3331{
    34         $msg = ($argv[0] . ": wrong argument count\n" .
    35                         "usage: " . $argv[0] . " [file] <format>\n" .
    36                         "where <format> is one of:\n");
    37         foreach($exports as $format => $name)
    38                 $msg .= " \"" . $name . "\" (" . $format . ")\n";
    39         die($msg);
     32    $msg = ($argv[0] . ": wrong argument count\n" .
     33            "usage: " . $argv[0] . " [file] <format>\n" .
     34            "where <format> is one of:\n");
     35    foreach($exports as $format => $name)
     36        $msg .= " \"" . $name . "\" (" . $format . ")\n";
     37    die($msg);
    4038}
    4139
    4240if($argc == 2)
    4341{
    44         $file = NULL;
    45         $format = $argv[1];
     42    $file = NULL;
     43    $format = $argv[1];
    4644}
    4745else
    4846{
    49         $file = $argv[1];
    50         $format = $argv[2];
     47    $file = $argv[1];
     48    $format = $argv[2];
    5149}
    5250
    5351if(! array_key_exists($format, $exports))
    5452{
    55         $msg = ($argv[0] . ": unknown format `" . $format . "'\n" .
    56                         "please use one of:\n");
    57         foreach($exports as $format => $name)
    58                 $msg .= " \"" . $name . "\" (" . $format . ")\n";
    59         die($msg);
     53    $msg = ($argv[0] . ": unknown format `" . $format . "'\n" .
     54            "please use one of:\n");
     55    foreach($exports as $format => $name)
     56        $msg .= " \"" . $name . "\" (" . $format . ")\n";
     57    die($msg);
    6058}
    6159
    6260if($file)
    6361{
    64         $cv = caca_create_canvas(0, 0);
    65         if(caca_import_file($cv, $file, "") < 0)
    66         {
    67                 die($argv[0] . ": `" . $file . "' has unknown format\n");
    68         }
     62    $cv = caca_create_canvas(0, 0);
     63    if(caca_import_file($cv, $file, "") < 0)
     64    {
     65        die($argv[0] . ": `" . $file . "' has unknown format\n");
     66    }
    6967}
    7068else
    7169{
    72         $cv = caca_create_canvas(WIDTH, HEIGHT);
     70    $cv = caca_create_canvas(WIDTH, HEIGHT);
    7371
    74         for($y = 0; $y < 256; $y++)
    75         {
    76                 for($x = 0; $x < 256; $x++)
    77                 {
    78                         $r = $x;
    79                         $g = (255 - $y + $x) / 2;
    80                         $b = $y * (255 - $x) / 256;
    81                         imagesetpixel($pixels, $x, $y, imagecolorallocate($pixels, $r, $g, $b));
    82                 }
    83         }
     72    for($y = 0; $y < 256; $y++)
     73    {
     74        for($x = 0; $x < 256; $x++)
     75        {
     76            $r = $x;
     77            $g = (255 - $y + $x) / 2;
     78            $b = $y * (255 - $x) / 256;
     79            imagesetpixel($pixels, $x, $y, imagecolorallocate($pixels, $r, $g, $b));
     80        }
     81    }
    8482
    85         $dither = caca_create_dither($pixels);
    86         if(($format == "ansi") || ($format == "utf8"))
    87                 caca_set_dither_charset($dither, "shades");
    88         caca_dither_bitmap($cv, 0, 0, caca_get_canvas_width($cv),
    89                                         caca_get_canvas_height($cv), $dither, $pixels);
     83    $dither = caca_create_dither($pixels);
     84    if(($format == "ansi") || ($format == "utf8"))
     85        caca_set_dither_charset($dither, "shades");
     86    caca_dither_bitmap($cv, 0, 0, caca_get_canvas_width($cv),
     87                       caca_get_canvas_height($cv), $dither, $pixels);
    9088
    91         caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
    92         caca_draw_thin_box($cv, 0, 0, WIDTH - 1, HEIGHT - 1);
     89    caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
     90    caca_draw_thin_box($cv, 0, 0, WIDTH - 1, HEIGHT - 1);
    9391
    94         caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
    95         caca_fill_ellipse($cv, WIDTH / 2, HEIGHT / 2,
    96                                         WIDTH / 4, HEIGHT / 4, ord(' '));
     92    caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
     93    caca_fill_ellipse($cv, WIDTH / 2, HEIGHT / 2,
     94                      WIDTH / 4, HEIGHT / 4, ord(' '));
    9795
    98         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    99         caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 6,
    100                                 "   lightgray on black   ");
    101         caca_set_color_ansi($cv, CACA_DEFAULT, CACA_TRANSPARENT);
    102         caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 5,
    103                                 " default on transparent ");
    104         caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
    105         caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 4,
    106                                 "     black on white     ");
     96    caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     97    caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 6,
     98                 "   lightgray on black   ");
     99    caca_set_color_ansi($cv, CACA_DEFAULT, CACA_TRANSPARENT);
     100    caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 5,
     101                 " default on transparent ");
     102    caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
     103    caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 4,
     104                 "     black on white     ");
    107105
    108         caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
    109         caca_put_str($cv, WIDTH / 2 - 8, HEIGHT / 2 - 3, "[<><><><> <>--<>]");
    110         caca_put_str($cv, WIDTH / 2 - 8, HEIGHT / 2 - 2, "[ドラゴン ボーレ]");
    111         caca_put_str($cv, WIDTH / 2 - 7, HEIGHT / 2 + 2, "äβç ░▒▓█▓▒░ ΔЗҒ");
    112         caca_put_str($cv, WIDTH / 2 - 5, HEIGHT / 2 + 4, "(\") \\o/ <&>");
     106    caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
     107    caca_put_str($cv, WIDTH / 2 - 8, HEIGHT / 2 - 3, "[<><><><> <>--<>]");
     108    caca_put_str($cv, WIDTH / 2 - 8, HEIGHT / 2 - 2, "[ドラゴン ボーレ]");
     109    caca_put_str($cv, WIDTH / 2 - 7, HEIGHT / 2 + 2, "äβç ░▒▓█▓▒░ ΔЗҒ");
     110    caca_put_str($cv, WIDTH / 2 - 5, HEIGHT / 2 + 4, "(\") \\o/ <&>");
    113111
    114         caca_set_attr($cv, CACA_BOLD);
    115         caca_put_str($cv, WIDTH / 2 - 16, HEIGHT / 2 + 3, "Bold");
    116         caca_set_attr($cv, CACA_BLINK);
    117         caca_put_str($cv, WIDTH / 2 - 9, HEIGHT / 2 + 3, "Blink");
    118         caca_set_attr($cv, CACA_ITALICS);
    119         caca_put_str($cv, WIDTH / 2 - 1, HEIGHT / 2 + 3, "Italics");
    120         caca_set_attr($cv, CACA_UNDERLINE);
    121         caca_put_str($cv, WIDTH / 2 + 8, HEIGHT / 2 + 3, "Underline");
    122         caca_set_attr($cv, 0);
     112    caca_set_attr($cv, CACA_BOLD);
     113    caca_put_str($cv, WIDTH / 2 - 16, HEIGHT / 2 + 3, "Bold");
     114    caca_set_attr($cv, CACA_BLINK);
     115    caca_put_str($cv, WIDTH / 2 - 9, HEIGHT / 2 + 3, "Blink");
     116    caca_set_attr($cv, CACA_ITALICS);
     117    caca_put_str($cv, WIDTH / 2 - 1, HEIGHT / 2 + 3, "Italics");
     118    caca_set_attr($cv, CACA_UNDERLINE);
     119    caca_put_str($cv, WIDTH / 2 + 8, HEIGHT / 2 + 3, "Underline");
     120    caca_set_attr($cv, 0);
    123121
    124         caca_set_color_ansi($cv, CACA_WHITE, CACA_LIGHTBLUE);
    125         caca_put_str($cv, WIDTH / 2 - 7, HEIGHT / 2, "    LIBCACA    ");
     122    caca_set_color_ansi($cv, CACA_WHITE, CACA_LIGHTBLUE);
     123    caca_put_str($cv, WIDTH / 2 - 7, HEIGHT / 2, "    LIBCACA    ");
    126124
    127         for($x = 0; $x < 16; $x++)
    128         {
    129                 caca_set_color_argb($cv, 0xff00 | $x, 0xf00f | ($x << 4));
    130                 caca_put_char($cv, WIDTH / 2 - 7 + $x, HEIGHT / 2 + 6, ord('#'));
    131         }
     125    for($x = 0; $x < 16; $x++)
     126    {
     127        caca_set_color_argb($cv, 0xff00 | $x, 0xf00f | ($x << 4));
     128        caca_put_char($cv, WIDTH / 2 - 7 + $x, HEIGHT / 2 + 6, ord('#'));
     129    }
    132130}
    133131
  • libcaca/trunk/caca-php/examples/figfont.php

    r3177 r4333  
    1212 */
    1313
    14 function unistr_to_ords($str, $encoding = 'UTF-8'){       
    15         $str = mb_convert_encoding($str, "UCS-4BE", $encoding);
    16         $result = array();
     14function unistr_to_ords($str, $encoding = 'UTF-8'){
     15    $str = mb_convert_encoding($str, "UCS-4BE", $encoding);
     16    $result = array();
    1717
    18         for ($i = 0; $i < mb_strlen($str, "UCS-4BE"); $i++){       
    19                 $c = mb_substr($str, $i, 1, "UCS-4BE");                   
    20                 $val = unpack("N", $c);           
    21                 $result[] = $val[1];               
    22         }       
    23         return $result;
     18    for ($i = 0; $i < mb_strlen($str, "UCS-4BE"); $i++){
     19        $c = mb_substr($str, $i, 1, "UCS-4BE");
     20        $val = unpack("N", $c);
     21        $result[] = $val[1];
     22    }
     23    return $result;
    2424}
    2525
    2626if (php_sapi_name() != "cli") {
    27         die("You have to run this program with php-cli!\n");
     27    die("You have to run this program with php-cli!\n");
    2828}
    2929
    3030if ($argc < 3) {
    31         die("Too few arguments.\nUsage: cmd <path of font> <utf8 string>\n");
     31    die("Too few arguments.\nUsage: cmd <path of font> <utf8 string>\n");
    3232}
    3333
     
    3535
    3636if (!caca_canvas_set_figfont($cv, $argv[1])) {
    37         die("Could not open font\n");
     37    die("Could not open font\n");
    3838}
    3939
     
    4141$color = 0;
    4242foreach ($chars as $c) {
    43         caca_set_color_ansi($cv, 1 + (($color += 4) % 15), CACA_TRANSPARENT);
    44         caca_put_figchar($cv, $c);
     43    caca_set_color_ansi($cv, 1 + (($color += 4) % 15), CACA_TRANSPARENT);
     44    caca_put_figchar($cv, $c);
    4545}
    4646
  • libcaca/trunk/caca-php/examples/fullwidth.php

    r4148 r4333  
    66 *
    77 *  This file is a Php port of "examples/fullwidth.c"
    8  *  which is: 
     8 *  which is:
    99 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    1010 *                All Rights Reserved
    11  *
    12  *  $Id$
    1311 *
    1412 *  This program is free software. It comes without any warranty, to
     
    2018
    2119if (php_sapi_name() != "cli") {
    22         die("You have to run this program with php-cli!\n");
     20    die("You have to run this program with php-cli!\n");
    2321}
    2422
     
    2826if(! $cv)
    2927{
    30         die("Can't created canvas\n");
     28    die("Can't created canvas\n");
    3129}
    3230$dp = caca_create_display($cv);
    3331if(! $dp)
    3432{
    35         die("Can't create display\n");
     33    die("Can't create display\n");
    3634}
    3735
     
    4240for($i = 0; $i < 10; $i++)
    4341{
    44         caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
    45         caca_put_str($caca, 0, $i, CACA);
    46         caca_set_color_ansi($caca, CACA_WHITE, CACA_RED);
    47         caca_put_char($caca, $i - 2, $i, ord('x'));
     42    caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
     43    caca_put_str($caca, 0, $i, CACA);
     44    caca_set_color_ansi($caca, CACA_WHITE, CACA_RED);
     45    caca_put_char($caca, $i - 2, $i, ord('x'));
    4846}
    4947
     
    5351for($i = 0; $i < 10; $i++)
    5452{
    55         caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
    56         caca_put_str($caca, 0, $i, CACA);
    57         caca_set_color_ansi($caca, CACA_WHITE, CACA_GREEN);
    58         caca_put_str($caca, $i - 2, $i, "ホ");
     53    caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
     54    caca_put_str($caca, 0, $i, CACA);
     55    caca_set_color_ansi($caca, CACA_WHITE, CACA_GREEN);
     56    caca_put_str($caca, $i - 2, $i, "ホ");
    5957}
    6058
     
    6664for($i = 0; $i < 10; $i++)
    6765{
    68         caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
    69         caca_put_str($caca, 0, $i, CACA);
    70         caca_blit($caca, $i - 2, $i, $line);
     66    caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
     67    caca_put_str($caca, 0, $i, CACA);
     68    caca_blit($caca, $i - 2, $i, $line);
    7169}
    7270
  • libcaca/trunk/caca-php/examples/img2txt.php

    r4148 r4333  
    66 *
    77 *  This file is a Php port of "src/img2txt.c"
    8  *  which is: 
     8 *  which is:
    99 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    1010 *                2007 Jean-Yves Lamoureux <jylam@lnxscene.org>
    1111 *                All Rights Reserved
    12  *
    13  *  $Id$
    1412 *
    1513 *  This program is free software. It comes without any warranty, to
     
    2119
    2220if (php_sapi_name() != "cli") {
    23         die("You have to run this program with php-cli!\n");
     21    die("You have to run this program with php-cli!\n");
    2422}
    2523
     
    3230function mygetopt($shortopts, $longopts)
    3331{
    34         global $argc, $argv, $myoptind;
    35         if($myoptind < 0)
    36         {
    37                 $myoptind = 0;
    38         }
    39         if(($myoptind + 1) >= $argc)
    40         {
    41                 return NULL;
    42         }
    43         $myoptind ++;
    44         $nextarg = $argv[$myoptind];
    45         $ret = NULL;
    46         if((substr($nextarg, 0, 1) != '-')
    47         ||
    48         ($nextarg == '-'))
    49         {
    50                 $myoptind = $argc - 1;
    51         }
    52         else
    53         {
    54                 $skipopt = $myoptind;
    55                 $skipopts = 1;
    56                 if($nextarg == '--')
    57                 {
    58                         $myoptind = $argc - 1;
    59                 }
    60                 else
    61                 {
    62                         $opt = NULL;
    63                         $arg = NULL;
    64                         foreach($longopts as $longopt)
    65                         {
    66                                 $optional = false;
    67                                 $hasarg = false;
    68                                 if(($longopt != '::') && substr($longopt, -2) == '::')
    69                                 {
    70                                         $optional = true;
    71                                         $hasarg = true;
    72                                         $longopt = substr($longopt, 0, -2);
    73                                 }
    74                                 else if(($longopt != ':') && substr($longopt, -1) == ':')
    75                                 {
    76                                         $optional = false;
    77                                         $hasarg = true;
    78                                         $longopt = substr($longopt, 0, -1);
    79                                 }
    80                                 if($nextarg == ('--' . $longopt))
    81                                 {
    82                                         $opt = '--' . $longopt;
    83                                         if($hasarg && ! $optional)
    84                                         {
    85                                                 if(($myoptind + 1) < $argc)
    86                                                 {
    87                                                         $myoptind ++;
    88                                                         $skipopts ++;
    89                                                         $arg = $argv[$myoptind];
    90                                                 }
    91                                                 else
    92                                                 {
    93                                                         throw new MygetoptException("option \"$opt\" requires an argument");
    94                                                 }
    95                                         }
    96                                         break;
    97                                 }
    98                                 else if(substr($nextarg, 0, strlen('--' . $longopt . '='))
    99                                                 ==
    100                                                 ('--' . $longopt . '='))
    101                                 {
    102                                         $opt = '--' . $longopt;
    103                                         $arg = substr($nextarg, strlen($opt . '='));
    104                                         if(! $hasarg)
    105                                         {
    106                                                 throw new MygetoptException("option \"$opt\" does not allow an argument");
    107                                         }
    108                                         break;
    109                                 }
    110                         }
    111                         if($opt === NULL)
    112                         {
    113                                 for($i = 0; $i < strlen($shortopts); $i ++)
    114                                 {
    115                                         $optional = false;
    116                                         $hasarg = false;
    117                                         $shortopt = substr($shortopts, $i, 1);
    118                                         if(substr($shortopts, $i + 1, 2) == '::')
    119                                         {
    120                                                 $optional = true;
    121                                                 $hasarg = true;
    122                                                 $i += 2;
    123                                         }
    124                                         else if(substr($shortopts, $i + 1, 1) == ':')
    125                                         {
    126                                                 $hasarg = true;
    127                                         }
    128                                         if($nextarg
    129                                         ==
    130                                         ('-' . $shortopt))
    131                                         {
    132                                                 $opt = '-' . $shortopt;
    133                                                 if($hasarg && ! $optional)
    134                                                 {
    135                                                         if(($myoptind + 1) < $argc)
    136                                                         {
    137                                                                 $myoptind ++;
    138                                                                 $skipopts ++;
    139                                                                 $arg = $argv[$myoptind];
    140                                                         }
    141                                                         else
    142                                                         {
    143                                                                 throw new MygetoptException("option \"$opt\" requires an argument");
    144                                                         }
    145                                                 }
    146                                                 break;
    147                                         }
    148                                         else if(substr($nextarg, 0, strlen('-' . $shortopt))
    149                                                         ==
    150                                                         ('-' . $shortopt))
    151                                         {
    152                                                 $opt = '-' . $shortopt;
    153                                                 if($hasarg)
    154                                                 {
    155                                                         $arg = substr($nextarg, strlen($opt));
    156                                                 }
    157                                                 else
    158                                                 {
    159                                                         $argv[$myoptind] = '-' . substr($nextarg, strlen($opt));
    160                                                         $myoptind --;
    161                                                         $skipopts = 0;
    162                                                 }
    163                                         }
    164                                 }
    165                         }
    166                         if($opt === NULL)
    167                         {
    168                                 if(substr($nextarg, 0, strlen('--')) == '--')
    169                                 {
    170                                         $longopt = substr($nextarg, strlen('--'));
    171                                         if(strpos($longopt, '=') !== false)
    172                                         {
    173                                                 $longopt = substr($longopt, 0, strpos($longopt, '='));
    174                                         }
    175                                         throw new MygetoptException("option \"--$longopt\" is not recognized");
    176                                 }
    177                                 $shortopt = substr($nextarg, strlen('-'), 1);
    178                                 throw new MygetoptException("option \"-$shortopt\" is not recognized");
    179                         }
    180                         $ret = array($opt, $arg);
    181                 }
    182                 if ($skipopts > 0)
    183                 {
    184                         for($i = 0; $i < $argc; $i ++)
    185                         {
    186                                 if(($i < $skipopt) || ($i >= ($skipopt + $skipopts)))
    187                                 {
    188                                         $new_argv[] = $argv[$i];
    189                                 }
    190                         }
    191                         if($myoptind >= $skipopt)
    192                         {
    193                                 $myoptind -= $skipopts;
    194                         }
    195                         $argv = $new_argv;
    196                         $argc = count($argv);
    197                 }
    198         }
    199         return $ret;
     32    global $argc, $argv, $myoptind;
     33    if($myoptind < 0)
     34    {
     35        $myoptind = 0;
     36    }
     37    if(($myoptind + 1) >= $argc)
     38    {
     39        return NULL;
     40    }
     41    $myoptind ++;
     42    $nextarg = $argv[$myoptind];
     43    $ret = NULL;
     44    if((substr($nextarg, 0, 1) != '-')
     45       ||
     46       ($nextarg == '-'))
     47    {
     48        $myoptind = $argc - 1;
     49    }
     50    else
     51    {
     52        $skipopt = $myoptind;
     53        $skipopts = 1;
     54        if($nextarg == '--')
     55        {
     56            $myoptind = $argc - 1;
     57        }
     58        else
     59        {
     60            $opt = NULL;
     61            $arg = NULL;
     62            foreach($longopts as $longopt)
     63            {
     64                $optional = false;
     65                $hasarg = false;
     66                if(($longopt != '::') && substr($longopt, -2) == '::')
     67                {
     68                    $optional = true;
     69                    $hasarg = true;
     70                    $longopt = substr($longopt, 0, -2);
     71                }
     72                else if(($longopt != ':') && substr($longopt, -1) == ':')
     73                {
     74                    $optional = false;
     75                    $hasarg = true;
     76                    $longopt = substr($longopt, 0, -1);
     77                }
     78                if($nextarg == ('--' . $longopt))
     79                {
     80                    $opt = '--' . $longopt;
     81                    if($hasarg && ! $optional)
     82                    {
     83                        if(($myoptind + 1) < $argc)
     84                        {
     85                            $myoptind ++;
     86                            $skipopts ++;
     87                            $arg = $argv[$myoptind];
     88                        }
     89                        else
     90                        {
     91                            throw new MygetoptException("option \"$opt\" requires an argument");
     92                        }
     93                    }
     94                    break;
     95                }
     96                else if(substr($nextarg, 0, strlen('--' . $longopt . '='))
     97                        ==
     98                        ('--' . $longopt . '='))
     99                {
     100                    $opt = '--' . $longopt;
     101                    $arg = substr($nextarg, strlen($opt . '='));
     102                    if(! $hasarg)
     103                    {
     104                        throw new MygetoptException("option \"$opt\" does not allow an argument");
     105                    }
     106                    break;
     107                }
     108            }
     109            if($opt === NULL)
     110            {
     111                for($i = 0; $i < strlen($shortopts); $i ++)
     112                {
     113                    $optional = false;
     114                    $hasarg = false;
     115                    $shortopt = substr($shortopts, $i, 1);
     116                    if(substr($shortopts, $i + 1, 2) == '::')
     117                    {
     118                        $optional = true;
     119                        $hasarg = true;
     120                        $i += 2;
     121                    }
     122                    else if(substr($shortopts, $i + 1, 1) == ':')
     123                    {
     124                        $hasarg = true;
     125                    }
     126                    if($nextarg
     127                       ==
     128                       ('-' . $shortopt))
     129                    {
     130                        $opt = '-' . $shortopt;
     131                        if($hasarg && ! $optional)
     132                        {
     133                            if(($myoptind + 1) < $argc)
     134                            {
     135                                $myoptind ++;
     136                                $skipopts ++;
     137                                $arg = $argv[$myoptind];
     138                            }
     139                            else
     140                            {
     141                                throw new MygetoptException("option \"$opt\" requires an argument");
     142                            }
     143                        }
     144                        break;
     145                    }
     146                    else if(substr($nextarg, 0, strlen('-' . $shortopt))
     147                            ==
     148                            ('-' . $shortopt))
     149                    {
     150                        $opt = '-' . $shortopt;
     151                        if($hasarg)
     152                        {
     153                            $arg = substr($nextarg, strlen($opt));
     154                        }
     155                        else
     156                        {
     157                            $argv[$myoptind] = '-' . substr($nextarg, strlen($opt));
     158                            $myoptind --;
     159                            $skipopts = 0;
     160                        }
     161                    }
     162                }
     163            }
     164            if($opt === NULL)
     165            {
     166                if(substr($nextarg, 0, strlen('--')) == '--')
     167                {
     168                    $longopt = substr($nextarg, strlen('--'));
     169                    if(strpos($longopt, '=') !== false)
     170                    {
     171                        $longopt = substr($longopt, 0, strpos($longopt, '='));
     172                    }
     173                    throw new MygetoptException("option \"--$longopt\" is not recognized");
     174                }
     175                $shortopt = substr($nextarg, strlen('-'), 1);
     176                throw new MygetoptException("option \"-$shortopt\" is not recognized");
     177            }
     178            $ret = array($opt, $arg);
     179        }
     180        if ($skipopts > 0)
     181        {
     182            for($i = 0; $i < $argc; $i ++)
     183            {
     184                if(($i < $skipopt) || ($i >= ($skipopt + $skipopts)))
     185                {
     186                    $new_argv[] = $argv[$i];
     187                }
     188            }
     189            if($myoptind >= $skipopt)
     190            {
     191                $myoptind -= $skipopts;
     192            }
     193            $argv = $new_argv;
     194            $argc = count($argv);
     195        }
     196    }
     197    return $ret;
    200198}
    201199
    202200function usage($argc, $argv)
    203201{
    204         fprintf(STDERR, "Usage: %s [OPTIONS]... <IMAGE>\n", $argv[0]);
    205         fprintf(STDERR, "Convert IMAGE to any text based available format.\n");
    206         fprintf(STDERR, "Example : %s -W 80 -f ansi ./caca.png\n\n", $argv[0]);
    207         fprintf(STDERR, "Options:\n");
    208         fprintf(STDERR, "  -h, --help\t\t\tThis help\n");
    209         fprintf(STDERR, "  -v, --version\t\t\tVersion of the program\n");
    210         fprintf(STDERR, "  -W, --width=WIDTH\t\tWidth of resulting image\n");
    211         fprintf(STDERR, "  -H, --height=HEIGHT\t\tHeight of resulting image\n");
    212         fprintf(STDERR, "  -x, --font-width=WIDTH\t\tWidth of output font\n");
    213         fprintf(STDERR, "  -y, --font-height=HEIGHT\t\tHeight of output font\n");
    214         fprintf(STDERR, "  -b, --brightness=BRIGHTNESS\tBrightness of resulting image\n");
    215         fprintf(STDERR, "  -c, --contrast=CONTRAST\tContrast of resulting image\n");
    216         fprintf(STDERR, "  -g, --gamma=GAMMA\t\tGamma of resulting image\n");
    217         fprintf(STDERR, "  -d, --dither=DITHER\t\tDithering algorithm to use :\n");
    218         $list = caca_get_dither_algorithm_list(caca_create_dither(imagecreate(1, 1)));
    219         foreach($list as $type => $name)
    220         {
    221                 fprintf(STDERR, "\t\t\t%s: %s\n", $type, $name);
    222         }
    223 
    224         fprintf(STDERR, "  -f, --format=FORMAT\t\tFormat of the resulting image :\n");
    225         $list = caca_get_export_list();
    226         foreach($list as $type => $name)
    227         {
    228                 fprintf(STDERR, "\t\t\t%s: %s\n", $type, $name);
    229         }
     202    fprintf(STDERR, "Usage: %s [OPTIONS]... <IMAGE>\n", $argv[0]);
     203    fprintf(STDERR, "Convert IMAGE to any text based available format.\n");
     204    fprintf(STDERR, "Example : %s -W 80 -f ansi ./caca.png\n\n", $argv[0]);
     205    fprintf(STDERR, "Options:\n");
     206    fprintf(STDERR, "  -h, --help\t\t\tThis help\n");
     207    fprintf(STDERR, "  -v, --version\t\t\tVersion of the program\n");
     208    fprintf(STDERR, "  -W, --width=WIDTH\t\tWidth of resulting image\n");
     209    fprintf(STDERR, "  -H, --height=HEIGHT\t\tHeight of resulting image\n");
     210    fprintf(STDERR, "  -x, --font-width=WIDTH\t\tWidth of output font\n");
     211    fprintf(STDERR, "  -y, --font-height=HEIGHT\t\tHeight of output font\n");
     212    fprintf(STDERR, "  -b, --brightness=BRIGHTNESS\tBrightness of resulting image\n");
     213    fprintf(STDERR, "  -c, --contrast=CONTRAST\tContrast of resulting image\n");
     214    fprintf(STDERR, "  -g, --gamma=GAMMA\t\tGamma of resulting image\n");
     215    fprintf(STDERR, "  -d, --dither=DITHER\t\tDithering algorithm to use :\n");
     216    $list = caca_get_dither_algorithm_list(caca_create_dither(imagecreate(1, 1)));
     217    foreach($list as $type => $name)
     218    {
     219        fprintf(STDERR, "\t\t\t%s: %s\n", $type, $name);
     220    }
     221
     222    fprintf(STDERR, "  -f, --format=FORMAT\t\tFormat of the resulting image :\n");
     223    $list = caca_get_export_list();
     224    foreach($list as $type => $name)
     225    {
     226        fprintf(STDERR, "\t\t\t%s: %s\n", $type, $name);
     227    }
    230228}
    231229
    232230function version()
    233231{
    234         printf(
    235         "img2txt Copyright 2006-2007 Sam Hocevar and Jean-Yves Lamoureux\n" .
    236         "        Copyright 2008 Benjamin C. Wiley Sittler\n" .
    237         "Internet: <sam@hocevar.net> <jylam@lnxscene.org>\n" .
    238         "          <bsittler@gmail.com> Version: %s\n" .
    239         "\n" .
    240         "img2txt, along with its documentation, may be freely copied and distributed.\n" .
    241         "\n" .
    242         "The latest version of img2txt is available from the web site,\n" .
    243         "        http://caca.zoy.org/wiki/libcaca in the libcaca package.\n" .
    244         "\n",
    245         caca_get_version());
     232    printf(
     233    "img2txt Copyright 2006-2007 Sam Hocevar and Jean-Yves Lamoureux\n" .
     234    "        Copyright 2008 Benjamin C. Wiley Sittler\n" .
     235    "Internet: <sam@hocevar.net> <jylam@lnxscene.org>\n" .
     236    "          <bsittler@gmail.com> Version: %s\n" .
     237    "\n" .
     238    "img2txt, along with its documentation, may be freely copied and distributed.\n" .
     239    "\n" .
     240    "The latest version of img2txt is available from the web site,\n" .
     241    "        http://caca.zoy.org/wiki/libcaca in the libcaca package.\n" .
     242    "\n",
     243    caca_get_version());
    246244}
    247245function main()
    248246{
    249         global $argc, $argv;
    250         $cols = 0;
    251         $lines = 0;
    252         $font_width = 6;
    253         $font_height = 10;
    254         $format = NULL;
    255         $dither = NULL;
    256         $gamma = $brightness = $contrast = -1.0;
    257 
    258         $long_options = array(
    259                 "width:"        => 'W',
    260                 "height:"       => 'H',
    261                 "font-width:"   => 'x',
    262                 "font-height:"  => 'y',
    263                 "format:"       => 'f',
    264                 "dither:"       => 'd',
    265                 "gamma:"        => 'g',
    266                 "brightness:"   => 'b',
    267                 "contrast:"     => 'c',
    268                 "help"          => 'h',
    269                 "version"       => 'v'
    270                 );
    271 
    272         try {
    273                 while($opt_and_arg = mygetopt("W:H:f:d:g:b:c:hvx:y:", array_keys($long_options)))
    274                 {
    275                         $opt = $opt_and_arg[0];
    276                         $arg = $opt_and_arg[1];
    277                         if((substr($opt, 0, 2) == '--')
    278                                 &&
    279                                 array_key_exists(substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : ''), $long_options))
    280                         {
    281                                 $opt = '-' . $long_options[substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : '')];
    282                         }
    283                         switch($opt)
    284                         {
    285                         case '-W': /* --width */
    286                                 $cols = intval($arg);
    287                                 break;
    288                         case '-H': /* --height */
    289                                 $lines = intval($arg);
    290                                 break;
    291                         case '-x': /* --width */
    292                                 $font_width = intval($arg);
    293                                 break;
    294                         case '-y': /* --height */
    295                                 $font_height = intval($arg);
    296                                 break;
    297                         case '-f': /* --format */
    298                                 $format = $arg;
    299                                 break;
    300                         case '-d': /* --dither */
    301                                 $dither = $arg;
    302                                 break;
    303                         case '-g': /* --gamma */
    304                                 $gamma = floatval($arg);
    305                                 break;
    306                         case '-b': /* --brightness */
    307                                 $brightness = floatval($arg);
    308                                 break;
    309                         case '-c': /* --contrast */
    310                                 $contrast = floatval($arg);
    311                                 break;
    312                         case '-h': /* --help */
    313                                 usage($argc, $argv);
    314                                 return 0;
    315                         case '-v': /* --version */
    316                                 version();
    317                                 return 0;
    318                         default:
    319                                 return 1;
    320                         }
    321                 }
    322         }
    323         catch (MygetoptException $e)
    324         {
    325                 fprintf(STDERR, "%s", $argv[0] . ": " . $e->getMessage() . "\n");
    326                 usage($argc, $argv);
    327                 return 2;
    328         }
    329 
    330         if($argc != 2)
    331         {
    332                 fprintf(STDERR, "%s: wrong argument count\n", $argv[0]);
    333                 usage($argc, $argv);
    334                 return 1;
    335         }
    336 
    337         $cv = caca_create_canvas(0, 0);
    338         if(!$cv)
    339         {
    340                 fprintf(STDERR, "%s: unable to initialise libcaca\n", $argv[0]);
    341                 return 1;
    342         }
    343 
    344         $i_str = file_get_contents($argv[$argc-1]);
    345         $i = $i_str ? imagecreatefromstring($i_str) : NULL;
    346         if(!$i)
    347         {
    348                 fprintf(STDERR, "%s: unable to load %s\n", $argv[0], $argv[$argc-1]);
    349                 return 1;
    350         }
    351 
    352         /* Assume a 6×10 font */
    353         if(!$cols && !$lines)
    354         {
    355                 $cols = 60;
    356                 $lines = $cols * imagesy($i) * $font_width / imagesx($i) / $font_height;
    357         }
    358         else if($cols && !$lines)
    359         {
    360                 $lines = $cols * imagesy($i) * $font_width / imagesx($i) / $font_height;
    361         }
    362         else if(!$cols && $lines)
    363         {
    364                 $cols = $lines * imagesx($i) * $font_height / imagesy($i) / $font_width;
    365         }
    366 
    367 
    368         caca_set_canvas_size($cv, $cols, $lines);
    369         caca_set_color_ansi($cv, CACA_DEFAULT, CACA_TRANSPARENT);
    370         caca_clear_canvas($cv);
    371         $i_dither = caca_create_dither($i);
    372         if(! caca_set_dither_algorithm($i_dither, $dither?$dither:"fstein"))
    373         {
    374                 fprintf(STDERR, "%s: Can't dither image with algorithm '%s'\n", $argv[0], $dither?$dither:"fstein");
    375                 return -1;
    376         }
    377 
    378         if($brightness!=-1) caca_set_dither_brightness ($i_dither, $brightness);
    379         if($contrast!=-1) caca_set_dither_contrast ($i_dither, $contrast);
    380         if($gamma!=-1) caca_set_dither_gamma ($i_dither, $gamma);
    381 
    382         caca_dither_bitmap($cv, 0, 0, $cols, $lines, $i_dither, $i);
    383 
    384         $export = caca_export_string($cv, $format?$format:"ansi");
    385         if(!$export)
    386         {
    387                 fprintf(STDERR, "%s: Can't export to format '%s'\n", $argv[0], $format?$format:"ansi");
    388                 return -1;
    389         }
    390         else
    391         {
    392                 echo $export;
    393         }
    394 
    395         return 0;
     247    global $argc, $argv;
     248    $cols = 0;
     249    $lines = 0;
     250    $font_width = 6;
     251    $font_height = 10;
     252    $format = NULL;
     253    $dither = NULL;
     254    $gamma = $brightness = $contrast = -1.0;
     255
     256    $long_options = array(
     257        "width:"    => 'W',
     258        "height:"    => 'H',
     259        "font-width:"    => 'x',
     260        "font-height:"    => 'y',
     261        "format:"    => 'f',
     262        "dither:"    => 'd',
     263        "gamma:"    => 'g',
     264        "brightness:"    => 'b',
     265        "contrast:"    => 'c',
     266        "help"        => 'h',
     267        "version"    => 'v'
     268        );
     269
     270    try {
     271        while($opt_and_arg = mygetopt("W:H:f:d:g:b:c:hvx:y:", array_keys($long_options)))
     272        {
     273            $opt = $opt_and_arg[0];
     274            $arg = $opt_and_arg[1];
     275            if((substr($opt, 0, 2) == '--')
     276                &&
     277                array_key_exists(substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : ''), $long_options))
     278            {
     279                $opt = '-' . $long_options[substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : '')];
     280            }
     281            switch($opt)
     282            {
     283            case '-W': /* --width */
     284                $cols = intval($arg);
     285                break;
     286            case '-H': /* --height */
     287                $lines = intval($arg);
     288                break;
     289            case '-x': /* --width */
     290                $font_width = intval($arg);
     291                break;
     292            case '-y': /* --height */
     293                $font_height = intval($arg);
     294                break;
     295            case '-f': /* --format */
     296                $format = $arg;
     297                break;
     298            case '-d': /* --dither */
     299                $dither = $arg;
     300                break;
     301            case '-g': /* --gamma */
     302                $gamma = floatval($arg);
     303                break;
     304            case '-b': /* --brightness */
     305                $brightness = floatval($arg);
     306                break;
     307            case '-c': /* --contrast */
     308                $contrast = floatval($arg);
     309                break;
     310            case '-h': /* --help */
     311                usage($argc, $argv);
     312                return 0;
     313            case '-v': /* --version */
     314                version();
     315                return 0;
     316            default:
     317                return 1;
     318            }
     319        }
     320    }
     321    catch (MygetoptException $e)
     322    {
     323        fprintf(STDERR, "%s", $argv[0] . ": " . $e->getMessage() . "\n");
     324        usage($argc, $argv);
     325        return 2;
     326    }
     327
     328    if($argc != 2)
     329    {
     330        fprintf(STDERR, "%s: wrong argument count\n", $argv[0]);
     331        usage($argc, $argv);
     332        return 1;
     333    }
     334
     335    $cv = caca_create_canvas(0, 0);
     336    if(!$cv)
     337    {
     338        fprintf(STDERR, "%s: unable to initialise libcaca\n", $argv[0]);
     339        return 1;
     340    }
     341
     342    $i_str = file_get_contents($argv[$argc-1]);
     343    $i = $i_str ? imagecreatefromstring($i_str) : NULL;
     344    if(!$i)
     345    {
     346        fprintf(STDERR, "%s: unable to load %s\n", $argv[0], $argv[$argc-1]);
     347        return 1;
     348    }
     349
     350    /* Assume a 6×10 font */
     351    if(!$cols && !$lines)
     352    {
     353        $cols = 60;
     354        $lines = $cols * imagesy($i) * $font_width / imagesx($i) / $font_height;
     355    }
     356    else if($cols && !$lines)
     357    {
     358        $lines = $cols * imagesy($i) * $font_width / imagesx($i) / $font_height;
     359    }
     360    else if(!$cols && $lines)
     361    {
     362        $cols = $lines * imagesx($i) * $font_height / imagesy($i) / $font_width;
     363    }
     364
     365
     366    caca_set_canvas_size($cv, $cols, $lines);
     367    caca_set_color_ansi($cv, CACA_DEFAULT, CACA_TRANSPARENT);
     368    caca_clear_canvas($cv);
     369    $i_dither = caca_create_dither($i);
     370    if(! caca_set_dither_algorithm($i_dither, $dither?$dither:"fstein"))
     371    {
     372        fprintf(STDERR, "%s: Can't dither image with algorithm '%s'\n", $argv[0], $dither?$dither:"fstein");
     373        return -1;
     374    }
     375
     376    if($brightness!=-1) caca_set_dither_brightness ($i_dither, $brightness);
     377    if($contrast!=-1) caca_set_dither_contrast ($i_dither, $contrast);
     378    if($gamma!=-1) caca_set_dither_gamma ($i_dither, $gamma);
     379
     380    caca_dither_bitmap($cv, 0, 0, $cols, $lines, $i_dither, $i);
     381
     382    $export = caca_export_string($cv, $format?$format:"ansi");
     383    if(!$export)
     384    {
     385        fprintf(STDERR, "%s: Can't export to format '%s'\n", $argv[0], $format?$format:"ansi");
     386        return -1;
     387    }
     388    else
     389    {
     390        echo $export;
     391    }
     392
     393    return 0;
    396394}
    397395exit(main());
  • libcaca/trunk/caca-php/examples/import.php

    r3267 r4333  
    66 *
    77 *  This file is a Php port of "examples/import.c"
    8  *  which is: 
     8 *  which is:
    99 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
    1010 *                All Rights Reserved
    11  *
    12  *  $Id$
    1311 *
    1412 *  This program is free software. It comes without any warranty, to
     
    2018
    2119if (php_sapi_name() != "cli") {
    22         die("You have to run this program with php-cli!\n");
     20    die("You have to run this program with php-cli!\n");
    2321}
    2422
     
    2725if($argc < 2 || $argc > 3)
    2826{
    29         $msg = ($argv[0] . ": wrong argument count\n" .
    30                         "usage: " . $argv[0] . " file [<format>]\n" .
    31                         "where <format> is one of:\n");
    32         foreach($imports as $format => $name)
    33                 $msg .= " \"" . $name . "\" (" . $format . ")\n";
    34         die($msg);
     27    $msg = ($argv[0] . ": wrong argument count\n" .
     28            "usage: " . $argv[0] . " file [<format>]\n" .
     29            "where <format> is one of:\n");
     30    foreach($imports as $format => $name)
     31        $msg .= " \"" . $name . "\" (" . $format . ")\n";
     32    die($msg);
    3533}
    3634
     
    3836if(! $cv)
    3937{
    40         die("Can't create canvas\n");
     38    die("Can't create canvas\n");
    4139}
    4240
    4341if(caca_import_file($cv, $argv[1], $argc >= 3 ? $argv[2] : "") < 0)
    4442{
    45         die($argv[0] . ": could not open `" . $argv[1] . "'.\n");
     43    die($argv[0] . ": could not open `" . $argv[1] . "'.\n");
    4644}
    4745
     
    4947if(! $dp)
    5048{
    51         die("Can't create display\n");
     49    die("Can't create display\n");
    5250}
    5351
  • libcaca/trunk/caca-php/examples/polyline.php

    r3177 r4333  
    1313
    1414function transform($tbl, $tx, $ty, $sx, $sy) {
    15         $result = array();
    16         foreach($tbl as $pt)
    17                 $result[] = array($pt[0] * $sx + $tx, $pt[1] * $sy + $ty);
    18         return $result;
     15    $result = array();
     16    foreach($tbl as $pt)
     17        $result[] = array($pt[0] * $sx + $tx, $pt[1] * $sy + $ty);
     18    return $result;
    1919}
    2020
    2121if (php_sapi_name() != "cli") {
    22         die("You have to run this program with php-cli!\n");
     22    die("You have to run this program with php-cli!\n");
    2323}
    2424
     
    2626$display = caca_create_display($canvas);
    2727if (!$display) {
    28         die("Error while attaching canvas to display\n");
     28    die("Error while attaching canvas to display\n");
    2929}
    3030
    3131$tbl = array(
    32         array(5, 2),
    33         array(15, 2),
    34         array(20, 4),
    35         array(25, 2),
    36         array(34, 2),
    37         array(37, 4),
    38         array(36, 9),
    39         array(20, 16),
    40         array(3, 9),
    41         array(2, 4),
    42         array(5, 2)
     32    array(5, 2),
     33    array(15, 2),
     34    array(20, 4),
     35    array(25, 2),
     36    array(34, 2),
     37    array(37, 4),
     38    array(36, 9),
     39    array(20, 16),
     40    array(3, 9),
     41    array(2, 4),
     42    array(5, 2)
    4343);
    4444
    4545for ($i = 0; $i < 10; $i++) {
    46         caca_set_color_ansi($canvas, 1 + (($color += 4) % 15), CACA_TRANSPARENT);
    47         $scale = caca_rand(4, 10) / 10;
    48         $translate = array(caca_rand(-5, 55), caca_rand(-2, 25));
    49         $pts = transform($tbl, $translate[0], $translate[1], $scale, $scale);
    50         caca_draw_thin_polyline($canvas, $pts);
     46    caca_set_color_ansi($canvas, 1 + (($color += 4) % 15), CACA_TRANSPARENT);
     47    $scale = caca_rand(4, 10) / 10;
     48    $translate = array(caca_rand(-5, 55), caca_rand(-2, 25));
     49    $pts = transform($tbl, $translate[0], $translate[1], $scale, $scale);
     50    caca_draw_thin_polyline($canvas, $pts);
    5151}
    5252
  • libcaca/trunk/caca-php/examples/render.php

    r3268 r4333  
    33
    44if (php_sapi_name() != "cli") {
    5         die("You have to run this program with php-cli!\n");
     5    die("You have to run this program with php-cli!\n");
    66}
    77
    88$pig_str = <<<EOT
    9                                    
    10     _._ _..._ .-',     _.._(`))   
    11    '-. `     '  /-._.-'    ',/     
    12       )         \            '.   
    13      / _    _    |             \   
    14     |  a    a    /   PHP        | 
    15     \   .-.                     ; 
    16      '-('' ).-'       ,'       ;   
    17         '-;           |      .'   
    18            \           \    /   
    19            | 7  .__  _.-\   \   
    20            | |  |  ``/  /`  /     
    21       jgs /,_|  |   /,_/   /       
    22              /,_/      '`-'       
     9
     10    _._ _..._ .-',     _.._(`))
     11   '-. `     '  /-._.-'    ',/
     12      )         \            '.
     13     / _    _    |             \
     14    |  a    a    /   PHP        |
     15    \   .-.                     ;
     16     '-('' ).-'       ,'       ;
     17        '-;           |      .'
     18           \           \    /
     19           | 7  .__  _.-\   \
     20           | |  |  ``/  /`  /
     21      jgs /,_|  |   /,_/   /
     22             /,_/      '`-'
    2323EOT;
    2424
  • libcaca/trunk/caca-php/examples/test.php

    r4148 r4333  
    1111   *                All Rights Reserved
    1212   *
    13    *  $Id$
    14    *
    1513   *  This program is free software. It comes without any warranty, to
    1614   *  the extent permitted by applicable law. You can redistribute it
     
    2119
    2220if (php_sapi_name() != "cli") {
    23         die("You have to run this program with php-cli!\n");
     21    die("You have to run this program with php-cli!\n");
    2422}
    2523
     
    2826class DemoCanvas extends Canvas
    2927{
    30         private $image;
     28    private $image;
    3129
    32         private $startTime;
    33         private $d;
    34         private $scroll;
     30    private $startTime;
     31    private $d;
     32    private $scroll;
    3533
    36         function __construct()
    37         {
    38                 parent::__construct();
    39                 $this->startTime = gettimeofday(true);
     34    function __construct()
     35    {
     36        parent::__construct();
     37        $this->startTime = gettimeofday(true);
    4038
    41                 $message = " --- POWERED BY LIBCACA --- OLDSCHOOL TEXT EFFECTS ARE 100% PURE WIN";
     39        $message = " --- POWERED BY LIBCACA --- OLDSCHOOL TEXT EFFECTS ARE 100% PURE WIN";
    4240
    43                 $this->scroll = new Canvas(strlen($message), 1);
    44                 $this->scroll->setColorAnsi(AnsiColor::WHITE, AnsiColor::TRANSPARENT);
    45                 $this->scroll->putStr(0, 0, $message);
     41        $this->scroll = new Canvas(strlen($message), 1);
     42        $this->scroll->setColorAnsi(AnsiColor::WHITE, AnsiColor::TRANSPARENT);
     43        $this->scroll->putStr(0, 0, $message);
    4644
    47                 $fontList = Font::getList();
    48                 $f = new Font($fontList[1]);
    49                 $w = $f->getWidth() * strlen($message);
    50                 $h = $f->getHeight();
    51                 $this->image = imagecreatetruecolor($w, $h);
    52                 imagealphablending($this->image, false);
    53                 imagesavealpha($this->image, true);
    54                 $this->d = new Dither($this->image);
    55                 $f->Render($this->scroll, $this->image);
    56         }
     45        $fontList = Font::getList();
     46        $f = new Font($fontList[1]);
     47        $w = $f->getWidth() * strlen($message);
     48        $h = $f->getHeight();
     49        $this->image = imagecreatetruecolor($w, $h);
     50        imagealphablending($this->image, false);
     51        imagesavealpha($this->image, true);
     52        $this->d = new Dither($this->image);
     53        $f->Render($this->scroll, $this->image);
     54    }
    5755
    58         function Draw()
    59         {
    60                 $barCount = 6;
    61                 $t = (gettimeofday(true) - $this->startTime) * 1000;
     56    function Draw()
     57    {
     58        $barCount = 6;
     59        $t = (gettimeofday(true) - $this->startTime) * 1000;
    6260
    63                 $this->Clear();
     61        $this->Clear();
    6462
    65                 $this->setColorAnsi(AnsiColor::WHITE, AnsiColor::BLACK);
    66                 for($i = 0; $i < $barCount; $i++)
    67                 {
    68                         $v = ((sin(($t / 500.0)
    69                                            + (1.0 * $i / $barCount)) + 1) / 2) * $this->getHeight();
    70                         $p1_x = 0; $p1_y = intval($v);
    71                         $p2_x = $this->getWidth() - 1; $p2_y = intval($v);
     63        $this->setColorAnsi(AnsiColor::WHITE, AnsiColor::BLACK);
     64        for($i = 0; $i < $barCount; $i++)
     65        {
     66            $v = ((sin(($t / 500.0)
     67                       + (1.0 * $i / $barCount)) + 1) / 2) * $this->getHeight();
     68            $p1_x = 0; $p1_y = intval($v);
     69            $p2_x = $this->getWidth() - 1; $p2_y = intval($v);
    7270
    73                         $this->setColorAnsi(($i + 9), AnsiColor::BLACK);
    74                         /* drawLine is already clipped, we don't care about overflows */
    75                         $this->drawLine($p1_x + 0, $p1_y - 2, $p2_x + 0, $p2_y - 2, ord('-'));
    76                         $this->drawLine($p1_x + 0, $p1_y - 1, $p2_x + 0, $p2_y - 1, ord('*'));
    77                         $this->drawLine($p1_x,     $p1_y,     $p2_x,     $p2_y,     ord('#'));
    78                         $this->drawLine($p1_x + 0, $p1_y + 1, $p2_x + 0, $p2_y + 1, ord('*'));
    79                         $this->drawLine($p1_x + 0, $p1_y + 2, $p2_x + 0, $p2_y + 2, ord('-'));
    80                 }
     71            $this->setColorAnsi(($i + 9), AnsiColor::BLACK);
     72            /* drawLine is already clipped, we don't care about overflows */
     73            $this->drawLine($p1_x + 0, $p1_y - 2, $p2_x + 0, $p2_y - 2, ord('-'));
     74            $this->drawLine($p1_x + 0, $p1_y - 1, $p2_x + 0, $p2_y - 1, ord('*'));
     75            $this->drawLine($p1_x,     $p1_y,     $p2_x,     $p2_y,     ord('#'));
     76            $this->drawLine($p1_x + 0, $p1_y + 1, $p2_x + 0, $p2_y + 1, ord('*'));
     77            $this->drawLine($p1_x + 0, $p1_y + 2, $p2_x + 0, $p2_y + 2, ord('-'));
     78        }
    8179
    82                 $w = $this->getWidth();
    83                 $h = $this->getHeight();
    84                 $x = intval(($t / 10) % (12 * $w));
    85                 $y = intval($h * (2.0 + sin($t / 200.0)) / 4);
    86                 $this->d->bitmap($this, - $x, $h / 2 - $y, $w * 12, $y * 2);
    87                 $this->d->bitmap($this, 12 * $w - $x, $h / 2 - $y, $w * 12, $y * 2);
     80        $w = $this->getWidth();
     81        $h = $this->getHeight();
     82        $x = intval(($t / 10) % (12 * $w));
     83        $y = intval($h * (2.0 + sin($t / 200.0)) / 4);
     84        $this->d->bitmap($this, - $x, $h / 2 - $y, $w * 12, $y * 2);
     85        $this->d->bitmap($this, 12 * $w - $x, $h / 2 - $y, $w * 12, $y * 2);
    8886
    89                 $this->setColorAnsi(AnsiColor::WHITE, AnsiColor::BLUE);
    90                 $this->putStr($this->getWidth() - 30, $this->getHeight() - 2, " -=[ Powered by libcaca ]=- ");
    91                 $this->setColorAnsi(AnsiColor::WHITE, AnsiColor::BLACK);
    92         }
     87        $this->setColorAnsi(AnsiColor::WHITE, AnsiColor::BLUE);
     88        $this->putStr($this->getWidth() - 30, $this->getHeight() - 2, " -=[ Powered by libcaca ]=- ");
     89        $this->setColorAnsi(AnsiColor::WHITE, AnsiColor::BLACK);
     90    }
    9391}
    9492
    9593class DemoDisplay extends Display
    9694{
    97         private $cv;
     95    private $cv;
    9896
    99         function __construct(DemoCanvas $_cv)
    100         {
    101                 parent::__construct($_cv);
    102                 $this->setTitle("libcaca PHP Bindings test suite");
    103                 $this->setDisplayTime(20000); // Refresh every 20 ms
    104                 $this->cv = $_cv;
    105         }
     97    function __construct(DemoCanvas $_cv)
     98    {
     99        parent::__construct($_cv);
     100        $this->setTitle("libcaca PHP Bindings test suite");
     101        $this->setDisplayTime(20000); // Refresh every 20 ms
     102        $this->cv = $_cv;
     103    }
    106104
    107         function EventLoop()
    108         {
    109                 while(! ($ev = $this->getEvent(EventType::KEY_RELEASE, 10)))
    110                 {
    111                         $this->cv->Draw();
     105    function EventLoop()
     106    {
     107        while(! ($ev = $this->getEvent(EventType::KEY_RELEASE, 10)))
     108        {
     109            $this->cv->Draw();
    112110
    113                         $this->Refresh();
    114                 }
     111            $this->Refresh();
     112        }
    115113
    116                 if($ev->getKeyCh() > 0x20 && $ev->getKeyCh() < 0x7f)
    117                         printf("Key pressed: %c\n", $ev->getKeyCh());
    118                 else
    119                         printf("Key pressed: 0x%x\n", $ev->getKeyCh());
    120         }
     114        if($ev->getKeyCh() > 0x20 && $ev->getKeyCh() < 0x7f)
     115            printf("Key pressed: %c\n", $ev->getKeyCh());
     116        else
     117            printf("Key pressed: 0x%x\n", $ev->getKeyCh());
     118    }
    121119}
    122120
    123121class Test
    124122{
    125         static function Main()
    126         {
    127                 printf("libcaca %s PHP test\n", Libcaca::getVersion());
    128                 printf("(c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>\n");
    129                 printf("(c) 2007 Sam Hocevar <sam@hocevar.net>\n");
    130                 printf("(c) 2008 Benjamin C. Wiley Sittler <bsittler@gmail.com>\n");
     123    static function Main()
     124    {
     125        printf("libcaca %s PHP test\n", Libcaca::getVersion());
     126        printf("(c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>\n");
     127        printf("(c) 2007 Sam Hocevar <sam@hocevar.net>\n");
     128        printf("(c) 2008 Benjamin C. Wiley Sittler <bsittler@gmail.com>\n");
    131129
    132                 /* Instanciate a caca canvas */
    133                 $cv = new DemoCanvas();
     130        /* Instanciate a caca canvas */
     131        $cv = new DemoCanvas();
    134132
    135                 /* We have a proper canvas, let's display it using Caca */
    136                 $dp = new DemoDisplay($cv);
     133        /* We have a proper canvas, let's display it using Caca */
     134        $dp = new DemoDisplay($cv);
    137135
    138                 /* Random number. This is a static method,
    139                 not to be used with previous instance */
    140                 printf("A random number: %d\n", Libcaca::Rand(0, 1337));
     136        /* Random number. This is a static method,
     137        not to be used with previous instance */
     138        printf("A random number: %d\n", Libcaca::Rand(0, 1337));
    141139
    142                 $dp->EventLoop();
    143         }
     140        $dp->EventLoop();
     141    }
    144142}
    145143
  • libcaca/trunk/caca-php/examples/text.php

    r4148 r4333  
    55 *  Copyright (c) 2008 Nicolas Vion <nico@yojik.eu>
    66 *
    7  *  This file is a Php port of the official libcaca's sample program "demo.c" 
    8  *  which is: 
     7 *  This file is a Php port of the official libcaca's sample program "demo.c"
     8 *  which is:
    99 *  Copyright (c) 2003 Sam Hocevar <sam@hocevar.net>
    1010 *
     
    1717
    1818if (php_sapi_name() != "cli") {
    19         die("You have to run this program with php-cli!\n");
     19    die("You have to run this program with php-cli!\n");
    2020}
    2121
    2222$string =  <<<EOT
    23               |_| 
    24    _,----._   | | 
    25   (/ @  @ \)   __ 
    26    |  OO  |   |_ 
    27    \ `--' /   |__ 
    28     `----'       
    29               |_| 
    30  Hello world!  | 
     23              |_|
     24   _,----._   | |
     25  (/ @  @ \)   __
     26   |  OO  |   |_
     27   \ `--' /   |__
     28    `----'
     29              |_|
     30 Hello world!  |
    3131EOT;
    32        
     32
    3333$pig = caca_create_canvas(0, 0);
    3434caca_import_string($pig, $string, "text");
     
    3737
    3838if (!$cv or !$pig) {
    39         die("Can't created canvas\n");
     39    die("Can't created canvas\n");
    4040}
    4141
     
    5151
    5252for($j = 0; $j < caca_get_canvas_height($cv); $j++) {
    53         for($i = 0; $i < caca_get_canvas_width($cv); $i += 2) {
    54                 caca_set_color_ansi($cv, CACA_LIGHTBLUE + ($i + $j) % 6, CACA_DEFAULT);
    55                 $a = caca_get_attr($cv, -1, -1);
    56                 caca_put_attr($cv, $i, $j, $a);
    57                 caca_put_attr($cv, $i + 1, $j, $a);
    58         }
     53    for($i = 0; $i < caca_get_canvas_width($cv); $i += 2) {
     54        caca_set_color_ansi($cv, CACA_LIGHTBLUE + ($i + $j) % 6, CACA_DEFAULT);
     55        $a = caca_get_attr($cv, -1, -1);
     56        caca_put_attr($cv, $i, $j, $a);
     57        caca_put_attr($cv, $i + 1, $j, $a);
     58    }
    5959}
    6060
  • libcaca/trunk/caca-php/examples/transform.php

    r4148 r4333  
    66 *
    77 *  This file is a Php port of "examples/transform.c"
    8  *  which is: 
     8 *  which is:
    99 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    1010 *                All Rights Reserved
    11  *
    12  *  $Id$
    1311 *
    1412 *  This program is free software. It comes without any warranty, to
     
    2018
    2119if (php_sapi_name() != "cli") {
    22         die("You have to run this program with php-cli!\n");
     20    die("You have to run this program with php-cli!\n");
    2321}
    2422
    2523$pig = (
    26         ",--.   ,--.\n" .
    27         "\\  /-~-\\  /\n" .
    28         " )' o O `(\n" .
    29         "(  ,---.  )\n" .
    30         " `(_o_o_)'\n" .
    31         "   )`-'(\n");
     24    ",--.   ,--.\n" .
     25    "\\  /-~-\\  /\n" .
     26    " )' o O `(\n" .
     27    "(  ,---.  )\n" .
     28    " `(_o_o_)'\n" .
     29    "   )`-'(\n");
    3230
    3331$duck = (
    34         "                ,~~.\n" .
    35         "    __     ,   (  O )>\n" .
    36         "___( o)>   )`~~'   (\n" .
    37         "\\ <_. )   (  .__)   )\n" .
    38         " `---'     `-.____,'\n");
     32    "                ,~~.\n" .
     33    "    __     ,   (  O )>\n" .
     34    "___( o)>   )`~~'   (\n" .
     35    "\\ <_. )   (  .__)   )\n" .
     36    " `---'     `-.____,'\n");
    3937
    4038$cv = caca_create_canvas(0, 0);
    4139if(! $cv)
    4240{
    43         die("Can't created canvas\n");
     41    die("Can't created canvas\n");
    4442}
    4543$dp = caca_create_display($cv);
    4644if(! $dp)
    4745{
    48         die("Can't create display\n");
     46    die("Can't create display\n");
    4947}
    5048
  • libcaca/trunk/caca-php/examples/truecolor.php

    r4148 r4333  
    22<?php
    33/*
    4  *  truecolor     truecolor canvas features
     4 *  truecolor      truecolor canvas features
    55 *  Copyright (c) 2008 Benjamin C. Wiley Sittler <bsittler@gmail.com>
    66 *
    77 *  This file is a Php port of "examples/truecolor.c"
    8  *  which is: 
     8 *  which is:
    99 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    10  *                All Rights Reserved
    11  *
    12  *  $Id$
     10 *          All Rights Reserved
    1311 *
    1412 *  This program is free software. It comes without any warranty, to
     
    2018
    2119if (php_sapi_name() != "cli") {
    22         die("You have to run this program with php-cli!\n");
     20    die("You have to run this program with php-cli!\n");
    2321}
    2422
    2523$cv = caca_create_canvas(32, 16);
    2624if(!$cv) {
    27         die("Failed to create canvas\n");
     25    die("Failed to create canvas\n");
    2826}
    2927
    3028$dp = caca_create_display($cv);
    3129if(!$dp) {
    32         die("Failed to create display\n");
     30    die("Failed to create display\n");
    3331}
    3432
    3533for($y = 0; $y < 16; $y++)
    36         for($x = 0; $x < 16; $x++)
    37         {
    38                 $bgcolor = 0xff00 | ($y << 4) | $x;
    39                 $fgcolor = 0xf000 | ((15 - $y) << 4) | ((15 - $x) << 8);
    40                
    41                 caca_set_color_argb($cv, $fgcolor, $bgcolor);
    42                 caca_put_str($cv, $x * 2, $y, "CA");
    43         }
     34    for($x = 0; $x < 16; $x++)
     35    {
     36        $bgcolor = 0xff00 | ($y << 4) | $x;
     37        $fgcolor = 0xf000 | ((15 - $y) << 4) | ((15 - $x) << 8);
     38
     39        caca_set_color_argb($cv, $fgcolor, $bgcolor);
     40        caca_put_str($cv, $x * 2, $y, "CA");
     41    }
    4442
    4543caca_set_color_ansi($cv, CACA_WHITE, CACA_LIGHTBLUE);
  • libcaca/trunk/caca-php/examples/unicode.php

    r4148 r4333  
    66 *
    77 *  This file is a Php port of "examples/unicode.c"
    8  *  which is: 
     8 *  which is:
    99 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    1010 *                All Rights Reserved
    11  *
    12  *  $Id$
    1311 *
    1412 *  This program is free software. It comes without any warranty, to
     
    2018
    2119if (php_sapi_name() != "cli") {
    22         die("You have to run this program with php-cli!\n");
     20    die("You have to run this program with php-cli!\n");
    2321}
    2422
     
    2624if(! $cv)
    2725{
    28         die("Can't created canvas\n");
     26    die("Can't created canvas\n");
    2927}
    3028$dp = caca_create_display($cv);
    3129if(! $dp)
    3230{
    33         die("Can't create display\n");
     31    die("Can't create display\n");
    3432}
    3533caca_set_color_ansi($cv, CACA_WHITE, CACA_BLUE);
  • libcaca/trunk/caca-php/examples/www/cacainfo.php

    r3233 r4333  
    3232         (__)
    3333         (oo)
    34    /------\/ 
    35   / |    || 
    36  *  /\---/\ 
    37     ~~   ~~ 
     34   /------\/
     35  / |    ||
     36 *  /\---/\
     37    ~~   ~~
    3838EOT;
    3939
    40         $cv = caca_create_canvas(0, 0);
    41         caca_set_color_ansi($cv, CACA_LIGHTBLUE, CACA_DEFAULT);
    42         caca_import_string($cv, $moo, "text");
     40    $cv = caca_create_canvas(0, 0);
     41    caca_set_color_ansi($cv, CACA_LIGHTBLUE, CACA_DEFAULT);
     42    caca_import_string($cv, $moo, "text");
    4343
    44         for($j = 0; $j < caca_get_canvas_height($cv); $j++) {
    45                 for($i = 0; $i < caca_get_canvas_width($cv); $i += 2) {
    46                         caca_set_color_ansi($cv, (caca_rand(1, 10) > 5 ? CACA_LIGHTBLUE  : CACA_WHITE), CACA_DEFAULT);
    47                         $a = caca_get_attr($cv, -1, -1);
    48                         caca_put_attr($cv, $i, $j, $a);
    49                         caca_put_attr($cv, $i + 1, $j, $a);
    50                 }
    51         }
    52         caca_set_canvas_size($cv, 18, 6);
    53         caca_set_color_ansi($cv, CACA_LIGHTGREEN, CACA_DEFAULT);
    54         caca_put_str($cv, 14, 0, "Moo!");
    55         caca_set_color_ansi($cv, CACA_LIGHTRED, CACA_DEFAULT);
    56         caca_put_char($cv, 14, 1, hexdec("2765")); //U+2765
    57         caca_put_char($cv, 16, 1, hexdec("2764")); //U+2764
    58         echo caca_export_string($cv, "html3");
     44    for($j = 0; $j < caca_get_canvas_height($cv); $j++) {
     45        for($i = 0; $i < caca_get_canvas_width($cv); $i += 2) {
     46            caca_set_color_ansi($cv, (caca_rand(1, 10) > 5 ? CACA_LIGHTBLUE  : CACA_WHITE), CACA_DEFAULT);
     47            $a = caca_get_attr($cv, -1, -1);
     48            caca_put_attr($cv, $i, $j, $a);
     49            caca_put_attr($cv, $i + 1, $j, $a);
     50        }
     51    }
     52    caca_set_canvas_size($cv, 18, 6);
     53    caca_set_color_ansi($cv, CACA_LIGHTGREEN, CACA_DEFAULT);
     54    caca_put_str($cv, 14, 0, "Moo!");
     55    caca_set_color_ansi($cv, CACA_LIGHTRED, CACA_DEFAULT);
     56    caca_put_char($cv, 14, 1, hexdec("2765")); //U+2765
     57    caca_put_char($cv, 16, 1, hexdec("2764")); //U+2764
     58    echo caca_export_string($cv, "html3");
    5959}
    60        
     60
    6161
    6262just_for_fun();
     
    7575$list = caca_get_display_driver_list();
    7676foreach($list as $type => $name)
    77         echo '<li>' . htmlspecialchars("$name ($type)") . '</li>';
     77    echo '<li>' . htmlspecialchars("$name ($type)") . '</li>';
    7878?>
    7979</ul>
     
    8484$list = caca_get_import_list();
    8585foreach($list as $format => $name)
    86         echo '<li>' . htmlspecialchars("$name ($format)") . '</li>';
     86    echo '<li>' . htmlspecialchars("$name ($format)") . '</li>';
    8787?>
    8888</ul>
     
    9393$list = caca_get_export_list();
    9494foreach($list as $format => $name)
    95         echo '<li>' . htmlspecialchars("$name ($format)") . '</li>';
     95    echo '<li>' . htmlspecialchars("$name ($format)") . '</li>';
    9696?>
    9797</ul>
     
    102102$list = caca_get_font_list();
    103103foreach($list as $name)
    104         echo '<li>' . htmlspecialchars("$name") . '</li>';
     104    echo '<li>' . htmlspecialchars("$name") . '</li>';
    105105?>
    106106</ul>
  • libcaca/trunk/caca-php/examples/www/colors.php

    r4148 r4333  
    1414   *  Copyright (c) 2003-2004 Sam Hocevar <sam@hocevar.net>
    1515   *                All Rights Reserved
    16    *
    17    *  $Id$
    1816   *
    1917   *  This program is free software. It comes without any warranty, to
     
    3432if(!$cv)
    3533{
    36         die("Failed to create canvas\n");
     34    die("Failed to create canvas\n");
    3735}
    3836
     
    4139for($i = 0; $i < 16; $i++)
    4240{
    43         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    44         caca_put_str($cv, 3, $i + ($i >= 8 ? 3 : 2), "ANSI " . $i);
    45         for($j = 0; $j < 16; $j++)
    46         {
    47                 caca_set_color_ansi($cv, $i, $j);
    48                 caca_put_str($cv, ($j >= 8 ? 13 : 12) + $j * 4, $i + ($i >= 8 ? 3 : 2),
    49                                         "Aaホ");
    50         }
     41    caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     42    caca_put_str($cv, 3, $i + ($i >= 8 ? 3 : 2), "ANSI " . $i);
     43    for($j = 0; $j < 16; $j++)
     44    {
     45        caca_set_color_ansi($cv, $i, $j);
     46        caca_put_str($cv, ($j >= 8 ? 13 : 12) + $j * 4, $i + ($i >= 8 ? 3 : 2),
     47                    "Aaホ");
     48    }
    5149}
    5250
  • libcaca/trunk/caca-php/examples/www/dithering.php

    r3222 r4333  
    2626$img = imagecreatefrompng(dirname(__FILE__)."/".$src);
    2727if (!$img)  {
    28         die("Can not open image.\n");
     28    die("Can not open image.\n");
    2929}
    3030
    3131$dither = caca_create_dither($img);
    3232if (!$dither)  {
    33         die("Can not create dither. Maybe you compiled caca-php without gd support.\n");
     33    die("Can not create dither. Maybe you compiled caca-php without gd support.\n");
    3434}
    3535
  • libcaca/trunk/caca-php/examples/www/export.php

    r4148 r4333  
    55 *
    66 *  This file is a Php port of "examples/export.c"
    7  *  which is: 
     7 *  which is:
    88 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    99 *                All Rights Reserved
    10  *
    11  *  $Id$
    1210 *
    1311 *  This program is free software. It comes without any warranty, to
     
    3129if((! $format) || (! array_key_exists($format, $exports)))
    3230{
    33         header("Content-type: text/html; charset=UTF-8");
     31    header("Content-type: text/html; charset=UTF-8");
    3432
    3533?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     
    4442update_preview = function (select)
    4543{
    46         var iframe_map = {
    47                 'html': true,
    48                 'html3': true,
    49                 'bbfr': true
    50         };
    51         if (self.opera
    52                 ||
    53                 (('' + navigator.userAgent).match(/.*(WebKit|Gecko).*/)))
    54         {
    55                 iframe_map['svg'] = true;
    56         }
    57         var e;
    58         try
    59         {
    60                 var format = select.options[select.selectedIndex].value;
    61                 var newLocation = 'about:blank';
    62                 if (iframe_map[format])
    63                 {
    64                         newLocation = self.location.pathname + '?format=' + encodeURIComponent(format);
    65                 }
    66                 self.frames[0].location.replace(newLocation, true);
    67         }
    68         catch (e)
    69         {
    70                 alert('e' + e);
    71         }
    72         return true;
     44    var iframe_map = {
     45        'html': true,
     46        'html3': true,
     47        'bbfr': true
     48    };
     49    if (self.opera
     50        ||
     51        (('' + navigator.userAgent).match(/.*(WebKit|Gecko).*/)))
     52    {
     53        iframe_map['svg'] = true;
     54    }
     55    var e;
     56    try
     57    {
     58        var format = select.options[select.selectedIndex].value;
     59        var newLocation = 'about:blank';
     60        if (iframe_map[format])
     61        {
     62            newLocation = self.location.pathname + '?format=' + encodeURIComponent(format);
     63        }
     64        self.frames[0].location.replace(newLocation, true);
     65    }
     66    catch (e)
     67    {
     68        alert('e' + e);
     69    }
     70    return true;
    7371};
    7472/*]]>*/
     
    8583<select name="format" id="format" onchange="update_preview(this);">
    8684<?php
    87         foreach($exports as $format => $name)
    88         {
    89                 ?><option value="<?= htmlspecialchars($format) ?>"<?=
    90                         ($format == 'html') ? ' selected="selected"' : '' ?>><?=
    91                         htmlspecialchars($name . " (" . $format . ")") ?></option><?php
    92         }
     85    foreach($exports as $format => $name)
     86    {
     87        ?><option value="<?= htmlspecialchars($format) ?>"<?=
     88            ($format == 'html') ? ' selected="selected"' : '' ?>><?=
     89            htmlspecialchars($name . " (" . $format . ")") ?></option><?php
     90    }
    9391?>
    9492</select>
     
    9694<?php
    9795$export_php = isset($_SERVER['SCRIPT_NAME'])
    98                 ?
    99                 $_SERVER['SCRIPT_NAME']
    100                 :
    101                 'export.php';
     96        ?
     97        $_SERVER['SCRIPT_NAME']
     98        :
     99        'export.php';
    102100?><iframe frameborder="0" name="preview" id="preview" width="820" height="620" style="margin: 0; padding: 0; border: none; width: 100%"></iframe>
    103101</body>
    104102</html>
    105103<?php
    106         exit(0);
     104    exit(0);
    107105}
    108106
    109107if($file)
    110108{
    111         $cv = caca_create_canvas(0, 0);
    112         if(caca_import_file($cv, $file, "") < 0)
    113         {
    114                 die("`" . htmlspecialchars($filename) . "' has unknown format\n");
    115         }
     109    $cv = caca_create_canvas(0, 0);
     110    if(caca_import_file($cv, $file, "") < 0)
     111    {
     112        die("`" . htmlspecialchars($filename) . "' has unknown format\n");
     113    }
    116114}
    117115else
    118116{
    119         $cv = caca_create_canvas(WIDTH, HEIGHT);
    120 
    121         for($y = 0; $y < 256; $y++)
    122         {
    123                 for($x = 0; $x < 256; $x++)
    124                 {
    125                         $r = $x;
    126                         $g = (255 - $y + $x) / 2;
    127                         $b = $y * (255 - $x) / 256;
    128                         imagesetpixel($pixels, $x, $y, imagecolorallocate($pixels, $r, $g, $b));
    129                 }
    130         }
    131 
    132         $dither = caca_create_dither($pixels);
    133         if(($format == "ansi") || ($format == "utf8"))
    134                 caca_set_dither_charset($dither, "shades");
    135         caca_dither_bitmap($cv, 0, 0, caca_get_canvas_width($cv),
    136                                         caca_get_canvas_height($cv), $dither, $pixels);
    137 
    138         caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
    139         caca_draw_thin_box($cv, 0, 0, WIDTH - 1, HEIGHT - 1);
    140 
    141         caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
    142         caca_fill_ellipse($cv, WIDTH / 2, HEIGHT / 2,
    143                                         WIDTH / 4, HEIGHT / 4, ord(' '));
    144 
    145         caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
    146         caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 6,
    147                                 "   lightgray on black   ");
    148         caca_set_color_ansi($cv, CACA_DEFAULT, CACA_TRANSPARENT);
    149         caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 5,
    150                                 " default on transparent ");
    151         caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
    152         caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 4,
    153                                 "     black on white     ");
    154 
    155         caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
    156         caca_put_str($cv, WIDTH / 2 - 8, HEIGHT / 2 - 3, "[<><><><> <>--<>]");
    157         caca_put_str($cv, WIDTH / 2 - 8, HEIGHT / 2 - 2, "[ドラゴン ボーレ]");
    158         caca_put_str($cv, WIDTH / 2 - 7, HEIGHT / 2 + 2, "äβç ░▒▓█▓▒░ ΔЗҒ");
    159         caca_put_str($cv, WIDTH / 2 - 5, HEIGHT / 2 + 4, "(\") \\o/ <&>");
    160 
    161         caca_set_attr($cv, CACA_BOLD);
    162         caca_put_str($cv, WIDTH / 2 - 16, HEIGHT / 2 + 3, "Bold");
    163         caca_set_attr($cv, CACA_BLINK);
    164         caca_put_str($cv, WIDTH / 2 - 9, HEIGHT / 2 + 3, "Blink");
    165         caca_set_attr($cv, CACA_ITALICS);
    166         caca_put_str($cv, WIDTH / 2 - 1, HEIGHT / 2 + 3, "Italics");
    167         caca_set_attr($cv, CACA_UNDERLINE);
    168         caca_put_str($cv, WIDTH / 2 + 8, HEIGHT / 2 + 3, "Underline");
    169         caca_set_attr($cv, 0);
    170 
    171         caca_set_color_ansi($cv, CACA_WHITE, CACA_LIGHTBLUE);
    172         caca_put_str($cv, WIDTH / 2 - 7, HEIGHT / 2, "    LIBCACA    ");
    173 
    174         for($x = 0; $x < 16; $x++)
    175         {
    176                 caca_set_color_argb($cv, 0xff00 | $x, 0xf00f | ($x << 4));
    177                 caca_put_char($cv, WIDTH / 2 - 7 + $x, HEIGHT / 2 + 6, ord('#'));
    178         }
     117    $cv = caca_create_canvas(WIDTH, HEIGHT);
     118
     119    for($y = 0; $y < 256; $y++)
     120    {
     121        for($x = 0; $x < 256; $x++)
     122        {
     123            $r = $x;
     124            $g = (255 - $y + $x) / 2;
     125            $b = $y * (255 - $x) / 256;
     126            imagesetpixel($pixels, $x, $y, imagecolorallocate($pixels, $r, $g, $b));
     127        }
     128    }
     129
     130    $dither = caca_create_dither($pixels);
     131    if(($format == "ansi") || ($format == "utf8"))
     132        caca_set_dither_charset($dither, "shades");
     133    caca_dither_bitmap($cv, 0, 0, caca_get_canvas_width($cv),
     134                       caca_get_canvas_height($cv), $dither, $pixels);
     135
     136    caca_set_color_ansi($cv, CACA_WHITE, CACA_BLACK);
     137    caca_draw_thin_box($cv, 0, 0, WIDTH - 1, HEIGHT - 1);
     138
     139    caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
     140    caca_fill_ellipse($cv, WIDTH / 2, HEIGHT / 2,
     141                      WIDTH / 4, HEIGHT / 4, ord(' '));
     142
     143    caca_set_color_ansi($cv, CACA_LIGHTGRAY, CACA_BLACK);
     144    caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 6,
     145                 "   lightgray on black   ");
     146    caca_set_color_ansi($cv, CACA_DEFAULT, CACA_TRANSPARENT);
     147    caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 5,
     148                 " default on transparent ");
     149    caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
     150    caca_put_str($cv, WIDTH / 2 - 12, HEIGHT / 2 - 4,
     151                 "     black on white     ");
     152
     153    caca_set_color_ansi($cv, CACA_BLACK, CACA_WHITE);
     154    caca_put_str($cv, WIDTH / 2 - 8, HEIGHT / 2 - 3, "[<><><><> <>--<>]");
     155    caca_put_str($cv, WIDTH / 2 - 8, HEIGHT / 2 - 2, "[ドラゴン ボーレ]");
     156    caca_put_str($cv, WIDTH / 2 - 7, HEIGHT / 2 + 2, "äβç ░▒▓█▓▒░ ΔЗҒ");
     157    caca_put_str($cv, WIDTH / 2 - 5, HEIGHT / 2 + 4, "(\") \\o/ <&>");
     158
     159    caca_set_attr($cv, CACA_BOLD);
     160    caca_put_str($cv, WIDTH / 2 - 16, HEIGHT / 2 + 3, "Bold");
     161    caca_set_attr($cv, CACA_BLINK);
     162    caca_put_str($cv, WIDTH / 2 - 9, HEIGHT / 2 + 3, "Blink");
     163    caca_set_attr($cv, CACA_ITALICS);
     164    caca_put_str($cv, WIDTH / 2 - 1, HEIGHT / 2 + 3, "Italics");
     165    caca_set_attr($cv, CACA_UNDERLINE);
     166    caca_put_str($cv, WIDTH / 2 + 8, HEIGHT / 2 + 3, "Underline");
     167    caca_set_attr($cv, 0);
     168
     169    caca_set_color_ansi($cv, CACA_WHITE, CACA_LIGHTBLUE);
     170    caca_put_str($cv, WIDTH / 2 - 7, HEIGHT / 2, "    LIBCACA    ");
     171
     172    for($x = 0; $x < 16; $x++)
     173    {
     174        caca_set_color_argb($cv, 0xff00 | $x, 0xf00f | ($x << 4));
     175        caca_put_char($cv, WIDTH / 2 - 7 + $x, HEIGHT / 2 + 6, ord('#'));
     176    }
    179177}
    180178
    181179$content_type_map = array(
    182         'ansi' => 'text/plain; charset=CP437',
    183         'utf8' => 'text/plain; charset=UTF-8',
    184         'utf8cr' => 'text/plain; charset=UTF-8',
    185         'html' => 'text/html; charset=UTF-8',
    186         'html3' => 'text/html; charset=UTF-8',
    187         'bbfr' => 'text/plain; charset=UTF-8',
    188         'irc' => 'text/plain; charset=UTF-8',
    189         'ps' => 'application/postscript',
    190         'svg' => 'image/svg+xml',
    191         'tga' => 'image/x-targa'
    192         );
     180    'ansi' => 'text/plain; charset=CP437',
     181    'utf8' => 'text/plain; charset=UTF-8',
     182    'utf8cr' => 'text/plain; charset=UTF-8',
     183    'html' => 'text/html; charset=UTF-8',
     184    'html3' => 'text/html; charset=UTF-8',
     185    'bbfr' => 'text/plain; charset=UTF-8',
     186    'irc' => 'text/plain; charset=UTF-8',
     187    'ps' => 'application/postscript',
     188    'svg' => 'image/svg+xml',
     189    'tga' => 'image/x-targa'
     190    );
    193191
    194192$download_extension_map = array(
    195         'caca' => 'caca',
    196         'ansi' => 'txt',
    197         'utf8' => 'txt',
    198         'utf8cr' => 'txt',
    199         'irc' => 'txt',
    200         'tga' => 'tga'
    201         );
     193    'caca' => 'caca',
     194    'ansi' => 'txt',
     195    'utf8' => 'txt',
     196    'utf8cr' => 'txt',
     197    'irc' => 'txt',
     198    'tga' => 'tga'
     199    );
    202200
    203201$inline_extension_map = array(
    204         'bbfr' => 'txt',
    205         'ps' => 'ps',
    206         'svg' => 'svg'
    207         );
     202    'bbfr' => 'txt',
     203    'ps' => 'ps',
     204    'svg' => 'svg'
     205    );
    208206
    209207if (! array_key_exists($format, $content_type_map))
    210         $content_type = 'application/octet-stream';
     208    $content_type = 'application/octet-stream';
    211209else
    212         $content_type = $content_type_map[$format];
     210    $content_type = $content_type_map[$format];
    213211
    214212header('Content-Type: ' . $content_type);
    215213if (array_key_exists($format, $download_extension_map))
    216         header('Content-Disposition: attachment; filename=export.' . $download_extension_map[$format]);
     214    header('Content-Disposition: attachment; filename=export.' . $download_extension_map[$format]);
    217215else if (array_key_exists($format, $inline_extension_map))
    218         header('Content-Disposition: inline; filename=export.' . $inline_extension_map[$format]);
     216    header('Content-Disposition: inline; filename=export.' . $inline_extension_map[$format]);
    219217
    220218echo caca_export_string($cv, $format);
  • libcaca/trunk/caca-php/examples/www/figlet.php

    r3215 r4333  
    2323 */
    2424
    25 function unistr_to_ords($str, $encoding = 'UTF-8'){       
    26         $str = mb_convert_encoding($str, "UCS-4BE", $encoding);
    27         $result = array();
     25function unistr_to_ords($str, $encoding = 'UTF-8'){
     26    $str = mb_convert_encoding($str, "UCS-4BE", $encoding);
     27    $result = array();
    2828
    29         for ($i = 0; $i < mb_strlen($str, "UCS-4BE"); $i++){       
    30                 $c = mb_substr($str, $i, 1, "UCS-4BE");                   
    31                 $val = unpack("N", $c);           
    32                 $result[] = $val[1];               
    33         }       
    34         return $result;
     29    for ($i = 0; $i < mb_strlen($str, "UCS-4BE"); $i++){
     30        $c = mb_substr($str, $i, 1, "UCS-4BE");
     31        $val = unpack("N", $c);
     32        $result[] = $val[1];
     33    }
     34    return $result;
    3535}
    3636
    3737function show_figlet($str, $font) {
    38         $cv = caca_create_canvas(0, 0);
     38    $cv = caca_create_canvas(0, 0);
    3939
    40         if (!caca_canvas_set_figfont($cv, $font)) {
    41                 return false;
    42         }
    43        
    44         $chars = unistr_to_ords($str);
    45         $color = 0;
    46         foreach ($chars as $c) {
    47                 caca_set_color_ansi($cv, 1 + (($color += 1) % 13), CACA_WHITE);
    48                 caca_put_figchar($cv, $c);
    49         }
     40    if (!caca_canvas_set_figfont($cv, $font)) {
     41        return false;
     42    }
    5043
    51         echo caca_export_string($cv, "html3");
     44    $chars = unistr_to_ords($str);
     45    $color = 0;
     46    foreach ($chars as $c) {
     47        caca_set_color_ansi($cv, 1 + (($color += 1) % 13), CACA_WHITE);
     48        caca_put_figchar($cv, $c);
     49    }
     50
     51    echo caca_export_string($cv, "html3");
    5252}
    5353
    5454$path = "/usr/share/figlet/";
    5555if (!is_dir($path)) {
    56         die("can not open directory $path.\n");
     56    die("can not open directory $path.\n");
    5757}
    5858
    5959$dir = opendir($path);
    6060while (($it = readdir($dir)) != false) {
    61         if (is_file($path.$it) and ereg("\.[tf]lf$", $it)) {
    62                 echo "<b>font : $it</b>\n";
    63                 show_figlet(isset($_GET["str"]) ? $_GET["str"] : "Libcaca", $path.$it);
    64         }
     61    if (is_file($path.$it) and ereg("\.[tf]lf$", $it)) {
     62        echo "<b>font : $it</b>\n";
     63        show_figlet(isset($_GET["str"]) ? $_GET["str"] : "Libcaca", $path.$it);
     64    }
    6565}
    6666?>
  • libcaca/trunk/caca-php/examples/www/fullwidth.php

    r4148 r4333  
    1212 *
    1313 *  This file is a Php port of "examples/fullwidth.c"
    14  *  which is: 
     14 *  which is:
    1515 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    1616 *                All Rights Reserved
    17  *
    18  *  $Id$
    1917 *
    2018 *  This program is free software. It comes without any warranty, to
     
    3735if(! $cv)
    3836{
    39         die("Can't created canvas\n");
     37    die("Can't created canvas\n");
    4038}
    4139
     
    4644for($i = 0; $i < 10; $i++)
    4745{
    48         caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
    49         caca_put_str($caca, 0, $i, CACA);
    50         caca_set_color_ansi($caca, CACA_WHITE, CACA_RED);
    51         caca_put_char($caca, $i - 2, $i, ord('x'));
     46    caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
     47    caca_put_str($caca, 0, $i, CACA);
     48    caca_set_color_ansi($caca, CACA_WHITE, CACA_RED);
     49    caca_put_char($caca, $i - 2, $i, ord('x'));
    5250}
    5351
     
    5755for($i = 0; $i < 10; $i++)
    5856{
    59         caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
    60         caca_put_str($caca, 0, $i, CACA);
    61         caca_set_color_ansi($caca, CACA_WHITE, CACA_GREEN);
    62         caca_put_str($caca, $i - 2, $i, "ホ");
     57    caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
     58    caca_put_str($caca, 0, $i, CACA);
     59    caca_set_color_ansi($caca, CACA_WHITE, CACA_GREEN);
     60    caca_put_str($caca, $i - 2, $i, "ホ");
    6361}
    6462
     
    7068for($i = 0; $i < 10; $i++)
    7169{
    72         caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
    73         caca_put_str($caca, 0, $i, CACA);
    74         caca_blit($caca, $i - 2, $i, $line);
     70    caca_set_color_ansi($caca, CACA_WHITE, CACA_BLUE);
     71    caca_put_str($caca, 0, $i, CACA);
     72    caca_blit($caca, $i - 2, $i, $line);
    7573}
    7674
  • libcaca/trunk/caca-php/examples/www/img2txt.php

    r4148 r4333  
    55 *
    66 *  This file is a Php port of "src/img2txt.c"
    7  *  which is: 
     7 *  which is:
    88 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    99 *                2007 Jean-Yves Lamoureux <jylam@lnxscene.org>
    1010 *                All Rights Reserved
    11  *
    12  *  $Id$
    1311 *
    1412 *  This program is free software. It comes without any warranty, to
     
    2018
    2119$img2txt_php = isset($_SERVER['SCRIPT_NAME'])
    22                 ?
    23                 $_SERVER['SCRIPT_NAME']
    24                 :
    25                 'img2txt.php';
     20        ?
     21        $_SERVER['SCRIPT_NAME']
     22        :
     23        'img2txt.php';
    2624
    2725$argv = array(basename($img2txt_php));
     
    3129if(isset($_REQUEST['args']))
    3230{
    33         $args = trim($_REQUEST['args']);
    34         if(strlen($args))
    35         {
    36                 foreach(explode(' ', $args) as $arg)
    37                 {
    38                         $argv[] = $arg;
    39                 }
    40         }
     31    $args = trim($_REQUEST['args']);
     32    if(strlen($args))
     33    {
     34        foreach(explode(' ', $args) as $arg)
     35        {
     36            $argv[] = $arg;
     37        }
     38    }
    4139}
    4240$argc = count($argv);
     
    5250function mygetopt($shortopts, $longopts)
    5351{
    54         global $argc, $argv, $myoptind;
    55         if($myoptind < 0)
    56         {
    57                 $myoptind = 0;
    58         }
    59         if(($myoptind + 1) >= $argc)
    60         {
    61                 return NULL;
    62         }
    63         $myoptind ++;
    64         $nextarg = $argv[$myoptind];
    65         $ret = NULL;
    66         if((substr($nextarg, 0, 1) != '-')
    67         ||
    68         ($nextarg == '-'))
    69         {
    70                 $myoptind = $argc - 1;
    71         }
    72         else
    73         {
    74                 $skipopt = $myoptind;
    75                 $skipopts = 1;
    76                 if($nextarg == '--')
    77                 {
    78                         $myoptind = $argc - 1;
    79                 }
    80                 else
    81                 {
    82                         $opt = NULL;
    83                         $arg = NULL;
    84                         foreach($longopts as $longopt)
    85                         {
    86                                 $optional = false;
    87                                 $hasarg = false;
    88                                 if(($longopt != '::') && substr($longopt, -2) == '::')
    89                                 {
    90                                         $optional = true;
    91                                         $hasarg = true;
    92                                         $longopt = substr($longopt, 0, -2);
    93                                 }
    94                                 else if(($longopt != ':') && substr($longopt, -1) == ':')
    95                                 {
    96                                         $optional = false;
    97                                         $hasarg = true;
    98                                         $longopt = substr($longopt, 0, -1);
    99                                 }
    100                                 if($nextarg == ('--' . $longopt))
    101                                 {
    102                                         $opt = '--' . $longopt;
    103                                         if($hasarg && ! $optional)
    104                                         {
    105                                                 if(($myoptind + 1) < $argc)
    106                                                 {
    107                                                         $myoptind ++;
    108                                                         $skipopts ++;
    109                                                         $arg = $argv[$myoptind];
    110                                                 }
    111                                                 else
    112                                                 {
    113                                                         throw new MygetoptException("option \"$opt\" requires an argument");
    114                                                 }
    115                                         }
    116                                         break;
    117                                 }
    118                                 else if(substr($nextarg, 0, strlen('--' . $longopt . '='))
    119                                                 ==
    120                                                 ('--' . $longopt . '='))
    121                                 {
    122                                         $opt = '--' . $longopt;
    123                                         $arg = substr($nextarg, strlen($opt . '='));
    124                                         if(! $hasarg)
    125                                         {
    126                                                 throw new MygetoptException("option \"$opt\" does not allow an argument");
    127                                         }
    128                                         break;
    129                                 }
    130                         }
    131                         if($opt === NULL)
    132                         {
    133                                 for($i = 0; $i < strlen($shortopts); $i ++)
    134                                 {
    135                                         $optional = false;
    136                                         $hasarg = false;
    137                                         $shortopt = substr($shortopts, $i, 1);
    138                                         if(substr($shortopts, $i + 1, 2) == '::')
    139                                         {
    140                                                 $optional = true;
    141                                                 $hasarg = true;
    142                                                 $i += 2;
    143                                         }
    144                                         else if(substr($shortopts, $i + 1, 1) == ':')
    145                                         {
    146                                                 $hasarg = true;
    147                                         }
    148                                         if($nextarg
    149                                         ==
    150                                         ('-' . $shortopt))
    151                                         {
    152                                                 $opt = '-' . $shortopt;
    153                                                 if($hasarg && ! $optional)
    154                                                 {
    155                                                         if(($myoptind + 1) < $argc)
    156                                                         {
    157                                                                 $myoptind ++;
    158                                                                 $skipopts ++;
    159                                                                 $arg = $argv[$myoptind];
    160                                                         }
    161                                                         else
    162                                                         {
    163                                                                 throw new MygetoptException("option \"$opt\" requires an argument");
    164                                                         }
    165                                                 }
    166                                                 break;
    167                                         }
    168                                         else if(substr($nextarg, 0, strlen('-' . $shortopt))
    169                                                         ==
    170                                                         ('-' . $shortopt))
    171                                         {
    172                                                 $opt = '-' . $shortopt;
    173                                                 if($hasarg)
    174                                                 {
    175                                                         $arg = substr($nextarg, strlen($opt));
    176                                                 }
    177                                                 else
    178                                                 {
    179                                                         $argv[$myoptind] = '-' . substr($nextarg, strlen($opt));
    180                                                         $myoptind --;
    181                                                         $skipopts = 0;
    182                                                 }
    183                                         }
    184                                 }
    185                         }
    186                         if($opt === NULL)
    187                         {
    188                                 if(substr($nextarg, 0, strlen('--')) == '--')
    189                                 {
    190                                         $longopt = substr($nextarg, strlen('--'));
    191                                         if(strpos($longopt, '=') !== false)
    192                                         {
    193                                                 $longopt = substr($longopt, 0, strpos($longopt, '='));
    194                                         }
    195                                         throw new MygetoptException("option \"--$longopt\" is not recognized");
    196                                 }
    197                                 $shortopt = substr($nextarg, strlen('-'), 1);
    198                                 throw new MygetoptException("option \"-$shortopt\" is not recognized");
    199                         }
    200                         $ret = array($opt, $arg);
    201                 }
    202                 if ($skipopts > 0)
    203                 {
    204                         for($i = 0; $i < $argc; $i ++)
    205                         {
    206                                 if(($i < $skipopt) || ($i >= ($skipopt + $skipopts)))
    207                                 {
    208                                         $new_argv[] = $argv[$i];
    209                                 }
    210                         }
    211                         if($myoptind >= $skipopt)
    212                         {
    213                                 $myoptind -= $skipopts;
    214                         }
    215                         $argv = $new_argv;
    216                         $argc = count($argv);
    217                 }
    218         }
    219         return $ret;
     52    global $argc, $argv, $myoptind;
     53    if($myoptind < 0)
     54    {
     55        $myoptind = 0;
     56    }
     57    if(($myoptind + 1) >= $argc)
     58    {
     59        return NULL;
     60    }
     61    $myoptind ++;
     62    $nextarg = $argv[$myoptind];
     63    $ret = NULL;
     64    if((substr($nextarg, 0, 1) != '-')
     65       ||
     66       ($nextarg == '-'))
     67    {
     68        $myoptind = $argc - 1;
     69    }
     70    else
     71    {
     72        $skipopt = $myoptind;
     73        $skipopts = 1;
     74        if($nextarg == '--')
     75        {
     76            $myoptind = $argc - 1;
     77        }
     78        else
     79        {
     80            $opt = NULL;
     81            $arg = NULL;
     82            foreach($longopts as $longopt)
     83            {
     84                $optional = false;
     85                $hasarg = false;
     86                if(($longopt != '::') && substr($longopt, -2) == '::')
     87                {
     88                    $optional = true;
     89                    $hasarg = true;
     90                    $longopt = substr($longopt, 0, -2);
     91                }
     92                else if(($longopt != ':') && substr($longopt, -1) == ':')
     93                {
     94                    $optional = false;
     95                    $hasarg = true;
     96                    $longopt = substr($longopt, 0, -1);
     97                }
     98                if($nextarg == ('--' . $longopt))
     99                {
     100                    $opt = '--' . $longopt;
     101                    if($hasarg && ! $optional)
     102                    {
     103                        if(($myoptind + 1) < $argc)
     104                        {
     105                            $myoptind ++;
     106                            $skipopts ++;
     107                            $arg = $argv[$myoptind];
     108                        }
     109                        else
     110                        {
     111                            throw new MygetoptException("option \"$opt\" requires an argument");
     112                        }
     113                    }
     114                    break;
     115                }
     116                else if(substr($nextarg, 0, strlen('--' . $longopt . '='))
     117                        ==
     118                        ('--' . $longopt . '='))
     119                {
     120                    $opt = '--' . $longopt;
     121                    $arg = substr($nextarg, strlen($opt . '='));
     122                    if(! $hasarg)
     123                    {
     124                        throw new MygetoptException("option \"$opt\" does not allow an argument");
     125                    }
     126                    break;
     127                }
     128            }
     129            if($opt === NULL)
     130            {
     131                for($i = 0; $i < strlen($shortopts); $i ++)
     132                {
     133                    $optional = false;
     134                    $hasarg = false;
     135                    $shortopt = substr($shortopts, $i, 1);
     136                    if(substr($shortopts, $i + 1, 2) == '::')
     137                    {
     138                        $optional = true;
     139                        $hasarg = true;
     140                        $i += 2;
     141                    }
     142                    else if(substr($shortopts, $i + 1, 1) == ':')
     143                    {
     144                        $hasarg = true;
     145                    }
     146                    if($nextarg
     147                       ==
     148                       ('-' . $shortopt))
     149                    {
     150                        $opt = '-' . $shortopt;
     151                        if($hasarg && ! $optional)
     152                        {
     153                            if(($myoptind + 1) < $argc)
     154                            {
     155                                $myoptind ++;
     156                                $skipopts ++;
     157                                $arg = $argv[$myoptind];
     158                            }
     159                            else
     160                            {
     161                                throw new MygetoptException("option \"$opt\" requires an argument");
     162                            }
     163                        }
     164                        break;
     165                    }
     166                    else if(substr($nextarg, 0, strlen('-' . $shortopt))
     167                            ==
     168                            ('-' . $shortopt))
     169                    {
     170                        $opt = '-' . $shortopt;
     171                        if($hasarg)
     172                        {
     173                            $arg = substr($nextarg, strlen($opt));
     174                        }
     175                        else
     176                        {
     177                            $argv[$myoptind] = '-' . substr($nextarg, strlen($opt));
     178                            $myoptind --;
     179                            $skipopts = 0;
     180                        }
     181                    }
     182                }
     183            }
     184            if($opt === NULL)
     185            {
     186                if(substr($nextarg, 0, strlen('--')) == '--')
     187                {
     188                    $longopt = substr($nextarg, strlen('--'));
     189                    if(strpos($longopt, '=') !== false)
     190                    {
     191                        $longopt = substr($longopt, 0, strpos($longopt, '='));
     192                    }
     193                    throw new MygetoptException("option \"--$longopt\" is not recognized");
     194                }
     195                $shortopt = substr($nextarg, strlen('-'), 1);
     196                throw new MygetoptException("option \"-$shortopt\" is not recognized");
     197            }
     198            $ret = array($opt, $arg);
     199        }
     200        if ($skipopts > 0)
     201        {
     202            for($i = 0; $i < $argc; $i ++)
     203            {
     204                if(($i < $skipopt) || ($i >= ($skipopt + $skipopts)))
     205                {
     206                    $new_argv[] = $argv[$i];
     207                }
     208            }
     209            if($myoptind >= $skipopt)
     210            {
     211                $myoptind -= $skipopts;
     212            }
     213            $argv = $new_argv;
     214            $argc = count($argv);
     215        }
     216    }
     217    return $ret;
    220218}
    221219
    222220function usage($argc, $argv)
    223221{
    224         global $stdout;
    225         $stdout .= sprintf("Usage: %s [OPTIONS]... <IMAGE>\n", $argv[0]);
    226         $stdout .= sprintf("Convert IMAGE to any text based available format.\n");
    227         $stdout .= sprintf("Example : -W 80 -f html logo-caca.png\n\n", $argv[0]);
    228         $stdout .= sprintf("Options:\n");
    229         $stdout .= sprintf("  -h, --help\t\t\tThis help\n");
    230         $stdout .= sprintf("  -v, --version\t\t\tVersion of the program\n");
    231         $stdout .= sprintf("  -W, --width=WIDTH\t\tWidth of resulting image\n");
    232         $stdout .= sprintf("  -H, --height=HEIGHT\t\tHeight of resulting image\n");
    233         $stdout .= sprintf("  -x, --font-width=WIDTH\t\tWidth of output font\n");
    234         $stdout .= sprintf("  -y, --font-height=HEIGHT\t\tHeight of output font\n");
    235         $stdout .= sprintf("  -b, --brightness=BRIGHTNESS\tBrightness of resulting image\n");
    236         $stdout .= sprintf("  -c, --contrast=CONTRAST\tContrast of resulting image\n");
    237         $stdout .= sprintf("  -g, --gamma=GAMMA\t\tGamma of resulting image\n");
    238         $stdout .= sprintf("  -d, --dither=DITHER\t\tDithering algorithm to use :\n");
    239         $list = caca_get_dither_algorithm_list(caca_create_dither(imagecreate(1, 1)));
    240         foreach($list as $type => $name)
    241         {
    242                 $stdout .= sprintf("\t\t\t%s: %s\n", $type, $name);
    243         }
    244 
    245         $stdout .= sprintf("  -f, --format=FORMAT\t\tFormat of the resulting image :\n");
    246         $list = caca_get_export_list();
    247         foreach($list as $type => $name)
    248         {
    249                 $stdout .= sprintf("\t\t\t%s: %s\n", $type, $name);
    250         }
     222    global $stdout;
     223    $stdout .= sprintf("Usage: %s [OPTIONS]... <IMAGE>\n", $argv[0]);
     224    $stdout .= sprintf("Convert IMAGE to any text based available format.\n");
     225    $stdout .= sprintf("Example : -W 80 -f html logo-caca.png\n\n", $argv[0]);
     226    $stdout .= sprintf("Options:\n");
     227    $stdout .= sprintf("  -h, --help\t\t\tThis help\n");
     228    $stdout .= sprintf("  -v, --version\t\t\tVersion of the program\n");
     229    $stdout .= sprintf("  -W, --width=WIDTH\t\tWidth of resulting image\n");
     230    $stdout .= sprintf("  -H, --height=HEIGHT\t\tHeight of resulting image\n");
     231    $stdout .= sprintf("  -x, --font-width=WIDTH\t\tWidth of output font\n");
     232    $stdout .= sprintf("  -y, --font-height=HEIGHT\t\tHeight of output font\n");
     233    $stdout .= sprintf("  -b, --brightness=BRIGHTNESS\tBrightness of resulting image\n");
     234    $stdout .= sprintf("  -c, --contrast=CONTRAST\tContrast of resulting image\n");
     235    $stdout .= sprintf("  -g, --gamma=GAMMA\t\tGamma of resulting image\n");
     236    $stdout .= sprintf("  -d, --dither=DITHER\t\tDithering algorithm to use :\n");
     237    $list = caca_get_dither_algorithm_list(caca_create_dither(imagecreate(1, 1)));
     238    foreach($list as $type => $name)
     239    {
     240        $stdout .= sprintf("\t\t\t%s: %s\n", $type, $name);
     241    }
     242
     243    $stdout .= sprintf("  -f, --format=FORMAT\t\tFormat of the resulting image :\n");
     244    $list = caca_get_export_list();
     245    foreach($list as $type => $name)
     246    {
     247        $stdout .= sprintf("\t\t\t%s: %s\n", $type, $name);
     248    }
    251249}
    252250
    253251function version()
    254252{
    255         global $stdout;
    256         $stdout .= sprintf(
    257         "img2txt Copyright 2006-2007 Sam Hocevar and Jean-Yves Lamoureux\n" .
    258         "        Copyright 2008 Benjamin C. Wiley Sittler\n" .
    259         "Internet: <sam@hocevar.net> <jylam@lnxscene.org>\n" .
    260         "          <bsittler@gmail.com> Version: %s\n" .
    261         "\n" .
    262         "img2txt, along with its documentation, may be freely copied and distributed.\n" .
    263         "\n" .
    264         "The latest version of img2txt is available from the web site,\n" .
    265         "        http://caca.zoy.org/wiki/libcaca in the libcaca package.\n" .
    266         "\n",
    267         caca_get_version());
     253    global $stdout;
     254    $stdout .= sprintf(
     255    "img2txt Copyright 2006-2007 Sam Hocevar and Jean-Yves Lamoureux\n" .
     256    "        Copyright 2008 Benjamin C. Wiley Sittler\n" .
     257    "Internet: <sam@hocevar.net> <jylam@lnxscene.org>\n" .
     258    "          <bsittler@gmail.com> Version: %s\n" .
     259    "\n" .
     260    "img2txt, along with its documentation, may be freely copied and distributed.\n" .
     261    "\n" .
     262    "The latest version of img2txt is available from the web site,\n" .
     263    "        http://caca.zoy.org/wiki/libcaca in the libcaca package.\n" .
     264    "\n",
     265    caca_get_version());
    268266}
    269267function main()
    270268{
    271         global $file, $filename;
    272         global $argc, $argv;
    273         global $stderr;
    274         $cols = 0;
    275         $lines = 0;
    276         $font_width = 6;
    277         $font_height = 10;
    278         $format = NULL;
    279         $dither = NULL;
    280         $gamma = $brightness = $contrast = -1.0;
    281 
    282         $long_options = array(
    283                 "width:"        => 'W',
    284                 "height:"       => 'H',
    285                 "font-width:"   => 'x',
    286                 "font-height:"  => 'y',
    287                 "format:"       => 'f',
    288                 "dither:"       => 'd',
    289                 "gamma:"        => 'g',
    290                 "brightness:"   => 'b',
    291                 "contrast:"     => 'c',
    292                 "help"          => 'h',
    293                 "version"       => 'v'
    294                 );
    295 
    296         try {
    297                 while($opt_and_arg = mygetopt("W:H:f:d:g:b:c:hvx:y:", array_keys($long_options)))
    298                 {
    299                         $opt = $opt_and_arg[0];
    300                         $arg = $opt_and_arg[1];
    301                         if((substr($opt, 0, 2) == '--')
    302                                 &&
    303                                 array_key_exists(substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : ''), $long_options))
    304                         {
    305                                 $opt = '-' . $long_options[substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : '')];
    306                         }
    307                         switch($opt)
    308                         {
    309                         case '-W': /* --width */
    310                                 $cols = intval($arg);
    311                                 break;
    312                         case '-H': /* --height */
    313                                 $lines = intval($arg);
    314                                 break;
    315                         case '-x': /* --width */
    316                                 $font_width = intval($arg);
    317                                 break;
    318                         case '-y': /* --height */
    319                                 $font_height = intval($arg);
    320                                 break;
    321                         case '-f': /* --format */
    322                                 $format = $arg;
    323                                 break;
    324                         case '-d': /* --dither */
    325                                 $dither = $arg;
    326                                 break;
    327                         case '-g': /* --gamma */
    328                                 $gamma = floatval($arg);
    329                                 break;
    330                         case '-b': /* --brightness */
    331                                 $brightness = floatval($arg);
    332                                 break;
    333                         case '-c': /* --contrast */
    334                                 $contrast = floatval($arg);
    335                                 break;
    336                         case '-h': /* --help */
    337                                 usage($argc, $argv);
    338                                 return 0;
    339                         case '-v': /* --version */
    340                                 version();
    341                                 return 0;
    342                         default:
    343                                 return 1;
    344                         }
    345                 }
    346         }
    347         catch (MygetoptException $e)
    348         {
    349                 $stderr .= $argv[0] . ": " . $e->getMessage() . "\n";
    350                 usage($argc, $argv);
    351                 return 2;
    352         }
    353 
    354         if((! $file) && ($argc == 2) && ($argv[1] == 'logo-caca.png'))
    355         {
    356                 $file = 'logo-caca.png';
    357                 $argc = 1;
    358         }
    359         else if($filename && $file && ($argc == 2)
    360                         &&
    361                         (strtolower(basename($argv[1])) == strtolower(basename($filename))))
    362         {
    363                 $argc = 1;
    364         }
    365 
    366         if($argc == 2)
    367         {
    368                 $stderr .= sprintf("%s: image not found\n", $argv[1]);
    369                 return 1;
    370         }
    371 
    372         if($argc > 2)
    373         {
    374                 $stderr .= sprintf("%s: too many arguments\n", $argv[0]);
    375                 usage($argc, $argv);
    376                 return 1;
    377         }
    378 
    379         if(! $file)
    380         {
    381                 $stderr .= sprintf("%s: no image was provided\n", $argv[0]);
    382                 usage($argc, $argv);
    383                 return 1;
    384         }
    385 
    386         $cv = caca_create_canvas(0, 0);
    387         if(!$cv)
    388         {
    389                 $stderr .= sprintf("%s: unable to initialise libcaca\n", $argv[0]);
    390                 return 1;
    391         }
    392 
    393         $i_str = $file ? file_get_contents($file) : NULL;
    394         $i = $i_str ? imagecreatefromstring($i_str) : NULL;
    395         if(!$i)
    396         {
    397                 $stderr .= sprintf("%s: unable to load %s\n", $argv[0], $filename);
    398                 return 1;
    399         }
    400 
    401         /* Assume a 6×10 font */
    402         if(!$cols && !$lines)
    403         {
    404                 $cols = 60;
    405                 $lines = $cols * imagesy($i) * $font_width / imagesx($i) / $font_height;
    406         }
    407         else if($cols && !$lines)
    408         {
    409                 $lines = $cols * imagesy($i) * $font_width / imagesx($i) / $font_height;
    410         }
    411         else if(!$cols && $lines)
    412         {
    413                 $cols = $lines * imagesx($i) * $font_height / imagesy($i) / $font_width;
    414         }
    415 
    416 
    417         caca_set_canvas_size($cv, $cols, $lines);
    418         caca_set_color_ansi($cv, CACA_DEFAULT, CACA_TRANSPARENT);
    419         caca_clear_canvas($cv);
    420         $i_dither = caca_create_dither($i);
    421         if(! caca_set_dither_algorithm($i_dither, $dither?$dither:"fstein"))
    422         {
    423                 $stderr .= sprintf("%s: Can't dither image with algorithm '%s'\n", $argv[0], $dither?$dither:"fstein");
    424                 return -1;
    425         }
    426 
    427         if($brightness!=-1) caca_set_dither_brightness ($i_dither, $brightness);
    428         if($contrast!=-1) caca_set_dither_contrast ($i_dither, $contrast);
    429         if($gamma!=-1) caca_set_dither_gamma ($i_dither, $gamma);
    430 
    431         caca_dither_bitmap($cv, 0, 0, $cols, $lines, $i_dither, $i);
    432 
    433         $format = $format ? $format : 'html';
    434 
    435         $export = caca_export_string($cv, $format);
    436         if(!$export)
    437         {
    438                 $stderr .= sprintf("%s: Can't export to format '%s'\n", $argv[0], $format);
    439                 return -1;
    440         }
    441         else
    442         {
    443                 $content_type_map = array(
    444                         'ansi' => 'text/plain; charset=CP437',
    445                         'utf8' => 'text/plain; charset=UTF-8',
    446                         'utf8cr' => 'text/plain; charset=UTF-8',
    447                         'html' => 'text/html; charset=UTF-8',
    448                         'html3' => 'text/html; charset=UTF-8',
    449                         'bbfr' => 'text/plain; charset=UTF-8',
    450                         'irc' => 'text/plain; charset=UTF-8',
    451                         'ps' => 'application/postscript',
    452                         'svg' => 'image/svg+xml',
    453                         'tga' => 'image/x-targa'
    454                         );
    455 
    456                 $download_extension_map = array(
    457                         'caca' => 'caca',
    458                         'ansi' => 'txt',
    459                         'utf8' => 'txt',
    460                         'utf8cr' => 'txt',
    461                         'irc' => 'txt',
    462                         'tga' => 'tga'
    463                         );
    464 
    465                 $inline_extension_map = array(
    466                         'bbfr' => 'txt',
    467                         'ps' => 'ps',
    468                         'svg' => 'svg'
    469                         );
    470 
    471                 if (! array_key_exists($format, $content_type_map))
    472                         $content_type = 'application/octet-stream';
    473                 else
    474                         $content_type = $content_type_map[$format];
    475 
    476                 header('Content-Type: ' . $content_type);
    477                 if (array_key_exists($format, $download_extension_map))
    478                         header('Content-Disposition: attachment; filename=export.' . $download_extension_map[$format]);
    479                 else if (array_key_exists($format, $inline_extension_map))
    480                         header('Content-Disposition: inline; filename=export.' . $inline_extension_map[$format]);
    481 
    482                 echo $export;
    483         }
    484 
    485         return 0;
     269    global $file, $filename;
     270    global $argc, $argv;
     271    global $stderr;
     272    $cols = 0;
     273    $lines = 0;
     274    $font_width = 6;
     275    $font_height = 10;
     276    $format = NULL;
     277    $dither = NULL;
     278    $gamma = $brightness = $contrast = -1.0;
     279
     280    $long_options = array(
     281        "width:"    => 'W',
     282        "height:"    => 'H',
     283        "font-width:"    => 'x',
     284        "font-height:"    => 'y',
     285        "format:"    => 'f',
     286        "dither:"    => 'd',
     287        "gamma:"    => 'g',
     288        "brightness:"    => 'b',
     289        "contrast:"    => 'c',
     290        "help"        => 'h',
     291        "version"    => 'v'
     292        );
     293
     294    try {
     295        while($opt_and_arg = mygetopt("W:H:f:d:g:b:c:hvx:y:", array_keys($long_options)))
     296        {
     297            $opt = $opt_and_arg[0];
     298            $arg = $opt_and_arg[1];
     299            if((substr($opt, 0, 2) == '--')
     300                &&
     301                array_key_exists(substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : ''), $long_options))
     302            {
     303                $opt = '-' . $long_options[substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : '')];
     304            }
     305            switch($opt)
     306            {
     307            case '-W': /* --width */
     308                $cols = intval($arg);
     309                break;
     310            case '-H': /* --height */
     311                $lines = intval($arg);
     312                break;
     313            case '-x': /* --width */
     314                $font_width = intval($arg);
     315                break;
     316            case '-y': /* --height */
     317                $font_height = intval($arg);
     318                break;
     319            case '-f': /* --format */
     320                $format = $arg;
     321                break;
     322            case '-d': /* --dither */
     323                $dither = $arg;
     324                break;
     325            case '-g': /* --gamma */
     326                $gamma = floatval($arg);
     327                break;
     328            case '-b': /* --brightness */
     329                $brightness = floatval($arg);
     330                break;
     331            case '-c': /* --contrast */
     332                $contrast = floatval($arg);
     333                break;
     334            case '-h': /* --help */
     335                usage($argc, $argv);
     336                return 0;
     337            case '-v': /* --version */
     338                version();
     339                return 0;
     340            default:
     341                return 1;
     342            }
     343        }
     344    }
     345    catch (MygetoptException $e)
     346    {
     347        $stderr .= $argv[0] . ": " . $e->getMessage() . "\n";
     348        usage($argc, $argv);
     349        return 2;
     350    }
     351
     352    if((! $file) && ($argc == 2) && ($argv[1] == 'logo-caca.png'))
     353    {
     354        $file = 'logo-caca.png';
     355        $argc = 1;
     356    }
     357    else if($filename && $file && ($argc == 2)
     358            &&
     359            (strtolower(basename($argv[1])) == strtolower(basename($filename))))
     360    {
     361        $argc = 1;
     362    }
     363
     364    if($argc == 2)
     365    {
     366        $stderr .= sprintf("%s: image not found\n", $argv[1]);
     367        return 1;
     368    }
     369
     370    if($argc > 2)
     371    {
     372        $stderr .= sprintf("%s: too many arguments\n", $argv[0]);
     373        usage($argc, $argv);
     374        return 1;
     375    }
     376
     377    if(! $file)
     378    {
     379        $stderr .= sprintf("%s: no image was provided\n", $argv[0]);
     380        usage($argc, $argv);
     381        return 1;
     382    }
     383
     384    $cv = caca_create_canvas(0, 0);
     385    if(!$cv)
     386    {
     387        $stderr .= sprintf("%s: unable to initialise libcaca\n", $argv[0]);
     388        return 1;
     389    }
     390
     391    $i_str = $file ? file_get_contents($file) : NULL;
     392    $i = $i_str ? imagecreatefromstring($i_str) : NULL;
     393    if(!$i)
     394    {
     395        $stderr .= sprintf("%s: unable to load %s\n", $argv[0], $filename);
     396        return 1;
     397    }
     398
     399    /* Assume a 6×10 font */
     400    if(!$cols && !$lines)
     401    {
     402        $cols = 60;
     403        $lines = $cols * imagesy($i) * $font_width / imagesx($i) / $font_height;
     404    }
     405    else if($cols && !$lines)
     406    {
     407        $lines = $cols * imagesy($i) * $font_width / imagesx($i) / $font_height;
     408    }
     409    else if(!$cols && $lines)
     410    {
     411        $cols = $lines * imagesx($i) * $font_height / imagesy($i) / $font_width;
     412    }
     413
     414
     415    caca_set_canvas_size($cv, $cols, $lines);
     416    caca_set_color_ansi($cv, CACA_DEFAULT, CACA_TRANSPARENT);
     417    caca_clear_canvas($cv);
     418    $i_dither = caca_create_dither($i);
     419    if(! caca_set_dither_algorithm($i_dither, $dither?$dither:"fstein"))
     420    {
     421        $stderr .= sprintf("%s: Can't dither image with algorithm '%s'\n", $argv[0], $dither?$dither:"fstein");
     422        return -1;
     423    }
     424
     425    if($brightness!=-1) caca_set_dither_brightness ($i_dither, $brightness);
     426    if($contrast!=-1) caca_set_dither_contrast ($i_dither, $contrast);
     427    if($gamma!=-1) caca_set_dither_gamma ($i_dither, $gamma);
     428
     429    caca_dither_bitmap($cv, 0, 0, $cols, $lines, $i_dither, $i);
     430
     431    $format = $format ? $format : 'html';
     432
     433    $export = caca_export_string($cv, $format);
     434    if(!$export)
     435    {
     436        $stderr .= sprintf("%s: Can't export to format '%s'\n", $argv[0], $format);
     437        return -1;
     438    }
     439    else
     440    {
     441        $content_type_map = array(
     442            'ansi' => 'text/plain; charset=CP437',
     443            'utf8' => 'text/plain; charset=UTF-8',
     444            'utf8cr' => 'text/plain; charset=UTF-8',
     445            'html' => 'text/html; charset=UTF-8',
     446            'html3' => 'text/html; charset=UTF-8',
     447            'bbfr' => 'text/plain; charset=UTF-8',
     448            'irc' => 'text/plain; charset=UTF-8',
     449            'ps' => 'application/postscript',
     450            'svg' => 'image/svg+xml',
     451            'tga' => 'image/x-targa'
     452            );
     453
     454        $download_extension_map = array(
     455            'caca' => 'caca',
     456            'ansi' => 'txt',
     457            'utf8' => 'txt',
     458            'utf8cr' => 'txt',
     459            'irc' => 'txt',
     460            'tga' => 'tga'
     461            );
     462
     463        $inline_extension_map = array(
     464            'bbfr' => 'txt',
     465            'ps' => 'ps',
     466            'svg' => 'svg'
     467            );
     468
     469        if (! array_key_exists($format, $content_type_map))
     470            $content_type = 'application/octet-stream';
     471        else
     472            $content_type = $content_type_map[$format];
     473
     474        header('Content-Type: ' . $content_type);
     475        if (array_key_exists($format, $download_extension_map))
     476            header('Content-Disposition: attachment; filename=export.' . $download_extension_map[$format]);
     477        else if (array_key_exists($format, $inline_extension_map))
     478            header('Content-Disposition: inline; filename=export.' . $inline_extension_map[$format]);
     479
     480        echo $export;
     481    }
     482
     483    return 0;
    486484}
    487485$ret = 1;
    488486if(isset($_REQUEST['args']) || $file)
    489487{
    490         $ret = main();
     488    $ret = main();
    491489}
    492490if($ret || strlen($stdout) || strlen($stderr))
    493491{
    494         header('Content-Type: text/html; charset=UTF-8');
    495         ?>
     492    header('Content-Type: text/html; charset=UTF-8');
     493    ?>
    496494<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    497495    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    513511</form>
    514512<?php
    515                 ;
    516         if(strlen($stderr))
    517         {
    518                 ?><pre xml:space="preserve"><strong><?= htmlspecialchars($stderr) ?></strong></pre><?php
    519                         ;
    520         }
    521         if(strlen($stdout))
    522         {
    523                 ?><pre xml:space="preserve"><?= preg_replace('!([&]lt;)([.a-zA-Z0-9]+[@])([-.a-zA-Z0-9]+)([&]gt;)!', '$1<a href="mailto:$2$3">$2...</a>$4', preg_replace('!(\s|^)(https?://[-.:_/0-9a-zA-Z%?=&;#]+)(\s|$)!', '$1<a href="$2">$2</a>$3', htmlspecialchars($stdout))) ?></pre><?php
    524                         ;
    525         }
    526         ?>
     513        ;
     514    if(strlen($stderr))
     515    {
     516        ?><pre xml:space="preserve"><strong><?= htmlspecialchars($stderr) ?></strong></pre><?php
     517            ;
     518    }
     519    if(strlen($stdout))
     520    {
     521        ?><pre xml:space="preserve"><?= preg_replace('!([&]lt;)([.a-zA-Z0-9]+[@])([-.a-zA-Z0-9]+)([&]gt;)!', '$1<a href="mailto:$2$3">$2...</a>$4', preg_replace('!(\s|^)(https?://[-.:_/0-9a-zA-Z%?=&;#]+)(\s|$)!', '$1<a href="$2">$2</a>$3', htmlspecialchars($stdout))) ?></pre><?php
     522            ;
     523    }
     524    ?>
    527525</body>
    528526</html>
    529527<?php
    530                 ;
     528        ;
    531529}
    532530?>
  • libcaca/trunk/caca-php/examples/www/import.php

    r3271 r4333  
    1212 *
    1313 *  This file is a Php port of "examples/import.c"
    14  *  which is: 
     14 *  which is:
    1515 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
    1616 *                All Rights Reserved
    17  *
    18  *  $Id$
    1917 *
    2018 *  This program is free software. It comes without any warranty, to
     
    5048<select name="format" id="format" onchange="update_preview(this);">
    5149<?php
    52         foreach($imports as $import_format => $name)
    53         {
    54                 ?><option value="<?= htmlspecialchars($import_format) ?>"<?=
    55                         ($format == $import_format) ? ' selected="selected"' : '' ?>><?=
    56                         htmlspecialchars($name . " (" . $import_format . ")") ?></option><?php
    57         }
     50    foreach($imports as $import_format => $name)
     51    {
     52        ?><option value="<?= htmlspecialchars($import_format) ?>"<?=
     53            ($format == $import_format) ? ' selected="selected"' : '' ?>><?=
     54            htmlspecialchars($name . " (" . $import_format . ")") ?></option><?php
     55    }
    5856?>
    5957</select>
     
    6563if($file)
    6664{
    67         $cv = caca_create_canvas(0, 0);
    68         if(! $cv)
    69         {
    70                 die("Can't create canvas\n");
    71         }
    72        
    73         if(caca_import_file($cv, $file, ($format == NULL) ? "" : $format) < 0)
    74         {
    75                 die("could not import `" . htmlspecialchars($filename) . "'.\n");
    76         }
    77        
    78         echo caca_export_string($cv, "html3");
     65    $cv = caca_create_canvas(0, 0);
     66    if(! $cv)
     67    {
     68        die("Can't create canvas\n");
     69    }
     70
     71    if(caca_import_file($cv, $file, ($format == NULL) ? "" : $format) < 0)
     72    {
     73        die("could not import `" . htmlspecialchars($filename) . "'.\n");
     74    }
     75
     76    echo caca_export_string($cv, "html3");
    7977}
    8078else
    8179{
    82         ?>See the <a href="export.php">libcaca export test program</a> for an <a
     80    ?>See the <a href="export.php">libcaca export test program</a> for an <a
    8381href="export.php?format=caca">example file</a>.<?php
    8482}
  • libcaca/trunk/caca-php/examples/www/render.php

    r3243 r4333  
    33function pig() {
    44$pig_str = <<<EOT
    5                                    
    6     _._ _..._ .-',     _.._(`))   
    7    '-. `     '  /-._.-'    ',/     
    8       )         \            '.   
    9      / _    _    |             \   
    10     |  a    a    /   PHP        | 
    11     \   .-.                     ; 
    12      '-('' ).-'       ,'       ;   
    13         '-;           |      .'   
    14            \           \    /   
    15            | 7  .__  _.-\   \   
    16            | |  |  ``/  /`  /     
    17       jgs /,_|  |   /,_/   /       
    18              /,_/      '`-'       
     5
     6    _._ _..._ .-',     _.._(`))
     7   '-. `     '  /-._.-'    ',/
     8      )         \            '.
     9     / _    _    |             \
     10    |  a    a    /   PHP        |
     11    \   .-.                     ;
     12     '-('' ).-'       ,'       ;
     13        '-;           |      .'
     14           \           \    /
     15           | 7  .__  _.-\   \
     16           | |  |  ``/  /`  /
     17      jgs /,_|  |   /,_/   /
     18             /,_/      '`-'
    1919EOT;
    2020
    21         $canvas = caca_create_canvas(0, 0);
    22         caca_set_color_ansi($canvas, CACA_RED, CACA_WHITE);
    23         caca_import_string($canvas, $pig_str, "text");
    24         caca_set_color_ansi($canvas, CACA_BLUE, CACA_LIGHTGRAY);
    25         caca_put_str($canvas, 0, 0, "Я люблю Либкаку");
    26         return $canvas;
     21    $canvas = caca_create_canvas(0, 0);
     22    caca_set_color_ansi($canvas, CACA_RED, CACA_WHITE);
     23    caca_import_string($canvas, $pig_str, "text");
     24    caca_set_color_ansi($canvas, CACA_BLUE, CACA_LIGHTGRAY);
     25    caca_put_str($canvas, 0, 0, "Я люблю Либкаку");
     26    return $canvas;
    2727}
    2828
    2929
    3030if (isset($_GET["png"])) {
    31         $canvas = pig();
    32         $font = caca_load_builtin_font("Monospace Bold 12");
    33         $width = caca_get_canvas_width($canvas) * caca_get_font_width($font);
    34         $height = caca_get_canvas_height($canvas) * caca_get_font_height($font);
    35         $img = imagecreatetruecolor($width, $height);
    36         caca_render_canvas($canvas, $font, $img);
    37         header("Content-type: image/png");
    38         imagepng($img);
     31    $canvas = pig();
     32    $font = caca_load_builtin_font("Monospace Bold 12");
     33    $width = caca_get_canvas_width($canvas) * caca_get_font_width($font);
     34    $height = caca_get_canvas_height($canvas) * caca_get_font_height($font);
     35    $img = imagecreatetruecolor($width, $height);
     36    caca_render_canvas($canvas, $font, $img);
     37    header("Content-type: image/png");
     38    imagepng($img);
    3939}
    4040else {
    4141
    4242$render_php = isset($_SERVER['SCRIPT_NAME'])
    43                 ?
    44                 $_SERVER['SCRIPT_NAME']
    45                 :
    46                 'render.php';
     43        ?
     44        $_SERVER['SCRIPT_NAME']
     45        :
     46        'render.php';
    4747
    4848header("Content-type: text/html; charset=UTF-8");
     
    6363<h1>Generated image:</h1>
    6464<a href="<?= htmlspecialchars($render_php) ?>?png=1"><img alt="[PNG]"
    65         src="<?= htmlspecialchars($render_php) ?>?png=1" border="0" /></a>
     65    src="<?= htmlspecialchars($render_php) ?>?png=1" border="0" /></a>
    6666</body>
    6767</html>
  • libcaca/trunk/caca-php/examples/www/text.php

    r4148 r4333  
    1111 *  Copyright (c) 2008 Nicolas Vion <nico@yojik.eu>
    1212 *
    13  *  This file is a Php port of the official libcaca's sample program "demo.c" 
    14  *  which is: 
     13 *  This file is a Php port of the official libcaca's sample program "demo.c"
     14 *  which is:
    1515 *  Copyright (c) 2003 Sam Hocevar <sam@hocevar.net>
    1616 *
     
    3030
    3131$string =  <<<EOT
    32               |_| 
    33    _,----._   | | 
    34   (/ @  @ \)   __ 
    35    |  OO  |   |_ 
    36    \ `--' /   |__ 
    37     `----'       
    38               |_| 
    39  Hello world!  | 
     32              |_|
     33   _,----._   | |
     34  (/ @  @ \)   __
     35   |  OO  |   |_
     36   \ `--' /   |__
     37    `----'
     38              |_|
     39 Hello world!  |
    4040EOT;
    41        
     41
    4242$pig = caca_create_canvas(0, 0);
    4343caca_import_string($pig, $string, "text");
     
    4646
    4747if (!$cv or !$pig) {
    48         die("Can't created canvas\n");
     48    die("Can't created canvas\n");
    4949}
    5050
     
    6060
    6161for($j = 0; $j < caca_get_canvas_height($cv); $j++) {
    62         for($i = 0; $i < caca_get_canvas_width($cv); $i += 2) {
    63                 caca_set_color_ansi($cv, CACA_LIGHTBLUE + ($i + $j) % 6, CACA_DEFAULT);
    64                 $a = caca_get_attr($cv, -1, -1);
    65                 caca_put_attr($cv, $i, $j, $a);
    66                 caca_put_attr($cv, $i + 1, $j, $a);
    67         }
     62    for($i = 0; $i < caca_get_canvas_width($cv); $i += 2) {
     63        caca_set_color_ansi($cv, CACA_LIGHTBLUE + ($i + $j) % 6, CACA_DEFAULT);
     64        $a = caca_get_attr($cv, -1, -1);
     65        caca_put_attr($cv, $i, $j, $a);
     66        caca_put_attr($cv, $i + 1, $j, $a);
     67    }
    6868}
    6969
  • libcaca/trunk/caca-php/examples/www/transform.php

    r4148 r4333  
    1212 *
    1313 *  This file is a Php port of "examples/transform.c"
    14  *  which is: 
     14 *  which is:
    1515 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    1616 *                All Rights Reserved
    17  *
    18  *  $Id$
    1917 *
    2018 *  This program is free software. It comes without any warranty, to
     
    3331
    3432$pig = (
    35         ",--.   ,--.\n" .
    36         "\\  /-~-\\  /\n" .
    37         " )' o O `(\n" .
    38         "(  ,---.  )\n" .
    39         " `(_o_o_)'\n" .
    40         "   )`-'(\n");
     33    ",--.   ,--.\n" .
     34    "\\  /-~-\\  /\n" .
     35    " )' o O `(\n" .
     36    "(  ,---.  )\n" .
     37    " `(_o_o_)'\n" .
     38    "   )`-'(\n");
    4139
    4240$duck = (
    43         "                ,~~.\n" .
    44         "    __     ,   (  O )>\n" .
    45         "___( o)>   )`~~'   (\n" .
    46         "\\ <_. )   (  .__)   )\n" .
    47         " `---'     `-.____,'\n");
     41    "                ,~~.\n" .
     42    "    __     ,   (  O )>\n" .
     43    "___( o)>   )`~~'   (\n" .
     44    "\\ <_. )   (  .__)   )\n" .
     45    " `---'     `-.____,'\n");
    4846
    4947$cv = caca_create_canvas(80, 25);
    5048if(! $cv)
    5149{
    52         die("Can't created canvas\n");
     50    die("Can't created canvas\n");
    5351}
    5452
  • libcaca/trunk/caca-php/examples/www/truecolor.php

    r4148 r4333  
    88<?php
    99/*
    10  *  truecolor     truecolor canvas features
     10 *  truecolor      truecolor canvas features
    1111 *  Copyright (c) 2008 Benjamin C. Wiley Sittler <bsittler@gmail.com>
    1212 *
    1313 *  This file is a Php port of "examples/truecolor.c"
    14  *  which is: 
     14 *  which is:
    1515 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    16  *                All Rights Reserved
    17  *
    18  *  $Id$
     16 *          All Rights Reserved
    1917 *
    2018 *  This program is free software. It comes without any warranty, to
     
    3432$cv = caca_create_canvas(32, 16);
    3533if(!$cv) {
    36         die("Failed to create canvas\n");
     34    die("Failed to create canvas\n");
    3735}
    3836
    3937for($y = 0; $y < 16; $y++)
    40         for($x = 0; $x < 16; $x++)
    41         {
    42                 $bgcolor = 0xff00 | ($y << 4) | $x;
    43                 $fgcolor = 0xf000 | ((15 - $y) << 4) | ((15 - $x) << 8);
    44                
    45                 caca_set_color_argb($cv, $fgcolor, $bgcolor);
    46                 caca_put_str($cv, $x * 2, $y, "CA");
    47         }
     38    for($x = 0; $x < 16; $x++)
     39    {
     40        $bgcolor = 0xff00 | ($y << 4) | $x;
     41        $fgcolor = 0xf000 | ((15 - $y) << 4) | ((15 - $x) << 8);
     42
     43        caca_set_color_argb($cv, $fgcolor, $bgcolor);
     44        caca_put_str($cv, $x * 2, $y, "CA");
     45    }
    4846
    4947caca_set_color_ansi($cv, CACA_WHITE, CACA_LIGHTBLUE);
  • libcaca/trunk/caca-php/examples/www/unicode.php

    r4148 r4333  
    1212 *
    1313 *  This file is a Php port of "examples/unicode.c"
    14  *  which is: 
     14 *  which is:
    1515 *  Copyright (c) 2006 Sam Hocevar <sam@hocevar.net>
    1616 *                All Rights Reserved
    17  *
    18  *  $Id$
    1917 *
    2018 *  This program is free software. It comes without any warranty, to
     
    3533if(! $cv)
    3634{
    37         die("Can't created canvas\n");
     35    die("Can't created canvas\n");
    3836}
    3937caca_set_color_ansi($cv, CACA_WHITE, CACA_BLUE);
  • libcaca/trunk/caca-sharp/AssemblyInfo.cs

    r2824 r4333  
    33 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
    44 *                All Rights Reserved
    5  *
    6  *  $Id$
    75 *
    86 *  This library is free software. It comes without any warranty, to
  • libcaca/trunk/caca-sharp/Attr.cs

    r4148 r4333  
    44 *                2007 Sam Hocevar <sam@hocevar.net>
    55 *                All Rights Reserved
    6  *
    7  *  $Id$
    86 *
    97 *  This library is free software. It comes without any warranty, to
  • libcaca/trunk/caca-sharp/Caca.cs

    r4148 r4333  
    44 *                2007 Sam Hocevar <sam@@hocevar.net>
    55 *                All Rights Reserved
    6  *
    7  *  $Id$
    86 *
    97 *  This library is free software. It comes without any warranty, to
  • libcaca/trunk/caca-sharp/Canvas.cs

    r3587 r4333  
    44 *                2007-2009 Sam Hocevar <sam@hocevar.net>
    55 *                All Rights Reserved
    6  *
    7  *  $Id$
    86 *
    97 *  This library is free software. It comes without any warranty, to
  • libcaca/trunk/caca-sharp/Display.cs

    r4148 r4333  
    44 *                2007 Sam Hocevar <sam@hocevar.net>
    55 *                All Rights Reserved
    6  *
    7  *  $Id$
    86 *
    97 *  This library is free software. It comes without any warranty, to
  • libcaca/trunk/caca-sharp/Dither.cs

    r4148 r4333  
    44 *                2007 Sam Hocevar <sam@hocevar.net>
    55 *                All Rights Reserved
    6  *
    7  *  $Id$
    86 *
    97 *  This library is free software. It comes without any warranty, to
  • libcaca/trunk/caca-sharp/Event.cs

    r4148 r4333  
    44 *