diff --git a/lib/flacomdoc.jar b/lib/flacomdoc.jar index eb4041b73..6218cc825 100644 Binary files a/lib/flacomdoc.jar and b/lib/flacomdoc.jar differ diff --git a/libsrc/ffdec_lib/lib/flacomdoc.jar b/libsrc/ffdec_lib/lib/flacomdoc.jar index eb4041b73..6218cc825 100644 Binary files a/libsrc/ffdec_lib/lib/flacomdoc.jar and b/libsrc/ffdec_lib/lib/flacomdoc.jar differ diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/FLAVersion.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/FLAVersion.java index 7f963ac1a..b49e88594 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/FLAVersion.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/FLAVersion.java @@ -24,21 +24,20 @@ import com.jpexs.flash.fla.converter.FlaFormatVersion; * @author JPEXS */ public enum FLAVersion { - F5("F5", "Flash 5", FlaFormatVersion.F5, null, 5), - MX("MX", "Flash MX", FlaFormatVersion.MX, null, 6), - MX2004("MX2004", "Flash MX 2004", FlaFormatVersion.MX2004, null, 7), - F8("F8", "Flash 8", FlaFormatVersion.F8, null, 8), - CS3("CS3", "Flash CS 3", FlaFormatVersion.CS3, null, 9), - CS4("CS4", "Flash CS 4", FlaFormatVersion.CS4, null, 10), - CS5("CS5", "Flash CS 5", null, "2.0", 10), - CS5_5("CS5.5", "Flash CS 5.5", null, "2.1", 11), - CS6("CS6", "Flash CS 6", null, "2.2", 17), - CC("CC", "Flash CC", null, "2.4", Integer.MAX_VALUE) { - @Override - public int minASVersion() { - return 3; //AS 1/2 not supported anymore - } - }; + F1("F1", "FutureSplash Animator", FlaFormatVersion.F1, null, 1, 1, 1), + F2("F2", "Macromedia Flash 2", FlaFormatVersion.F2, null, 2, 1, 1), + F3("F3", "Macromedia Flash 3", FlaFormatVersion.F3, null, 3, 1, 1), + F4("F4", "Macromedia Flash 4", FlaFormatVersion.F4, null, 4, 1, 1), + F5("F5", "Macromedia Flash 5", FlaFormatVersion.F5, null, 5, 1, 1), + MX("MX", "Macromedia Flash MX", FlaFormatVersion.MX, null, 6, 1, 1), + MX2004("MX2004", "Macromedia Flash MX 2004", FlaFormatVersion.MX2004, null, 7, 1, 2), + F8("F8", "Macromedia Flash 8", FlaFormatVersion.F8, null, 8, 1, 2), + CS3("CS3", "Adobe Flash Professional CS 3", FlaFormatVersion.CS3, null, 9, 1, 3), + CS4("CS4", "Adobe Flash Professional CS 4", FlaFormatVersion.CS4, null, 10, 1, 3), + CS5("CS5", "Adobe Flash Professional CS 5", null, "2.0", 10, 1, 3), + CS5_5("CS5.5", "Adobe Flash Professional CS 5.5", null, "2.1", 11, 1, 3), + CS6("CS6", "Adobe Flash Professional CS 6", null, "2.2", 17, 1, 3), + CC("CC", "Adobe Flash Professional CC", null, "2.4", Integer.MAX_VALUE, 3, 3); private final FlaFormatVersion cfbFlaVersion; private final String xflVersion; @@ -48,13 +47,19 @@ public enum FLAVersion { private final String applicationName; private final int maxSwfVersion; + + private final int minASVersion; - private FLAVersion(String shortName, String applicationName, FlaFormatVersion cfbFlaVersion, String xflVersion, int maxSwfVersion) { + private final int maxASVersion; + + private FLAVersion(String shortName, String applicationName, FlaFormatVersion cfbFlaVersion, String xflVersion, int maxSwfVersion, int minASVersion, int maxASVersion) { this.cfbFlaVersion = cfbFlaVersion; this.xflVersion = xflVersion; this.shortName = shortName; this.applicationName = applicationName; this.maxSwfVersion = maxSwfVersion; + this.minASVersion = minASVersion; + this.maxASVersion = maxASVersion; } public FlaFormatVersion getCfbFlaVersion() { @@ -70,7 +75,11 @@ public enum FLAVersion { } public int minASVersion() { - return 1; + return minASVersion; + } + + public int maxASVersion() { + return maxASVersion; } public String applicationName() { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/LosslessImageBinDataReader.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/LosslessImageBinDataReader.java index 9b374b327..3e4ca30b5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/LosslessImageBinDataReader.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/LosslessImageBinDataReader.java @@ -118,6 +118,10 @@ public class LosslessImageBinDataReader { g = (int) Math.floor(g * 256f / a); b = (int) Math.floor(b * 256f / a); } + + if (!hasAlpha) { + a = 0xFF; + } int rgba = r + (g << 8) + (b << 16) + (a << 24); img.setRGB(x, y, rgba); @@ -143,9 +147,9 @@ public class LosslessImageBinDataReader { } public static void main(String[] args) throws IOException { - File f = new File("in.bin"); + File f = new File("c:\\Dropbox\\Programovani\\JavaSE\\FlaComDoc\\out\\media\\M 6 1776533974.dat"); LosslessImageBinDataReader r = new LosslessImageBinDataReader(new FileInputStream(f)); BufferedImage i = r.readImage(); - ImageIO.write(i, "PNG", new File("out.png")); + ImageIO.write(i, "PNG", new File("c:\\Dropbox\\Programovani\\JavaSE\\FlaComDoc\\out\\media\\out.png")); } } diff --git a/src/com/jpexs/decompiler/flash/gui/FlaExportDialog.java b/src/com/jpexs/decompiler/flash/gui/FlaExportDialog.java new file mode 100644 index 000000000..073fbe3d6 --- /dev/null +++ b/src/com/jpexs/decompiler/flash/gui/FlaExportDialog.java @@ -0,0 +1,205 @@ +/* + * Copyright (C) 2010-2026 JPEXS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.jpexs.decompiler.flash.gui; + +import com.jpexs.decompiler.flash.SWF; +import com.jpexs.decompiler.flash.configuration.Configuration; +import static com.jpexs.decompiler.flash.gui.AppDialog.CANCEL_OPTION; +import static com.jpexs.decompiler.flash.gui.AppDialog.ERROR_OPTION; +import static com.jpexs.decompiler.flash.gui.AppDialog.OK_OPTION; +import com.jpexs.decompiler.flash.xfl.FLAVersion; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Container; +import java.awt.FlowLayout; +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.BoxLayout; +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; + +/** + * + * @author JPEXS + */ +public class FlaExportDialog extends AppDialog { + + private int result = ERROR_OPTION; + + private JComboBox combo; + + private JCheckBox compressedCheckBox; + + public FlaExportDialog(Window owner) { + super(owner); + setTitle(translate("dialog.title")); + + Container cnt = getContentPane(); + + + JPanel comboPanel = new JPanel(new FlowLayout()); + combo = new JComboBox<>(); + + combo.addActionListener(this::comboActionPerformed); + + combo.setRenderer(new DefaultListCellRenderer() { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + JLabel lab = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + if (value instanceof FlaVersionItem) { + FLAVersion ver = ((FlaVersionItem) value).flaVersion; + lab.setIcon(View.getIcon("flash/" + ver.shortName().toLowerCase())); + } + return lab; + } + }); + + JLabel comboLabel = new JLabel(translate("version")); + comboPanel.add(comboLabel); + comboLabel.setLabelFor(combo); + comboPanel.add(combo); + comboPanel.setAlignmentX(Component.CENTER_ALIGNMENT); + + compressedCheckBox = new JCheckBox(translate("compressed")); + compressedCheckBox.setAlignmentX(Component.CENTER_ALIGNMENT); + + + JPanel centerPanel = new JPanel(); + centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS)); + centerPanel.add(comboPanel); + centerPanel.add(compressedCheckBox); + + cnt.add(centerPanel, BorderLayout.CENTER); + + + JPanel buttonsPanel = new JPanel(new FlowLayout()); + JButton okButton = new JButton(translate("button.ok")); + okButton.addActionListener(this::okButtonActionPerformed); + + JButton cancelButton = new JButton(translate("button.cancel")); + cancelButton.addActionListener(this::cancelButtonActionPerformed); + + buttonsPanel.add(okButton); + buttonsPanel.add(cancelButton); + + cnt.add(buttonsPanel, BorderLayout.SOUTH); + pack(); + View.centerScreen(this); + View.setWindowIcon(this, "flash"); + getRootPane().setDefaultButton(okButton); + setModal(true); + } + + private void comboActionPerformed(ActionEvent e) { + int selectedIndex = combo.getSelectedIndex(); + if (selectedIndex > -1) { + + FlaVersionItem item = (FlaVersionItem) combo.getItemAt(selectedIndex); + if (item != null) { + if (item.flaVersion.xflVersion() == null) { + compressedCheckBox.setSelected(true); + } + compressedCheckBox.setEnabled(item.flaVersion.xflVersion() != null); + } + } + } + + + private class FlaVersionItem { + private final FLAVersion flaVersion; + private final boolean recommended; + + public FlaVersionItem(FLAVersion flaVersion, boolean recommended) { + this.flaVersion = flaVersion; + this.recommended = recommended; + } + + @Override + public String toString() { + return flaVersion.applicationName() + " " + (recommended ? translate("recommended"): ""); + } + } + + @Override + public void setVisible(boolean b) { + if (b) { + result = ERROR_OPTION; + } + super.setVisible(b); + } + + public boolean isCompressed() { + return compressedCheckBox.isSelected(); + } + + public FLAVersion getFlaVersion() { + if (combo.getSelectedItem() == null) { + return null; + } + return ((FlaVersionItem) combo.getSelectedItem()).flaVersion; + } + + private void okButtonActionPerformed(ActionEvent evt) { + result = OK_OPTION; + setVisible(false); + } + + private void cancelButtonActionPerformed(ActionEvent evt) { + result = CANCEL_OPTION; + setVisible(false); + } + + public int showExportDialog(SWF swf) { + DefaultComboBoxModel model = new DefaultComboBoxModel<>(); + boolean recommended = true; + boolean isAs3 = swf.isAS3(); + int recommendedIndex = -1; + for (FLAVersion ver : FLAVersion.values()) { + if (ver.minASVersion() == 3 && !isAs3) { + continue; + } + if (ver.maxASVersion() < 3 && isAs3) { + continue; + } + if (swf.version <= ver.maxSwfVersion()) { + model.addElement(new FlaVersionItem(ver, recommended)); + if (recommended) { + recommendedIndex = model.getSize() - 1; + } + recommended = false; + } else { + model.addElement(new FlaVersionItem(ver, false)); + } + } + combo.setModel(model); + if (recommendedIndex > -1) { + combo.setSelectedIndex(recommendedIndex); + compressedCheckBox.setSelected(Configuration.lastFlaExportCompressed.get()); + comboActionPerformed(null); + } + pack(); + setVisible(true); + return result; + } +} diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 9640d4f69..6218c21b0 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -3824,6 +3824,14 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se if (swf == null) { return; } + FlaExportDialog exportDialog = new FlaExportDialog(mainFrame.getWindow()); + if (exportDialog.showExportDialog(swf) != AppDialog.OK_OPTION) { + return; + } + + FLAVersion version = exportDialog.getFlaVersion(); + boolean compressed = exportDialog.isCompressed(); + JFileChooser fc = View.getFileChooserWithIcon("exportfla"); String selDir = Configuration.lastOpenDir.get(); fc.setCurrentDirectory(new File(selDir)); @@ -3836,9 +3844,9 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } String fileName; if (swfShortName.contains(".")) { - fileName = swfShortName.substring(0, swfShortName.lastIndexOf(".")) + ".fla"; + fileName = swfShortName.substring(0, swfShortName.lastIndexOf(".")) + (version == FLAVersion.F1 ? ".spa" : ".fla"); } else { - fileName = swfShortName + ".fla"; + fileName = swfShortName + (version == FLAVersion.F1 ? ".spa" : ".fla"); } final String fSwfShortName = swfShortName; @@ -3853,76 +3861,36 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se Map filterToFlaVersion = new HashMap<>(); FLAVersion lastVersion = FLAVersion.fromString(Configuration.lastFlaExportVersion.get("CS6")); - boolean lastCompressed = Configuration.lastFlaExportCompressed.get(true); - - for (int i = FLAVersion.values().length - 1; i >= 0; i--) { - final FLAVersion v = FLAVersion.values()[i]; - if (!isAS3 && v.minASVersion() > 2) { - // This version does not support AS1/2 - } else { - versions.add(v); - FileFilter f = new FileFilter() { - @Override - public boolean accept(File f) { - return f.isDirectory() || (f.getName().toLowerCase(Locale.ENGLISH).endsWith(".fla")); - } - - @Override - public String getDescription() { - return translate("filter.fla").replace("%version%", v.applicationName()); - } - }; - if (v == lastVersion && lastCompressed) { - fc.setFileFilter(f); - } else { - fc.addChoosableFileFilter(f); - } - filterToFlaVersion.put(f, v); - filterToVersion.put(f, "" + v); - filterToCompressed.put(f, true); - flaFilters.add(f); - - if (v.xflVersion() != null) { - f = new FileFilter() { - @Override - public boolean accept(File f) { - return f.isDirectory() || (f.getName().toLowerCase(Locale.ENGLISH).endsWith(".xfl")); - } - - @Override - public String getDescription() { - return translate("filter.xfl").replace("%version%", v.applicationName()); - } - }; - filterToFlaVersion.put(f, v); - filterToVersion.put(f, "" + v); - filterToCompressed.put(f, false); - - if (v == lastVersion && !lastCompressed) { - fc.setFileFilter(f); - } else { - fc.addChoosableFileFilter(f); - } - xflFilters.add(f); - } + FileFilter f = new FileFilter() { + @Override + public boolean accept(File f) { + return f.isDirectory() + || (!compressed && f.getName().toLowerCase(Locale.ENGLISH).endsWith(".xfl")) + || (compressed && version == FLAVersion.F1 && f.getName().toLowerCase(Locale.ENGLISH).endsWith(".spa")) + || (compressed && version != FLAVersion.F1 && f.getName().toLowerCase(Locale.ENGLISH).endsWith(".fla")); } - } + @Override + public String getDescription() { + if (!compressed) { + return translate("filter.xfl").replace("%version%", version.applicationName()); + } + return translate("filter.fla").replace("%version%", version.applicationName()); + } + }; + fc.setFileFilter(f); fc.setAcceptAllFileFilterUsed(false); if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { - Configuration.lastFlaExportVersion.set(filterToVersion.get(fc.getFileFilter())); - Configuration.lastFlaExportCompressed.set(filterToCompressed.get(fc.getFileFilter())); + Configuration.lastFlaExportVersion.set(version.toString()); + Configuration.lastFlaExportCompressed.set(compressed); Configuration.lastOpenDir.set(Helper.fixDialogFile(fc.getSelectedFile()).getParentFile().getAbsolutePath()); File sf = Helper.fixDialogFile(fc.getSelectedFile()); - - FileFilter selectedFilter = fc.getFileFilter(); - final boolean compressed = flaFilters.contains(selectedFilter); + String path = sf.getAbsolutePath(); - if (path.endsWith(".fla") || path.endsWith(".xfl")) { + if (path.endsWith(".fla") || path.endsWith(".spa") || path.endsWith(".xfl")) { path = path.substring(0, path.length() - 4); } - path += compressed ? ".fla" : ".xfl"; - final FLAVersion selectedVersion = filterToFlaVersion.get(selectedFilter); + path += compressed ? (version == FLAVersion.F1 ? ".spa" : ".fla") : ".xfl"; final File selfile = new File(path); long timeBefore = System.currentTimeMillis(); new CancellableWorker("exportFla") { @@ -3946,9 +3914,9 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se try { AbortRetryIgnoreHandler errorHandler = new GuiAbortRetryIgnoreHandler(); if (compressed) { - swf.exportFla(errorHandler, selfile.getAbsolutePath(), fSwfShortName, ApplicationInfo.APPLICATION_NAME, ApplicationInfo.applicationVerName, ApplicationInfo.version, Configuration.parallelSpeedUp.get(), selectedVersion, prog); + swf.exportFla(errorHandler, selfile.getAbsolutePath(), fSwfShortName, ApplicationInfo.APPLICATION_NAME, ApplicationInfo.applicationVerName, ApplicationInfo.version, Configuration.parallelSpeedUp.get(), version, prog); } else { - swf.exportXfl(errorHandler, selfile.getAbsolutePath(), fSwfShortName, ApplicationInfo.APPLICATION_NAME, ApplicationInfo.applicationVerName, ApplicationInfo.version, Configuration.parallelSpeedUp.get(), selectedVersion, prog); + swf.exportXfl(errorHandler, selfile.getAbsolutePath(), fSwfShortName, ApplicationInfo.APPLICATION_NAME, ApplicationInfo.applicationVerName, ApplicationInfo.version, Configuration.parallelSpeedUp.get(), version, prog); } } catch (Exception ex) { logger.log(Level.SEVERE, "FLA export error", ex); diff --git a/src/com/jpexs/decompiler/flash/gui/View.java b/src/com/jpexs/decompiler/flash/gui/View.java index 10f8e2566..5c8be0896 100644 --- a/src/com/jpexs/decompiler/flash/gui/View.java +++ b/src/com/jpexs/decompiler/flash/gui/View.java @@ -523,7 +523,8 @@ public class View { } public static ImageIcon getIcon(String name) { - return new ImageIcon(View.class.getClassLoader().getResource("com/jpexs/decompiler/flash/gui/graphics/" + name + ".png")); + String path = "com/jpexs/decompiler/flash/gui/graphics/" + name + ".png"; + return new ImageIcon(View.class.getClassLoader().getResource(path)); } private static final KeyStroke escapeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/cc.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cc.png new file mode 100644 index 000000000..2f41bf921 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cc.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs3.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs3.png new file mode 100644 index 000000000..b28164e48 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs3.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs4.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs4.png new file mode 100644 index 000000000..33f708ade Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs4.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs5.5.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs5.5.png new file mode 100644 index 000000000..8b47b20e7 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs5.5.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs5.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs5.png new file mode 100644 index 000000000..8b47b20e7 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs5.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs6.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs6.png new file mode 100644 index 000000000..d04e9f565 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/cs6.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/f1.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f1.png new file mode 100644 index 000000000..bb845b8e8 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f1.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/f2.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f2.png new file mode 100644 index 000000000..7782a3934 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f2.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/f3.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f3.png new file mode 100644 index 000000000..8d453dd2a Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f3.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/f4.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f4.png new file mode 100644 index 000000000..8e8cb8e78 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f4.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/f5.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f5.png new file mode 100644 index 000000000..d99f32536 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f5.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/f8.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f8.png new file mode 100644 index 000000000..19facbdd0 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/f8.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/mx.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/mx.png new file mode 100644 index 000000000..a9797cb53 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/mx.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash/mx2004.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash/mx2004.png new file mode 100644 index 000000000..93489c82c Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash/mx2004.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/locales/FlaExportDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/FlaExportDialog.properties new file mode 100644 index 000000000..e6f407537 --- /dev/null +++ b/src/com/jpexs/decompiler/flash/gui/locales/FlaExportDialog.properties @@ -0,0 +1,8 @@ +dialog.title = FLA export +button.ok = OK +button.cancel = Cancel + +recommended = (recommended) +version = FLA format version: + +compressed = Compressed \ No newline at end of file