ソースを参照

Add php binding for pipi_command

Add a php rewrite of pipi.c in examples/


git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3086 92316355-f0b4-4df1-b90c-862c8a59935f
remotes/tiles
nico 16年前
コミット
b060a687ba
3個のファイルの変更64行の追加2行の削除
  1. +2
    -2
      pipi-php/examples/histogram.php
  2. +48
    -0
      pipi-php/examples/pipi.php
  3. +14
    -0
      pipi-php/php_pipi.c

+ 2
- 2
pipi-php/examples/histogram.php ファイルの表示

@@ -5,7 +5,7 @@ $img = pipi_contrast($img, 0.98);

$histogram = pipi_new_histogram();
$histogram_img = pipi_new(320, 200);
echo pipi_get_image_histogram($img, $histogram, 1);
echo pipi_render_histogram($img_histogram, $histogram, 1);
pipi_get_image_histogram($img, $histogram, 1);
pipi_render_histogram($img_histogram, $histogram, 1);

pipi_save($histogram_img, "out.png");

+ 48
- 0
pipi-php/examples/pipi.php ファイルの表示

@@ -0,0 +1,48 @@
#!/usr/bin/php5
<?
$aliases = array(
"-o" => "--save",
"--output" => "--save"
);

$ctx = pipi_create_context();
$list = pipi_get_command_list();

for ($argi = 1; $argi < $argc; $argi++) {

$arg = $argv[$argi];
if (isset($aliases[$arg]))
$arg = $aliases[$arg];

if (substr($arg, 0, 2) == "--") {
$cmd_name = substr($arg, 2);

if (!isset($list[$cmd_name])) {
die("unknown command $cmd_name\n");
}
$cmd_argc = $list[$cmd_name];
if ($argi + $cmd_argc > $argc) {
die("too few arguments for $arg_name\n");
}

switch ($cmd_argc) {
case 0:
$res = pipi_command($ctx, $cmd_name);
break;
case 1:
$res = pipi_command($ctx, $cmd_name, $argv[$argi + 1]);
break;
default:
die();
}
if ($res != 0) {
die("command $cmd_name failed\n");
}
$argi += $cmd_argc;
}
else {
if (pipi_command($ctx, "load", $arg) != 0)
die("could not load $arg\n");
}
}

+ 14
- 0
pipi-php/php_pipi.c ファイルの表示

@@ -202,6 +202,20 @@ PHP_FUNCTION(pipi_get_command_list) {
}

PHP_FUNCTION(pipi_command) {
zval *res;
char *arg1, *arg2 = NULL;
int arg1_len, arg2_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|s", &res, &arg1, &arg1_len, &arg2, &arg2_len) == FAILURE) {
RETURN_FALSE;
}

pipi_context_t *ctxt;
ZEND_FETCH_RESOURCE(ctxt, pipi_context_t*, &res, -1, PHP_PIPI_CONTEXT_RES_NAME, le_pipi_context);

if (arg2_len != 0) {
RETURN_LONG(pipi_command(ctxt, arg1, arg2));
}
RETURN_LONG(pipi_command(ctxt, arg1));
}

PHP_FUNCTION(pipi_load) {


読み込み中…
キャンセル
保存