Package net.sf.jasperreports.components.barcode4j

Source Code of net.sf.jasperreports.components.barcode4j.BarcodeFillComponent

/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.jasperreports.components.barcode4j;

import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRComponentElement;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRPrintElement;
import net.sf.jasperreports.engine.JRRenderable;
import net.sf.jasperreports.engine.JRStyle;
import net.sf.jasperreports.engine.component.BaseFillComponent;
import net.sf.jasperreports.engine.component.FillPrepareResult;
import net.sf.jasperreports.engine.fill.JRTemplateImage;
import net.sf.jasperreports.engine.fill.JRTemplatePrintImage;
import net.sf.jasperreports.engine.type.EvaluationTimeEnum;
import net.sf.jasperreports.engine.type.ScaleImageEnum;

import org.krysalis.barcode4j.impl.AbstractBarcodeBean;

/**
*
* @author Lucian Chirita (lucianc@users.sourceforge.net)
* @version $Id: BarcodeFillComponent.java 3505 2010-03-04 14:08:05Z teodord $
*/
public class BarcodeFillComponent extends BaseFillComponent
{

  private final BarcodeComponent barcodeComponent;
 
  private final Map printTemplates = new HashMap();
  private AbstractBarcodeBean barcode;
  private String message;
 
 
  public BarcodeFillComponent(BarcodeComponent barcodeComponent)
  {
    this.barcodeComponent = barcodeComponent;
  }

  public BarcodeFillComponent(BarcodeFillComponent barcode)
  {
    this.barcodeComponent = barcode.barcodeComponent;
  }
 
  public void evaluate(byte evaluation) throws JRException
  {
    if (isEvaluateNow())
    {
      evaluateBarcode(evaluation);
    }
  }
 
  protected boolean isEvaluateNow()
  {
    return barcodeComponent.getEvaluationTimeValue()
        == EvaluationTimeEnum.NOW;
  }

  protected void evaluateBarcode(byte evaluation)
  {
    BarcodeEvaluator evaluator = new BarcodeEvaluator(fillContext, evaluation);
    evaluator.evaluateBarcode();
    barcode = evaluator.getBarcode();
    message = evaluator.getMessage();
  }
 
  public FillPrepareResult prepare(int availableHeight)
  {
    if (isEvaluateNow() && message == null)
    {
      return FillPrepareResult.NO_PRINT_NO_OVERFLOW;
    }
   
    return FillPrepareResult.PRINT_NO_STRETCH;
  }

  public JRPrintElement fill()
  {
    JRTemplateImage templateImage = getTemplateImage();
   
    JRTemplatePrintImage image = new JRTemplatePrintImage(templateImage);
    JRComponentElement element = fillContext.getComponentElement();
    image.setX(element.getX());
    image.setY(fillContext.getElementPrintY());
    image.setWidth(element.getWidth());
    image.setHeight(element.getHeight());
   
    if (isEvaluateNow())
    {
      setBarcodeImage(image);
    }
    else
    {
      fillContext.registerDelayedEvaluation(image,
          barcodeComponent.getEvaluationTimeValue(),
          barcodeComponent.getEvaluationGroup());
    }
   
    return image;
  }
 
  protected JRTemplateImage getTemplateImage()
  {
    JRStyle elementStyle = fillContext.getElementStyle();
    JRTemplateImage templateImage = (JRTemplateImage) printTemplates.get(elementStyle);
    if (templateImage == null)
    {
      templateImage = new JRTemplateImage(
          fillContext.getElementOrigin(),
          fillContext.getDefaultStyleProvider());
      templateImage.setStyle(elementStyle);
      templateImage.setScaleImage(ScaleImageEnum.RETAIN_SHAPE);
     
      printTemplates.put(elementStyle, templateImage);
    }
    return templateImage;
  }
 
  protected void setBarcodeImage(JRTemplatePrintImage image)
  {
    if (message != null)
    {
      BarcodeImageProducer imageProducer = BarcodeUtils.getImageProducer(
          fillContext.getComponentElement());
      JRRenderable barcodeImage = imageProducer.createImage(
          fillContext.getComponentElement(),
          barcode, message, barcodeComponent.getOrientation());
      image.setRenderer(barcodeImage);
    }
  }

  public void evaluateDelayedElement(JRPrintElement element, byte evaluation)
      throws JRException
  {
    evaluateBarcode(evaluation);
    setBarcodeImage((JRTemplatePrintImage) element);
  }

}
TOP

Related Classes of net.sf.jasperreports.components.barcode4j.BarcodeFillComponent

TOP
Copyright © 2018 www.massapi.com. 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.