Faster loading alone parts

This commit is contained in:
Jindra Pet��k
2013-01-13 14:49:54 +01:00
parent ec00cb2b0b
commit af6cb18e2e
15 changed files with 65 additions and 36 deletions
+32 -24
View File
@@ -40,9 +40,11 @@ import com.jpexs.asdec.tags.PlaceObject3Tag;
import com.jpexs.asdec.tags.PlaceObjectTag;
import com.jpexs.asdec.tags.RemoveObject2Tag;
import com.jpexs.asdec.tags.RemoveObjectTag;
import com.jpexs.asdec.tags.SetBackgroundColorTag;
import com.jpexs.asdec.tags.ShowFrameTag;
import com.jpexs.asdec.tags.SymbolClassTag;
import com.jpexs.asdec.tags.Tag;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.BoundedTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.tags.base.FontTag;
@@ -159,19 +161,25 @@ public class TagPanel extends JPanel implements ListSelectionListener {
sos2.writeUI8(0);
sos2.writeUI8(swf.frameRate);
sos2.writeUI16(100); //framecnt
//sos2.writeTag(new SetBackgroundColorTag(new RGB(255, 0, 255)));
for (Tag tag : swf.tags) {
if ((!(tag instanceof PlaceObjectTag))
&& (!(tag instanceof PlaceObject2Tag))
&& (!(tag instanceof PlaceObject3Tag))
&& (!(tag instanceof RemoveObjectTag))
&& (!(tag instanceof RemoveObject2Tag))
&& (!(tag instanceof DoActionTag))
&& (!(tag instanceof DoInitActionTag))
&& (!(tag instanceof DoABCTag))
&& (!(tag instanceof SymbolClassTag))
&& (!(tag instanceof ShowFrameTag))) {
sos2.writeTag(tag);
sos2.writeTag(new SetBackgroundColorTag(new RGB(255, 255, 255)));
if (tagObj instanceof AloneTag) {
sos2.writeTag(tagObj);
}else{
for (Tag tag : swf.tags) {
if ((!(tag instanceof PlaceObjectTag))
&& (!(tag instanceof PlaceObject2Tag))
&& (!(tag instanceof PlaceObject3Tag))
&& (!(tag instanceof RemoveObjectTag))
&& (!(tag instanceof RemoveObject2Tag))
&& (!(tag instanceof DoActionTag))
&& (!(tag instanceof DoInitActionTag))
&& (!(tag instanceof DoABCTag))
&& (!(tag instanceof SymbolClassTag))
&& (!(tag instanceof ShowFrameTag))
&& (!(tag instanceof SetBackgroundColorTag))) {
sos2.writeTag(tag);
}
}
}
@@ -201,18 +209,18 @@ public class TagPanel extends JPanel implements ListSelectionListener {
int countGlyphs = ((FontTag) tagObj).getGlyphShapeTable().length;
int fontId = ((FontTag) tagObj).getFontId();
int sloupcu=(int)Math.ceil(Math.sqrt(countGlyphs));
int radku=(int)Math.ceil(((float)countGlyphs)/((float)sloupcu));
int x=0;
int y=1;
for (int f = 0; f < countGlyphs; f++) {
if(x>=sloupcu){
x=0;
int sloupcu = (int) Math.ceil(Math.sqrt(countGlyphs));
int radku = (int) Math.ceil(((float) countGlyphs) / ((float) sloupcu));
int x = 0;
int y = 1;
for (int f = 0; f < countGlyphs; f++) {
if (x >= sloupcu) {
x = 0;
y++;
}
List<TEXTRECORD> rec = new ArrayList<TEXTRECORD>();
TEXTRECORD tr = new TEXTRECORD();
int textHeight=height/radku;
int textHeight = height / radku;
tr.fontId = fontId;
tr.styleFlagsHasFont = true;
tr.textHeight = textHeight;
@@ -223,10 +231,10 @@ public class TagPanel extends JPanel implements ListSelectionListener {
tr.glyphEntries[0].glyphAdvance = 0;
tr.glyphEntries[0].glyphIndex = f;
rec.add(tr);
mat.translateX=x*width/sloupcu;
mat.translateY=y*height/radku;
mat.translateX = x * width / sloupcu;
mat.translateY = y * height / radku;
sos2.writeTag(new DefineTextTag(999 + f, new RECT(0, width, 0, height), new MATRIX(), SWFOutputStream.getNeededBitsU(countGlyphs - 1), SWFOutputStream.getNeededBitsU(0), rec));
sos2.writeTag(new PlaceObject2Tag(false, false, false, true, false, true, true, false, 1+f, 999 + f, mat, null, 0, null, 0, null));
sos2.writeTag(new PlaceObject2Tag(false, false, false, true, false, true, true, false, 1 + f, 999 + f, mat, null, 0, null, 0, null));
x++;
}
sos2.writeTag(new ShowFrameTag());
@@ -17,11 +17,12 @@
package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class DefineBitsJPEG2Tag extends CharacterTag {
public class DefineBitsJPEG2Tag extends CharacterTag implements AloneTag {
public int characterID;
public byte[] imageData;
@@ -18,13 +18,14 @@ package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.SWFOutputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class DefineBitsJPEG3Tag extends CharacterTag {
public class DefineBitsJPEG3Tag extends CharacterTag implements AloneTag {
public int characterID;
public byte imageData[];
@@ -18,6 +18,7 @@ package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.SWFOutputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -29,7 +30,7 @@ import java.io.OutputStream;
*
* @author JPEXS
*/
public class DefineBitsJPEG4Tag extends CharacterTag {
public class DefineBitsJPEG4Tag extends CharacterTag implements AloneTag {
public int characterID;
public int deblockParam;
@@ -18,6 +18,7 @@ package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.SWFOutputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.types.ALPHABITMAPDATA;
import com.jpexs.asdec.types.ALPHACOLORMAPDATA;
@@ -31,7 +32,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.InflaterInputStream;
public class DefineBitsLossless2Tag extends CharacterTag {
public class DefineBitsLossless2Tag extends CharacterTag implements AloneTag {
public int characterID;
public int bitmapFormat;
@@ -18,6 +18,7 @@ package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.SWFOutputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.types.BITMAPDATA;
import com.jpexs.asdec.types.COLORMAPDATA;
@@ -31,7 +32,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.InflaterInputStream;
public class DefineBitsLosslessTag extends CharacterTag {
public class DefineBitsLosslessTag extends CharacterTag implements AloneTag {
public int characterID;
public int bitmapFormat;
@@ -18,6 +18,7 @@ package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.SWFOutputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.FontTag;
import com.jpexs.asdec.types.SHAPE;
import java.io.ByteArrayInputStream;
@@ -18,6 +18,7 @@ package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.SWFOutputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.BoundedTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.types.MORPHFILLSTYLEARRAY;
@@ -34,7 +35,7 @@ import java.io.OutputStream;
*
* @author JPEXS
*/
public class DefineMorphShape2Tag extends CharacterTag implements BoundedTag {
public class DefineMorphShape2Tag extends CharacterTag implements BoundedTag,AloneTag {
public int characterId;
public RECT startBounds;
@@ -18,6 +18,7 @@ package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.SWFOutputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.BoundedTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.types.MORPHFILLSTYLEARRAY;
@@ -34,7 +35,7 @@ import java.io.OutputStream;
*
* @author JPEXS
*/
public class DefineMorphShapeTag extends CharacterTag implements BoundedTag {
public class DefineMorphShapeTag extends CharacterTag implements BoundedTag,AloneTag {
public int characterId;
public RECT startBounds;
@@ -17,6 +17,7 @@
package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.BoundedTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.types.RECT;
@@ -24,7 +25,7 @@ import com.jpexs.asdec.types.SHAPEWITHSTYLE;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class DefineShape2Tag extends CharacterTag implements BoundedTag {
public class DefineShape2Tag extends CharacterTag implements BoundedTag,AloneTag {
public int shapeId;
public RECT shapeBounds;
@@ -17,6 +17,7 @@
package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.BoundedTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.types.RECT;
@@ -24,7 +25,7 @@ import com.jpexs.asdec.types.SHAPEWITHSTYLE;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class DefineShape3Tag extends CharacterTag implements BoundedTag {
public class DefineShape3Tag extends CharacterTag implements BoundedTag,AloneTag {
public int shapeId;
public RECT shapeBounds;
@@ -17,6 +17,7 @@
package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.BoundedTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.types.RECT;
@@ -24,7 +25,7 @@ import com.jpexs.asdec.types.SHAPEWITHSTYLE;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class DefineShape4Tag extends CharacterTag implements BoundedTag {
public class DefineShape4Tag extends CharacterTag implements BoundedTag,AloneTag {
public int shapeId;
public RECT shapeBounds;
@@ -17,6 +17,7 @@
package com.jpexs.asdec.tags;
import com.jpexs.asdec.SWFInputStream;
import com.jpexs.asdec.tags.base.AloneTag;
import com.jpexs.asdec.tags.base.BoundedTag;
import com.jpexs.asdec.tags.base.CharacterTag;
import com.jpexs.asdec.types.RECT;
@@ -24,7 +25,7 @@ import com.jpexs.asdec.types.SHAPEWITHSTYLE;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class DefineShapeTag extends CharacterTag implements BoundedTag {
public class DefineShapeTag extends CharacterTag implements BoundedTag,AloneTag {
public int shapeId;
public RECT shapeBounds;
@@ -0,0 +1,9 @@
package com.jpexs.asdec.tags.base;
/**
*
* @author JPEXS
*/
public interface AloneTag {
}
@@ -6,7 +6,7 @@ import com.jpexs.asdec.types.SHAPE;
*
* @author JPEXS
*/
public interface FontTag {
public interface FontTag extends AloneTag {
public int getFontId();
public SHAPE[] getGlyphShapeTable();
}