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,