rjs             Thu Mar  1 11:51:54 2001 EDT

  Modified files:              
    /php4/ext/pdf       pdf.c php_pdf.h 
  Log:
  - integrated new functions vor PDFlib V4.0 (beta1)
  - all functions accepting strings now support binary strings, by calling
    the appropriate PDF*2() functions.
  
  
Index: php4/ext/pdf/pdf.c
diff -u php4/ext/pdf/pdf.c:1.73 php4/ext/pdf/pdf.c:1.74
--- php4/ext/pdf/pdf.c:1.73     Sun Feb 25 22:07:11 2001
+++ php4/ext/pdf/pdf.c  Thu Mar  1 11:51:53 2001
@@ -17,7 +17,8 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: pdf.c,v 1.73 2001/02/26 06:07:11 andi Exp $ */
+/* $Id: pdf.c,v 1.74 2001/03/01 19:51:53 rjs Exp $ */
+/* Id: pdf.c,v 1.73 2001/02/26 06:07:11 andi Exp  */
 
 /* pdflib 2.02 ... 3.0x is subject to the ALADDIN FREE PUBLIC LICENSE.
    Copyright (C) 1997-1999 Thomas Merz. 2000-2001 PDFlib GmbH */
@@ -57,6 +58,9 @@
  */
 #define PDFLIB_IMAGE_OFFSET    1
 #define PDFLIB_FONT_OFFSET     1
+#define PDFLIB_PDI_OFFSET      1
+#define PDFLIB_PATTERN_OFFSET  1
+#define PDFLIB_SPOT_OFFSET     1
 
 function_entry pdf_functions[] = {
        /* sorry for sorting this stuff like the pdflib manual,
@@ -109,12 +113,6 @@
        PHP_FE(pdf_closepath_fill_stroke, NULL)
        PHP_FE(pdf_clip, NULL)
        PHP_FE(pdf_endpath, NULL)
-       PHP_FE(pdf_setgray_fill, NULL)
-       PHP_FE(pdf_setgray_stroke, NULL)
-       PHP_FE(pdf_setgray, NULL)
-       PHP_FE(pdf_setrgbcolor_fill, NULL)
-       PHP_FE(pdf_setrgbcolor_stroke, NULL)
-       PHP_FE(pdf_setrgbcolor, NULL)
        PHP_FE(pdf_open_image_file, NULL)  /* new parameters: [char *stringpram, int 
intparam] */
        PHP_FE(pdf_open_ccitt, NULL)    /* new function */
        PHP_FE(pdf_open_image, NULL)    /* new function */
@@ -174,6 +172,33 @@
 #if HAVE_LIBGD13
        PHP_FE(pdf_open_memory_image, NULL)
 #endif
+       /* depreciatet after V4.0 of PDFlib */
+       PHP_FE(pdf_setgray_fill, NULL)
+       PHP_FE(pdf_setgray_stroke, NULL)
+       PHP_FE(pdf_setgray, NULL)
+       PHP_FE(pdf_setrgbcolor_fill, NULL)
+       PHP_FE(pdf_setrgbcolor_stroke, NULL)
+       PHP_FE(pdf_setrgbcolor, NULL)
+
+#if (PDFLIB_MAJORVERSION >= 4)
+/* support for new functions in PDFlib V4.0 */
+       PHP_FE(pdf_open_pdi, NULL)
+       PHP_FE(pdf_close_pdi, NULL)
+       PHP_FE(pdf_open_pdi_page, NULL)
+       PHP_FE(pdf_close_pdi_page, NULL)
+       PHP_FE(pdf_get_pdi_parameter, NULL)
+       PHP_FE(pdf_get_pdi_value, NULL)
+       PHP_FE(pdf_begin_pattern, NULL)
+       PHP_FE(pdf_end_pattern, NULL)
+       PHP_FE(pdf_begin_template, NULL)
+       PHP_FE(pdf_end_template, NULL)
+       PHP_FE(pdf_setcolor, NULL)
+       PHP_FE(pdf_makespotcolor, NULL)
+       PHP_FE(pdf_arcn, NULL)
+       PHP_FE(pdf_add_thumbnail, NULL)
+       PHP_FE(pdf_initgraphics, NULL)
+       PHP_FE(pdf_setmatrix, NULL)
+#endif /* PDFlib >= V4 */
 
        {NULL, NULL, NULL}
 };
@@ -263,14 +288,22 @@
 
        php_info_print_table_start();
        php_info_print_table_row(2, "PDF Support", "enabled" );
+#if (PDFLIB_MAJORVERSION >= 4)
+       php_info_print_table_row(2, "PDFlib GmbH Version", PDFLIB_VERSIONSTRING );
+#else
        php_info_print_table_row(2, "PDFlib GmbH Version", tmp );
-       php_info_print_table_row(2, "Revision", "$Revision: 1.73 $" );
+#endif
+       php_info_print_table_row(2, "Revision", "$Revision: 1.74 $" );
        php_info_print_table_end();
 
 }
 
 PHP_MINIT_FUNCTION(pdf)
 {
+       if ((PDF_get_majorversion() != PDFLIB_MAJORVERSION) ||
+                       (PDF_get_minorversion() != PDFLIB_MINORVERSION)) {
+               php_error(E_ERROR,"PDFlib error: Version mismatch in wrapper code");
+       }
        le_pdf = zend_register_list_destructors_ex(_free_pdf_doc, NULL, "pdf object", 
module_number);
 
        /* this does something like setlocale("C", ...) in PDFlib 3.x */
@@ -469,7 +502,7 @@
        ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
 
        convert_to_string_ex(arg2);
-       PDF_show(pdf, Z_STRVAL_PP(arg2));
+       PDF_show2(pdf, Z_STRVAL_PP(arg2), Z_STRLEN_PP(arg2));
        RETURN_TRUE;
 }
 /* }}} */
@@ -490,7 +523,7 @@
        convert_to_string_ex(arg2);
        convert_to_double_ex(arg3);
        convert_to_double_ex(arg4);
-       PDF_show_xy(pdf, Z_STRVAL_PP(arg2), (float) Z_DVAL_PP(arg3), (float) 
Z_DVAL_PP(arg4));
+       PDF_show_xy2(pdf, Z_STRVAL_PP(arg2), Z_STRLEN_PP(arg2), (float) 
+Z_DVAL_PP(arg3), (float) Z_DVAL_PP(arg4));
        RETURN_TRUE;
 }
 /* }}} */
@@ -803,7 +836,7 @@
        ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
 
        convert_to_string_ex(arg2);
-       PDF_continue_text(pdf, Z_STRVAL_PP(arg2));
+       PDF_continue_text2(pdf, Z_STRVAL_PP(arg2), Z_STRLEN_PP(arg2));
        RETURN_TRUE;
 }
 /* }}} */
@@ -843,7 +876,12 @@
            convert_to_double_ex(arg4);
            size = Z_DVAL_PP(arg4);
        }
-       width = (double) PDF_stringwidth(pdf, Z_STRVAL_PP(arg2), 
font-PDFLIB_FONT_OFFSET, size);
+       width = (double) PDF_stringwidth2(pdf,
+               Z_STRVAL_PP(arg2),
+               Z_STRLEN_PP(arg2),
+               font-PDFLIB_FONT_OFFSET,
+               (float)size);
+
        RETURN_DOUBLE((double) width);
 }
 /* }}} */
@@ -1903,7 +1941,7 @@
        ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
        convert_to_long_ex(arg2);
 
-       width = (int) PDF_get_value(pdf, "imagewidth", 
Z_LVAL_PP(arg2)-PDFLIB_IMAGE_OFFSET);
+       width = (int) PDF_get_value(pdf, "imagewidth", 
+(float)Z_LVAL_PP(arg2)-PDFLIB_IMAGE_OFFSET);
        RETURN_LONG(width);
 }
 /* }}} */
@@ -1923,7 +1961,7 @@
        ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
        convert_to_long_ex(arg2);
 
-       height = (int) PDF_get_value(pdf, "imageheight", 
Z_LVAL_PP(arg2)-PDFLIB_IMAGE_OFFSET);
+       height = (int) PDF_get_value(pdf, "imageheight", 
+(float)Z_LVAL_PP(arg2)-PDFLIB_IMAGE_OFFSET);
        RETURN_LONG(height);
 }
 /* }}} */
@@ -2306,7 +2344,7 @@
        zval **arg1, **arg2, **arg3, **arg4, **arg5, **arg6, **arg7;
        PDF *pdf;
 
-       if (ZEND_NUM_ARGS() != 6 || zend_get_parameters_ex(6, &arg1, &arg2, &arg3, 
&arg4, &arg5, &arg6, &arg7) == FAILURE) {
+       if (ZEND_NUM_ARGS() != 7 || zend_get_parameters_ex(7, &arg1, &arg2, &arg3, 
+&arg4, &arg5, &arg6, &arg7) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
 
@@ -2317,6 +2355,7 @@
        convert_to_double_ex(arg4);
        convert_to_double_ex(arg5);
        convert_to_double_ex(arg6);
+       convert_to_double_ex(arg7);
 
        PDF_concat(pdf,
            (float) Z_DVAL_PP(arg2),
@@ -2545,6 +2584,408 @@
        RETURN_TRUE;
 }
 /* }}} */
+
+#if (PDFLIB_MAJORVERSION >= 4)
+
+/* {{{ proto int pdf_open_pdi(int pdf, string filename, string stringparam, int 
+intparam);
+ * Open an existing PDF document and prepare it for later use. */
+PHP_FUNCTION(pdf_open_pdi) {
+       zval **arg1, **arg2, **arg3, **arg4;
+       PDF *pdf;
+       int pdi_handle;
+       char *file;
+
+       if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &arg1, &arg2, &arg3, 
+&arg4) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_string_ex(arg2);
+       convert_to_string_ex(arg3);
+       convert_to_long_ex(arg4);
+
+#ifdef VIRTUAL_DIR
+       virtual_filepath(Z_STRVAL_PP(arg2), &file);
+#else
+       file = Z_STRVAL_PP(arg2);
+#endif  
+
+       pdi_handle = PDF_open_pdi(pdf,
+               file,
+               Z_STRVAL_PP(arg3),
+               Z_LVAL_PP(arg4));
+
+       RETURN_LONG(pdi_handle+PDFLIB_PDI_OFFSET);
+}
+
+/* {{{ proto void pdf_close_pdi(int pdf, int doc);
+ * Close all open page handles, and close the input PDF document. */
+PHP_FUNCTION(pdf_close_pdi) {
+       zval **arg1, **arg2;
+       PDF *pdf;
+
+       if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == 
+FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_long_ex(arg2);
+
+       PDF_close_pdi(pdf,
+               Z_LVAL_PP(arg2)-PDFLIB_PDI_OFFSET);
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto int pdf_open_pdi_page(int pdf, int doc, int page, string label);
+ * Prepare a page for later use with PDF_place_image(). */
+PHP_FUNCTION(pdf_open_pdi_page) {
+       zval **arg1, **arg2, **arg3, **arg4;
+       PDF *pdf;
+       int pdi_image;
+
+       if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &arg1, &arg2, &arg3, 
+&arg4) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_long_ex(arg2);
+       convert_to_long_ex(arg3);
+       convert_to_string_ex(arg4);
+
+       pdi_image = PDF_open_pdi_page(pdf,
+               Z_LVAL_PP(arg2)-PDFLIB_PDI_OFFSET,
+               Z_LVAL_PP(arg3),
+               Z_STRVAL_PP(arg4));
+
+       RETURN_LONG(pdi_image+PDFLIB_IMAGE_OFFSET);
+}
+
+/* {{{ proto void pdf_close_pdi_page(int pdf, int doc, int page);
+ * Close the page handle, and free all page-related resources. */
+PHP_FUNCTION(pdf_close_pdi_page) {
+       zval **arg1, **arg2, **arg3;
+       PDF *pdf;
+
+       if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == 
+FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_long_ex(arg2);
+       convert_to_long_ex(arg3);
+
+       PDF_close_pdi_page(pdf,
+               Z_LVAL_PP(arg2)-PDFLIB_PDI_OFFSET,
+               Z_LVAL_PP(arg3)-PDFLIB_IMAGE_OFFSET);
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto string pdf_get_pdi_parameter(int pdf, string key, int doc, int page, int 
+index);
+ * Get the contents of some PDI document parameter with string type. */
+PHP_FUNCTION(pdf_get_pdi_parameter) {
+       zval **arg1, **arg2, **arg3, **arg4, **arg5;
+       PDF *pdf;
+       const char *buffer;
+       int size;
+
+       if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &arg1, &arg2, &arg3, 
+&arg4, &arg5) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_string_ex(arg2);
+       convert_to_long_ex(arg3);
+       convert_to_long_ex(arg4);
+       convert_to_long_ex(arg5);
+
+       buffer = PDF_get_pdi_parameter(pdf,
+               Z_STRVAL_PP(arg2),
+               Z_LVAL_PP(arg3)-PDFLIB_PDI_OFFSET,
+               Z_LVAL_PP(arg4)-PDFLIB_IMAGE_OFFSET,
+               Z_LVAL_PP(arg5),
+               &size);
+
+       RETURN_STRINGL((char *)buffer, size, 1);
+}
+
+/* {{{ proto double pdf_get_pdi_value(int pdf, string key, int doc, int page, int 
+index);
+ * Get the contents of some PDI document parameter with numerical type. */
+PHP_FUNCTION(pdf_get_pdi_value) {
+       zval **arg1, **arg2, **arg3, **arg4, **arg5;
+       PDF *pdf;
+       double value;
+
+       if (ZEND_NUM_ARGS() != 5 || zend_get_parameters_ex(5, &arg1, &arg2, &arg3, 
+&arg4, &arg5) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_string_ex(arg2);
+       convert_to_long_ex(arg3);
+       convert_to_long_ex(arg4);
+       convert_to_long_ex(arg5);
+
+       value = (double)PDF_get_pdi_value(pdf,
+               Z_STRVAL_PP(arg2),
+               Z_LVAL_PP(arg3)-PDFLIB_PDI_OFFSET,
+               Z_LVAL_PP(arg4)-PDFLIB_IMAGE_OFFSET,
+               Z_LVAL_PP(arg5));
+
+       RETURN_DOUBLE(value);
+}
+
+/* {{{ proto int pdf_begin_pattern(int pdf, double width, double height, double 
+xstep, double ystep, int painttype);
+ * Start a new pattern definition. */
+PHP_FUNCTION(pdf_begin_pattern) {
+       zval **arg1, **arg2, **arg3, **arg4, **arg5, **arg6;
+       PDF *pdf;
+       int pattern_image;
+
+       if (ZEND_NUM_ARGS() != 6 || zend_get_parameters_ex(6, &arg1, &arg2, &arg3, 
+&arg4, &arg5, &arg6) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_double_ex(arg2);
+       convert_to_double_ex(arg3);
+       convert_to_double_ex(arg4);
+       convert_to_double_ex(arg5);
+       convert_to_long_ex(arg6);
+
+       pattern_image = PDF_begin_pattern(pdf,
+               (float) Z_DVAL_PP(arg2),
+               (float) Z_DVAL_PP(arg3),
+               (float) Z_DVAL_PP(arg4),
+               (float) Z_DVAL_PP(arg5),
+               Z_LVAL_PP(arg6));
+
+       RETURN_LONG(pattern_image+PDFLIB_PATTERN_OFFSET);
+}
+
+/* {{{ proto void pdf_end_pattern(int pdf);
+ * Finish the pattern definition. */
+PHP_FUNCTION(pdf_end_pattern) {
+       zval **arg1;
+       PDF *pdf;
+
+       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       PDF_end_pattern(pdf);
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto int pdf_begin_template(int pdf, double width, double height);
+ * Start a new template definition. */
+PHP_FUNCTION(pdf_begin_template) {
+       zval **arg1, **arg2, **arg3;
+       PDF *pdf;
+       int tmpl_image;
+
+       if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == 
+FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_double_ex(arg2);
+       convert_to_double_ex(arg3);
+
+       tmpl_image = PDF_begin_template(pdf,
+               (float) Z_DVAL_PP(arg2),
+               (float) Z_DVAL_PP(arg3));
+
+       RETURN_LONG(tmpl_image+PDFLIB_IMAGE_OFFSET);
+}
+
+/* {{{ proto void pdf_end_template(int pdf);
+ * Finish the template definition. */
+PHP_FUNCTION(pdf_end_template) {
+       zval **arg1;
+       PDF *pdf;
+
+       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+
+       PDF_end_template(pdf);
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto void pdf_setcolor(int pdf, string type, string colorspace, double c1, 
+double c2, double c3, double c4);
+ * Set the current color space and color. */
+PHP_FUNCTION(pdf_setcolor) {
+       zval **arg1, **arg2, **arg3, **arg4, **arg5, **arg6, **arg7;
+       PDF *pdf;
+       int c1;
+
+       if (ZEND_NUM_ARGS() != 7 || zend_get_parameters_ex(7, &arg1, &arg2, &arg3, 
+&arg4, &arg5, &arg6, &arg7) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_string_ex(arg2);
+       convert_to_string_ex(arg3);
+       convert_to_double_ex(arg4);
+       convert_to_double_ex(arg5);
+       convert_to_double_ex(arg6);
+       convert_to_double_ex(arg7);
+
+       if (0 == (strcmp(Z_STRVAL_PP(arg3), "spot"))) {
+           c1 = (int) Z_DVAL_PP(arg4)-PDFLIB_SPOT_OFFSET;
+       } else if(0 == (strcmp(Z_STRVAL_PP(arg3), "pattern"))) {
+           c1 = (int) Z_DVAL_PP(arg4)-PDFLIB_PATTERN_OFFSET;
+       } else {
+           c1 = (float) Z_DVAL_PP(arg4);
+       }
+
+       PDF_setcolor(pdf,
+               Z_STRVAL_PP(arg2),
+               Z_STRVAL_PP(arg3),
+               (float) c1,
+               (float) Z_DVAL_PP(arg5),
+               (float) Z_DVAL_PP(arg6),
+               (float) Z_DVAL_PP(arg7));
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto int pdf_makespotcolor(int pdf, string spotname);
+ * Make a named spot color from the current color. */
+PHP_FUNCTION(pdf_makespotcolor) {
+       zval **arg1, **arg2;
+       PDF *pdf;
+       int spotcolor;
+
+       if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == 
+FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_string_ex(arg2);
+
+       spotcolor = PDF_makespotcolor(pdf,
+               Z_STRVAL_PP(arg2),
+               Z_STRLEN_PP(arg2));
+
+       RETURN_LONG(spotcolor+PDFLIB_SPOT_OFFSET);
+}
+
+/* {{{ proto void pdf_arcn(int pdf, double x, double y, double r, double alpha, 
+double beta);
+ * Draw a clockwise circular arc from alpha to beta degrees. */
+PHP_FUNCTION(pdf_arcn) {
+       zval **arg1, **arg2, **arg3, **arg4, **arg5, **arg6;
+       PDF *pdf;
+
+       if (ZEND_NUM_ARGS() != 6 || zend_get_parameters_ex(6, &arg1, &arg2, &arg3, 
+&arg4, &arg5, &arg6) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_double_ex(arg2);
+       convert_to_double_ex(arg3);
+       convert_to_double_ex(arg4);
+       convert_to_double_ex(arg5);
+       convert_to_double_ex(arg6);
+
+       PDF_arcn(pdf,
+               (float) Z_DVAL_PP(arg2),
+               (float) Z_DVAL_PP(arg3),
+               (float) Z_DVAL_PP(arg4),
+               (float) Z_DVAL_PP(arg5),
+               (float) Z_DVAL_PP(arg6));
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto void pdf_initgraphics(int pdf);
+ * Reset all implicit color and graphics state parameters to their defaults. */
+PHP_FUNCTION(pdf_initgraphics) {
+       zval **arg1;
+       PDF *pdf;
+
+       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       PDF_initgraphics(pdf);
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto void pdf_add_thumbnail(int pdf, int image);
+ * Add an existing image as thumbnail for the current page. */
+PHP_FUNCTION(pdf_add_thumbnail) {
+       zval **arg1, **arg2;
+       PDF *pdf;
+
+       if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == 
+FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_long_ex(arg2);
+
+       PDF_add_thumbnail(pdf,
+               Z_LVAL_PP(arg2)-PDFLIB_IMAGE_OFFSET);
+
+       RETURN_TRUE;
+}
+
+/* {{{ proto void pdf_setmatrix(int pdf, double a, double b, double c, double d, 
+double e, double f)
+   Explicitly set the current transformation matrix. */
+PHP_FUNCTION(pdf_setmatrix) {
+       zval **arg1, **arg2, **arg3, **arg4, **arg5, **arg6, **arg7;
+       PDF *pdf;
+
+       if (ZEND_NUM_ARGS() != 7 || zend_get_parameters_ex(7, &arg1, &arg2, &arg3, 
+&arg4, &arg5, &arg6, &arg7) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf);
+
+       convert_to_double_ex(arg2);
+       convert_to_double_ex(arg3);
+       convert_to_double_ex(arg4);
+       convert_to_double_ex(arg5);
+       convert_to_double_ex(arg6);
+       convert_to_double_ex(arg7);
+
+       PDF_setmatrix(pdf,
+           (float) Z_DVAL_PP(arg2),
+           (float) Z_DVAL_PP(arg3),
+           (float) Z_DVAL_PP(arg4),
+           (float) Z_DVAL_PP(arg5),
+           (float) Z_DVAL_PP(arg6),
+           (float) Z_DVAL_PP(arg7));
+
+       RETURN_TRUE;
+}
+
+#endif /* PDFlib >= V4 */
 
 #endif
 
Index: php4/ext/pdf/php_pdf.h
diff -u php4/ext/pdf/php_pdf.h:1.14 php4/ext/pdf/php_pdf.h:1.15
--- php4/ext/pdf/php_pdf.h:1.14 Sun Feb 25 22:07:12 2001
+++ php4/ext/pdf/php_pdf.h      Thu Mar  1 11:51:54 2001
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_pdf.h,v 1.14 2001/02/26 06:07:12 andi Exp $ */
+/* $Id: php_pdf.h,v 1.15 2001/03/01 19:51:54 rjs Exp $ */
 
 #ifndef PHP_PDF_H
 #define PHP_PDF_H
@@ -145,6 +145,26 @@
 #if HAVE_LIBGD13
 PHP_FUNCTION(pdf_open_memory_image);
 #endif
+
+#if (PDFLIB_MAJORVERSION >= 4)
+/* support for new functions in PDFlib V4.0 */
+PHP_FUNCTION(pdf_open_pdi);
+PHP_FUNCTION(pdf_close_pdi);
+PHP_FUNCTION(pdf_open_pdi_page);
+PHP_FUNCTION(pdf_close_pdi_page);
+PHP_FUNCTION(pdf_get_pdi_parameter);
+PHP_FUNCTION(pdf_get_pdi_value);
+PHP_FUNCTION(pdf_begin_pattern);
+PHP_FUNCTION(pdf_end_pattern);
+PHP_FUNCTION(pdf_setcolor);
+PHP_FUNCTION(pdf_makespotcolor);
+PHP_FUNCTION(pdf_begin_template);
+PHP_FUNCTION(pdf_end_template);
+PHP_FUNCTION(pdf_arcn);
+PHP_FUNCTION(pdf_add_thumbnail);
+PHP_FUNCTION(pdf_initgraphics);
+PHP_FUNCTION(pdf_setmatrix);
+#endif /* PDFlib >= V4 */
 
 #ifdef ZTS
 #define PDFG(v) (pdf_globals->v)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to