rev 453 - trunk
[email protected] Mon, 5 Feb 2007 15:42:19 -0800 (PST)
| Newsgroups | gmane.comp.printing.ghostscript.jbig2dec.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: giles
Date: 2007-02-05 15:42:18 -0800 (Mon, 05 Feb 2007)
New Revision: 453
Modified:
trunk/jbig2_refinement.c
trunk/jbig2_symbol_dict.c
trunk/jbig2_text.c
Log:
Export jbig2_decode_text_region() for use in aggregate symbol encoding=20
and stub out the setup for the call. Work in progress implementing=20
support for this function.
Modified: trunk/jbig2_refinement.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/jbig2_refinement.c 2007-02-05 22:59:10 UTC (rev 452)
+++ trunk/jbig2_refinement.c 2007-02-05 23:42:18 UTC (rev 453)
@@ -91,7 +91,7 @@
jbig2_image_set_pixel(image, x, y, bit);
}
}
-#ifdef JBIG2_DEBUG
+#ifdef JBIG2_DEBUG_REFINEMENT
{
static count =3D 0;
char name[32];
@@ -268,6 +268,10 @@
{
jbig2_error(ctx, JBIG2_SEVERITY_DEBUG, segment->number,
"decoding generic refinement region with offset %d,%x,\n"
+ " GRTEMPLATE=3D%d, TPGRON=3D%d\n",
+ params->DX, params->DY, params->GRTEMPLATE, params->TPGRON);
+ jbig2_error(ctx, JBIG2_SEVERITY_DEBUG, segment->number,
+ "decoding generic refinement region with offset %d,%x,\n"
" GRTEMPLATE=3D%d, TPGRON=3D%d, RA1=3D(%d,%d) RA2=3D(%d,%d)\n",
params->DX, params->DY, params->GRTEMPLATE, params->TPGRON,
params->grat[0], params->grat[1], params->grat[2], params->grat[3]=
);
Modified: trunk/jbig2_symbol_dict.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/jbig2_symbol_dict.c 2007-02-05 22:59:10 UTC (rev 452)
+++ trunk/jbig2_symbol_dict.c 2007-02-05 23:42:18 UTC (rev 453)
@@ -35,6 +35,7 @@
#include "jbig2_generic.h"
#include "jbig2_mmr.h"
#include "jbig2_symbol_dict.h"
+#include "jbig2_text.h"
=20
#if defined(OUTPUT_PBM) || defined(DUMP_SYMDICT)
#include <stdio.h>
@@ -391,10 +392,68 @@
"aggregate symbol coding (%d instances)", REFAGGNINST);
=20
if (REFAGGNINST > 1) {
- code =3D jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number,
- "aggregate coding with REFAGGNINST=3D%d", REFAGGNINST);
+ /* multiple symbols are embedded text regions */=20
+ Jbig2TextRegionParams rparams;
+ Jbig2SymbolDict *SBSYMS[2];
+ Jbig2Image *image;
+
+ rparams.SBHUFF =3D params->SDHUFF;
+ rparams.SBREFINE =3D 1;
+ rparams.SBDEFPIXEL =3D 0;
+ rparams.SBCOMBOP =3D JBIG2_COMPOSE_OR;
+ rparams.TRANSPOSED =3D 0;
+ rparams.REFCORNER =3D JBIG2_CORNER_TOPLEFT;
+ rparams.SBDSOFFSET =3D 0;
+ rparams.SBNUMINSTANCES =3D REFAGGNINST;
+ rparams.LOGSBSTRIPS =3D 0;
+ rparams.SBSTRIPS =3D 1;
+ if (rparams.SBHUFF) {
+ rparams.SBHUFFFS =3D jbig2_build_huffman_table(ctx,
+ &jbig2_huffman_params_F);
+ rparams.SBHUFFDS =3D jbig2_build_huffman_table(ctx,
+ &jbig2_huffman_params_H);
+ rparams.SBHUFFDT =3D jbig2_build_huffman_table(ctx,
+ &jbig2_huffman_params_K);
+ rparams.SBHUFFRDW =3D jbig2_build_huffman_table(ctx,
+ &jbig2_huffman_params_O);
+ rparams.SBHUFFRDH =3D jbig2_build_huffman_table(ctx,
+ &jbig2_huffman_params_O);
+ rparams.SBHUFFRDX =3D jbig2_build_huffman_table(ctx,
+ &jbig2_huffman_params_O);
+ rparams.SBHUFFRDY =3D jbig2_build_huffman_table(ctx,
+ &jbig2_huffman_params_O);
+ rparams.SBHUFFRSIZE =3D jbig2_build_huffman_table(ctx,
+ &jbig2_huffman_params_A);
+ }
+ rparams.SBRTEMPLATE =3D params->SDRTEMPLATE;
+ rparams.sbrat[0] =3D params->sdrat[0];
+ rparams.sbrat[1] =3D params->sdrat[1];
+ rparams.sbrat[2] =3D params->sdrat[2];
+ rparams.sbrat[3] =3D params->sdrat[3];
+
+ SBSYMS[0] =3D params->SDINSYMS;
+ SBSYMS[1] =3D SDNEWSYMS;
+ image =3D jbig2_image_new(ctx, SYMWIDTH, HCHEIGHT);
+ code =3D jbig2_decode_text_region(ctx, segment, &rparams,
+ (const Jbig2SymbolDict * const *)SBSYMS, 2,=20
+ image, data, size, NULL);
+ jbig2_error(ctx, JBIG2_SEVERITY_DEBUG, segment->number,
+ "text region decode returned %d", code);
+
+ if (rparams.SBHUFF) {
+ jbig2_release_huffman_table(ctx, rparams.SBHUFFFS);
+ jbig2_release_huffman_table(ctx, rparams.SBHUFFDS);
+ jbig2_release_huffman_table(ctx, rparams.SBHUFFDT);
+ jbig2_release_huffman_table(ctx, rparams.SBHUFFRDW);
+ jbig2_release_huffman_table(ctx, rparams.SBHUFFRDH);
+ jbig2_release_huffman_table(ctx, rparams.SBHUFFRDX);
+ jbig2_release_huffman_table(ctx, rparams.SBHUFFRDY);
+ jbig2_release_huffman_table(ctx, rparams.SBHUFFRSIZE);=09
+ }
+ =09
+ code =3D jbig2_error(ctx, JBIG2_SEVERITY_WARNING, segment->numbe=
r,
+ "NYI aggregate coding with REFAGGNINST=3D%d", REFAGGNINST);
return NULL;
- /* todo: multiple symbols are like a text region */
} else {
/* 6.5.8.2.2 */
bool SBHUFF =3D params->SDHUFF;
Modified: trunk/jbig2_text.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/jbig2_text.c 2007-02-05 22:59:10 UTC (rev 452)
+++ trunk/jbig2_text.c 2007-02-05 23:42:18 UTC (rev 453)
@@ -1,7 +1,7 @@
/*
jbig2dec
=20
- Copyright (C) 2002-2005 artofcode LLC.
+ Copyright (C) 2002-2006 artofcode LLC.
=20
This software is distributed under license and may not
be copied, modified or distributed except as expressly
@@ -32,44 +32,8 @@
#include "jbig2_huffman.h"
#include "jbig2_generic.h"
#include "jbig2_symbol_dict.h"
+#include "jbig2_text.h"
=20
-typedef enum {
- JBIG2_CORNER_BOTTOMLEFT =3D 0,
- JBIG2_CORNER_TOPLEFT =3D 1,
- JBIG2_CORNER_BOTTOMRIGHT =3D 2,
- JBIG2_CORNER_TOPRIGHT =3D 3
-} Jbig2RefCorner;
-
-typedef struct {
- bool SBHUFF;
- bool SBREFINE;
- bool SBDEFPIXEL;
- Jbig2ComposeOp SBCOMBOP;
- bool TRANSPOSED;
- Jbig2RefCorner REFCORNER;
- int SBDSOFFSET;
- /* SBW */
- /* SBH */
- uint32_t SBNUMINSTANCES;
- int LOGSBSTRIPS;
- int SBSTRIPS;
- /* SBNUMSYMS */
- /* SBSYMCODES */
- /* SBSYMCODELEN */
- /* SBSYMS */
- Jbig2HuffmanTable *SBHUFFFS;
- Jbig2HuffmanTable *SBHUFFDS;
- Jbig2HuffmanTable *SBHUFFDT;
- Jbig2HuffmanTable *SBHUFFRDW;
- Jbig2HuffmanTable *SBHUFFRDH;
- Jbig2HuffmanTable *SBHUFFRDX;
- Jbig2HuffmanTable *SBHUFFRDY;
- Jbig2HuffmanTable *SBHUFFRSIZE;
- bool SBRTEMPLATE;
- int8_t sbrat[4];
-} Jbig2TextRegionParams;
-
-
/**
* jbig2_decode_text_region: decode a text region segment
*
@@ -87,7 +51,7 @@
*
* returns: 0 on success
**/
-static int
+int
jbig2_decode_text_region(Jbig2Ctx *ctx, Jbig2Segment *segment,
const Jbig2TextRegionParams *params,
const Jbig2SymbolDict * const *dicts, const=
int n_dicts,