From 253b9d9116d5885cc3be43e80b361c58c4f79629 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Thu, 24 Jan 2013 22:14:39 +0000 Subject: [PATCH] 2013-01-24 23:13 UTC+0100 Viktor Szakats (harbour syenar.net) + contrib/hbhpdf/error.prg + contrib/hbhpdf/tests/test.prg * contrib/hbhpdf/hbhpdf.hbp * contrib/hbhpdf/hbhpdf.hbx * contrib/hbhpdf/tests/harupdf.prg + hb_HPDF_GetErrorString( ) -> + test code * contrib/hbmzip/mziperr.prg * cleanups --- harbour/ChangeLog.txt | 15 ++ harbour/contrib/hbhpdf/error.prg | 177 +++++++++++++++++++++++ harbour/contrib/hbhpdf/hbhpdf.hbp | 1 + harbour/contrib/hbhpdf/hbhpdf.hbx | 1 + harbour/contrib/hbhpdf/tests/harupdf.prg | 6 +- harbour/contrib/hbhpdf/tests/test.prg | 16 ++ harbour/contrib/hbmzip/mziperr.prg | 12 +- 7 files changed, 225 insertions(+), 3 deletions(-) create mode 100644 harbour/contrib/hbhpdf/error.prg create mode 100644 harbour/contrib/hbhpdf/tests/test.prg diff --git a/harbour/ChangeLog.txt b/harbour/ChangeLog.txt index f42b529e39..9e3f5ddce7 100644 --- a/harbour/ChangeLog.txt +++ b/harbour/ChangeLog.txt @@ -10,6 +10,18 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2013-01-24 23:13 UTC+0100 Viktor Szakats (harbour syenar.net) + + contrib/hbhpdf/error.prg + + contrib/hbhpdf/tests/test.prg + * contrib/hbhpdf/hbhpdf.hbp + * contrib/hbhpdf/hbhpdf.hbx + * contrib/hbhpdf/tests/harupdf.prg + + hb_HPDF_GetErrorString( ) -> + + test code + + * contrib/hbmzip/mziperr.prg + * cleanups + 2013-01-24 19:37 UTC+0100 Viktor Szakats (harbour syenar.net) * contrib/hbhpdf/hbhpdf.hbx * casing of new func @@ -27,6 +39,9 @@ * contrib/xhb/*.prg * HTML + * contrib/xhb/dumpvar.prg + % optimizations + * contrib/hbhpdf/*.c * tests/wvtext.prg * src/rtl/itemseri.c diff --git a/harbour/contrib/hbhpdf/error.prg b/harbour/contrib/hbhpdf/error.prg new file mode 100644 index 0000000000..5056e58f69 --- /dev/null +++ b/harbour/contrib/hbhpdf/error.prg @@ -0,0 +1,177 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * libharu supplementary functions (error strings) + * + * Copyright 2013 Viktor Szakats (harbour syenar.net) + * www - http://harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING.txt. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + +#include "harupdf.ch" + +/* NOTE: Error descriptions here: + https://github.com/libharu/libharu/wiki/Error-handling + http://libharu.sourceforge.net/error_handling.html + */ + +FUNCTION hb_HPDF_GetErrorString( nStatus ) + + IF ! HB_ISNUMERIC( nStatus ) + RETURN "HB_HPDF_INVALID" + ENDIF + + SWITCH nStatus + CASE HPDF_OK ; RETURN "HPDF_OK" + CASE HPDF_ARRAY_COUNT_ERR ; RETURN "HPDF_ARRAY_COUNT_ERR" + CASE HPDF_ARRAY_ITEM_NOT_FOUND ; RETURN "HPDF_ARRAY_ITEM_NOT_FOUND" + CASE HPDF_ARRAY_ITEM_UNEXPECTED_TYPE ; RETURN "HPDF_ARRAY_ITEM_UNEXPECTED_TYPE" + CASE HPDF_BINARY_LENGTH_ERR ; RETURN "HPDF_BINARY_LENGTH_ERR" + CASE HPDF_CANNOT_GET_PALLET ; RETURN "HPDF_CANNOT_GET_PALLET" + CASE HPDF_DICT_COUNT_ERR ; RETURN "HPDF_DICT_COUNT_ERR" + CASE HPDF_DICT_ITEM_NOT_FOUND ; RETURN "HPDF_DICT_ITEM_NOT_FOUND" + CASE HPDF_DICT_ITEM_UNEXPECTED_TYPE ; RETURN "HPDF_DICT_ITEM_UNEXPECTED_TYPE" + CASE HPDF_DICT_STREAM_LENGTH_NOT_FOUND ; RETURN "HPDF_DICT_STREAM_LENGTH_NOT_FOUND" + CASE HPDF_DOC_ENCRYPTDICT_NOT_FOUND ; RETURN "HPDF_DOC_ENCRYPTDICT_NOT_FOUND" + CASE HPDF_DOC_INVALID_OBJECT ; RETURN "HPDF_DOC_INVALID_OBJECT" + CASE HPDF_DUPLICATE_REGISTRATION ; RETURN "HPDF_DUPLICATE_REGISTRATION" + CASE HPDF_EXCEED_JWW_CODE_NUM_LIMIT ; RETURN "HPDF_EXCEED_JWW_CODE_NUM_LIMIT" + CASE HPDF_ENCRYPT_INVALID_PASSWORD ; RETURN "HPDF_ENCRYPT_INVALID_PASSWORD" + CASE HPDF_ERR_UNKNOWN_CLASS ; RETURN "HPDF_ERR_UNKNOWN_CLASS" + CASE HPDF_EXCEED_GSTATE_LIMIT ; RETURN "HPDF_EXCEED_GSTATE_LIMIT" + CASE HPDF_FAILD_TO_ALLOC_MEM ; RETURN "HPDF_FAILD_TO_ALLOC_MEM" + CASE HPDF_FILE_IO_ERROR ; RETURN "HPDF_FILE_IO_ERROR" + CASE HPDF_FILE_OPEN_ERROR ; RETURN "HPDF_FILE_OPEN_ERROR" + CASE HPDF_FONT_EXISTS ; RETURN "HPDF_FONT_EXISTS" + CASE HPDF_FONT_INVALID_WIDTHS_TABLE ; RETURN "HPDF_FONT_INVALID_WIDTHS_TABLE" + CASE HPDF_INVALID_AFM_HEADER ; RETURN "HPDF_INVALID_AFM_HEADER" + CASE HPDF_INVALID_ANNOTATION ; RETURN "HPDF_INVALID_ANNOTATION" + CASE HPDF_INVALID_BIT_PER_COMPONENT ; RETURN "HPDF_INVALID_BIT_PER_COMPONENT" + CASE HPDF_INVALID_CHAR_MATRICS_DATA ; RETURN "HPDF_INVALID_CHAR_MATRICS_DATA" + CASE HPDF_INVALID_COLOR_SPACE ; RETURN "HPDF_INVALID_COLOR_SPACE" + CASE HPDF_INVALID_COMPRESSION_MODE ; RETURN "HPDF_INVALID_COMPRESSION_MODE" + CASE HPDF_INVALID_DATE_TIME ; RETURN "HPDF_INVALID_DATE_TIME" + CASE HPDF_INVALID_DESTINATION ; RETURN "HPDF_INVALID_DESTINATION" + CASE HPDF_INVALID_DOCUMENT ; RETURN "HPDF_INVALID_DOCUMENT" + CASE HPDF_INVALID_DOCUMENT_STATE ; RETURN "HPDF_INVALID_DOCUMENT_STATE" + CASE HPDF_INVALID_ENCODER ; RETURN "HPDF_INVALID_ENCODER" + CASE HPDF_INVALID_ENCODER_TYPE ; RETURN "HPDF_INVALID_ENCODER_TYPE" + CASE HPDF_INVALID_ENCODING_NAME ; RETURN "HPDF_INVALID_ENCODING_NAME" + CASE HPDF_INVALID_ENCRYPT_KEY_LEN ; RETURN "HPDF_INVALID_ENCRYPT_KEY_LEN" + CASE HPDF_INVALID_FONTDEF_DATA ; RETURN "HPDF_INVALID_FONTDEF_DATA" + CASE HPDF_INVALID_FONTDEF_TYPE ; RETURN "HPDF_INVALID_FONTDEF_TYPE" + CASE HPDF_INVALID_FONT_NAME ; RETURN "HPDF_INVALID_FONT_NAME" + CASE HPDF_INVALID_IMAGE ; RETURN "HPDF_INVALID_IMAGE" + CASE HPDF_INVALID_JPEG_DATA ; RETURN "HPDF_INVALID_JPEG_DATA" + CASE HPDF_INVALID_N_DATA ; RETURN "HPDF_INVALID_N_DATA" + CASE HPDF_INVALID_OBJECT ; RETURN "HPDF_INVALID_OBJECT" + CASE HPDF_INVALID_OBJ_ID ; RETURN "HPDF_INVALID_OBJ_ID" + CASE HPDF_INVALID_OPERATION ; RETURN "HPDF_INVALID_OPERATION" + CASE HPDF_INVALID_OUTLINE ; RETURN "HPDF_INVALID_OUTLINE" + CASE HPDF_INVALID_PAGE ; RETURN "HPDF_INVALID_PAGE" + CASE HPDF_INVALID_PAGES ; RETURN "HPDF_INVALID_PAGES" + CASE HPDF_INVALID_PARAMETER ; RETURN "HPDF_INVALID_PARAMETER" + CASE HPDF_INVALID_PNG_IMAGE ; RETURN "HPDF_INVALID_PNG_IMAGE" + CASE HPDF_INVALID_STREAM ; RETURN "HPDF_INVALID_STREAM" + CASE HPDF_MISSING_FILE_NAME_ENTRY ; RETURN "HPDF_MISSING_FILE_NAME_ENTRY" + CASE HPDF_INVALID_TTC_FILE ; RETURN "HPDF_INVALID_TTC_FILE" + CASE HPDF_INVALID_TTC_INDEX ; RETURN "HPDF_INVALID_TTC_INDEX" + CASE HPDF_INVALID_WX_DATA ; RETURN "HPDF_INVALID_WX_DATA" + CASE HPDF_ITEM_NOT_FOUND ; RETURN "HPDF_ITEM_NOT_FOUND" + CASE HPDF_LIBPNG_ERROR ; RETURN "HPDF_LIBPNG_ERROR" + CASE HPDF_NAME_INVALID_VALUE ; RETURN "HPDF_NAME_INVALID_VALUE" + CASE HPDF_NAME_OUT_OF_RANGE ; RETURN "HPDF_NAME_OUT_OF_RANGE" + CASE HPDF_PAGE_INVALID_PARAM_COUNT ; RETURN "HPDF_PAGE_INVALID_PARAM_COUNT" + CASE HPDF_PAGES_MISSING_KIDS_ENTRY ; RETURN "HPDF_PAGES_MISSING_KIDS_ENTRY" + CASE HPDF_PAGE_CANNOT_FIND_OBJECT ; RETURN "HPDF_PAGE_CANNOT_FIND_OBJECT" + CASE HPDF_PAGE_CANNOT_GET_ROOT_PAGES ; RETURN "HPDF_PAGE_CANNOT_GET_ROOT_PAGES" + CASE HPDF_PAGE_CANNOT_RESTORE_GSTATE ; RETURN "HPDF_PAGE_CANNOT_RESTORE_GSTATE" + CASE HPDF_PAGE_CANNOT_SET_PARENT ; RETURN "HPDF_PAGE_CANNOT_SET_PARENT" + CASE HPDF_PAGE_FONT_NOT_FOUND ; RETURN "HPDF_PAGE_FONT_NOT_FOUND" + CASE HPDF_PAGE_INVALID_FONT ; RETURN "HPDF_PAGE_INVALID_FONT" + CASE HPDF_PAGE_INVALID_FONT_SIZE ; RETURN "HPDF_PAGE_INVALID_FONT_SIZE" + CASE HPDF_PAGE_INVALID_GMODE ; RETURN "HPDF_PAGE_INVALID_GMODE" + CASE HPDF_PAGE_INVALID_INDEX ; RETURN "HPDF_PAGE_INVALID_INDEX" + CASE HPDF_PAGE_INVALID_ROTATE_VALUE ; RETURN "HPDF_PAGE_INVALID_ROTATE_VALUE" + CASE HPDF_PAGE_INVALID_SIZE ; RETURN "HPDF_PAGE_INVALID_SIZE" + CASE HPDF_PAGE_INVALID_XOBJECT ; RETURN "HPDF_PAGE_INVALID_XOBJECT" + CASE HPDF_PAGE_OUT_OF_RANGE ; RETURN "HPDF_PAGE_OUT_OF_RANGE" + CASE HPDF_REAL_OUT_OF_RANGE ; RETURN "HPDF_REAL_OUT_OF_RANGE" + CASE HPDF_STREAM_EOF ; RETURN "HPDF_STREAM_EOF" + CASE HPDF_STREAM_READLN_CONTINUE ; RETURN "HPDF_STREAM_READLN_CONTINUE" + CASE HPDF_STRING_OUT_OF_RANGE ; RETURN "HPDF_STRING_OUT_OF_RANGE" + CASE HPDF_THIS_FUNC_WAS_SKIPPED ; RETURN "HPDF_THIS_FUNC_WAS_SKIPPED" + CASE HPDF_TTF_CANNOT_EMBEDDING_FONT ; RETURN "HPDF_TTF_CANNOT_EMBEDDING_FONT" + CASE HPDF_TTF_INVALID_CMAP ; RETURN "HPDF_TTF_INVALID_CMAP" + CASE HPDF_TTF_INVALID_FOMAT ; RETURN "HPDF_TTF_INVALID_FOMAT" + CASE HPDF_TTF_MISSING_TABLE ; RETURN "HPDF_TTF_MISSING_TABLE" + CASE HPDF_UNSUPPORTED_FONT_TYPE ; RETURN "HPDF_UNSUPPORTED_FONT_TYPE" + CASE HPDF_UNSUPPORTED_FUNC ; RETURN "HPDF_UNSUPPORTED_FUNC" + CASE HPDF_UNSUPPORTED_JPEG_FORMAT ; RETURN "HPDF_UNSUPPORTED_JPEG_FORMAT" + CASE HPDF_UNSUPPORTED_TYPE1_FONT ; RETURN "HPDF_UNSUPPORTED_TYPE1_FONT" + CASE HPDF_XREF_COUNT_ERR ; RETURN "HPDF_XREF_COUNT_ERR" + CASE HPDF_ZLIB_ERROR ; RETURN "HPDF_ZLIB_ERROR" + CASE HPDF_INVALID_PAGE_INDEX ; RETURN "HPDF_INVALID_PAGE_INDEX" + CASE HPDF_INVALID_URI ; RETURN "HPDF_INVALID_URI" + CASE HPDF_PAGE_LAYOUT_OUT_OF_RANGE ; RETURN "HPDF_PAGE_LAYOUT_OUT_OF_RANGE" + CASE HPDF_PAGE_MODE_OUT_OF_RANGE ; RETURN "HPDF_PAGE_MODE_OUT_OF_RANGE" + CASE HPDF_PAGE_NUM_STYLE_OUT_OF_RANGE ; RETURN "HPDF_PAGE_NUM_STYLE_OUT_OF_RANGE" + CASE HPDF_ANNOT_INVALID_ICON ; RETURN "HPDF_ANNOT_INVALID_ICON" + CASE HPDF_ANNOT_INVALID_BORDER_STYLE ; RETURN "HPDF_ANNOT_INVALID_BORDER_STYLE" + CASE HPDF_PAGE_INVALID_DIRECTION ; RETURN "HPDF_PAGE_INVALID_DIRECTION" + CASE HPDF_INVALID_FONT ; RETURN "HPDF_INVALID_FONT" + CASE HPDF_PAGE_INSUFFICIENT_SPACE ; RETURN "HPDF_PAGE_INSUFFICIENT_SPACE" + CASE HPDF_PAGE_INVALID_DISPLAY_TIME ; RETURN "HPDF_PAGE_INVALID_DISPLAY_TIME" + CASE HPDF_PAGE_INVALID_TRANSITION_TIME ; RETURN "HPDF_PAGE_INVALID_TRANSITION_TIME" + CASE HPDF_INVALID_PAGE_SLIDESHOW_TYPE ; RETURN "HPDF_INVALID_PAGE_SLIDESHOW_TYPE" + CASE HPDF_EXT_GSTATE_OUT_OF_RANGE ; RETURN "HPDF_EXT_GSTATE_OUT_OF_RANGE" + CASE HPDF_INVALID_EXT_GSTATE ; RETURN "HPDF_INVALID_EXT_GSTATE" + CASE HPDF_EXT_GSTATE_READ_ONLY ; RETURN "HPDF_EXT_GSTATE_READ_ONLY" + CASE HPDF_INVALID_U3D_DATA ; RETURN "HPDF_INVALID_U3D_DATA" + CASE HPDF_NAME_CANNOT_GET_NAMES ; RETURN "HPDF_NAME_CANNOT_GET_NAMES" + CASE HPDF_INVALID_ICC_COMPONENT_NUM ; RETURN "HPDF_INVALID_ICC_COMPONENT_NUM" + ENDSWITCH + + RETURN "HB_HPDF_UNKNOWN_" + hb_ntos( nStatus ) diff --git a/harbour/contrib/hbhpdf/hbhpdf.hbp b/harbour/contrib/hbhpdf/hbhpdf.hbp index 77d3ab81cb..bdb54b0187 100644 --- a/harbour/contrib/hbhpdf/hbhpdf.hbp +++ b/harbour/contrib/hbhpdf/hbhpdf.hbp @@ -35,6 +35,7 @@ fontkr.c image.c pdfa.c +error.prg misc.prg 3rd/libhpdf/libhpdf.hbc{HBMK_HAS_LIBHARU_LOCAL} diff --git a/harbour/contrib/hbhpdf/hbhpdf.hbx b/harbour/contrib/hbhpdf/hbhpdf.hbx index 466ad61fc9..550f298b54 100644 --- a/harbour/contrib/hbhpdf/hbhpdf.hbx +++ b/harbour/contrib/hbhpdf/hbhpdf.hbx @@ -21,6 +21,7 @@ #command DYNAMIC => EXTERNAL #endif +DYNAMIC hb_HPDF_GetErrorString DYNAMIC hb_HPDF_IsVersion DYNAMIC hb_HPDF_Version DYNAMIC HPDF_AddPage diff --git a/harbour/contrib/hbhpdf/tests/harupdf.prg b/harbour/contrib/hbhpdf/tests/harupdf.prg index 24e5c56a21..d02b584ac0 100644 --- a/harbour/contrib/hbhpdf/tests/harupdf.prg +++ b/harbour/contrib/hbhpdf/tests/harupdf.prg @@ -53,6 +53,8 @@ PROCEDURE Main( cFileToSave ) + CLS + IF Empty( cFileToSave ) cFileToSave := "myharu.pdf" ENDIF @@ -165,7 +167,9 @@ FUNCTION DesignHaruPDF( cFileToSave ) // Commentout the following line if you need ASCII chart by Codepages Page_CodePages( pdf ) - HPDF_SaveToFile( pdf, cFileToSave ) + IF HPDF_SaveToFile( pdf, cFileToSave ) != 0 + ? "0x" + hb_NumToHex( HPDF_GetError( pdf ), 4 ), hb_HPDF_GetErrorString( HPDF_GetError( pdf ) ), HPDF_GetErrorDetail( pdf ) + ENDIF HPDF_Free( pdf ) diff --git a/harbour/contrib/hbhpdf/tests/test.prg b/harbour/contrib/hbhpdf/tests/test.prg new file mode 100644 index 0000000000..99278cbc7f --- /dev/null +++ b/harbour/contrib/hbhpdf/tests/test.prg @@ -0,0 +1,16 @@ +/* + * $Id$ + */ + +#require "hbhpdf" + +PROCEDURE Main() + + ? hb_HPDF_GetErrorString() + ? hb_HPDF_GetErrorString( NIL ) + ? hb_HPDF_GetErrorString( "a" ) + ? hb_HPDF_GetErrorString( {} ) + ? hb_HPDF_GetErrorString( 100 ) + ? hb_HPDF_GetErrorString( HPDF_ARRAY_ITEM_UNEXPECTED_TYPE ) + + RETURN diff --git a/harbour/contrib/hbmzip/mziperr.prg b/harbour/contrib/hbmzip/mziperr.prg index cacfdc35b2..dfdf33e073 100644 --- a/harbour/contrib/hbmzip/mziperr.prg +++ b/harbour/contrib/hbmzip/mziperr.prg @@ -54,6 +54,10 @@ FUNCTION hb_zipErrorStr( nStatus ) + IF ! HB_ISNUMERIC( nStatus ) + RETURN "ZIP_INVALID" + ENDIF + DO CASE CASE nStatus == ZIP_OK ; RETURN "ZIP_OK" CASE nStatus == ZIP_EOF ; RETURN "ZIP_EOF" @@ -71,10 +75,14 @@ FUNCTION hb_zipErrorStr( nStatus ) CASE nStatus == -6 ; RETURN "Z_VERSION_ERROR" ENDCASE - RETURN "ZIP_UNKNOWN: " + hb_ntos( nStatus ) + RETURN "ZIP_UNKNOWN_" + hb_ntos( nStatus ) FUNCTION hb_unzipErrorStr( nStatus ) + IF ! HB_ISNUMERIC( nStatus ) + RETURN "UNZ_INVALID" + ENDIF + DO CASE CASE nStatus == UNZ_OK ; RETURN "UNZ_OK" CASE nStatus == UNZ_END_OF_LIST_OF_FILE ; RETURN "UNZ_END_OF_LIST_OF_FILE" @@ -94,4 +102,4 @@ FUNCTION hb_unzipErrorStr( nStatus ) CASE nStatus == -6 ; RETURN "Z_VERSION_ERROR" ENDCASE - RETURN "UNZ_UNKNOWN: " + hb_ntos( nStatus ) + RETURN "UNZ_UNKNOWN_" + hb_ntos( nStatus )