[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [pdf-devel] [patch] convert LZW filter to new API
From: |
jemarch |
Subject: |
Re: [pdf-devel] [patch] convert LZW filter to new API |
Date: |
Wed, 24 Jun 2009 20:32:17 +0200 |
User-agent: |
Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/23.0.60 (i686-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) |
Hi Brad.
=== modified file 'src/Makefile.am'
[...]
-AM_CFLAGS = -Wall -fno-strict-aliasing $(LIBGCRYPT_CFLAGS)
+AM_CFLAGS = -Wall -fno-strict-aliasing -Wconversion $(LIBGCRYPT_CFLAGS)
The -Wconversion option makes gcc to generate a lot of warnings in
both header files included from gnulib and our source code. Is there
a particular reason to add that switch?
Regarding the cache size, the ideal situation is for the filters to be
able to work with any >0 cache size in the stm.
The following merge directive (not applied in the trunk) adds support
for the lzw filter in the pdf-filter utility. You can merge it into
your patch if you want. For testing purpose, please note that the
--cache=N option can be used to set the size of the stream cache, and
the usage of a reading stm (instead of the default writing stm) can be
requested with the --readmode parameter.
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: sftp://address@hidden/srv/bzr/pdf\
# /libgnupdf/branches/trunk/
# testament_sha1: a016490579ace086a16b5d016c051b049b0bcf17
# timestamp: 2009-06-24 20:23:39 +0200
# base_revision_id: address@hidden
#
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog 2009-06-22 11:20:04 +0000
+++ ChangeLog 2009-06-24 18:23:24 +0000
@@ -1,3 +1,14 @@
+2009-06-24 Jose E. Marchesi <address@hidden>
+
+ * src/base/pdf-hash-helper.h: Added functions 'pdf_hash_add_bool'
+ and 'pdf_hash_get_bool'.
+
+ * src/base/pdf-hash-helper.c: Likewise.
+
+ * utils/pdf-filter.h: Added support for the LZW filters.
+
+ * utils/pdf-filter.c: Likewise.
+
2009-06-22 Brad Hards <address@hidden>
* src/base/pdf-text.c (pdf_text_dup): Protect against NULL arg.
=== modified file 'src/base/pdf-hash-helper.c'
--- src/base/pdf-hash-helper.c 2009-01-27 20:59:40 +0000
+++ src/base/pdf-hash-helper.c 2009-06-24 18:23:24 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "09/01/27 21:37:10 jemarch"
+/* -*- mode: C -*- Time-stamp: "09/06/24 20:13:29 jemarch"
*
* File: pdf-hash-helper.c
* Date: Thu Jul 24 21:05:05 2008
@@ -97,6 +97,37 @@
}
pdf_status_t
+pdf_hash_add_bool (pdf_hash_t table, const char *key, const pdf_bool_t elt)
+{
+ pdf_bool_t *vbool;
+
+ vbool = pdf_alloc (sizeof(pdf_bool_t));
+ if (vbool == NULL)
+ {
+ return PDF_ERROR;
+ }
+
+ *vbool = elt;
+
+ return (pdf_hash_add (table, key, vbool, pdf_dealloc));
+}
+
+pdf_status_t
+pdf_hash_get_bool (pdf_hash_t table, const char *key, pdf_bool_t *elt)
+{
+ pdf_status_t ret;
+ pdf_bool_t *vbool;
+
+ ret = pdf_hash_get (table, key, (const void **) &vbool);
+ if (ret == PDF_OK)
+ {
+ *elt = *vbool;
+ }
+
+ return ret;
+}
+
+pdf_status_t
pdf_hash_add_size (pdf_hash_t table, const char *key, const pdf_size_t elt)
{
pdf_size_t *size;
=== modified file 'src/base/pdf-hash-helper.h'
--- src/base/pdf-hash-helper.h 2008-12-28 01:13:47 +0000
+++ src/base/pdf-hash-helper.h 2009-06-24 18:23:24 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/12/28 02:10:50 jemarch"
+/* -*- mode: C -*- Time-stamp: "09/06/24 20:13:57 jemarch"
*
* File: pdf-hash-helper.h
* Date: Thu Jul 24 21:05:05 2008
@@ -73,6 +73,12 @@
pdf_hash_get_size (pdf_hash_t table, const char *key, pdf_size_t *elt);
pdf_status_t
+pdf_hash_add_bool (pdf_hash_t table, const char *key, const pdf_bool_t elt);
+
+pdf_status_t
+pdf_hash_get_bool (pdf_hash_t table, const char *key, pdf_bool_t *elt);
+
+pdf_status_t
pdf_hash_add_string (pdf_hash_t table, const char *key, const pdf_char_t *elt);
pdf_status_t
=== modified file 'utils/pdf-filter.c'
--- utils/pdf-filter.c 2009-05-07 09:03:31 +0000
+++ utils/pdf-filter.c 2009-06-24 18:23:24 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "09/05/07 10:55:00 jemarch"
+/* -*- mode: C -*- Time-stamp: "09/06/24 20:14:29 jemarch"
*
* File: pdf-filter.c
* Date: Tue Jul 10 18:42:07 2007
@@ -58,11 +58,12 @@
{"null", no_argument, NULL, NULL_FILTER_ARG},
{"ahexdec", no_argument, NULL, ASCIIHEXDEC_FILTER_ARG},
{"ahexenc", no_argument, NULL, ASCIIHEXENC_FILTER_ARG},
+ {"lzwenc", no_argument, NULL, LZWENC_FILTER_ARG},
+ {"lzwdec", no_argument, NULL, LZWDEC_FILTER_ARG},
+ {"lzw-earlychange", no_argument, NULL, LZW_EARLYCHANGE_ARG},
#if 0
{"a85dec", no_argument, NULL, ASCII85DEC_FILTER_ARG},
{"a85enc", no_argument, NULL, ASCII85ENC_FILTER_ARG},
- {"lzwenc", no_argument, NULL, LZWENC_FILTER_ARG},
- {"lzwdec", no_argument, NULL, LZWDEC_FILTER_ARG},
{"cfaxdec", no_argument, NULL, CCITTFAXDEC_FILTER_ARG},
{"jxpdec", no_argument, NULL, JXPDEC_FILTER_ARG},
{"predenc", no_argument, NULL, PREDENC_FILTER_ARG},
@@ -108,12 +109,12 @@
available filters\n\
--null use the NULL filter\n\
--ahexdec use the ASCII Hex decoder filter\n\
- --ahexenc use the ASCII Hex encoder filter\n"
+ --ahexenc use the ASCII Hex encoder filter\n\
+ --lzwenc use the LZW encoder filter\n\
+ --lzwdec use the LZW decoder filter\n"
#if 0
" --a85dec use the ASCII 85 decoder filter\n\
--a85enc use the ASCII 85 encoder filter\n\
- --lzwenc use the LZW encoder filter\n\
- --lzwdec use the LZW decoder filter\n
--jxpdec use the JXP decoder filter\n\
--predenc use the predictor encoder filter\n\
--preddec use the predictor decoder filter\n"
@@ -139,14 +140,15 @@
--version show pdf_filter version and exit\n\
\nfilter properties\n"
#if 0
-" --lzw-earlychange toggles earlychange for next lzw
filters\n\
+"
--preddec-type=NUM code for next preddec filters type\n\
--predenc-type=NUM code for next predenc filters type\n\
--pred-colors=NUM next predictors colors per sample\n\
--pred-bpc=NUM next predictors bits per color
component\n\
--pred-columns=NUM next predictors number of samples per
row\n"
#endif /* 0 */
-" --jbig2dec-globals=FILE file containing global segments\n\
+" --lzw-earlychange toggles earlychange for next lzw
filters\n\
+ --jbig2dec-globals=FILE file containing global segments\n\
";
char *pdf_filter_help_msg = "";
@@ -448,6 +450,7 @@
char *key = NULL;
pdf_size_t jbig2dec_global_segments_size = 0;
pdf_status_t status;
+ pdf_bool_t lzw_earlychange = PDF_FALSE;
/* Initialize the crypt module */
if (pdf_crypt_init () != PDF_OK)
@@ -554,14 +557,6 @@
{
break;
}
- case LZWENC_FILTER_ARG:
- {
- break;
- }
- case LZWDEC_FILTER_ARG:
- {
- break;
- }
case CCITTFAXDEC_FILTER_ARG:
{
break;
@@ -591,6 +586,57 @@
break;
}
#endif /* 0 */
+ case LZW_EARLYCHANGE_ARG:
+ {
+ lzw_earlychange = PDF_TRUE;
+ break;
+ }
+ case LZWENC_FILTER_ARG:
+ {
+ ret = pdf_hash_new (NULL, &filter_params);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while creating the lzwenc filter
parameters hash table");
+ exit (1);
+ }
+
+ pdf_hash_add_bool (filter_params, "EarlyChange", lzw_earlychange);
+
+ status = pdf_stm_install_filter (stm,
+ PDF_STM_FILTER_LZW_ENC,
+ filter_params);
+
+ if (status != PDF_OK)
+ {
+ pdf_error (status, stderr, "while creating the LZW encoder
filter");
+ exit (1);
+ }
+
+ break;
+ }
+ case LZWDEC_FILTER_ARG:
+ {
+ ret = pdf_hash_new (NULL, &filter_params);
+ if (ret != PDF_OK)
+ {
+ pdf_error (ret, stderr, "while creating the lzwdec filter
parameters hash table");
+ exit (1);
+ }
+
+ pdf_hash_add_bool (filter_params, "EarlyChange", lzw_earlychange);
+
+ status = pdf_stm_install_filter (stm,
+ PDF_STM_FILTER_LZW_DEC,
+ filter_params);
+
+ if (status != PDF_OK)
+ {
+ pdf_error (status, stderr, "while creating the LZW decoder
filter");
+ exit (1);
+ }
+
+ break;
+ }
#ifdef HAVE_LIBZ
case FLATEDEC_FILTER_ARG:
{
=== modified file 'utils/pdf-filter.h'
--- utils/pdf-filter.h 2009-05-06 17:54:48 +0000
+++ utils/pdf-filter.h 2009-06-24 18:23:24 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "09/05/06 19:46:33 jemarch"
+/* -*- mode: C -*- Time-stamp: "09/06/24 19:37:20 jemarch"
*
* File: pdf-filter.h
* Date: Tue Jul 10 18:40:55 2007
@@ -46,8 +46,6 @@
#if 0
ASCII85DEC_FILTER_ARG,
ASCII85ENC_FILTER_ARG,
- LZWENC_FILTER_ARG,
- LZWDEC_FILTER_ARG,
CCITTFAXDEC_FILTER_ARG,
JXPDEC_FILTER_ARG,
PREDENC_FILTER_ARG,
@@ -67,6 +65,9 @@
JBIG2DEC_GLOBAL_SEGMENTS_ARG,
JBIG2DEC_PAGE_SIZE,
#endif /* HAVE_LIBJBIG2DEC */
+ LZWENC_FILTER_ARG,
+ LZWDEC_FILTER_ARG,
+ LZW_EARLYCHANGE_ARG,
MD5ENC_FILTER_ARG,
KEY_ARG,
AESENC_FILTER_ARG,
# Begin bundle
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
- [pdf-devel] [patch] convert LZW filter to new API, Brad Hards, 2009/06/24
- Re: [pdf-devel] [patch] convert LZW filter to new API, Juan Pedro Bolivar Puente, 2009/06/24
- Re: [pdf-devel] [patch] convert LZW filter to new API,
jemarch <=
- Re: [pdf-devel] [patch] convert LZW filter to new API, Juan Pedro Bolivar Puente, 2009/06/24
- Re: [pdf-devel] [patch] convert LZW filter to new API, Brad Hards, 2009/06/25
- Re: [pdf-devel] [patch] convert LZW filter to new API, Juan Pedro Bolivar Puente, 2009/06/25
- Re: [pdf-devel] [patch] convert LZW filter to new API, jemarch, 2009/06/25
- Re: [pdf-devel] [patch] convert LZW filter to new API, Juan Pedro Bolivar Puente, 2009/06/25
- Re: [pdf-devel] [patch] convert LZW filter to new API, jemarch, 2009/06/26
Re: [pdf-devel] [patch] convert LZW filter to new API, Brad Hards, 2009/06/25