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

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

?? pngloader.java

?? 一款基于java 的賽車類游戲 一款基于java 的賽車類游戲
?? JAVA
字號:
/*
 * Created on 2005-02-10
 *  
 */

//package com.nano.KangooJumper;

import java.io.*;
import javax.microedition.lcdui.*;

/**
 * @author diament PNGLoader
 * @version 1.1 modified by plumkawka to support palette offset and palette from
 *          array
 *  
 */
public class PNGLoader
{

	private static final int	IDAT_CHUNK			= ((int) 'I' << 24) | ((int) 'D' << 16) | ((int) 'A' << 8) | ((int) 'T');
	private static final int	PALETTE_CHUNK		= ((int) 'P' << 24) | ((int) 'L' << 16) | ((int) 'T' << 8) | ((int) 'E');
	private static final int	ENDMARK				= ((int) 'I' << 24) | ((int) 'E' << 16) | ((int) 'N' << 8) | ((int) 'D');

	private static boolean		IsCRCTableComputed	= false;
	private static int[]		CRCTable			= new int[256]; // Table of CRCs of all messages.	

	protected byte				buffer[]			= null;
	protected byte				plteRemaps[]		= null;
	protected int				size				= 0;
	protected int				plteDataOffset		= 0;
	protected int				plteSize			= 0;
	protected int				imageDataOffset		= 0;
	protected int				imageSize			= 0;



	PNGLoader(int name)
	{

		try
		{

			
			//DataInputStream ind = new DataInputStream(name.getClass().getResourceAsStream(name));
			DataInputStream ind = new DataInputStream(Utils.openStream(name));
			
			// Determine the filesize
			//
			size = 8;
			ind.skip(8);

			int ChnkType, ChnkLen;

			do
			{
				ChnkLen = ind.readInt();
				ChnkType = ind.readInt();

				if (ChnkType == PALETTE_CHUNK)
				{
					plteDataOffset = size + 8;
					plteSize = ChnkLen;
				}

				if (ChnkType == IDAT_CHUNK)
				{
					imageDataOffset = size + 8;
					imageSize = ChnkLen;
				}

				size += ChnkLen + 12;

				ind.skip(ChnkLen + 4); // Skip past data and the CRC

			} while (ENDMARK != ChnkType);

			ind.close();

			buffer = new byte[size];

			//ind = new DataInputStream(name.getClass().getResourceAsStream(name));
			ind = new DataInputStream(Utils.openStream(name));
			size = ind.read(buffer, 0, size);
			ind.close();
		}
		catch (Exception e)
		{
		}
	}



	PNGLoader(int name, int paletteName, int numRemaps)
	//PNGLoader(String name, String paletteName, int numRemaps)
	{
		//plteRemaps = new byte[numRemaps * 4];

		try
		{
			// read palette
			plteRemaps = Utils.loadByteArray(paletteName);

			//DataInputStream ind = new DataInputStream(name.getClass().getResourceAsStream(name));
			DataInputStream ind = new DataInputStream(Utils.openStream(name));

			// Determine the filesize
			//
			size = 8;
			ind.skip(8);

			int ChnkType, ChnkLen;

			do
			{
				ChnkLen = ind.readInt();
				ChnkType = ind.readInt();

				if (ChnkType == PALETTE_CHUNK)
				{
					plteDataOffset = size + 8;
					plteSize = ChnkLen;
				}

				if (ChnkType == IDAT_CHUNK)
				{
					imageDataOffset = size + 8;
					imageSize = ChnkLen;
				}

				size += ChnkLen + 12;

				ind.skip(ChnkLen + 4); // Skip past data and the CRC

			} while (ENDMARK != ChnkType);

			ind.close();

			buffer = new byte[size];

			ind = new DataInputStream(Utils.openStream(name));
			//ind = new DataInputStream(name.getClass().getResourceAsStream(name));
			size = ind.read(buffer, 0, size);
			ind.close();
		}
		catch (Exception e)
		{
		}

		if (0 != plteDataOffset)
		{
			if (null != plteRemaps)
			{
				for (int k = 0; k < numRemaps; k++)
				{
					int pos = 4 * k;
					int index = plteRemaps[pos] * 3;

					if (index + 3 > plteSize)
					{
						break;
					}

					index += plteDataOffset;

					buffer[index] = plteRemaps[pos + 1];
					buffer[index + 1] = plteRemaps[pos + 2];
					buffer[index + 2] = plteRemaps[pos + 3];
				}
			}

			int CRC = getCRC(buffer, plteDataOffset - 4, plteSize + 4); // PLTE
			// marker
			// included

			buffer[plteDataOffset + plteSize] = (byte) ((CRC >> 24) & 0xFF);
			buffer[plteDataOffset + plteSize + 1] = (byte) ((CRC >> 16) & 0xFF);
			buffer[plteDataOffset + plteSize + 2] = (byte) ((CRC >> 8) & 0xFF);
			buffer[plteDataOffset + plteSize + 3] = (byte) ((CRC) & 0xFF);
		}
	}



	public void remapPalette(short[] pal, int ofs, int num)
	{
		if (0 != plteDataOffset)
		{

			int index = plteDataOffset + (ofs * 3);
			int pos = 0;
			for (int k = 0; k < num; k++)
			{

				buffer[index++] = (byte) (pal[pos++] & 255);
				buffer[index++] = (byte) (pal[pos++] & 255);
				buffer[index++] = (byte) (pal[pos++] & 255);
			}

			int CRC = getCRC(buffer, plteDataOffset - 4, plteSize + 4); // PLTE
			// marker
			// included

			buffer[plteDataOffset + plteSize] = (byte) ((CRC >> 24) & 0xFF);
			buffer[plteDataOffset + plteSize + 1] = (byte) ((CRC >> 16) & 0xFF);
			buffer[plteDataOffset + plteSize + 2] = (byte) ((CRC >> 8) & 0xFF);
			buffer[plteDataOffset + plteSize + 3] = (byte) ((CRC) & 0xFF);
		}

	}



	public Image getImage()
	{
		if (null == buffer)
			return null;
		else
			return Image.createImage(buffer, 0, size);
	}



	private static void makeCRCTable()
	{
		int c, n, k;

		for (n = 0; n < 256; n++)
		{
			c = n;
			for (k = 0; k < 8; k++)
			{
				if ((c & 1) == 1)
					c = 0xedb88320 ^ (c >>> 1);
				else
					c = c >>> 1;
			}

			CRCTable[n] = c;
		}

		IsCRCTableComputed = true;
	}



	private static int getCRC(byte[] buf, int offset, int len)
	{
		if (!IsCRCTableComputed)
			makeCRCTable();

		int crc = 0xffffffff; //init to all 1's
		int end = offset + len;
		for (int n = offset; n < end; n++) // run thru specified bytes in buf
		{
			crc = CRCTable[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8);
		}
		return crc ^ 0xffffffff; //send the 1's complement of the final value
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一二三区在线观看| 亚洲一级片在线观看| 91精品国产一区二区三区蜜臀| 91美女片黄在线观看91美女| 91网站在线播放| 91浏览器打开| 欧美三级在线视频| 欧美精品一级二级| 日韩视频免费观看高清完整版在线观看| 欧美日韩国产高清一区二区三区| 欧美午夜精品免费| 91精品国产欧美一区二区成人 | 欧美在线小视频| 欧美伊人久久久久久午夜久久久久| 欧美午夜不卡视频| 欧美老人xxxx18| 欧美电视剧在线看免费| 久久婷婷久久一区二区三区| 国产精品人成在线观看免费| 亚洲视频在线一区观看| 亚洲一区二区偷拍精品| 日韩成人精品在线观看| 久久99精品久久久久久久久久久久| 激情av综合网| 99久久夜色精品国产网站| 在线欧美一区二区| 欧美成人猛片aaaaaaa| 国产日韩欧美不卡| 一区二区三区日韩精品视频| 日韩av在线播放中文字幕| 国产一区二区影院| 91在线高清观看| 欧美一区二区三区视频在线| 久久久久久久久久久久久久久99 | 成人av片在线观看| 欧美中文字幕一二三区视频| 日韩午夜av一区| 亚洲国产成人在线| 亚洲成av人片www| 国产在线观看免费一区| 91免费视频观看| 欧美videossexotv100| 国产精品福利av| 日本一不卡视频| 成人动漫一区二区| 午夜精品福利久久久| 国产在线播放一区| 91国偷自产一区二区三区观看| 91精品国产综合久久久蜜臀图片| 中文字幕欧美日本乱码一线二线| 亚洲小说春色综合另类电影| 国产一区二区三区不卡在线观看| 91网站最新地址| 精品日韩99亚洲| 一区二区三区精密机械公司| 久久电影网站中文字幕| 91亚洲精品乱码久久久久久蜜桃| 91精品国产色综合久久ai换脸| 国产人妖乱国产精品人妖| 偷拍自拍另类欧美| 99久久免费国产| 久久综合色天天久久综合图片| 亚洲一区日韩精品中文字幕| 成人在线视频一区二区| 日韩一区二区三区四区| 亚洲欧美另类综合偷拍| 国产成人欧美日韩在线电影| 欧美日韩www| 亚洲欧美欧美一区二区三区| 国产乱码精品一区二区三| 制服丝袜av成人在线看| 亚洲欧美一区二区视频| 国产麻豆成人传媒免费观看| 欧美日韩国产一二三| 亚洲另类中文字| 成人激情电影免费在线观看| 精品国产伦一区二区三区观看方式| 亚洲国产精品久久久男人的天堂| 成人激情综合网站| 国产偷v国产偷v亚洲高清 | 欧美中文字幕一二三区视频| 国产精品网友自拍| 国产一区二区成人久久免费影院| 欧美一区午夜视频在线观看| 亚洲二区视频在线| 99视频在线观看一区三区| 久久久久99精品一区| 九九精品视频在线看| 91精品啪在线观看国产60岁| 亚洲妇熟xx妇色黄| 欧美系列亚洲系列| 亚洲成a人片在线不卡一二三区| 91香蕉视频污| 亚洲精品中文字幕在线观看| 成人国产精品免费网站| 国产欧美va欧美不卡在线| 国产乱码一区二区三区| 久久女同精品一区二区| 国产一区二区在线看| 久久久久久久久久久久久久久99 | 蜜臀av性久久久久蜜臀av麻豆| 欧美伊人久久久久久久久影院| 亚洲精品日日夜夜| 色综合色综合色综合| 亚洲免费在线视频一区 二区| 91蜜桃网址入口| 夜夜夜精品看看| 欧美日韩在线播放三区四区| 亚洲国产精品久久人人爱| 欧美日韩国产大片| 蜜臀久久99精品久久久久宅男| 欧美一级艳片视频免费观看| 日韩在线播放一区二区| 欧美成人精品福利| 韩国精品主播一区二区在线观看 | 日韩黄色免费电影| 精品欧美久久久| 国产露脸91国语对白| 国产色爱av资源综合区| 99热在这里有精品免费| 又紧又大又爽精品一区二区| 欧美视频你懂的| 麻豆精品在线播放| 国产午夜亚洲精品理论片色戒 | 91精品办公室少妇高潮对白| 一区二区三区日本| 欧美一级高清片| 成人一级黄色片| 亚洲乱码国产乱码精品精可以看| 欧美午夜精品电影| 久久机这里只有精品| 日本一区二区三区在线不卡| 色婷婷av一区二区| 全部av―极品视觉盛宴亚洲| 欧美精品一区二区三区久久久| 欧美韩日一区二区三区四区| 99久久综合色| 亚洲第一狼人社区| 久久蜜臀中文字幕| 99国产精品一区| 美日韩一级片在线观看| 国产精品少妇自拍| 欧美电影在哪看比较好| 国产成人免费视频网站| 亚洲午夜免费福利视频| 精品国产精品一区二区夜夜嗨| 成人黄色综合网站| 视频一区欧美精品| 国产精品黄色在线观看| 欧美一区二区三区四区在线观看| 丁香婷婷深情五月亚洲| 亚洲大片免费看| 国产视频一区在线播放| 欧美日本乱大交xxxxx| 国产99久久久精品| 日韩电影在线观看网站| 国产精品久久精品日日| 日韩免费看的电影| 91美女视频网站| 国产福利一区二区三区视频| 亚洲午夜精品在线| 国产视频一区二区在线观看| 欧美一区二区三区日韩视频| 99r精品视频| 国产一区二区美女| 婷婷六月综合亚洲| 亚洲三级电影全部在线观看高清| 欧美zozozo| 欧美视频在线播放| 91亚洲精品久久久蜜桃网站| 国内精品自线一区二区三区视频| 亚洲午夜激情网页| 国产精品成人免费| 欧美不卡在线视频| 精品视频在线免费看| 福利电影一区二区| 伦理电影国产精品| 亚洲一区二区在线免费看| 中文字幕一区二区三区在线播放 | 欧美国产日韩a欧美在线观看| 欧美一区二区精品| 欧美巨大另类极品videosbest| 成人动漫视频在线| 国产a久久麻豆| 国产一区二区在线影院| 久久成人综合网| 蜜芽一区二区三区| 水蜜桃久久夜色精品一区的特点| 亚洲美女偷拍久久| 成人免费在线观看入口| 欧美激情一区二区三区在线| 久久精品欧美一区二区三区麻豆| 欧美一级视频精品观看| 欧美日韩在线一区二区| 欧美自拍偷拍午夜视频| 日本韩国一区二区三区视频| 99久久久久久| av电影在线观看不卡| 99久久99久久精品免费看蜜桃 | 久久久亚洲午夜电影|