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

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

?? swfwriter.java

?? java版本的flash文件(swf)播放器
?? JAVA
字號:
/****************************************************************
 * Copyright (c) 2001, David N. Main, 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.
 * 
 * 3. The name of the author may not be used to endorse or 
 * promote products derived from this software without specific 
 * prior written permission. 
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
 ****************************************************************/
package com.anotherbigidea.flash.writers;

import java.io.*;
import com.anotherbigidea.io.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.flash.structs.Rect;
import com.anotherbigidea.flash.interfaces.*;

/**
 * Implements the SWFTags interface and writes a SWF file to the output stream
 */
public class SWFWriter implements SWFTags, SWFFileSignature
{
    protected OutStream    mOut;
    protected OutputStream mOutputstream;
    protected ByteArrayOutputStream mByteout;
    protected String mSignature = null;
    
    //--deferred header values
    protected int  frameCount;
    protected int  version;
    protected Rect frameSize;
    protected int  height;
    protected int  rate;
    
    /**
     * Write to a file.
     */
    public SWFWriter( String filename ) throws IOException {
    	this( new FileOutputStream( filename ) );
    }
    
    /**
     * Write to an output stream - closing it at the end.
     */
    public SWFWriter( OutputStream outputstream )
    {
        mOutputstream = outputstream;
        mOut = new OutStream( outputstream );
    } 
    
	/**
	 * Write to an out stream - closing it at the end.
	 */
    public SWFWriter( OutStream outstream )
    {
        mOut = outstream;
    }
    
	/**
	 * Sets the file signature if it has not been set already.
	 * The setCompression(..) method calls this and thus prevents any further
	 * changes to the signature - overriding any signature passed down from the
	 * SWFReader.
	 * 
	 * @see SWFFileSignature#signature(String)
	 */    
    public void signature( String sig ) {
    	if( mSignature != null ) return;
		mSignature = sig;    	
    }
    
    /**
     * Set Flash MX+ zip-compression on or off.  
     * It sets the file signature and thus prevents any different signature
     * from being specified.  Only the first call to this method has any effect,
     * and only if signature(..) has not been called yet.
     * 
     * @param compressionOn true for compression, false for no compression.
     */
    public void setCompression( boolean compressionOn ) {
		signature( compressionOn ?
						SWFFileSignature.SIGNATURE_COMPRESSED :
						SWFFileSignature.SIGNATURE_NORMAL );
    }
    
    /**
     * Writes the header unless the length or framecount are unknown (as
     * signified by a negative value), in which case the header values are
     * stored and written later, when the unknown value(s) can be determined.
     * 
     * @see SWFHeader#header(int, long, int, int, int, int)
     */
    public void header( int version, long length,
                        int twipsWidth, int twipsHeight,
                        int frameRate, int frameCount ) throws IOException
    {
        frameSize = new Rect( 0, 0, twipsWidth, twipsHeight );        

        //--Unknown values
        if( length < 0 || frameCount < 0 )
        {
            //--defer the header
            this.version    = version;
            this.rate       = frameRate;
            this.frameCount = 0;
                
            //--set up a byte array for the output
            if( mByteout == null )
            {
                mByteout = new ByteArrayOutputStream( 20000 );
                mOut = new OutStream( mByteout );
            }
            
			return;
        }            

        writeHeader( version, length, frameRate, frameCount );        
    }
    
    /**
     * @see SWFTags#tag(int, boolean, byte[])
     */
    public void tag( int tagType, boolean longTag, 
                     byte[] contents ) throws IOException
    {
        //System.out.println( "OUT Tag " + tagType + " " + longTag + " " + ( (contents==null) ? 0 : contents.length) );
        //System.out.println();
        
        int length = (contents != null ) ? contents.length : 0;
        longTag = ( length > 62 ) || longTag;
        
        int hdr = ( tagType << 6 ) + ( longTag ? 0x3f : length );

        mOut.writeUI16( hdr );
        
        if( longTag ) mOut.writeUI32( length );        
        
        if( contents != null ) mOut.write( contents );
        
        if( tagType == SWFConstants.TAG_SHOWFRAME ) frameCount++;        
        if( tagType == SWFConstants.TAG_END       ) finish();
    }
    
    protected void writeHeader( int version, long length,
                                int frameRate, int frameCount ) throws IOException 
    {        
		writeSignature();
        mOut.writeUI8( version );
        mOut.writeUI32( length );        
        
        //may be compressed from this point onwards
        if( mSignature.equals( SWFFileSignature.SIGNATURE_COMPRESSED ) ) {
        	mOut.writeCompressed();
        }
        
        frameSize.write( mOut );
        mOut.writeUI16( frameRate << 8 );
        mOut.writeUI16( frameCount );    
    }
    
    private void writeSignature() throws IOException {
    	if( mSignature == null ) signature( SWFFileSignature.SIGNATURE_NORMAL );
		mOut.write( mSignature.getBytes( "US-ASCII" ));
    }
    
    /**
     * Finish writing
     */
    protected void finish() throws IOException
    {
        //--Writing to a byte array - need to recalculate lengths
        if( mByteout != null )
        {
            byte[] bytes = mByteout.toByteArray();

            long length = 12L + frameSize.getLength() + bytes.length;

            mOut = new OutStream( mOutputstream );
            
            writeHeader( version, length, rate, frameCount );
            
            mOut.write( bytes );
        }

		mOut.close();
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女网站一区二区| 久久无码av三级| 亚洲图片一区二区| 欧美日韩你懂得| 丝瓜av网站精品一区二区| 欧美日韩一区高清| 久久国产精品99久久人人澡| 久久午夜羞羞影院免费观看| 粉嫩蜜臀av国产精品网站| 国产精品电影院| 欧美最新大片在线看| 久久精品免费观看| 国产精品全国免费观看高清| 欧美亚洲国产一区二区三区va| 天天色综合天天| 欧美激情一区二区三区蜜桃视频| 色综合天天综合色综合av| 天天操天天综合网| 国产亚洲一区二区三区四区| 风流少妇一区二区| 亚洲sss视频在线视频| 久久久99免费| 国产不卡视频一区二区三区| 午夜伦欧美伦电影理论片| 91精品在线麻豆| 国产精品一区二区久久不卡| 一区二区三区免费在线观看| 91精品国产综合久久精品性色| 蜜臀av一级做a爰片久久| 久久这里只有精品视频网| 99r国产精品| 激情偷乱视频一区二区三区| 一区二区三区中文字幕| 欧美成人精品二区三区99精品| av一区二区三区黑人| 奇米精品一区二区三区在线观看| 1000部国产精品成人观看| 日韩一区二区免费高清| 97久久超碰国产精品电影| 久久国产精品色| 亚洲综合区在线| 亚洲国产精品激情在线观看| 欧美一级一区二区| 91片黄在线观看| 国内久久婷婷综合| 亚洲图片欧美色图| 亚洲欧洲成人自拍| 欧美videossexotv100| 男女男精品网站| 欧美日韩国产欧美日美国产精品| 亚洲一二三区在线观看| av不卡在线播放| 美女爽到高潮91| 欧美又粗又大又爽| 国产欧美精品日韩区二区麻豆天美 | 亚洲一区二区三区不卡国产欧美| 欧美午夜不卡视频| 久久黄色级2电影| 亚洲一区在线电影| 国产亚洲污的网站| 日韩亚洲欧美成人一区| 免费观看30秒视频久久| 日韩精品中文字幕一区| 国产成人综合网站| 一区二区三区在线视频播放| 成人高清免费观看| 亚洲美女淫视频| 欧美成人伊人久久综合网| 国产乱子伦视频一区二区三区 | 91精品欧美久久久久久动漫| 国产精品国产三级国产专播品爱网| 国产毛片精品视频| 欧美日韩在线三区| 日本中文在线一区| 五月激情六月综合| 欧美成人午夜电影| 99视频热这里只有精品免费| 国产又粗又猛又爽又黄91精品| 洋洋成人永久网站入口| 欧美精品一二三四| 国产福利一区二区三区视频| 91啪在线观看| 日韩视频不卡中文| 97精品视频在线观看自产线路二| 色久综合一二码| 成人精品视频一区二区三区尤物| 久久精品av麻豆的观看方式| 欧美成人艳星乳罩| 精品国产免费视频| 久久这里只有精品首页| 久久久国产一区二区三区四区小说 | 国产一区二区在线观看视频| 美美哒免费高清在线观看视频一区二区 | 免费观看30秒视频久久| 国内成人免费视频| 国产成人在线色| 91在线视频免费观看| 日本韩国一区二区三区| 91精品麻豆日日躁夜夜躁| 日韩欧美美女一区二区三区| 久久一留热品黄| 自拍偷拍亚洲综合| 五月婷婷激情综合| 久久国产精品第一页| 久久综合色之久久综合| 日本一区二区成人| 亚洲另类一区二区| 图片区小说区区亚洲影院| 欧美96一区二区免费视频| 国产黑丝在线一区二区三区| 色婷婷综合久久久中文字幕| 欧美一区二区三区婷婷月色| 欧美国产视频在线| 午夜欧美电影在线观看| 国产酒店精品激情| 91搞黄在线观看| 26uuu国产日韩综合| 亚洲欧美偷拍卡通变态| 久久se这里有精品| 在线观看91精品国产入口| 精品国产一区二区三区久久久蜜月 | 亚洲欧洲精品天堂一级| 日本怡春院一区二区| 成人网男人的天堂| 日韩欧美一区二区久久婷婷| 《视频一区视频二区| 久久66热偷产精品| 欧美在线观看视频一区二区| 国产天堂亚洲国产碰碰| 日韩精彩视频在线观看| 成人动漫在线一区| 久久综合久久综合九色| 亚洲第一在线综合网站| 暴力调教一区二区三区| 精品国产一区久久| 三级精品在线观看| 91麻豆swag| 国产欧美一区二区精品秋霞影院 | 麻豆国产一区二区| 欧洲日韩一区二区三区| 国产精品视频一区二区三区不卡| 蜜臀av性久久久久蜜臀aⅴ | 天堂va蜜桃一区二区三区漫画版| av不卡一区二区三区| 久久精品人人做| 日本午夜一本久久久综合| 欧美综合亚洲图片综合区| 日本一区二区免费在线| 国内精品久久久久影院薰衣草| 欧美精品三级日韩久久| 亚洲一区免费在线观看| 91美女精品福利| 国产精品国模大尺度视频| 国产精品1区2区| 久久久精品影视| 黑人巨大精品欧美黑白配亚洲 | 久久综合九色综合欧美亚洲| 日韩专区欧美专区| 欧美精品 国产精品| 亚洲一区二区五区| 在线看日韩精品电影| 亚洲精品你懂的| 在线视频一区二区免费| 亚洲一区二区三区自拍| 欧美性猛交一区二区三区精品| 亚洲欧美综合网| 91麻豆国产香蕉久久精品| 亚洲激情综合网| 欧美最猛性xxxxx直播| 亚洲福利一二三区| 欧美日韩一区二区三区不卡| 亚洲国产另类精品专区| 6080午夜不卡| 青青草伊人久久| 日韩欧美高清在线| 国产在线播放一区二区三区| 久久久久成人黄色影片| 波多野结衣中文字幕一区二区三区| 一色桃子久久精品亚洲| 欧美午夜精品久久久久久超碰| 婷婷综合五月天| 欧美电视剧在线看免费| 国产成人精品一区二区三区四区| 久久精品日韩一区二区三区| 成人黄色av网站在线| 一区二区三区成人| 日韩小视频在线观看专区| 国产成人自拍在线| 一区二区三区在线观看视频| 欧美性大战xxxxx久久久| 麻豆精品在线看| 中文在线一区二区| 欧美日韩一区二区在线观看视频| 久久精品99国产国产精| 欧美国产丝袜视频| 欧美日韩小视频| 国产精品一二三| 亚洲一区在线观看视频| 精品国产网站在线观看| 成人黄色av网站在线|