亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? imageencoder.java

?? 著名IDAutomation公司的JAVA條碼控件源碼
?? JAVA
字號:
// ImageEncoder - abstract class for writing out an image
//
// Copyright (C) 1996 by Jef Poskanzer <jef@acme.com>.  All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// Visit the ACME Labs Java page for up-to-date versions of this and other
// fine Java utilities: http://www.acme.com/java/

package com.idautomation.barcode.encoder;
import java.util.*;
import java.io.*;
import java.awt.Image;
import java.awt.image.*;

/// Abstract class for writing out an image.
// <P>
// A framework for classes that encode and write out an image in
// a particular file format.
// <P>
// This provides a simplified rendition of the ImageConsumer interface.
// It always delivers the pixels as ints in the RGBdefault color model.
// It always provides them in top-down left-right order.
// If you want more flexibility you can always implement ImageConsumer
// directly.
// <P>
// <A HREF="/resources/classes/Acme/JPM/Encoders/ImageEncoder.java">Fetch the software.</A><BR>
// <A HREF="/resources/classes/Acme.tar.gz">Fetch the entire Acme package.</A>
// <P>
// @see GifEncoder
// @see PpmEncoder
// @see Acme.JPM.Decoders.ImageDecoder

public abstract class ImageEncoder implements ImageConsumer
    {

    protected OutputStream out;

    private ImageProducer producer;
    private int width = -1;
    private int height = -1;
    private int hintflags = 0;
    private boolean started = false;
    private boolean encoding;
    private IOException iox;
    private static final ColorModel rgbModel = ColorModel.getRGBdefault();
    private Hashtable props = null;

    /// Constructor.
    // @param img The image to encode.
    // @param out The stream to write the bytes to.
    public ImageEncoder( Image img, OutputStream out ) throws IOException
	{
	this( img.getSource(), out );
	}

    /// Constructor.
    // @param producer The ImageProducer to encode.
    // @param out The stream to write the bytes to.
    public ImageEncoder( ImageProducer producer, OutputStream out ) throws IOException
	{
	this.producer = producer;
	this.out = out;
	}


    // Methods that subclasses implement.

    /// Subclasses implement this to initialize an encoding.
    abstract void encodeStart( int w, int h ) throws IOException;

    /// Subclasses implement this to actually write out some bits.  They
    // are guaranteed to be delivered in top-down-left-right order.
    // One int per pixel, index is row * scansize + off + col,
    // RGBdefault (AARRGGBB) color model.
    abstract void encodePixels(
	int x, int y, int w, int h, int[] rgbPixels, int off, int scansize )
	throws IOException;

    /// Subclasses implement this to finish an encoding.
    abstract void encodeDone() throws IOException;


    // Our own methods.

    /// Call this after initialization to get things going.
    public synchronized void encode() throws IOException
	{
	encoding = true;
	iox = null;
	producer.startProduction( this );
	while ( encoding )
	    try
		{
		wait();
		}
	    catch ( InterruptedException e ) {}
	if ( iox != null )
	    throw iox;
	}

    private boolean accumulate = false;
    private int[] accumulator;

    private void encodePixelsWrapper(
	int x, int y, int w, int h, int[] rgbPixels, int off, int scansize )
	throws IOException
	{
	if ( ! started )
	    {
	    started = true;
	    encodeStart( width, height );
	    if ( ( hintflags & TOPDOWNLEFTRIGHT ) == 0 )
		{
		accumulate = true;
		accumulator = new int[width * height];
		}
	    }
	if ( accumulate )
	    for ( int row = 0; row < h; ++row )
		System.arraycopy(
		    rgbPixels, row * scansize + off,
		    accumulator, ( y + row ) * width + x,
		    w );
	else
	    encodePixels( x, y, w, h, rgbPixels, off, scansize );
	}

    private void encodeFinish() throws IOException
	{
	if ( accumulate )
	    {
	    encodePixels( 0, 0, width, height, accumulator, 0, width );
	    accumulator = null;
	    accumulate = false;
	    }
	}

    private synchronized void stop()
	{
	encoding = false;
	notifyAll();
	}


    // Methods from ImageConsumer.

    public void setDimensions( int width, int height )
	{
	this.width = width;
	this.height = height;
	}

    public void setProperties( Hashtable props )
	{
	this.props = props;
	}

    public void setColorModel( ColorModel model )
	{
	// Ignore.
	}

    public void setHints( int hintflags )
	{
	this.hintflags = hintflags;
	}

    public void setPixels(
	int x, int y, int w, int h, ColorModel model, byte[] pixels,
	int off, int scansize )
	{
	int[] rgbPixels = new int[w];
	for ( int row = 0; row < h; ++row )
	    {
	    int rowOff = off + row * scansize;
	    for ( int col = 0; col < w; ++col )
		rgbPixels[col] = model.getRGB( pixels[rowOff + col] & 0xff );
	    try
		{
		encodePixelsWrapper( x, y + row, w, 1, rgbPixels, 0, w );
		}
	    catch ( IOException e )
		{
		iox = e;
		stop();
		return;
		}
	    }
	}

    public void setPixels(
	int x, int y, int w, int h, ColorModel model, int[] pixels,
	int off, int scansize )
	{
	if ( model == rgbModel )
	    {
	    try
		{
		encodePixelsWrapper( x, y, w, h, pixels, off, scansize );
		}
	    catch ( IOException e )
		{
		iox = e;
		stop();
		return;
		}
	    }
	else
	    {
	    int[] rgbPixels = new int[w];
            for ( int row = 0; row < h; ++row )
		{
		int rowOff = off + row * scansize;
                for ( int col = 0; col < w; ++col )
                    rgbPixels[col] = model.getRGB( pixels[rowOff + col] );
		try
		    {
		    encodePixelsWrapper( x, y + row, w, 1, rgbPixels, 0, w );
		    }
		catch ( IOException e )
		    {
		    iox = e;
		    stop();
		    return;
		    }
		}
	    }
	}

    public void imageComplete( int status )
	{
	producer.removeConsumer( this );
	if ( status == ImageConsumer.IMAGEABORTED )
	    iox = new IOException( "image aborted" );
	else
	    {
	    try
		{
		encodeFinish();
		encodeDone();
		}
	    catch ( IOException e )
		{
		iox = e;
		}
	    }
	stop();
	}

    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人欧美一区二区三区1314| 91在线视频免费观看| 成人小视频在线| 色素色在线综合| 日韩一区二区中文字幕| 久久精品一区八戒影视| 日韩理论片网站| 麻豆精品新av中文字幕| 日韩精品中文字幕在线不卡尤物| www成人在线观看| 一色桃子久久精品亚洲| 日韩国产在线一| 国产精品自拍一区| 色www精品视频在线观看| 日韩一区二区三区免费看| 国产日产欧美精品一区二区三区| 亚洲国产日产av| 国产九色sp调教91| 欧美视频在线观看一区二区| 久久久久99精品国产片| 一区二区三区四区国产精品| 韩国毛片一区二区三区| 在线观看日韩国产| 久久影院电视剧免费观看| 亚洲影视在线观看| 国产精品996| 91精品国产综合久久精品图片| 欧美国产综合一区二区| 日本三级亚洲精品| 色综合久久中文综合久久97| 精品国产成人系列| 亚洲小少妇裸体bbw| 成人激情免费视频| 精品精品国产高清a毛片牛牛| 亚洲精品视频免费观看| 国产成人在线电影| 欧美一区二区人人喊爽| 亚洲欧美欧美一区二区三区| 国产激情视频一区二区在线观看| 欧美手机在线视频| 亚洲素人一区二区| 国产丶欧美丶日本不卡视频| 91精品久久久久久久久99蜜臂| 亚洲色图第一区| 国产传媒久久文化传媒| 日韩欧美国产三级| 丝袜脚交一区二区| 色老综合老女人久久久| 国产精品区一区二区三区| 国产一区二区在线看| 正在播放亚洲一区| 亚洲一二三区在线观看| 99re成人在线| 国产精品久久夜| 国产99精品在线观看| 精品处破学生在线二十三| 日韩av在线发布| 欧美猛男男办公室激情| 亚洲一区二区偷拍精品| 成人av免费在线| 国产午夜精品福利| 国产麻豆91精品| 26uuu精品一区二区三区四区在线| 日韩精品五月天| 欧美精品xxxxbbbb| 午夜一区二区三区视频| 欧美三级日韩三级| 亚洲一区成人在线| 欧美亚洲国产一区二区三区| 一区二区三区欧美激情| 日本韩国精品在线| 一区二区三区四区在线播放| 日本道在线观看一区二区| 亚洲日本va午夜在线影院| 91麻豆免费在线观看| 亚洲黄色片在线观看| 91麻豆视频网站| 亚洲综合视频网| 欧美日韩一区二区三区在线| 亚洲图片欧美色图| 欧美喷潮久久久xxxxx| 日本不卡一二三区黄网| 欧美一区二视频| 久久国产精品第一页| 久久先锋资源网| 国产麻豆精品久久一二三| 欧美激情中文字幕一区二区| 成人丝袜18视频在线观看| 中文字幕日韩一区| 欧美综合久久久| 日韩高清一级片| 欧美不卡视频一区| 国产成人精品免费| 亚洲美女屁股眼交3| 欧美亚洲日本国产| 久久国产精品99久久人人澡| 国产午夜精品理论片a级大结局 | 欧美丰满高潮xxxx喷水动漫| 五月婷婷欧美视频| 欧美va在线播放| 国产精品一区二区三区四区| 国产精品理论在线观看| 日本精品一级二级| 美腿丝袜亚洲色图| 国产视频一区二区在线观看| 91在线码无精品| 午夜精品影院在线观看| 精品国精品国产尤物美女| 成人性生交大片免费看中文网站| 亚洲精品免费播放| 日韩欧美一区二区不卡| 粉嫩绯色av一区二区在线观看| 一区二区在线看| 欧美成人a∨高清免费观看| 成人免费看视频| 天天综合色天天综合色h| 久久影院午夜片一区| 色婷婷综合久久久久中文| 男人操女人的视频在线观看欧美| 国产日韩一级二级三级| 在线观看免费亚洲| 国产在线精品不卡| 亚洲欧美日韩成人高清在线一区| 欧美一区二区视频免费观看| 粉嫩av一区二区三区粉嫩| 亚洲电影欧美电影有声小说| 久久久亚洲高清| 欧美少妇xxx| 国产精品18久久久久久久网站| 一区二区三区日韩精品| 久久久不卡网国产精品二区 | 亚洲大片免费看| 久久久久久久久久久久电影 | 午夜成人在线视频| 亚洲国产精品二十页| 91.xcao| 国产成人精品免费视频网站| 视频在线在亚洲| 欧美激情艳妇裸体舞| 日韩欧美国产一区二区三区 | 偷拍一区二区三区四区| 中文子幕无线码一区tr| 欧美丰满美乳xxx高潮www| 91老司机福利 在线| 国产一区二区三区久久久| 亚洲不卡一区二区三区| 国产精品视频yy9299一区| 日韩午夜中文字幕| 欧洲另类一二三四区| 国产成人一级电影| 美国毛片一区二区三区| 亚洲综合一二区| 亚洲日本在线观看| 国产欧美日韩三区| 欧美mv日韩mv国产网站| 欧美探花视频资源| 91一区二区在线| 国产99一区视频免费| 九九国产精品视频| 丝袜亚洲另类欧美综合| 亚洲已满18点击进入久久| 国产精品国产成人国产三级 | 成人精品国产福利| 韩国一区二区在线观看| 日本亚洲三级在线| 午夜精品福利一区二区蜜股av | 欧美人妖巨大在线| 在线观看日产精品| 色哟哟一区二区在线观看| 99久久精品99国产精品| 国产精品综合网| 国内久久婷婷综合| 久久国产精品色婷婷| 另类小说一区二区三区| 热久久国产精品| 日韩av一区二| 青青青爽久久午夜综合久久午夜 | 精品播放一区二区| 欧美一卡2卡三卡4卡5免费| 6080亚洲精品一区二区| 欧美日韩高清在线播放| 欧美色图片你懂的| 欧美熟乱第一页| 欧美日韩精品一区二区三区 | 蜜臀av一区二区在线免费观看 | 日韩一区二区三区免费看 | 免费亚洲电影在线| 日韩av在线播放中文字幕| 日本强好片久久久久久aaa| 性欧美大战久久久久久久久| 亚洲午夜在线观看视频在线| 一区二区成人在线视频| 亚洲一区在线观看视频| 亚洲国产一区二区a毛片| 图片区小说区国产精品视频| 免费成人美女在线观看.| 狠狠色丁香久久婷婷综合_中 | 国产精品久久一卡二卡| 日韩一区欧美小说| 一级特黄大欧美久久久|