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

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

?? tagparser.java

?? java版本的flash文件(swf)播放器
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
/****************************************************************
 * 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.readers;

import java.io.*;
import java.util.*;
import java.util.zip.*;
import com.anotherbigidea.flash.interfaces.*;
import com.anotherbigidea.flash.*;
import com.anotherbigidea.flash.structs.*;
import com.anotherbigidea.io.*;
import com.anotherbigidea.flash.writers.*;

/**
 * Parse Tags and drive a SWFTagTypes interface.
 */
public class TagParser implements SWFTags, SWFConstants, SWFFileSignature 
{
	protected String mStringEncoding = SWFConstants.STRING_ENCODING_MX;
	protected int mFlashVersion = SWFConstants.FLASH_MX_VERSION;
	
    protected SWFTagTypes mTagtypes;
    //protected byte[] contents;  //for debugging
    
    public TagParser( SWFTagTypes tagtypes )
    {
        mTagtypes = tagtypes;
    }    
    
    /**
     * @see SWFFileSignature#signature(String)
     */
    public void signature( String sig ) {
    	if( mTagtypes instanceof SWFFileSignature ) {
    		((SWFFileSignature) mTagtypes).signature( sig );
    	}
    }
    
    /**
     * Interface SWFTags
     */
    public void header( int version, long length,
                        int twipsWidth, int twipsHeight,
                        int frameRate, int frameCount ) throws IOException
    {
        mTagtypes.header( version, length, 
                         twipsWidth, twipsHeight, 
                         frameRate, frameCount );
                         
        //revert to old encoding for pre-MX
        if( version < SWFConstants.FLASH_MX_VERSION ) {
        	mStringEncoding = SWFConstants.STRING_ENCODING_PRE_MX;
        }
        
        mFlashVersion = version;
    }
    
    /**
     * Interface SWFTags
    
    public void tag( int tagType, boolean longTag, byte[] contents ) 
        throws IOException
    {
        //this.contents = contents; //for debugging
        
        int length = ( contents != null ) ? contents.length : 0;
        
        InStream in = ( length > 0 ) ? new InStream( contents ) : null;
        
        //System.out.println( "IN  Tag " + tagType + " " + longTag + " " + length );
        
        switch( tagType )
        {
            case TAG_END:       tagtypes.tagEnd(); break;
            case TAG_SHOWFRAME: tagtypes.tagShowFrame(); break;
                                
            //case TAG_DEFINESHAPE : 
            //case TAG_DEFINESHAPE2: 
            //case TAG_DEFINESHAPE3: parseDefineShape( tagType, in ); break;
                                   
            case TAG_DOACTION      : parseDoAction( in ); break;
            //case TAG_FREECHARACTER : tagtypes.tagFreeCharacter( in.readUI16() ); break;
            //case TAG_PLACEOBJECT   : parsePlaceObject( in, length ); break;
            case TAG_PLACEOBJECT2  : parsePlaceObject2( in ); break;
            //case TAG_REMOVEOBJECT  : tagtypes.tagRemoveObject( in.readUI16(), in.readUI16() ); break;
            //case TAG_REMOVEOBJECT2 : tagtypes.tagRemoveObject2( in.readUI16() ); break;
            //case TAG_SETBACKGROUNDCOLOR : tagtypes.tagSetBackgroundColor( new Color(in) ); break;              
            //case TAG_FRAMELABEL    : tagtypes.tagFrameLabel( in.readString() ); break;              
            case TAG_DEFINESPRITE  : parseDefineSprite( in ); break;
            //case TAG_PROTECT       : tagtypes.tagProtect( (length>0) ? in.read(length) : null ); break;
            //case TAG_ENABLEDEBUG   : tagtypes.tagEnableDebug( (length>0) ? in.read(length) : null ); break;
            //case TAG_DEFINEFONT    : parseDefineFont( in ); break;
            //case TAG_DEFINEFONTINFO: parseFontInfo( in, length ); break;
            //case TAG_DEFINEFONT2   : parseDefineFont2( in ); break;
            //case TAG_DEFINETEXTFIELD: parseDefineTextField( in ); break;
                                      
            //case TAG_DEFINETEXT    : 
            //case TAG_DEFINETEXT2   : parseDefineText( tagType, in ); break;

            case TAG_DEFINEBUTTON  : parseDefineButton( in ); break;
            case TAG_DEFINEBUTTON2 : parseDefineButton2( in ); break;
            //case TAG_DEFINEBUTTONCXFORM : parseButtonCXForm( in ); break;

            //case TAG_EXPORT : parseExport( in ); break;
            //case TAG_IMPORT : parseImport( in ); break;

            //case TAG_DEFINEQUICKTIMEMOVIE : tagtypes.tagDefineQuickTimeMovie( in.readUI16(), in.readString() ); break;
                                            
            //case TAG_DEFINEBITSJPEG2     : parseDefineJPEG2( in, length ); break;
            //case TAG_DEFINEBITSLOSSLESS  : parseDefineBitsLossless( in, length, false ); break;
            //case TAG_DEFINEBITSLOSSLESS2 : parseDefineBitsLossless( in, length, true  ); break;
                                       
            //case TAG_DEFINEMORPHSHAPE : parseMorphShape( in ); break;
                                        
            //case TAG_NAMECHARACTER:     tagtypes.tagNameCharacter   ( contents ); break;
            //case TAG_GENERATOR_TEXT:    tagtypes.tagGeneratorText   ( contents ); break;
            //case TAG_TEMPLATECOMMAND:   tagtypes.tagGeneratorCommand( contents ); break;
            //case TAG_FLASHGENERATOR:    tagtypes.tagGenerator       ( contents ); break;
            //case TAG_GEN_EXTERNAL_FONT: tagtypes.tagGeneratorFont   ( contents ); break;
            //case TAG_SERIALNUMBER:      tagtypes.tagSerialNumber( in.readString() ); break;                                        
                                        
            //case TAG_DEFINESOUND:       parseDefineSound( in ); break;
            //case TAG_STARTSOUND:        parseStartSound( in ); break;
            //case TAG_DEFINEBUTTONSOUND: parseDefineButtonSound( in ); break;
            //case TAG_SOUNDSTREAMHEAD:   parseSoundStreamHead( true, in ); break;
            //case TAG_SOUNDSTREAMHEAD2:  parseSoundStreamHead( false, in ); break;
            //case TAG_SOUNDSTREAMBLOCK:  parseSoundStreamBlock( in ); break;
                                        
            //case TAG_DEFINEBITS:      parseDefineBits( in ); break;
            //case TAG_JPEGTABLES:      parseDefineJPEGTables( in ); break;
            //case TAG_DEFINEBITSJPEG3: parseDefineBitsJPEG3( in ); break;
    
            default: //--Unknown Tag Type
                tagtypes.tag( tagType, longTag, contents );
                break;
        }                
    } */
    
    /**
     * Interface SWFTags
     */
    public void tag( int tagType, boolean longTag, byte[] contents ) 
        throws IOException
    {
        //this.contents = contents; //for debugging
        
        int length = ( contents != null ) ? contents.length : 0;
        
        InStream in = ( length > 0 ) ? new InStream( contents ) : null;
        
        //System.out.println( "IN  Tag " + tagType + " " + longTag + " " + length );
        
        switch( tagType )
        {
            case TAG_END:       mTagtypes.tagEnd(); break;
            case TAG_SHOWFRAME: mTagtypes.tagShowFrame(); break;
                                
            case TAG_DEFINESHAPE : 
            case TAG_DEFINESHAPE2: 
            case TAG_DEFINESHAPE3: parseDefineShape( tagType, in ); break;
                                   
            case TAG_DOACTION      : parseDoAction( in ); break;
			case TAG_DOINITACTION  : parseDoInitAction( in ); break;
            case TAG_FREECHARACTER : mTagtypes.tagFreeCharacter( in.readUI16() ); break;
            case TAG_PLACEOBJECT   : parsePlaceObject( in, length ); break;
            case TAG_PLACEOBJECT2  : parsePlaceObject2( in ); break;
            case TAG_REMOVEOBJECT  : mTagtypes.tagRemoveObject( in.readUI16(), in.readUI16() ); break;
            case TAG_REMOVEOBJECT2 : mTagtypes.tagRemoveObject2( in.readUI16() ); break;
            case TAG_SETBACKGROUNDCOLOR : mTagtypes.tagSetBackgroundColor( new Color(in) ); break;              
            case TAG_FRAMELABEL    : parseFrameLabel( in, contents ); break;              
            case TAG_DEFINESPRITE  : parseDefineSprite( in ); break;
            case TAG_PROTECT       : mTagtypes.tagProtect( (length>0) ? in.read(length) : null ); break;
            case TAG_ENABLEDEBUG   : mTagtypes.tagEnableDebug( (length>0) ? in.read(length) : null ); break;
            case TAG_DEFINEFONT    : parseDefineFont( in ); break;
            case TAG_DEFINEFONTINFO: parseFontInfo( in, length, false ); break;
			case TAG_DEFINEFONTINFO2: parseFontInfo( in, length, true ); break;
            case TAG_DEFINEFONT2   : parseDefineFont2( in ); break;
            case TAG_DEFINETEXTFIELD: parseDefineTextField( in ); break;
                                      
            case TAG_DEFINETEXT    : 
            case TAG_DEFINETEXT2   : parseDefineText( tagType, in ); break;

            case TAG_DEFINEBUTTON  : parseDefineButton( in ); break;
            case TAG_DEFINEBUTTON2 : parseDefineButton2( in ); break;
            case TAG_DEFINEBUTTONCXFORM : parseButtonCXForm( in ); break;

            case TAG_EXPORT : parseExport( in ); break;
            case TAG_IMPORT : parseImport( in ); break;

            case TAG_DEFINEQUICKTIMEMOVIE : mTagtypes.tagDefineQuickTimeMovie( in.readUI16(), in.readString( mStringEncoding ) ); break;
                                            
            case TAG_DEFINEBITSJPEG2     : parseDefineJPEG2( in, length ); break;
            case TAG_DEFINEBITSLOSSLESS  : parseDefineBitsLossless( in, length, false ); break;
            case TAG_DEFINEBITSLOSSLESS2 : parseDefineBitsLossless( in, length, true  ); break;
                                       
            case TAG_DEFINEMORPHSHAPE : parseMorphShape( in ); break;
                                        
            case TAG_NAMECHARACTER:     mTagtypes.tagNameCharacter   ( contents ); break;
            case TAG_GENERATOR_TEXT:    mTagtypes.tagGeneratorText   ( contents ); break;
            case TAG_TEMPLATECOMMAND:   mTagtypes.tagGeneratorCommand( contents ); break;
            case TAG_FLASHGENERATOR:    mTagtypes.tagGenerator       ( contents ); break;
            case TAG_GEN_EXTERNAL_FONT: mTagtypes.tagGeneratorFont   ( contents ); break;
            case TAG_SERIALNUMBER:      mTagtypes.tagSerialNumber( in.readString( mStringEncoding ) ); break;                                        
                                        
            case TAG_DEFINESOUND:       parseDefineSound( in ); break;
            case TAG_STARTSOUND:        parseStartSound( in ); break;
            case TAG_DEFINEBUTTONSOUND: parseDefineButtonSound( in ); break;
            case TAG_SOUNDSTREAMHEAD:   parseSoundStreamHead( true, in ); break;
            case TAG_SOUNDSTREAMHEAD2:  parseSoundStreamHead( false, in ); break;
            case TAG_SOUNDSTREAMBLOCK:  parseSoundStreamBlock( in ); break;
                                        
            case TAG_DEFINEBITS:      parseDefineBits( in ); break;
            case TAG_JPEGTABLES:      parseDefineJPEGTables( in ); break;
            case TAG_DEFINEBITSJPEG3: parseDefineBitsJPEG3( in ); break;

			case TAG_ENABLEDEBUGGER2 : parseEnableDebugger2( in, length ); break;
    
            default: //--Unknown Tag Type
                mTagtypes.tag( tagType, longTag, contents );
                break;
        }                
    }//*/

	protected void parseEnableDebugger2( InStream in, int length ) throws IOException {
		int reserved = in.readUI16();
		mTagtypes.tagEnableDebug2( (length>2) ? in.read(length-2) : null );		
	}

	protected void parseFrameLabel( InStream in, byte[] contents ) throws IOException {
		
		if( contents != null && contents.length >= 2 ) {
			int len = contents.length;
			if( contents[len-1] == 1 && contents[len-2] == 0 ) {
				//is an anchor label
				mTagtypes.tagFrameLabel( in.readString( mStringEncoding ), true );		
				return;		
			}
		}
		
		mTagtypes.tagFrameLabel( in.readString( mStringEncoding ) );
	}

    protected void parseDefineSound( InStream in ) throws IOException
    {
        int id          = in.readUI16();
        int format      = (int)in.readUBits( 4 );
        int frequency   = (int)in.readUBits( 2 );
        boolean bits16  = in.readUBits(1) != 0;
        boolean stereo  = in.readUBits(1) != 0;
        int sampleCount = (int)in.readUI32();
        
        byte[] soundData = in.read();
        
        mTagtypes.tagDefineSound( id, format, frequency, bits16, stereo,
                                 sampleCount, soundData );
    }
    
    protected void parseStartSound( InStream in ) throws IOException
    {
        int id = in.readUI16();
        SoundInfo info = new SoundInfo( in );
        
        mTagtypes.tagStartSound( id, info );
    }
    
    protected void parseDefineButtonSound( InStream in ) throws IOException
    {
        int id = in.readUI16();
        
        int       rollOverSoundId   = in.readUI16();
        SoundInfo rollOverSoundInfo = (rollOverSoundId==0) ? null : new SoundInfo( in );
        
        int       rollOutSoundId   = in.readUI16();
        SoundInfo rollOutSoundInfo = (rollOutSoundId==0) ? null : new SoundInfo( in );
        
        int       pressSoundId   = in.readUI16();
        SoundInfo pressSoundInfo = (pressSoundId==0) ? null : new SoundInfo( in );
        
        int       releaseSoundId   = in.readUI16();
        SoundInfo releaseSoundInfo = (releaseSoundId==0) ? null : new SoundInfo( in );
        
        mTagtypes.tagDefineButtonSound( id, 
                     rollOverSoundId, rollOverSoundInfo,
                     rollOutSoundId,  rollOutSoundInfo,
                     pressSoundId,    pressSoundInfo,
                     releaseSoundId,  releaseSoundInfo );

    }
    
    protected void parseSoundStreamHead( boolean adpcmOnly, InStream in ) throws IOException
    {
        int     reserved       = (int)in.readUBits(4);
        int     playbackFreq   = (int)in.readUBits(2);
        boolean playback16bits = ( in.readUBits(1) != 0 );
        boolean playbackStereo = ( in.readUBits(1) != 0 );
        
        int     format       = (int)in.readUBits(4);
        int     streamFreq   = (int)in.readUBits(2);
        boolean stream16bits = ( in.readUBits(1) != 0 );
        boolean streamStereo = ( in.readUBits(1) != 0 );        
        int     avgSampleCount = (int)in.readUI16();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费观看高清| 制服丝袜中文字幕一区| 亚洲国产一区二区三区青草影视| 在线成人av影院| 99久久久免费精品国产一区二区| 美女网站一区二区| 亚洲欧美区自拍先锋| 久久久久久免费| 欧美精选午夜久久久乱码6080| 成人一区二区三区在线观看| 日韩中文字幕区一区有砖一区| 亚洲国产精品精华液2区45| 欧洲一区在线观看| 91香蕉视频污| 成人在线综合网站| 国产中文字幕一区| 日韩一区精品字幕| 亚洲大片在线观看| 亚洲线精品一区二区三区八戒| 亚洲国产精品99久久久久久久久| 日韩精品一区二区三区swag| 欧美精品亚洲一区二区在线播放| 97成人超碰视| 99精品久久久久久| 不卡大黄网站免费看| 国产丶欧美丶日本不卡视频| 青青青爽久久午夜综合久久午夜 | 亚洲精品一区二区三区精华液 | 日本网站在线观看一区二区三区| 亚洲精品国产一区二区三区四区在线 | 蜜臀国产一区二区三区在线播放 | 精品国产乱码久久久久久久| 欧美精品tushy高清| 在线精品国精品国产尤物884a| 成人午夜电影小说| 国产福利一区在线| 国产乱码一区二区三区| 国产一区二区三区观看| 国产在线不卡视频| 国产一区二区美女诱惑| 国产精品99久久久久久久vr| 国产大陆精品国产| 国内精品国产成人国产三级粉色 | 亚洲一区视频在线| 亚洲午夜在线电影| 亚洲成人午夜影院| 视频在线观看国产精品| 久久精品国产一区二区三 | 成人高清av在线| 成人av在线一区二区三区| 国产91丝袜在线观看| 国产91丝袜在线观看| 97精品超碰一区二区三区| 91美女片黄在线观看| 欧美色大人视频| 制服.丝袜.亚洲.另类.中文| 日韩精品一区二区三区蜜臀 | 欧美亚洲禁片免费| 欧美一级片在线观看| 久久久99久久| 亚洲另类在线视频| 日韩国产精品久久| 国产美女精品在线| 91色视频在线| 欧美精品乱码久久久久久| 91偷拍与自偷拍精品| 成人app网站| 欧美日韩中文字幕一区| 日韩一级免费观看| 欧美国产视频在线| 亚洲国产精品一区二区久久恐怖片 | 久久99国产精品成人| 国产成人精品亚洲午夜麻豆| 99精品久久只有精品| 欧美电影在哪看比较好| 制服丝袜日韩国产| 欧美大片在线观看一区二区| 中文字幕欧美激情一区| 亚洲国产综合视频在线观看| 激情都市一区二区| 色www精品视频在线观看| 91精品国产色综合久久不卡蜜臀| 久久蜜桃香蕉精品一区二区三区| 亚洲裸体xxx| 蜜臀av亚洲一区中文字幕| 成人毛片视频在线观看| 欧美日韩激情在线| 中文字幕 久热精品 视频在线 | 日本不卡视频在线| 91在线你懂得| 精品国产百合女同互慰| 亚洲免费在线视频一区 二区| 日本亚洲免费观看| 91久久精品午夜一区二区| 日韩女优电影在线观看| 一区二区三区不卡视频在线观看| 韩国三级电影一区二区| 欧美日韩和欧美的一区二区| 中文字幕一区二区三区蜜月| 蜜桃视频免费观看一区| 色美美综合视频| 国产色一区二区| 蜜桃精品视频在线| 欧美在线观看视频一区二区三区| 国产欧美日韩综合| 老司机精品视频导航| 欧美日韩国产经典色站一区二区三区| 欧美国产日韩一二三区| 久久99蜜桃精品| 欧美色大人视频| 亚洲乱码中文字幕| 成人av在线资源网站| 久久亚洲欧美国产精品乐播| 天天av天天翘天天综合网 | 在线观看日韩毛片| 国产精品国产三级国产普通话三级| 久久99国产精品久久| 7777精品伊人久久久大香线蕉最新版| 有坂深雪av一区二区精品| 成人午夜电影小说| 日本一区二区免费在线| 国产精品1区2区3区| 精品国产第一区二区三区观看体验| 日韩精品电影在线| 91精品国产综合久久久久久久久久| 亚洲一区在线看| 色婷婷综合久久久中文一区二区 | 国产精品伊人色| 欧美成人一区二区| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩国产一二三| 亚洲r级在线视频| 在线观看视频一区二区欧美日韩| 亚洲美女免费在线| 日本韩国欧美在线| 亚洲综合色噜噜狠狠| 欧美三级午夜理伦三级中视频| 亚洲综合精品久久| 欧美视频一区二区三区| 日韩精品欧美精品| 欧美一级午夜免费电影| 美女看a上一区| 日韩精品一区在线观看| 激情文学综合插| 国产片一区二区| 成人午夜视频网站| 一区二区三区中文字幕在线观看| 日本丶国产丶欧美色综合| 亚洲三级视频在线观看| 在线观看免费一区| 视频一区二区国产| 精品人在线二区三区| 国内精品久久久久影院色 | 亚洲不卡在线观看| 欧美一区二区精品在线| 国产乱对白刺激视频不卡| 国产精品水嫩水嫩| 色婷婷综合久久久中文一区二区| 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品1区2区| 亚洲视频免费观看| 精品视频一区二区不卡| 免费人成精品欧美精品 | 亚洲欧美电影院| 欧美另类一区二区三区| 精品亚洲成a人| 国产精品久久久久久久蜜臀| 在线观看一区不卡| 国产一区在线视频| 亚洲精品伦理在线| 精品久久久久久综合日本欧美| 成人中文字幕在线| 日韩福利电影在线| 国产精品免费视频网站| 欧美日韩在线观看一区二区 | 国产欧美精品区一区二区三区| 91蜜桃网址入口| 韩国欧美国产1区| 亚洲女女做受ⅹxx高潮| 日韩欧美的一区二区| 成人蜜臀av电影| 蜜臀av性久久久久蜜臀av麻豆| 国产精品视频第一区| 3d动漫精品啪啪一区二区竹菊| 国产成人免费高清| 日本不卡一区二区三区高清视频| 国产精品伦一区二区三级视频| 欧美日韩国产不卡| 99久久精品情趣| 黄色精品一二区| 亚洲成人tv网| 亚洲国产成人私人影院tom| 91精品国产高清一区二区三区| 91视频观看视频| 紧缚奴在线一区二区三区| 亚洲一区二区三区激情| 欧美激情一区二区三区蜜桃视频| 欧美日韩不卡一区| 91天堂素人约啪| 国产电影精品久久禁18|