ohrn            Fri Mar 30 12:36:19 2001 EDT

  Modified files:              
    /php4/ext/cpdf      cpdf.c php_cpdf.h 
  Log:
  Implemented cpdf_set_viewer_preferences (previously a stub).
  Added new functions: cpdf_set_font_directories and cpdf_set_font_map_file.
  
  
Index: php4/ext/cpdf/cpdf.c
diff -u php4/ext/cpdf/cpdf.c:1.22 php4/ext/cpdf/cpdf.c:1.23
--- php4/ext/cpdf/cpdf.c:1.22   Thu Feb 15 06:48:56 2001
+++ php4/ext/cpdf/cpdf.c        Fri Mar 30 12:36:18 2001
@@ -27,7 +27,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: cpdf.c,v 1.22 2001/02/15 14:48:56 thies Exp $ */
+/* $Id: cpdf.c,v 1.23 2001/03/30 20:36:18 ohrn Exp $ */
 /* cpdflib.h -- C language API definitions for ClibPDF library
  * Copyright (C) 1998 FastIO Systems, All Rights Reserved.
 */
@@ -97,6 +97,8 @@
        PHP_FE(cpdf_text, NULL)
        PHP_FE(cpdf_continue_text, NULL)
        PHP_FE(cpdf_set_font, NULL)
+       PHP_FE(cpdf_set_font_directories, NULL)
+       PHP_FE(cpdf_set_font_map_file, NULL)
        PHP_FE(cpdf_set_leading, NULL)
        PHP_FE(cpdf_set_text_rendering, NULL)
        PHP_FE(cpdf_set_horiz_scaling, NULL)
@@ -176,6 +178,17 @@
 {
        CPDF_GLOBAL(le_outline) = zend_register_list_destructors_ex(_free_outline, 
NULL, "cpdf outline", module_number);
        CPDF_GLOBAL(le_cpdf) = zend_register_list_destructors_ex(_free_doc, NULL, 
"cpdf", module_number);
+
+       REGISTER_LONG_CONSTANT("CPDF_PM_NONE", PM_NONE, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("CPDF_PM_OUTLINES", PM_OUTLINES, CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("CPDF_PM_THUMBS", PM_THUMBS, CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("CPDF_PM_FULLSCREEN", PM_FULLSCREEN, CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("CPDF_PL_SINGLE", PL_SINGLE, CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("CPDF_PL_1COLUMN", PL_1COLUMN, CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("CPDF_PL_2LCOLUMN", PL_2LCOLUMN, CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("CPDF_PL_2RCOLUMN", PL_2RCOLUMN, CONST_CS | 
+CONST_PERSISTENT);
+
+
        return SUCCESS;
 }
 
@@ -335,32 +348,77 @@
 }
 /* }}} */
 
-/* {{{ proto void cpdf_set_viewer_preferences(int pdfdoc, int pagemode)
-   How to show the document by the viewer */
+/* {{{ proto void cpdf_set_viewer_preferences(int pdfdoc, array preferences)
+   How to show the document in the viewer */
 PHP_FUNCTION(cpdf_set_viewer_preferences) {
-       pval *argv[6];
-       int id, type, pagemode;
-       int argc;
+       zval *arg1, *arg2;
+       zval **zvalue;
+
+       int id, type;
+
        CPDFdoc *pdf;
+       CPDFviewerPrefs vP = { 0, 0, 0, 0, 0, 0, 0, 0 };
        CPDF_TLS_VARS;
 
-       argc = ZEND_NUM_ARGS();
-       if(argc < 1 || argc > 2)
+       if(ZEND_NUM_ARGS() != 2)
                WRONG_PARAM_COUNT;
-       if (getParametersArray(ht, argc, argv) == FAILURE)
+
+       if (getParameters(ht, 2, &arg1, &arg2) == FAILURE)
                WRONG_PARAM_COUNT;
 
-       convert_to_long(argv[0]);
-       convert_to_long(argv[1]);
-       id=argv[0]->value.lval;
-       pagemode=argv[1]->value.lval;
+       convert_to_long(arg1);
+       convert_to_array(arg2);
+
+       id = Z_LVAL_P (arg1);
+
        pdf = zend_list_find(id,&type);
        if(!pdf || type!=CPDF_GLOBAL(le_cpdf)) {
                php_error(E_WARNING,"Unable to find identifier %d",id);
                RETURN_FALSE;
        }
+
+       if (zend_hash_find (arg2->value.ht, "pagemode", sizeof ("pagemode"), (void **) 
+&zvalue) == SUCCESS)
+       {
+               convert_to_long_ex (zvalue);
+               vP.pageMode = Z_LVAL_PP (zvalue);
+       }
+       if (zend_hash_find (arg2->value.ht, "hidetoolbar", sizeof ("hidetoolbar"), 
+(void **) &zvalue) == SUCCESS)
+       {
+               convert_to_long_ex (zvalue);
+               vP.hideToolbar = Z_LVAL_PP (zvalue);
+       }
+       if (zend_hash_find (arg2->value.ht, "hidemenubar", sizeof ("hidemenubar"), 
+(void **) &zvalue) == SUCCESS)
+       {
+               convert_to_long_ex (zvalue);
+               vP.hideMenubar = Z_LVAL_PP (zvalue);
+       }
+       if (zend_hash_find (arg2->value.ht, "hidewindowui", sizeof ("hidewindowui"), 
+(void **) &zvalue) == SUCCESS)
+       {
+               convert_to_long_ex (zvalue);
+               vP.hideWindowUI = Z_LVAL_PP (zvalue);
+       }
+       if (zend_hash_find (arg2->value.ht, "fitwindow", sizeof ("fitwindow"), (void 
+**) &zvalue) == SUCCESS)
+       {
+               convert_to_long_ex (zvalue);
+               vP.fitWindow = Z_LVAL_PP (zvalue);
+       }
+       if (zend_hash_find (arg2->value.ht, "centerwindow", sizeof ("centerwindow"), 
+(void **) &zvalue) == SUCCESS)
+       {
+               convert_to_long_ex (zvalue);
+               vP.centerWindow = Z_LVAL_PP (zvalue);
+       }
+       if (zend_hash_find (arg2->value.ht, "pagelayout", sizeof ("pagelayout"), (void 
+**) &zvalue) == SUCCESS)
+       {
+               convert_to_long_ex (zvalue);
+               vP.pageLayout = Z_LVAL_PP (zvalue);
+       }
+       if (zend_hash_find (arg2->value.ht, "nonfspagemode", sizeof ("nonfspagemode"), 
+(void **) &zvalue) == SUCCESS)
+       {
+               convert_to_long_ex (zvalue);
+               vP.nonFSPageMode = Z_LVAL_PP (zvalue);
+       }
 
-/*     cpdf_setViewerPreferences(pdf, pagemode, 0, 0, 0, 0, 0, 0, pagemode); */
+       cpdf_setViewerPreferences(pdf, &vP);
 
        RETURN_TRUE;
 }
@@ -810,6 +868,61 @@
        }
 */
        cpdf_setFont(pdf, arg2->value.str.val, arg4->value.str.val, (float) 
arg3->value.dval);
+
+       RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto void cpdf_set_font_directories(int pdfdoc, string pfmdir, string pfbdir)
+   Set directories to search when using external fonts. */
+PHP_FUNCTION(cpdf_set_font_directories) {
+       pval *arg1, *arg2, *arg3;
+       int id, type;
+       CPDFdoc *pdf;
+       CPDF_TLS_VARS;
+
+       if (ZEND_NUM_ARGS() != 3 || getParameters(ht, 3, &arg1, &arg2, &arg3) == 
+FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       convert_to_long(arg1);
+       convert_to_string(arg2);
+       convert_to_string(arg3);
+       id=arg1->value.lval;
+       pdf = zend_list_find(id,&type);
+       if(!pdf || type!=CPDF_GLOBAL(le_cpdf)) {
+               php_error(E_WARNING,"Unable to find identifier %d",id);
+               RETURN_FALSE;
+       }
+
+       cpdf_setFontDirectories(pdf, arg2->value.str.val, arg3->value.str.val);
+
+       RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto void cpdf_set_font_map_file(int pdfdoc, string filename)
+   Set fontname to filename translation map when using external fonts. */
+PHP_FUNCTION(cpdf_set_font_map_file) {
+       pval *arg1, *arg2;
+       int id, type;
+       CPDFdoc *pdf;
+       CPDF_TLS_VARS;
+
+       if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       convert_to_long(arg1);
+       convert_to_string(arg2);
+       id=arg1->value.lval;
+       pdf = zend_list_find(id,&type);
+       if(!pdf || type!=CPDF_GLOBAL(le_cpdf)) {
+               php_error(E_WARNING,"Unable to find identifier %d",id);
+               RETURN_FALSE;
+       }
+
+       cpdf_setFontMapFile(pdf, arg2->value.str.val);
 
        RETURN_TRUE;
 }
Index: php4/ext/cpdf/php_cpdf.h
diff -u php4/ext/cpdf/php_cpdf.h:1.7 php4/ext/cpdf/php_cpdf.h:1.8
--- php4/ext/cpdf/php_cpdf.h:1.7        Sun Mar 18 10:32:58 2001
+++ php4/ext/cpdf/php_cpdf.h    Fri Mar 30 12:36:18 2001
@@ -26,7 +26,7 @@
    | Authors: Uwe Steinmann                                               |
    +----------------------------------------------------------------------+
  */
-/* $Id: php_cpdf.h,v 1.7 2001/03/18 18:32:58 ohrn Exp $ */
+/* $Id: php_cpdf.h,v 1.8 2001/03/30 20:36:18 ohrn Exp $ */
 
 #ifndef PHP_CPDF_H
 #define PHP_CPDF_H
@@ -67,6 +67,8 @@
 PHP_FUNCTION(cpdf_continue_text);
 PHP_FUNCTION(cpdf_text);
 PHP_FUNCTION(cpdf_set_font);
+PHP_FUNCTION(cpdf_set_font_directories);
+PHP_FUNCTION(cpdf_set_font_map_file);
 PHP_FUNCTION(cpdf_set_leading);
 PHP_FUNCTION(cpdf_set_text_rendering);
 PHP_FUNCTION(cpdf_set_horiz_scaling);



-- 
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