iliaa Wed Jan 8 15:36:03 2003 EDT
Modified files:
/php4/ext/standard image.c php_image.h
Log:
Added support for WBMP images.
Index: php4/ext/standard/image.c
diff -u php4/ext/standard/image.c:1.80 php4/ext/standard/image.c:1.81
--- php4/ext/standard/image.c:1.80 Tue Dec 31 11:07:42 2002
+++ php4/ext/standard/image.c Wed Jan 8 15:36:03 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: image.c,v 1.80 2002/12/31 16:07:42 sebastian Exp $ */
+/* $Id: image.c,v 1.81 2003/01/08 20:36:03 iliaa Exp $ */
#include "php.h"
#include <stdio.h>
@@ -84,6 +84,7 @@
REGISTER_LONG_CONSTANT("IMAGETYPE_SWC", IMAGE_FILETYPE_SWC, CONST_CS |
CONST_PERSISTENT);
#endif
REGISTER_LONG_CONSTANT("IMAGETYPE_IFF", IMAGE_FILETYPE_IFF, CONST_CS |
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMAGETYPE_WBMP", IMAGE_FILETYPE_WBMP, CONST_CS |
+CONST_PERSISTENT);
return SUCCESS;
}
/* }}} */
@@ -786,6 +787,78 @@
}
/* }}} */
+/* {{{ php_get_wbmp
+ * int WBMP file format type
+ * byte Header Type
+ * byte Extended Header
+ * byte Header Data (type 00 = multibyte)
+ * byte Header Data (type 11 = name/pairs)
+ * int Number of columns
+ * int Number of rows
+ */
+static int php_get_wbmp(php_stream *stream, struct gfxinfo **result, int check
+TSRMLS_DC)
+{
+ int i, width = 0, height = 0;
+
+ if (php_stream_rewind(stream)) {
+ return 0;
+ }
+
+ /* get type */
+ if (php_stream_getc(stream) != 0) {
+ return 0;
+ }
+
+ /* skip header */
+ do {
+ i = php_stream_getc(stream);
+ if (i < 0) {
+ return 0;
+ }
+ } while (i & 0x80);
+
+ /* get width */
+ do {
+ i = php_stream_getc(stream);
+ if (i < 0) {
+ return 0;
+ }
+ width = (width << 7) | (i & 0x7f);
+ } while (i & 0x80);
+
+ /* get height */
+ do {
+ i = php_stream_getc(stream);
+ if (i < 0) {
+ return 0;
+ }
+ height = (height << 7) | (i & 0x7f);
+ } while (i & 0x80);
+
+ if (!check) {
+ (*result)->width = width;
+ (*result)->height = height;
+ }
+
+ return IMAGE_FILETYPE_WBMP;
+}
+/* }}} */
+
+/* {{{ php_handle_wbmp
+*/
+static struct gfxinfo *php_handle_wbmp(php_stream * stream TSRMLS_DC)
+{
+ struct gfxinfo *result = (struct gfxinfo *) ecalloc(1, sizeof(struct gfxinfo));
+
+ if (!php_get_wbmp(stream, &result, 0 TSRMLS_CC)) {
+ efree(result);
+ return NULL;
+ }
+
+ return result;
+}
+/* }}} */
+
/* {{{ php_image_type_to_mime_type
* Convert internal image_type to mime type */
PHPAPI const char * php_image_type_to_mime_type(int image_type)
@@ -810,6 +883,8 @@
return "image/tiff";
case IMAGE_FILETYPE_IFF:
return "image/iff";
+ case IMAGE_FILETYPE_WBMP:
+ return "image/vnd.wap.wbmp";
default:
case IMAGE_FILETYPE_UNKNOWN:
return "application/octet-stream"; /* suppose binary format */
@@ -878,6 +953,9 @@
if (!memcmp(filetype, php_sig_iff, 4)) {
return IMAGE_FILETYPE_IFF;
}
+ if (php_get_wbmp(stream, NULL, 1 TSRMLS_DC)) {
+ return IMAGE_FILETYPE_WBMP;
+ }
return IMAGE_FILETYPE_UNKNOWN;
}
@@ -966,6 +1044,10 @@
break;
case IMAGE_FILETYPE_IFF:
result = php_handle_iff(stream TSRMLS_CC);
+ break;
+ case IMAGE_FILETYPE_WBMP:
+ result = php_handle_wbmp(stream TSRMLS_CC);
+ break;
default:
case IMAGE_FILETYPE_UNKNOWN:
break;
Index: php4/ext/standard/php_image.h
diff -u php4/ext/standard/php_image.h:1.20 php4/ext/standard/php_image.h:1.21
--- php4/ext/standard/php_image.h:1.20 Tue Dec 31 11:07:51 2002
+++ php4/ext/standard/php_image.h Wed Jan 8 15:36:03 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_image.h,v 1.20 2002/12/31 16:07:51 sebastian Exp $ */
+/* $Id: php_image.h,v 1.21 2003/01/08 20:36:03 iliaa Exp $ */
#ifndef PHP_IMAGE_H
#define PHP_IMAGE_H
@@ -46,6 +46,7 @@
IMAGE_FILETYPE_JB2,
IMAGE_FILETYPE_SWC,
IMAGE_FILETYPE_IFF,
+ IMAGE_FILETYPE_WBMP,
/* WHEN EXTENDING: PLEASE ALSO REGISTER IN image.c:PHP_MINIT_FUNCTION(imagetypes) */
} image_filetype;
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php