Changeset 3079 for libpipi


Ignore:
Timestamp:
Oct 24, 2008, 12:20:07 AM (12 years ago)
Author:
nico
Message:

Add php binding for functions:

pipi_dither_ordered_ext, pipi_dither_halftone, pipi_median_ext, pipi_median,
pipi_threshold, pipi_box_blur_ext, pipi_box_blur, pipi_get_command_list

Add sample program "examples/example1.php"

Location:
libpipi/trunk/pipi-php
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/pipi-php/php_pipi.c

    r3069 r3079  
    193193
    194194PHP_FUNCTION(pipi_get_command_list) {
     195        pipi_command_t const *list;
     196        pipi_command_t const *cmd;
     197        list = pipi_get_command_list();
     198
     199        array_init(return_value);
     200        for (cmd = list; cmd->name; cmd++)
     201                add_assoc_long(return_value, (char*) cmd->name, cmd->argc);
    195202}
    196203
     
    215222
    216223PHP_FUNCTION(pipi_new) {
    217         long width = 0;
    218         long height = 0;
     224        long width, height = 0;
    219225        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &width, &height) == FAILURE) {
    220226                RETURN_FALSE;
     
    287293
    288294PHP_FUNCTION(pipi_measure_msd) {
    289         pipi_image_t *img1;
    290         pipi_image_t *img2;
     295        pipi_image_t *img1, *img2;
    291296        FETCH_IMG_IMG(img1, img2);
    292297        RETURN_LONG(pipi_measure_msd(img1, img2));
     
    294299
    295300PHP_FUNCTION(pipi_measure_rmsd) {
    296         pipi_image_t *img1;
    297         pipi_image_t *img2;
     301        pipi_image_t *img1, *img2;
    298302        FETCH_IMG_IMG(img1, img2);
    299303        RETURN_LONG(pipi_measure_rmsd(img1, img2));
     
    302306PHP_FUNCTION(pipi_resize) {
    303307        zval *_zval;
    304         long width = 0;
    305         long height = 0;
     308        long width, height = 0;
    306309        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &width, &height) == FAILURE) {
    307310                RETURN_FALSE;
     
    316319
    317320PHP_FUNCTION(pipi_render_random) {
    318         long width = 0;
    319         long height = 0;
     321        long width, height = 0;
    320322        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &width, &height) == FAILURE) {
    321323                RETURN_FALSE;
     
    327329
    328330PHP_FUNCTION(pipi_render_bayer) {
    329         long width = 0;
    330         long height = 0;
     331        long width, height = 0;
    331332        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &width, &height) == FAILURE) {
    332333                RETURN_FALSE;
     
    338339
    339340PHP_FUNCTION(pipi_render_halftone) {
    340         long width = 0;
    341         long height = 0;
     341        long width, height = 0;
    342342        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &width, &height) == FAILURE) {
    343343                RETURN_FALSE;
     
    349349
    350350PHP_FUNCTION(pipi_rgb) {
    351         zval *_zval1;
    352         zval *_zval2;
    353         zval *_zval3;
     351        zval *_zval1, *_zval2, *_zval3;
    354352        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrr", &_zval1, &_zval2, &_zval3) == FAILURE) {
    355353                RETURN_FALSE;
    356354        }
    357355
    358         pipi_image_t *img_r;
    359         pipi_image_t *img_g;
    360         pipi_image_t *img_b;
    361 
     356        pipi_image_t *img_r, *img_g, *img_b;
    362357        ZEND_FETCH_RESOURCE(img_r, pipi_image_t*, &_zval1, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
    363358        ZEND_FETCH_RESOURCE(img_g, pipi_image_t*, &_zval2, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     
    394389
    395390PHP_FUNCTION(pipi_mean) {
    396         pipi_image_t *img1;
    397         pipi_image_t *img2;
     391        pipi_image_t *img1, *img2;
    398392        FETCH_IMG_IMG(img1, img2);
    399393        pipi_image_t *result;
     
    403397
    404398PHP_FUNCTION(pipi_min) {
    405         pipi_image_t *img1;
    406         pipi_image_t *img2;
     399        pipi_image_t *img1, *img2;
    407400        FETCH_IMG_IMG(img1, img2);
    408401        pipi_image_t *result;
     
    412405
    413406PHP_FUNCTION(pipi_max) {
    414         pipi_image_t *img1;
    415         pipi_image_t *img2;
     407        pipi_image_t *img1, *img2;
    416408        FETCH_IMG_IMG(img1, img2);
    417409        pipi_image_t *result;
     
    421413
    422414PHP_FUNCTION(pipi_add) {
    423         pipi_image_t *img1;
    424         pipi_image_t *img2;
     415        pipi_image_t *img1, *img2;
    425416        FETCH_IMG_IMG(img1, img2);
    426417        pipi_image_t *result;
     
    430421
    431422PHP_FUNCTION(pipi_sub) {
    432         pipi_image_t *img1;
    433         pipi_image_t *img2;
     423        pipi_image_t *img1, *img2;
    434424        FETCH_IMG_IMG(img1, img2);
    435425        pipi_image_t *result;
     
    439429
    440430PHP_FUNCTION(pipi_difference) {
    441         pipi_image_t *img1;
    442         pipi_image_t *img2;
     431        pipi_image_t *img1, *img2;
    443432        FETCH_IMG_IMG(img1, img2);
    444433        pipi_image_t *result;
     
    448437
    449438PHP_FUNCTION(pipi_multiply) {
    450         pipi_image_t *img1;
    451         pipi_image_t *img2;
     439        pipi_image_t *img1, *img2;
    452440        FETCH_IMG_IMG(img1, img2);
    453441        pipi_image_t *result;
     
    457445
    458446PHP_FUNCTION(pipi_divide) {
    459         pipi_image_t *img1;
    460         pipi_image_t *img2;
     447        pipi_image_t *img1, *img2;
    461448        FETCH_IMG_IMG(img1, img2);
    462449        pipi_image_t *result;
     
    466453
    467454PHP_FUNCTION(pipi_screen) {
    468         pipi_image_t *img1;
    469         pipi_image_t *img2;
     455        pipi_image_t *img1, *img2;
    470456        FETCH_IMG_IMG(img1, img2);
    471457        pipi_image_t *result;
     
    475461
    476462PHP_FUNCTION(pipi_overlay) {
    477         pipi_image_t *img1;
    478         pipi_image_t *img2;
     463        pipi_image_t *img1, *img2;
    479464        FETCH_IMG_IMG(img1, img2);
    480465        pipi_image_t *result;
     
    487472
    488473PHP_FUNCTION(pipi_gaussian_blur) {
     474        zval *_zval;
     475        double value = 0;
     476        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) {
     477                RETURN_FALSE;
     478        }
     479        pipi_image_t *src;
     480        ZEND_FETCH_RESOURCE(src, pipi_image_t*, &_zval, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     481
     482        pipi_image_t *result;
     483        result = pipi_gaussian_blur(src, value);
     484        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    489485}
    490486
    491487PHP_FUNCTION(pipi_gaussian_blur_ext) {
     488        zval *_zval;
     489        double v1, v2, v3, v4, v5 = 0;
     490        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rddddd", &_zval, &v1, &v2, &v3, &v4, &v5) == FAILURE) {
     491                RETURN_FALSE;
     492        }
     493        pipi_image_t *src;
     494        ZEND_FETCH_RESOURCE(src, pipi_image_t*, &_zval, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     495
     496        pipi_image_t *result;
     497        result = pipi_gaussian_blur_ext(src, v1, v2, v3, v4, v5);
     498        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    492499}
    493500
    494501PHP_FUNCTION(pipi_box_blur) {
    495 }
    496 
    497 PHP_FUNCTION(pipi_box_blur_ext) {
    498 }
    499 
    500 PHP_FUNCTION(pipi_brightness) {
    501502        zval *_zval;
    502503        long value = 0;
     
    508509
    509510        pipi_image_t *result;
     511        result = pipi_box_blur(src, value);
     512        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     513}
     514
     515PHP_FUNCTION(pipi_box_blur_ext) {
     516        zval *_zval;
     517        long m, n = 0;
     518        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &m, &n) == FAILURE) {
     519                RETURN_FALSE;
     520        }
     521        pipi_image_t *src;
     522        ZEND_FETCH_RESOURCE(src, pipi_image_t*, &_zval, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     523
     524        pipi_image_t *result;
     525        result = pipi_box_blur_ext(src, m, n);
     526        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     527}
     528
     529PHP_FUNCTION(pipi_brightness) {
     530        zval *_zval;
     531        double value = 0;
     532        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) {
     533                RETURN_FALSE;
     534        }
     535        pipi_image_t *src;
     536        ZEND_FETCH_RESOURCE(src, pipi_image_t*, &_zval, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     537
     538        pipi_image_t *result;
    510539        result = pipi_brightness(src, value);
    511540        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     
    513542
    514543PHP_FUNCTION(pipi_contrast) {
     544        zval *_zval;
     545        double value = 0;
     546        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) {
     547                RETURN_FALSE;
     548        }
     549        pipi_image_t *src;
     550        ZEND_FETCH_RESOURCE(src, pipi_image_t*, &_zval, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     551
     552        pipi_image_t *result;
     553        result = pipi_contrast(src, value);
     554        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     555}
     556
     557PHP_FUNCTION(pipi_autocontrast) {
     558        pipi_image_t *src;
     559        FETCH_IMG(src);
     560        pipi_image_t *result;
     561        result = pipi_autocontrast(src);
     562        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     563}
     564
     565PHP_FUNCTION(pipi_invert) {
     566        pipi_image_t *src;
     567        FETCH_IMG(src);
     568        pipi_image_t *result;
     569        result = pipi_invert(src);
     570        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     571}
     572
     573PHP_FUNCTION(pipi_threshold) {
     574        zval *_zval;
     575        double value = 0;
     576        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &_zval, &value) == FAILURE) {
     577                RETURN_FALSE;
     578        }
     579        pipi_image_t *src;
     580        ZEND_FETCH_RESOURCE(src, pipi_image_t*, &_zval, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     581
     582        pipi_image_t *result;
     583        result = pipi_threshold(src, value);
     584        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     585}
     586
     587PHP_FUNCTION(pipi_hflip) {
     588        pipi_image_t *src;
     589        FETCH_IMG(src);
     590        pipi_image_t *result;
     591        result = pipi_hflip(src);
     592        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     593}
     594
     595PHP_FUNCTION(pipi_vflip) {
     596        pipi_image_t *src;
     597        FETCH_IMG(src);
     598        pipi_image_t *result;
     599        result = pipi_vflip(src);
     600        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     601}
     602
     603PHP_FUNCTION(pipi_rotate90) {
     604        pipi_image_t *src;
     605        FETCH_IMG(src);
     606        pipi_image_t *result;
     607        result = pipi_rotate90(src);
     608        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     609}
     610
     611PHP_FUNCTION(pipi_rotate180) {
     612        pipi_image_t *src;
     613        FETCH_IMG(src);
     614        pipi_image_t *result;
     615        result = pipi_rotate180(src);
     616        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     617}
     618
     619PHP_FUNCTION(pipi_rotate270) {
     620        pipi_image_t *src;
     621        FETCH_IMG(src);
     622        pipi_image_t *result;
     623        result = pipi_rotate270(src);
     624        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
     625}
     626
     627PHP_FUNCTION(pipi_median) {
    515628        zval *_zval;
    516629        long value = 0;
     
    522635
    523636        pipi_image_t *result;
    524         result = pipi_contrast(src, value);
    525         ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    526 }
    527 
    528 PHP_FUNCTION(pipi_autocontrast) {
    529         pipi_image_t *src;
    530         FETCH_IMG(src);
    531         pipi_image_t *result;
    532         result = pipi_autocontrast(src);
    533         ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    534 }
    535 
    536 PHP_FUNCTION(pipi_invert) {
    537         pipi_image_t *src;
    538         FETCH_IMG(src);
    539         pipi_image_t *result;
    540         result = pipi_invert(src);
    541         ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    542 }
    543 
    544 PHP_FUNCTION(pipi_threshold) {
    545 }
    546 
    547 PHP_FUNCTION(pipi_hflip) {
    548         pipi_image_t *src;
    549         FETCH_IMG(src);
    550         pipi_image_t *result;
    551         result = pipi_hflip(src);
    552         ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    553 }
    554 
    555 PHP_FUNCTION(pipi_vflip) {
    556         pipi_image_t *src;
    557         FETCH_IMG(src);
    558         pipi_image_t *result;
    559         result = pipi_vflip(src);
    560         ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    561 }
    562 
    563 PHP_FUNCTION(pipi_rotate90) {
    564         pipi_image_t *src;
    565         FETCH_IMG(src);
    566         pipi_image_t *result;
    567         result = pipi_rotate90(src);
    568         ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    569 }
    570 
    571 PHP_FUNCTION(pipi_rotate180) {
    572         pipi_image_t *src;
    573         FETCH_IMG(src);
    574         pipi_image_t *result;
    575         result = pipi_rotate180(src);
    576         ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    577 }
    578 
    579 PHP_FUNCTION(pipi_rotate270) {
    580         pipi_image_t *src;
    581         FETCH_IMG(src);
    582         pipi_image_t *result;
    583         result = pipi_rotate270(src);
    584         ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    585 }
    586 
    587 PHP_FUNCTION(pipi_median) {
     637        result = pipi_median(src, value);
     638        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    588639}
    589640
    590641PHP_FUNCTION(pipi_median_ext) {
     642        zval *_zval;
     643        long rx, ry = 0;
     644        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &rx, &ry) == FAILURE) {
     645                RETURN_FALSE;
     646        }
     647        pipi_image_t *src;
     648        ZEND_FETCH_RESOURCE(src, pipi_image_t*, &_zval, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     649
     650        pipi_image_t *result;
     651        result = pipi_median_ext(src, rx, ry);
     652        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    591653}
    592654
     
    617679PHP_FUNCTION(pipi_tile) {
    618680        zval *_zval;
    619         long width = 0;
    620         long height = 0;
     681        long width, height = 0;
    621682        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &_zval, &width, &height) == FAILURE) {
    622683                RETURN_FALSE;
     
    649710
    650711PHP_FUNCTION(pipi_dither_ordered) {
    651         pipi_image_t *img1;
    652         pipi_image_t *img2;
     712        pipi_image_t *img1, *img2;
    653713        FETCH_IMG_IMG(img1, img2);
    654714        pipi_image_t *result;
     
    658718
    659719PHP_FUNCTION(pipi_dither_ordered_ext) {
     720        zval *_zval1;
     721        zval *_zval2;
     722        double precision, angle = 0;
     723        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrdd", &_zval1, &_zval2, &precision, &angle) == FAILURE) {
     724                RETURN_FALSE;
     725        }
     726        pipi_image_t *img1, *img2;
     727        ZEND_FETCH_RESOURCE(img1, pipi_image_t*, &_zval1, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     728        ZEND_FETCH_RESOURCE(img2, pipi_image_t*, &_zval2, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     729
     730        pipi_image_t *result;
     731        result = pipi_dither_ordered_ext(img1, img2, precision, angle);
     732        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    660733}
    661734
    662735PHP_FUNCTION(pipi_dither_halftone) {
     736        zval *_zval;
     737        double r, angle = 0;
     738        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rdd", &_zval, &r, &angle) == FAILURE) {
     739                RETURN_FALSE;
     740        }
     741        pipi_image_t *src;
     742        ZEND_FETCH_RESOURCE(src, pipi_image_t*, &_zval, -1, PHP_PIPI_IMAGE_RES_NAME, le_pipi_image);
     743
     744        pipi_image_t *result;
     745        result = pipi_dither_halftone(src, r, angle);
     746        ZEND_REGISTER_RESOURCE(return_value, result, le_pipi_image);
    663747}
    664748
Note: See TracChangeset for help on using the changeset viewer.