Changeset 3304 for libcaca/trunk/caca-php/examples/img2txt.php
- Timestamp:
- Nov 7, 2008, 6:48:32 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca-php/examples/img2txt.php
r3302 r3304 20 20 } 21 21 22 class MygetoptException extends Exception 23 { 24 } 25 26 $myoptind = 0; 27 28 function mygetopt($shortopts, $longopts) 29 { 30 global $argc, $argv, $myoptind; 31 if($myoptind < 0) 32 { 33 $myoptind = 0; 34 } 35 if(($myoptind + 1) >= $argc) 36 { 37 return NULL; 38 } 39 $myoptind ++; 40 $nextarg = $argv[$myoptind]; 41 $ret = NULL; 42 if((substr($nextarg, 0, 1) != '-') 43 || 44 ($nextarg == '-')) 45 { 46 $myoptind = $argc - 1; 47 } 48 else 49 { 50 $skipopt = $myoptind; 51 $skipopts = 1; 52 if($nextarg == '--') 53 { 54 $myoptind = $argc - 1; 55 } 56 else 57 { 58 $opt = NULL; 59 $arg = NULL; 60 foreach($longopts as $longopt) 61 { 62 $optional = false; 63 $hasarg = false; 64 if(($longopt != '::') && substr($longopt, -2) == '::') 65 { 66 $optional = true; 67 $hasarg = true; 68 $longopt = substr($longopt, 0, -2); 69 } 70 else if(($longopt != ':') && substr($longopt, -1) == ':') 71 { 72 $optional = false; 73 $hasarg = true; 74 $longopt = substr($longopt, 0, -1); 75 } 76 if($nextarg == ('--' . $longopt)) 77 { 78 $opt = '--' . $longopt; 79 if($hasarg && ! $optional) 80 { 81 if(($myoptind + 1) < $argc) 82 { 83 $myoptind ++; 84 $skipopts ++; 85 $arg = $argv[$myoptind]; 86 } 87 else 88 { 89 throw new MygetoptException("option \"$opt\" requires an argument"); 90 } 91 } 92 break; 93 } 94 else if(substr($nextarg, 0, strlen('--' . $longopt . '=')) 95 == 96 ('--' . $longopt . '=')) 97 { 98 $opt = '--' . $longopt; 99 $arg = substr($nextarg, strlen($opt . '=')); 100 if(! $hasarg) 101 { 102 throw new MygetoptException("option \"$opt\" does not allow an argument"); 103 } 104 break; 105 } 106 } 107 if($opt === NULL) 108 { 109 for($i = 0; $i < strlen($shortopts); $i ++) 110 { 111 $optional = false; 112 $hasarg = false; 113 $shortopt = substr($shortopts, $i, 1); 114 if(substr($shortopts, $i + 1, 2) == '::') 115 { 116 $optional = true; 117 $hasarg = true; 118 $i += 2; 119 } 120 else if(substr($shortopts, $i + 1, 1) == ':') 121 { 122 $hasarg = true; 123 } 124 if($nextarg 125 == 126 ('-' . $shortopt)) 127 { 128 $opt = '-' . $shortopt; 129 if($hasarg && ! $optional) 130 { 131 if(($myoptind + 1) < $argc) 132 { 133 $myoptind ++; 134 $skipopts ++; 135 $arg = $argv[$myoptind]; 136 } 137 else 138 { 139 throw new MygetoptException("option \"$opt\" requires an argument"); 140 } 141 } 142 break; 143 } 144 else if(substr($nextarg, 0, strlen('-' . $shortopt)) 145 == 146 ('-' . $shortopt)) 147 { 148 $opt = '-' . $shortopt; 149 if($hasarg) 150 { 151 $arg = substr($nextarg, strlen($opt)); 152 } 153 else 154 { 155 $argv[$myoptind] = '-' . substr($nextarg, strlen($opt)); 156 $myoptind --; 157 $skipopts = 0; 158 } 159 } 160 } 161 } 162 if($opt === NULL) 163 { 164 if(substr($nextarg, 0, strlen('--')) == '--') 165 { 166 $longopt = substr($nextarg, strlen('--')); 167 if(strpos($longopt, '=') !== false) 168 { 169 $longopt = substr($longopt, 0, strpos($longopt, '=')); 170 } 171 throw new MygetoptException("option \"--$longopt\" is not recognized"); 172 } 173 $shortopt = substr($nextarg, strlen('-'), 1); 174 throw new MygetoptException("option \"-$shortopt\" is not recognized"); 175 } 176 $ret = array($opt, $arg); 177 } 178 if ($skipopts > 0) 179 { 180 for($i = 0; $i < $argc; $i ++) 181 { 182 if(($i < $skipopt) || ($i >= ($skipopt + $skipopts))) 183 { 184 $new_argv[] = $argv[$i]; 185 } 186 } 187 if($myoptind >= $skipopt) 188 { 189 $myoptind -= $skipopts; 190 } 191 $argv = $new_argv; 192 $argc = count($argv); 193 } 194 } 195 return $ret; 196 } 197 22 198 function usage($argc, $argv) 23 199 { … … 74 250 $gamma = $brightness = $contrast = -1.0; 75 251 76 if($argc < 2)77 {78 fprintf(STDERR, "%s: wrong argument count\n", $argv[0]);79 usage($argc, $argv);80 return 1;81 }82 83 252 $long_options = array( 84 "width:" 85 "height:" 86 "font-width:" 87 "font-height:" 88 "format:" 89 "dither:" 90 "gamma:" 91 "brightness:" 92 "contrast:" 93 "help" 94 "version" 253 "width:" => 'W', 254 "height:" => 'H', 255 "font-width:" => 'x', 256 "font-height:" => 'y', 257 "format:" => 'f', 258 "dither:" => 'd', 259 "gamma:" => 'g', 260 "brightness:" => 'b', 261 "contrast:" => 'c', 262 "help" => 'h', 263 "version" => 'v' 95 264 ); 96 $options = getopt("W:H:f:d:g:b:c:hvx:y:", array_keys($long_options)); 97 if (! $options) 98 { 99 /* PHP before 5.3 or so does not have long option support in 100 * most cases */ 101 $options = getopt("W:H:f:d:g:b:c:hvx:y:"); 102 } 103 104 foreach($options as $opt => $arg) 105 { 106 if (array_key_exists($opt + (isset($arg) ? ':' : ''), $long_options)) 107 { 108 $opt = $long_options[$opt + (isset($arg) ? ':' : '')]; 265 266 while($opt_and_arg = mygetopt("W:H:f:d:g:b:c:hvx:y:", array_keys($long_options))) 267 { 268 $opt = $opt_and_arg[0]; 269 $arg = $opt_and_arg[1]; 270 if((substr($opt, 0, 2) == '--') 271 && 272 array_key_exists(substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : ''), $long_options)) 273 { 274 $opt = '-' . $long_options[substr($opt, strlen('--')) . (($arg !== NULL) ? ':' : '')]; 109 275 } 110 276 switch($opt) 111 277 { 112 case ' W': /* --width */278 case '-W': /* --width */ 113 279 $cols = intval($arg); 114 280 break; 115 case ' H': /* --height */281 case '-H': /* --height */ 116 282 $lines = intval($arg); 117 283 break; 118 case ' x': /* --width */284 case '-x': /* --width */ 119 285 $font_width = intval($arg); 120 286 break; 121 case ' y': /* --height */287 case '-y': /* --height */ 122 288 $font_height = intval($arg); 123 289 break; 124 case ' f': /* --format */290 case '-f': /* --format */ 125 291 $format = $arg; 126 292 break; 127 case ' d': /* --dither */293 case '-d': /* --dither */ 128 294 $dither = $arg; 129 295 break; 130 case ' g': /* --gamma */296 case '-g': /* --gamma */ 131 297 $gamma = floatval($arg); 132 298 break; 133 case ' b': /* --brightness */299 case '-b': /* --brightness */ 134 300 $brightness = floatval($arg); 135 301 break; 136 case ' c': /* --contrast */302 case '-c': /* --contrast */ 137 303 $contrast = floatval($arg); 138 304 break; 139 case ' h': /* --help */305 case '-h': /* --help */ 140 306 usage($argc, $argv); 141 307 return 0; 142 case ' v': /* --version */308 case '-v': /* --version */ 143 309 version(); 144 310 return 0; … … 148 314 } 149 315 316 if($argc != 2) 317 { 318 fprintf(STDERR, "%s: wrong argument count\n", $argv[0]); 319 usage($argc, $argv); 320 return 1; 321 } 150 322 151 323 $cv = caca_create_canvas(0, 0);
Note: See TracChangeset
for help on using the changeset viewer.