mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-08 04:35:05 +00:00
#1068 MorphShape with focal gradient fix
ImageFormat correct extension Logging exception on FLA export FLA XML formatting fix
This commit is contained in:
@@ -22,5 +22,16 @@ package com.jpexs.decompiler.flash.tags.enums;
|
||||
*/
|
||||
public enum ImageFormat {
|
||||
|
||||
UNKNOWN, JPEG, GIF, PNG, BMP
|
||||
UNKNOWN(""), JPEG(".jpg"), GIF(".gif"), PNG(".png"), BMP(".bmp");
|
||||
|
||||
private final String extension;
|
||||
|
||||
private ImageFormat(String extension) {
|
||||
this.extension = extension;
|
||||
}
|
||||
|
||||
public String getExtension() {
|
||||
return extension;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.types;
|
||||
|
||||
import com.jpexs.decompiler.flash.types.annotations.SWFType;
|
||||
@@ -31,9 +32,41 @@ public class MORPHFOCALGRADIENT extends MORPHGRADIENT implements Serializable {
|
||||
@SWFType(BasicType.FIXED8)
|
||||
public float endFocalPoint;
|
||||
|
||||
@Override
|
||||
public GRADIENT getEndGradient() {
|
||||
FOCALGRADIENT ret = new FOCALGRADIENT();
|
||||
ret.spreadMode = spreadMode;
|
||||
ret.interpolationMode = interPolationMode;
|
||||
ret.gradientRecords = new GRADRECORD[gradientRecords.length];
|
||||
for (int m = 0; m < gradientRecords.length; m++) {
|
||||
ret.gradientRecords[m] = gradientRecords[m].getEndRecord();
|
||||
}
|
||||
ret.focalPoint = endFocalPoint;
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public GRADIENT getStartGradient() {
|
||||
FOCALGRADIENT ret = new FOCALGRADIENT();
|
||||
ret.spreadMode = spreadMode;
|
||||
ret.interpolationMode = interPolationMode;
|
||||
ret.gradientRecords = new GRADRECORD[gradientRecords.length];
|
||||
for (int m = 0; m < gradientRecords.length; m++) {
|
||||
ret.gradientRecords[m] = gradientRecords[m].getStartRecord();
|
||||
}
|
||||
ret.focalPoint = startFocalPoint;
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public GRADIENT getGradientAt(int ratio) {
|
||||
FOCALGRADIENT ret = new FOCALGRADIENT();
|
||||
ret.spreadMode = spreadMode;
|
||||
ret.interpolationMode = interPolationMode;
|
||||
ret.gradientRecords = new GRADRECORD[gradientRecords.length];
|
||||
for (int m = 0; m < gradientRecords.length; m++) {
|
||||
|
||||
|
||||
@@ -61,6 +61,8 @@ public class MORPHGRADIENT implements Serializable {
|
||||
|
||||
public GRADIENT getGradientAt(int ratio) {
|
||||
GRADIENT ret = new GRADIENT();
|
||||
ret.spreadMode = spreadMode;
|
||||
ret.interpolationMode = interPolationMode;
|
||||
ret.gradientRecords = new GRADRECORD[gradientRecords.length];
|
||||
for (int m = 0; m < gradientRecords.length; m++) {
|
||||
|
||||
@@ -74,6 +76,8 @@ public class MORPHGRADIENT implements Serializable {
|
||||
|
||||
public GRADIENT getStartGradient() {
|
||||
GRADIENT ret = new GRADIENT();
|
||||
ret.spreadMode = spreadMode;
|
||||
ret.interpolationMode = interPolationMode;
|
||||
ret.gradientRecords = new GRADRECORD[gradientRecords.length];
|
||||
for (int m = 0; m < gradientRecords.length; m++) {
|
||||
ret.gradientRecords[m] = gradientRecords[m].getStartRecord();
|
||||
@@ -83,6 +87,8 @@ public class MORPHGRADIENT implements Serializable {
|
||||
|
||||
public GRADIENT getEndGradient() {
|
||||
GRADIENT ret = new GRADIENT();
|
||||
ret.spreadMode = spreadMode;
|
||||
ret.interpolationMode = interPolationMode;
|
||||
ret.gradientRecords = new GRADRECORD[gradientRecords.length];
|
||||
for (int m = 0; m < gradientRecords.length; m++) {
|
||||
ret.gradientRecords[m] = gradientRecords[m].getEndRecord();
|
||||
|
||||
@@ -103,6 +103,7 @@ import com.jpexs.decompiler.flash.types.shaperecords.StyleChangeRecord;
|
||||
import com.jpexs.decompiler.flash.types.sound.MP3FRAME;
|
||||
import com.jpexs.decompiler.flash.types.sound.MP3SOUNDDATA;
|
||||
import com.jpexs.decompiler.flash.types.sound.SoundFormat;
|
||||
import com.jpexs.helpers.Helper;
|
||||
import com.jpexs.helpers.Path;
|
||||
import com.jpexs.helpers.SerializableImage;
|
||||
import com.jpexs.helpers.utf8.Utf8Helper;
|
||||
@@ -303,7 +304,7 @@ public class XFLConverter {
|
||||
ImageTag it = (ImageTag) bitmapCh;
|
||||
ret.append("<BitmapFill");
|
||||
ret.append(" bitmapPath=\"");
|
||||
ret.append("bitmap").append(bitmapCh.getCharacterId()).append(".").append(it.getImageFormat());
|
||||
ret.append("bitmap").append(bitmapCh.getCharacterId()).append(it.getImageFormat().getExtension());
|
||||
} else {
|
||||
if (bitmapCh != null) {
|
||||
logger.log(Level.SEVERE, "Suspicious bitmapfill:{0}", bitmapCh.getClass().getSimpleName());
|
||||
@@ -609,15 +610,16 @@ public class XFLConverter {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (currentLayer.length() > 0) {
|
||||
currentLayer.append("</edges>");
|
||||
currentLayer.append("</DOMShape>");
|
||||
String currentLayerString = currentLayer.toString();
|
||||
if (!currentLayerString.contains("<edges></edges>")) { //no empty layers, TODO:handle this better
|
||||
layers.add(currentLayerString);
|
||||
}
|
||||
currentLayer.setLength(0);
|
||||
}
|
||||
|
||||
String currentLayerString = currentLayer.toString();
|
||||
if (!currentLayerString.contains("<edges></edges>")) { //no empty layers, TODO:handle this better
|
||||
layers.add(currentLayerString);
|
||||
}
|
||||
currentLayer.setLength(0);
|
||||
currentLayer.append("<DOMShape isFloating=\"true\">");
|
||||
//ret += convertShape(characters, null, shape);
|
||||
for (int f = 0; f < scr.fillStyles.fillStyles.length; f++) {
|
||||
@@ -1342,7 +1344,7 @@ public class XFLConverter {
|
||||
SerializableImage image = imageTag.getImage(false);
|
||||
ImageFormat format = imageTag.getImageFormat();
|
||||
ImageHelper.write(image.getBufferedImage(), format, baos);
|
||||
String symbolFile = "bitmap" + symbol.getCharacterId() + "." + imageTag.getImageFormat();
|
||||
String symbolFile = "bitmap" + symbol.getCharacterId() + imageTag.getImageFormat().getExtension();
|
||||
files.put(symbolFile, baos.toByteArray());
|
||||
String mediaLinkStr = "<DOMBitmapItem name=\"" + symbolFile + "\" sourceLastImported=\"" + getTimestamp(swf) + "\" externalFileSize=\"" + baos.toByteArray().length + "\"";
|
||||
switch (format) {
|
||||
|
||||
Reference in New Issue
Block a user