1 50 51 package org.openlaszlo.iv.flash.api; 52 53 import java.io.PrintStream ; 54 import org.openlaszlo.iv.flash.parser.*; 55 import org.openlaszlo.iv.flash.util.*; 56 import org.openlaszlo.iv.flash.commands.*; 57 import org.openlaszlo.iv.flash.context.Context; 58 59 75 public class ImportAssets extends FlashObject { 76 77 private String url; private IVVector defs; private IVVector names; 81 public ImportAssets() {} 82 83 public int getTag() { 84 return Tag.IMPORTASSETS; 85 } 86 87 public void setUrl( String url ) { 88 this.url = url; 89 } 90 91 public void addAsset( String name, FlashDef def ) { 92 if( defs == null ) { 93 names = new IVVector(); 94 defs = new IVVector(); 95 } 96 names.addElement(name); 97 defs.addElement(def); 98 } 99 100 public static ImportAssets parse( Parser p ) { 101 ImportAssets o = new ImportAssets(); 102 o.url = p.getString(); 103 int num = p.getUWord(); 104 o.defs = new IVVector(num); 105 o.names = new IVVector(num); 106 for( int i=0; i<num; i++ ) { 107 int tagID = p.getUWord(); 108 ImportedDef idef = new ImportedDef(); 109 idef.setID(tagID); 110 p.addDef(idef); 111 String name = p.getString(); 112 o.defs.addElement( idef ); 113 o.names.addElement( name ); 114 } 115 return o; 116 } 117 118 121 122 124 125 public void write( FlashOutput fob ) { 126 int tagPos = fob.getPos(); 127 fob.skip(6); 128 129 fob.writeStringZ(url); 130 fob.writeWord( defs.size() ); 131 for( int i=0; i<defs.size(); i++ ) { 132 FlashDef def = (FlashDef) defs.elementAt(i); 133 String name = (String ) names.elementAt(i); 134 fob.writeDefID( def ); 135 fob.writeStringZ(name); 136 } 137 138 fob.writeLongTagAt( getTag(), fob.getPos()-tagPos-6, tagPos ); 139 } 140 141 public void printContent( PrintStream out, String indent ) { 142 out.println( indent+"ImportAssets: url="+url ); 143 for( int i=0; i<defs.size(); i++ ) { 144 FlashDef def = (FlashDef) defs.elementAt(i); 145 String name = (String ) names.elementAt(i); 146 out.println(indent+" name="+name+", defID="+def.getID()); 147 } 148 149 } 150 151 protected boolean _isConstant() { 152 if( Util.hasVar(url) ) return false; 153 for( int i=0; i<names.size(); i++ ) { 154 String name = (String ) names.elementAt(i); 155 if( Util.hasVar(name) ) return false; 156 } 157 return true; 158 } 159 160 public void apply( Context context ) { 161 url = context.apply(url); 162 for( int i=0; i<names.size(); i++ ) { 163 String name = (String ) names.elementAt(i); 164 name = context.apply(name); 165 names.setElementAt(name, i); 166 } 167 } 168 169 protected FlashItem copyInto( FlashItem item, ScriptCopier copier ) { 170 super.copyInto( item, copier ); 171 ((ImportAssets)item).url = url; 172 ((ImportAssets)item).defs = defs.getCopy(copier); 173 ((ImportAssets)item).names = (IVVector) names.clone(); 174 return item; 175 } 176 177 public FlashItem getCopy( ScriptCopier copier ) { 178 return copyInto( new ImportAssets(), copier ); 179 } 180 } 181 | Popular Tags |