Package org.jpedal.jbig2.segment

Examples of org.jpedal.jbig2.segment.Segment


    return ByteBuffer.wrap(decode(dict, bytes));
  }


  protected static byte[] decode(PDFObject dict, byte[] source) throws IOException {
    JBIG2Decoder decoder;
    decoder = new JBIG2Decoder();
    try {
      byte[] globals = getOptionFieldBytes(dict, "JBIG2Globals");
      if (globals != null) {
        decoder.setGlobalData(globals);
      }
      decoder.decodeJBIG2(source);
    } catch (JBIG2Exception ex) {
      IOException ioException;

      ioException = new IOException();
      ioException.initCause(ex);
      throw ioException;
    }
    return decoder.getPageAsJBIG2Bitmap(0).getData(true);
  }
View Full Code Here


      int noOfRententionFlagBytes = noOfBytesInField - 4;
      retentionFlags = new short[noOfRententionFlagBytes];
      reader.readByte(retentionFlags);

    } else { // error
      throw new JBIG2Exception("Error, 3 bit Segment count field = " + referredToSegmentCount);
    }

    segmentHeader.setReferredToSegmentCount(referredToSegmentCount);

    if (JBIG2StreamDecoder.debug)
View Full Code Here

          }
        }

        currentInstance++;

        DecodeIntResult decodeIntResult;

        if (huffman) {
          decodeIntResult = huffmanDecoder.decodeInt(huffmanDSTable);
        } else {
          decodeIntResult = arithmeticDecoder.decodeInt(arithmeticDecoder.iadsStats);
        }

        if (!decodeIntResult.booleanResult()) {
          break;
        }

        ds = decodeIntResult.intResult();

        s += sOffset + ds;
      }
    }
  }
View Full Code Here

      while (true) {

        int deltaWidth = 0;

        DecodeIntResult decodeIntResult;
        if (sdHuffman) {
          decodeIntResult = huffmanDecoder.decodeInt(huffmanDWTable);
        } else {
          decodeIntResult = arithmeticDecoder.decodeInt(arithmeticDecoder.iadwStats);
        }
       
        if (!decodeIntResult.booleanResult())
          break;

        deltaWidth = decodeIntResult.intResult();

        if (deltaWidth < 0 && -deltaWidth >= symbolWidth) {
          if(JBIG2StreamDecoder.debug)
            System.out.println("Bad delta-width value in JBIG2 symbol dictionary");
        }
View Full Code Here

  /**
   * Constructor for jbig
   */
  public JBIG2Decoder() {
    streamDecoder = new JBIG2StreamDecoder();
  }
View Full Code Here

    if (symbolRefine) {
      arithmeticDecoder.resetRefinementStats(template, null);
    }

    JBIG2Bitmap bitmap = new JBIG2Bitmap(regionBitmapWidth, regionBitmapHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);

    bitmap.readTextRegion(sbHuffman, symbolRefine, noOfSymbolInstances, logStrips, noOfSymbols, symbolCodeTable, symbolCodeLength, symbols, defaultPixel, combinationOperator, transposed, referenceCorner, sOffset, huffmanFSTable, huffmanDSTable, huffmanDTTable, huffmanRDWTable, huffmanRDHTable, huffmanRDXTable, huffmanRDYTable, huffmanRSizeTable, template, symbolRegionAdaptiveTemplateX, symbolRegionAdaptiveTemplateY, decoder);

    if (inlineImage) {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      if (JBIG2StreamDecoder.debug)
        System.out.println(pageBitmap + " " + bitmap);

      int externalCombinationOperator = regionFlags.getFlagValue(RegionFlags.EXTERNAL_COMBINATION_OPERATOR);
      pageBitmap.combine(bitmap, regionBitmapXLocation, regionBitmapYLocation, externalCombinationOperator);
    } else {
      bitmap.setBitmapNumber(getSegmentHeader().getSegmentNumber());
      decoder.appendBitmap(bitmap);
    }
View Full Code Here

      genericRegionAdaptiveTemplateY[1] = readATValue();
    }

    if (noOfReferedToSegments == 0 || inlineImage) {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      if (pageSegment.getPageBitmapHeight() == -1 && regionBitmapYLocation + regionBitmapHeight > pageBitmap.getHeight()) {
        pageBitmap.expand(regionBitmapYLocation + regionBitmapHeight, pageSegment.getPageInformationFlags().getFlagValue(PageInformationFlags.DEFAULT_PIXEL_VALUE));
      }
    }

    if (noOfReferedToSegments > 1) {
      if(JBIG2StreamDecoder.debug)
        System.out.println("Bad reference in JBIG2 generic refinement Segment");
     
      return;
    }

    JBIG2Bitmap referedToBitmap;
    if (noOfReferedToSegments == 1) {
      referedToBitmap = decoder.findBitmap(referedToSegments[0]);
    } else {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      referedToBitmap = pageBitmap.getSlice(regionBitmapXLocation, regionBitmapYLocation, regionBitmapWidth, regionBitmapHeight);
    }

    arithmeticDecoder.resetRefinementStats(template, null);
    arithmeticDecoder.start();

    boolean typicalPredictionGenericRefinementOn = refinementRegionFlags.getFlagValue(RefinementRegionFlags.TPGDON) != 0;

    JBIG2Bitmap bitmap = new JBIG2Bitmap(regionBitmapWidth, regionBitmapHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);

    bitmap.readGenericRefinementRegion(template, typicalPredictionGenericRefinementOn, referedToBitmap, 0, 0, genericRegionAdaptiveTemplateX, genericRegionAdaptiveTemplateY);

    if (inlineImage) {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      int extCombOp = regionFlags.getFlagValue(RegionFlags.EXTERNAL_COMBINATION_OPERATOR);

      pageBitmap.combine(bitmap, regionBitmapXLocation, regionBitmapYLocation, extCombOp);
    } else {
      bitmap.setBitmapNumber(getSegmentHeader().getSegmentNumber());
      decoder.appendBitmap(bitmap);
    }
  }
View Full Code Here

        }
       
        decoder.movePointer(-bytesRead);
        }
       
        JBIG2Bitmap bitmap = new JBIG2Bitmap(regionBitmapWidth, regionBitmapHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);
        bitmap.clear(0);
        bitmap.readBitmap(useMMR, template, typicalPredictionGenericDecodingOn, false, null, genericBAdaptiveTemplateX, genericBAdaptiveTemplateY, useMMR ? 0 : length - 18);
       
       
       
        if (inlineImage) {
            PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
            JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

            int extCombOp = regionFlags.getFlagValue(RegionFlags.EXTERNAL_COMBINATION_OPERATOR);
           
            if(pageSegment.getPageBitmapHeight() == -1 && regionBitmapYLocation + regionBitmapHeight > pageBitmap.getHeight()) {
              pageBitmap.expand(regionBitmapYLocation + regionBitmapHeight,
                  pageSegment.getPageInformationFlags().getFlagValue(PageInformationFlags.DEFAULT_PIXEL_VALUE));
            }
           
            pageBitmap.combine(bitmap, regionBitmapXLocation, regionBitmapYLocation, extCombOp);
        } else {
      bitmap.setBitmapNumber(getSegmentHeader().getSegmentNumber());
      decoder.appendBitmap(bitmap);
    }
View Full Code Here

    bitmaps.add(bitmap);
  }

  public JBIG2Bitmap findBitmap(int bitmapNumber) {
    for (Iterator it = bitmaps.iterator(); it.hasNext();) {
      JBIG2Bitmap bitmap = (JBIG2Bitmap) it.next();
      if (bitmap.getBitmapNumber() == bitmapNumber) {
        return bitmap;
      }
    }

    return null;
View Full Code Here

    return null;
  }

  public JBIG2Bitmap getPageAsJBIG2Bitmap(int i) {
    JBIG2Bitmap pageBitmap = findPageSegement(1).getPageBitmap();
    return pageBitmap;
  }
View Full Code Here

TOP

Related Classes of org.jpedal.jbig2.segment.Segment

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.