⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thumbnailbuilderproduct.java

📁 是一个专门设计用于触摸屏的POS(point of sales)应用软件
💻 JAVA
字号:
//    Tina POS is a point of sales application designed for touch screens.
//    Copyright (C) 2005 Adrian Romero Corchado.
//    http://sourceforge.net/projects/tinapos
//
//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    (at your option) any later version.
//
//    This program 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 General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program; if not, write to the Free Software
//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

package net.adrianromero.tpv.ticket;

import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;

public class ThumbNailBuilderProduct {
    
    public static final int PRICE_NONE = 0;
    public static final int PRICE_SELL = 1;
    public static final int PRICE_SELLTAX = 2;
    
    private Image m_imgdefault;
    private int m_width;
    private int m_height;
    private int m_iPriceMode;
    
    /** Creates a new instance of ThumbNailBuilderText */
    public ThumbNailBuilderProduct(int width, int height, Image img) {
        this(width, height, img, PRICE_NONE);
    }    
    public ThumbNailBuilderProduct(int width, int height, Image img, int ipricemode) {
        m_width = width;
        m_height = height;     
        m_imgdefault = img;
        m_iPriceMode = ipricemode;
    }    
    
    public Image getThumbNail(ProductInfoExt product) {

        BufferedImage thumb = new BufferedImage(m_width, m_height, BufferedImage.TYPE_4BYTE_ABGR);

        Graphics2D g2d = thumb.createGraphics();
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        //g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

        g2d.setColor(new Color(0, 0, 0, 0)); // Transparent

        g2d.fillRect(0, 0, m_width, m_height);
        
        // Que imagen imprimo
        if (product.getImage() == null) {
            if (m_imgdefault != null && m_iPriceMode == PRICE_NONE) {
                drawScaledImage(g2d, m_imgdefault);
            }
        } else {
            drawScaledImage(g2d, product.getImage());
        }
        
        // Que texto imprimo
        if (m_iPriceMode == PRICE_SELL) {
            drawImage(g2d, product.getImage());
            drawText(g2d, product.printPriceSell());
        } else if (m_iPriceMode == PRICE_SELLTAX) {
            drawImage(g2d, product.getImage());
            drawText(g2d, product.printPriceSellTax());
        } else {
            drawImageWithDefault(g2d, product.getImage());
        }
        
        g2d.dispose();

        return thumb;            
    }    
    
    private void drawText(Graphics2D g2d, String sPrintText) {
        g2d.setFont(g2d.getFont().deriveFont(Font.BOLD));
        Rectangle2D r2d = g2d.getFont().getStringBounds(sPrintText, g2d.getFontRenderContext());

        g2d.setPaint(new GradientPaint(0, m_height/2, new Color(255,255,255,200), 0, m_height, new Color(200,200,200,150)));
        g2d.fillOval(0 , m_height /2, m_width, m_height);

        g2d.setColor(Color.BLACK);
        g2d.drawString(sPrintText, (float) ((m_width - r2d.getWidth()) / 2.0), (float) ((1.3 * m_height + r2d.getHeight()) / 2.0));
    }
    
    private void drawImageWithDefault(Graphics2D g2d, Image img) {
        if (img != null) {
            drawScaledImage(g2d, img);
        } else if (m_imgdefault != null) {
            drawScaledImage(g2d, m_imgdefault);
        }
    }
    
    private void drawImage(Graphics2D g2d, Image img) {
        if (img != null) {
            drawScaledImage(g2d, img);
        }
    }    
    
    private void drawScaledImage(Graphics2D g2d, Image img) {
        double scalex = (double) m_width / (double) img.getWidth(null);
        double scaley = (double) m_height / (double) img.getHeight(null);

        if (scalex < scaley) {
            g2d.drawImage(img, 0,(int) ((m_height - img.getHeight(null) * scalex) / 2.0)
            , m_width, (int) (img.getHeight(null) * scalex),  null);
        } else {
           g2d.drawImage(img, (int) ((m_width - img.getWidth(null) * scaley) / 2.0), 0
           , (int) (img.getWidth(null) * scaley), m_height, null);
        }        
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -