Changeset 3298 for libcaca/trunk/caca-php/php_caca.c
- Timestamp:
- Nov 6, 2008, 8:45:11 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca-php/php_caca.c
r3291 r3298 228 228 le_caca_display = zend_register_list_destructors_ex(php_caca_display_dtor, NULL, PHP_CACA_DISPLAY_RES_NAME, module_number); 229 229 le_caca_event = zend_register_list_destructors_ex(php_caca_event_dtor, NULL, PHP_CACA_EVENT_RES_NAME, module_number); 230 230 231 231 REGISTER_LONG_CONSTANT("CACA_BLACK", CACA_BLACK, CONST_CS | CONST_PERSISTENT); 232 232 REGISTER_LONG_CONSTANT("CACA_BLUE", CACA_BLUE, CONST_CS | CONST_PERSISTENT); … … 326 326 RETURN_FALSE; \ 327 327 } \ 328 ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 328 ZEND_FETCH_RESOURCE(canvas, caca_canvas_t*, &_zval, -1, PHP_CACA_CANVAS_RES_NAME, le_caca_canvas); 329 329 330 330 #define FETCH_DISPLAY(display) \ … … 333 333 RETURN_FALSE; \ 334 334 } \ 335 ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 335 ZEND_FETCH_RESOURCE(display, caca_display_t*, &_zval, -1, PHP_CACA_DISPLAY_RES_NAME, le_caca_display); 336 336 337 337 #define FETCH_EVENT(event) \ … … 340 340 RETURN_FALSE; \ 341 341 } \ 342 ZEND_FETCH_RESOURCE(event, caca_event_t*, &_zval, -1, PHP_CACA_EVENT_RES_NAME, le_caca_event); 342 ZEND_FETCH_RESOURCE(event, caca_event_t*, &_zval, -1, PHP_CACA_EVENT_RES_NAME, le_caca_event); 343 343 344 344 #define FETCH_LONG(l) \ … … 364 364 int resource_type; 365 365 void *result = zend_list_find(resource_id, &resource_type); 366 if (!result) 366 if (!result) 367 367 return NULL; 368 368 char *resource_type_name = zend_rsrc_list_get_rsrc_type(resource_id); … … 375 375 void *gd_get_pixels(gdImage *img) { 376 376 void *result; 377 int j, pitch;377 int i, j, pitch; 378 378 if (img->trueColor) { 379 379 pitch = img->sx * sizeof(int); 380 380 result = malloc(img->sy * pitch); 381 for (j = 0; j < img->sy; j++) 382 memcpy(result + (j * pitch), (const void *) img->tpixels[j], pitch); 381 if (result) 382 { 383 for (i = 0; i < img->sy; i++) { 384 for (j = 0; j < img->sx; j++) { 385 uint8_t *dst = ((uint8_t *) result) + i * pitch + j * 4; 386 387 dst[0] = (127 - (img->tpixels[i][j] & 0x7f000000) >> 24); 388 dst[1] = (img->tpixels[i][j] & 0x00ff0000) >> 16; 389 dst[2] = (img->tpixels[i][j] & 0x0000ff00) >> 8; 390 dst[3] = img->tpixels[i][j] & 0x000000ff; 391 } 392 } 393 } 383 394 } 384 395 else { … … 448 459 caca_canvas_t *canvas; 449 460 FETCH_CANVAS(canvas); 450 RETURN_STRING((char *) caca_get_canvas_chars(canvas), 1); 461 RETURN_STRING((char *) caca_get_canvas_chars(canvas), 1); 451 462 } 452 463 … … 779 790 tbl_x = malloc(sizeof(int) * lenmax); 780 791 tbl_y = malloc(sizeof(int) * lenmax); 781 792 782 793 HashPosition pos; 783 794 zval **pt, **x, **y; 784 795 for ( 785 zend_hash_internal_pointer_reset_ex(arr_hash, &pos); 786 zend_hash_get_current_data_ex(arr_hash, (void**) &pt, &pos) == SUCCESS; 796 zend_hash_internal_pointer_reset_ex(arr_hash, &pos); 797 zend_hash_get_current_data_ex(arr_hash, (void**) &pt, &pos) == SUCCESS; 787 798 zend_hash_move_forward_ex(arr_hash, &pos) 788 799 ) { 789 800 if ( 790 Z_TYPE_P(*pt) == IS_ARRAY 801 Z_TYPE_P(*pt) == IS_ARRAY 791 802 && (zend_hash_index_find(Z_ARRVAL_P(*pt), 0, (void**) &x) != FAILURE) 792 803 && (zend_hash_index_find(Z_ARRVAL_P(*pt), 1, (void**) &y) != FAILURE) … … 835 846 RETURN_FALSE; 836 847 } 837 848 838 849 HashPosition pos; 839 850 zval **pt, **x, **y; 840 851 for ( 841 zend_hash_internal_pointer_reset_ex(arr_hash, &pos); 842 zend_hash_get_current_data_ex(arr_hash, (void**) &pt, &pos) == SUCCESS; 852 zend_hash_internal_pointer_reset_ex(arr_hash, &pos); 853 zend_hash_get_current_data_ex(arr_hash, (void**) &pt, &pos) == SUCCESS; 843 854 zend_hash_move_forward_ex(arr_hash, &pos) 844 855 ) { 845 856 if ( 846 Z_TYPE_P(*pt) == IS_ARRAY 857 Z_TYPE_P(*pt) == IS_ARRAY 847 858 && (zend_hash_index_find(Z_ARRVAL_P(*pt), 0, (void**) &x) != FAILURE) 848 859 && (zend_hash_index_find(Z_ARRVAL_P(*pt), 1, (void**) &y) != FAILURE) … … 1176 1187 char const * const *list = caca_get_dither_antialias_list(dither); 1177 1188 int i; 1178 array_init(return_value); 1189 array_init(return_value); 1179 1190 for(i = 0; list[i]; i += 1) 1180 1191 add_next_index_string(return_value, (char*) list[i], 1); … … 1213 1224 char const * const *list = caca_get_dither_antialias_list(dither); 1214 1225 int i; 1215 array_init(return_value); 1226 array_init(return_value); 1216 1227 for(i = 0; list[i]; i += 2) 1217 1228 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); … … 1250 1261 char const * const *list = caca_get_dither_charset_list(dither); 1251 1262 int i; 1252 array_init(return_value); 1263 array_init(return_value); 1253 1264 for(i = 0; list[i]; i += 2) 1254 1265 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); … … 1287 1298 char const * const *list = caca_get_dither_algorithm_list(dither); 1288 1299 int i; 1289 array_init(return_value); 1300 array_init(return_value); 1290 1301 for(i = 0; list[i]; i += 2) 1291 1302 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); … … 1372 1383 char const * const *list = caca_get_font_list(); 1373 1384 int i; 1374 array_init(return_value); 1385 array_init(return_value); 1375 1386 for(i = 0; list[i]; i += 1) 1376 1387 add_next_index_string(return_value, (char*) list[i], 1); … … 1408 1419 1409 1420 int i; 1410 array_init(return_value); 1421 array_init(return_value); 1411 1422 for(i = 0; list[i]; i += 1) 1412 1423 add_next_index_long(return_value, list[i]); … … 1440 1451 for (j = 0; j < img->sx; j++) { 1441 1452 uint8_t *src = buffer + i * pitch + j * 4; 1442 img->tpixels[i][j] = *(src + 3) | (*(src + 2) << 8) | (*(src + 1) << 16) | (( *(src + 0) & 0xfe) << 23);1453 img->tpixels[i][j] = *(src + 3) | (*(src + 2) << 8) | (*(src + 1) << 16) | (((127 - *(src + 0)) & 0xfe) << 23); 1443 1454 } 1444 1455 } 1445 1456 1446 1457 free(buffer); 1447 1458 RETURN_TRUE; … … 1541 1552 caca_file_read(file, buffer, len); 1542 1553 1543 RETURN_STRINGL(buffer, len, 1); 1554 RETURN_STRINGL(buffer, len, 1); 1544 1555 } 1545 1556 … … 1576 1587 RETURN_FALSE; 1577 1588 } 1578 RETURN_STRINGL(result, len, 1); 1589 RETURN_STRINGL(result, len, 1); 1579 1590 } 1580 1591 … … 1621 1632 char const * const *list = caca_get_import_list(); 1622 1633 int i; 1623 array_init(return_value); 1634 array_init(return_value); 1624 1635 for(i = 0; list[i]; i += 2) 1625 1636 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); … … 1646 1657 free(buffer); 1647 1658 1648 RETURN_STRINGL((char*) copy, len, 0); 1659 RETURN_STRINGL((char*) copy, len, 0); 1649 1660 } 1650 1661 … … 1655 1666 char const * const *list = caca_get_export_list(); 1656 1667 int i; 1657 array_init(return_value); 1668 array_init(return_value); 1658 1669 for(i = 0; list[i]; i += 2) 1659 1670 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); … … 1694 1705 char const * const *list = caca_get_display_driver_list(); 1695 1706 int i; 1696 array_init(return_value); 1707 array_init(return_value); 1697 1708 for(i = 0; list[i]; i += 2) 1698 1709 add_assoc_string(return_value, (char*) list[i], (char*) list[i + 1], 1); … … 1821 1832 1822 1833 if (caca_get_event_type(event) == CACA_EVENT_NONE) { 1823 efree(event); 1834 efree(event); 1824 1835 RETURN_FALSE; 1825 1836 }
Note: See TracChangeset
for help on using the changeset viewer.