diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/FontPanel.form b/trunk/src/com/jpexs/decompiler/flash/gui/FontPanel.form
new file mode 100644
index 000000000..35d855e1e
--- /dev/null
+++ b/trunk/src/com/jpexs/decompiler/flash/gui/FontPanel.form
@@ -0,0 +1,494 @@
+
+
+
diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/FontPanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/FontPanel.java
index 18e0c6955..f7733fcfc 100644
--- a/trunk/src/com/jpexs/decompiler/flash/gui/FontPanel.java
+++ b/trunk/src/com/jpexs/decompiler/flash/gui/FontPanel.java
@@ -1,353 +1,583 @@
-/*
- * Copyright (C) 2010-2013 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 com.jpexs.decompiler.flash.tags.DefineFontNameTag;
-import com.jpexs.decompiler.flash.tags.Tag;
-import com.jpexs.decompiler.flash.tags.base.FontTag;
-import com.jpexs.decompiler.flash.tags.base.TextTag;
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.Font;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ComponentEvent;
-import java.awt.event.ComponentListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.io.File;
-import java.util.Set;
-import java.util.TreeSet;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-
-/**
- *
- * @author JPEXS
- */
-public class FontPanel extends JPanel implements ActionListener {
-
- static final String ACTION_FONT_EMBED = "FONTEMBED";
- static final String ACTION_FONT_ADD_CHARS = "FONTADDCHARS";
-
- private MainPanel mainPanel;
-
- private JLabel fontNameLabel;
- private JLabel fontDisplayNameLabel;
- private JLabel fontCopyrightLabel;
- private JLabel fontIsBoldLabel;
- private JLabel fontIsItalicLabel;
- private JLabel fontAscentLabel;
- private JLabel fontDescentLabel;
- private JLabel fontLeadingLabel;
- private JTextArea fontCharactersTextArea;
- private JTextField fontAddCharactersField;
- private JCheckBox updateTextsCheckBox;
- private ComponentListener fontChangeList;
- private JComboBox fontSelection;
-
- public FontPanel(MainPanel mainPanel) {
- this.mainPanel = mainPanel;
- createFontPanel();
- }
-
- private void createFontPanel() {
- //TODO: This layout SUCKS! If you know something better, please fix it!
- final JPanel fontParams2 = new JPanel();
- fontParams2.setLayout(null);
- final Component[][] ctable = new Component[][]{
- {new JLabel(translate("font.name")), fontNameLabel = new JLabel(translate("value.unknown"))},
- {new JLabel(translate("fontName.name")), fontDisplayNameLabel = new JLabel(translate("value.unknown"))},
- {new JLabel(translate("fontName.copyright")), fontCopyrightLabel = new JLabel(translate("value.unknown"))},
- {new JLabel(translate("font.isbold")), fontIsBoldLabel = new JLabel(translate("value.unknown"))},
- {new JLabel(translate("font.isitalic")), fontIsItalicLabel = new JLabel(translate("value.unknown"))},
- {new JLabel(translate("font.ascent")), fontAscentLabel = new JLabel(translate("value.unknown"))},
- {new JLabel(translate("font.descent")), fontDescentLabel = new JLabel(translate("value.unknown"))},
- {new JLabel(translate("font.leading")), fontLeadingLabel = new JLabel(translate("value.unknown"))},
- {new JLabel(translate("font.characters")), fontCharactersTextArea = new JTextArea("")}
- };
- fontCharactersTextArea.setLineWrap(true);
- fontCharactersTextArea.setWrapStyleWord(true);
- fontCharactersTextArea.setOpaque(false);
- fontCharactersTextArea.setEditable(false);
- fontCharactersTextArea.setFont(new JLabel().getFont());
-
- final int borderLeft = 10;
-
- final int[] maxws = new int[ctable[0].length];
- for (int x = 0; x < ctable[0].length; x++) {
- int maxw = 0;
- for (int y = 0; y < ctable.length; y++) {
- Dimension d = ctable[y][x].getPreferredSize();
- if (d.width > maxw) {
- maxw = d.width;
- }
- }
- maxws[x] = maxw;
- }
-
- for (int i = 0; i < ctable.length; i++) {
- fontParams2.add(ctable[i][0]);
- fontParams2.add(ctable[i][1]);
- }
-
- //fontParams2.setPreferredSize(new Dimension(600, ctable.length * 25));
- fontChangeList = new ComponentListener() {
- @Override
- public void componentResized(ComponentEvent e) {
- int h = 0;
- Insets is = getInsets();
- Insets is2 = fontParams2.getInsets();
- for (int i = 0; i < ctable.length; i++) {
- Dimension d = ctable[i][0].getPreferredSize();
- Dimension d2 = ctable[i][1].getPreferredSize();
- ctable[i][0].setBounds(borderLeft, h, maxws[0], d2.height);
-
- int w2 = getWidth() - 3 * borderLeft - maxws[0] - is.left - is.right - 10;
- ctable[i][1].setBounds(borderLeft + maxws[0] + borderLeft, h, w2, d2.height);
- h += Math.max(d.height, d2.height);
- }
-
- fontParams2.setPreferredSize(new Dimension(getWidth() - 20, h));
- revalidate();
- }
-
- @Override
- public void componentMoved(ComponentEvent e) {
- componentResized(null);
- }
-
- @Override
- public void componentShown(ComponentEvent e) {
- componentResized(null);
- }
-
- @Override
- public void componentHidden(ComponentEvent e) {
- componentResized(null);
- }
- };
- final JPanel fontParams1 = new JPanel();
- addComponentListener(fontChangeList);
-
- fontChangeList.componentResized(null);
- fontParams1.setLayout(new BoxLayout(fontParams1, BoxLayout.Y_AXIS));
- fontParams1.add(fontParams2);
-
- JPanel fontAddCharsPanel = new JPanel(new FlowLayout());
- fontAddCharsPanel.add(new JLabel(translate("font.characters.add")));
- fontAddCharactersField = new MyTextField();
- fontAddCharactersField.setPreferredSize(new Dimension(150, fontAddCharactersField.getPreferredSize().height));
- fontAddCharsPanel.add(fontAddCharactersField);
- JButton fontAddCharsButton = new JButton(translate("button.ok"));
- fontAddCharsButton.setActionCommand(ACTION_FONT_ADD_CHARS);
- fontAddCharsButton.addActionListener(this);
- fontAddCharsPanel.add(fontAddCharsButton);
-
- updateTextsCheckBox = new JCheckBox(translate("font.updateTexts"));
- fontAddCharsPanel.add(updateTextsCheckBox);
-
- JButton fontEmbedButton = new JButton(translate("button.font.embed"));
- fontEmbedButton.setActionCommand(ACTION_FONT_EMBED);
- fontEmbedButton.addActionListener(this);
- //fontAddCharsPanel.add(fontEmbedButton);
-
- fontParams1.add(fontAddCharsPanel);
- JPanel fontSelectionPanel = new JPanel(new FlowLayout());
- fontSelectionPanel.add(new JLabel(translate("font.source")));
- fontSelection = new JComboBox<>(FontTag.fontNamesArray);
- fontSelection.setSelectedItem(FontTag.defaultFontName);
- fontSelection.addItemListener(new ItemListener() {
- @Override
- public void itemStateChanged(ItemEvent e) {
- if (mainPanel.oldTag instanceof FontTag) {
- FontTag f = (FontTag) mainPanel.oldTag;
- SWF swf = f.getSwf();
- String selectedSystemFont = (String) fontSelection.getSelectedItem();
- swf.sourceFontsMap.put(f.getFontId(), selectedSystemFont);
- Configuration.addFontPair(swf.getShortFileName(), f.getFontId(), f.getFontName(), selectedSystemFont);
- }
- }
- });
- fontSelectionPanel.add(fontSelection);
-
- JPanel fontCharPanel = new JPanel();
- fontCharPanel.setLayout(new ListLayout());
- fontCharPanel.add(fontAddCharsPanel);
- fontCharPanel.add(fontSelectionPanel);
- fontParams1.add(fontCharPanel);
- fontParams1.add(fontEmbedButton);
- setLayout(new BorderLayout());
- fontParams1.add(Box.createVerticalGlue());
- add(new JScrollPane(fontParams1), BorderLayout.CENTER);
- }
-
- public String getSelectedFont() {
- return fontSelection.getSelectedItem().toString();
- }
-
- private String translate(String key) {
- return mainPanel.translate(key);
- }
-
- private void fontAddChars(FontTag ft, Set selChars, String selFont) {
- FontTag f = (FontTag) mainPanel.oldTag;
- SWF swf = ft.getSwf();
- String oldchars = f.getCharacters(swf.tags);
- for (int ic : selChars) {
- char c = (char) ic;
- if (oldchars.indexOf((int) c) == -1) {
- Font font = new Font(selFont, f.getFontStyle(), 1024);
- if (!font.canDisplay(c)) {
- View.showMessageDialog(null, translate("error.font.nocharacter").replace("%char%", "" + c), translate("error"), JOptionPane.ERROR_MESSAGE);
- return;
- }
- }
- }
-
- String[] yesno = new String[]{translate("button.yes"), translate("button.no"), translate("button.yes.all"), translate("button.no.all")};
- boolean yestoall = false;
- boolean notoall = false;
- for (int ic : selChars) {
- char c = (char) ic;
- if (oldchars.indexOf((int) c) > -1) {
- int opt; //yes
- if (!(yestoall || notoall)) {
- opt = View.showOptionDialog(null, translate("message.font.add.exists").replace("%char%", "" + c), translate("message.warning"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, yesno, translate("button.yes"));
- if (opt == 2) {
- yestoall = true;
- }
- if (opt == 3) {
- notoall = true;
- }
- }
- if (yestoall) {
- opt = 0; //yes
- } else if (notoall) {
- opt = 1; //no
- } else {
- opt = 1;
- }
-
- if (opt == 1) {
- continue;
- }
- }
- f.addCharacter(swf.tags, c, fontSelection.getSelectedItem().toString());
- oldchars += c;
- }
-
- int fontId = ft.getFontId();
- if (updateTextsCheckBox.isSelected()) {
- for (Tag tag : swf.tags) {
- if (tag instanceof TextTag) {
- TextTag textTag = (TextTag) tag;
- if (textTag.getFontIds(swf.tags).contains(fontId)) {
- String text = textTag.getFormattedText(textTag.getSwf().tags);
- mainPanel.saveText(textTag, text);
- }
- }
- }
- }
- }
-
- public void showFontTag(FontTag ft) {
- SWF swf = ft.getSwf();
- DefineFontNameTag fontNameTag = null;
- for (Tag tag : swf.tags) {
- if (tag instanceof DefineFontNameTag) {
- DefineFontNameTag dfnt = (DefineFontNameTag) tag;
- if (dfnt.fontId == ft.getFontId()) {
- fontNameTag = dfnt;
- }
- }
- }
-
- fontNameLabel.setText(ft.getFontName());
- if (fontNameTag != null) {
- fontDisplayNameLabel.setText(fontNameTag.fontName);
- fontCopyrightLabel.setText(fontNameTag.fontCopyright);
- }
-
- fontIsBoldLabel.setText(ft.isBold() ? translate("yes") : translate("no"));
- fontIsItalicLabel.setText(ft.isItalic() ? translate("yes") : translate("no"));
- fontDescentLabel.setText(ft.getDescent() == -1 ? translate("value.unknown") : "" + ft.getDescent());
- fontAscentLabel.setText(ft.getAscent() == -1 ? translate("value.unknown") : "" + ft.getAscent());
- fontLeadingLabel.setText(ft.getLeading() == -1 ? translate("value.unknown") : "" + ft.getLeading());
- String chars = ft.getCharacters(swf.tags);
- fontCharactersTextArea.setText(chars);
- String key = swf.getShortFileName() + "_" + ft.getFontId() + "_" + ft.getFontName();
- if (swf.sourceFontsMap.containsKey(ft.getFontId())) {
- fontSelection.setSelectedItem(swf.sourceFontsMap.get(ft.getFontId()));
- } else if (Configuration.getFontPairs().containsKey(key)) {
- fontSelection.setSelectedItem(Configuration.getFontPairs().get(key));
- } else if (Configuration.getFontPairs().containsKey(ft.getFontName())) {
- fontSelection.setSelectedItem(Configuration.getFontPairs().get(ft.getFontName()));
- } else {
- fontSelection.setSelectedItem(FontTag.findInstalledFontName(ft.getFontName()));
- }
- fontChangeList.componentResized(null);
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- switch (e.getActionCommand()) {
- case ACTION_FONT_EMBED:
- if (mainPanel.oldTag instanceof FontTag) {
- FontEmbedDialog fed = new FontEmbedDialog(fontSelection.getSelectedItem().toString(), fontAddCharactersField.getText(), ((FontTag) mainPanel.oldTag).getFontStyle());
- if (fed.display()) {
- Set selChars = fed.getSelectedChars();
- if (!selChars.isEmpty()) {
- String selFont = fed.getSelectedFont();
- fontSelection.setSelectedItem(selFont);
- fontAddChars((FontTag) mainPanel.oldTag, selChars, selFont);
- fontAddCharactersField.setText("");
- mainPanel.reload(true);
- }
- }
- }
- break;
- case ACTION_FONT_ADD_CHARS:
- String newchars = fontAddCharactersField.getText();
- if (mainPanel.oldTag instanceof FontTag) {
- Set selChars = new TreeSet<>();
- for (int c = 0; c < newchars.length(); c++) {
- selChars.add(newchars.codePointAt(c));
- }
- fontAddChars((FontTag) mainPanel.oldTag, selChars, fontSelection.getSelectedItem().toString());
- fontAddCharactersField.setText("");
- mainPanel.reload(true);
- }
- break;
- }
- }
-
-}
+/*
+ * Copyright (C) 2010-2013 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 com.jpexs.decompiler.flash.tags.DefineFontNameTag;
+import com.jpexs.decompiler.flash.tags.Tag;
+import com.jpexs.decompiler.flash.tags.base.FontTag;
+import com.jpexs.decompiler.flash.tags.base.TextTag;
+import java.awt.Font;
+import java.util.Set;
+import java.util.TreeSet;
+import javax.swing.ComboBoxModel;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+
+/**
+ *
+ * @author JPEXS
+ */
+public class FontPanel extends javax.swing.JPanel {
+
+ private MainPanel mainPanel;
+ private FontTag fontTag;
+
+ /**
+ * Creates new form FontPanel
+ */
+ public FontPanel(MainPanel mainPanel) {
+ this.mainPanel = mainPanel;
+ initComponents();
+ }
+
+ private ComboBoxModel getModel() {
+ return new DefaultComboBoxModel<>(FontTag.fontNamesArray);
+ }
+
+ private void setEditable(boolean editable) {
+ if (editable) {
+ buttonEdit.setVisible(false);
+ buttonSave.setVisible(true);
+ buttonCancel.setVisible(true);
+ fontIsBoldCheckBox.setEnabled(true);
+ fontIsItalicCheckBox.setEnabled(true);
+ } else {
+ buttonEdit.setVisible(true);
+ buttonSave.setVisible(false);
+ buttonCancel.setVisible(false);
+ fontIsBoldCheckBox.setEnabled(false);
+ fontIsItalicCheckBox.setEnabled(false);
+ }
+ }
+
+ private String translate(String key) {
+ return mainPanel.translate(key);
+ }
+
+ private void fontAddChars(FontTag ft, Set selChars, String selFont) {
+ FontTag f = (FontTag) mainPanel.oldTag;
+ SWF swf = ft.getSwf();
+ String oldchars = f.getCharacters(swf.tags);
+ for (int ic : selChars) {
+ char c = (char) ic;
+ if (oldchars.indexOf((int) c) == -1) {
+ Font font = new Font(selFont, f.getFontStyle(), 1024);
+ if (!font.canDisplay(c)) {
+ View.showMessageDialog(null, translate("error.font.nocharacter").replace("%char%", "" + c), translate("error"), JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+ }
+ }
+
+ String[] yesno = new String[]{translate("button.yes"), translate("button.no"), translate("button.yes.all"), translate("button.no.all")};
+ boolean yestoall = false;
+ boolean notoall = false;
+ for (int ic : selChars) {
+ char c = (char) ic;
+ if (oldchars.indexOf((int) c) > -1) {
+ int opt; //yes
+ if (!(yestoall || notoall)) {
+ opt = View.showOptionDialog(null, translate("message.font.add.exists").replace("%char%", "" + c), translate("message.warning"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, yesno, translate("button.yes"));
+ if (opt == 2) {
+ yestoall = true;
+ }
+ if (opt == 3) {
+ notoall = true;
+ }
+ }
+ if (yestoall) {
+ opt = 0; //yes
+ } else if (notoall) {
+ opt = 1; //no
+ } else {
+ opt = 1;
+ }
+
+ if (opt == 1) {
+ continue;
+ }
+ }
+ f.addCharacter(swf.tags, c, fontSelection.getSelectedItem().toString());
+ oldchars += c;
+ }
+
+ int fontId = ft.getFontId();
+ if (updateTextsCheckBox.isSelected()) {
+ for (Tag tag : swf.tags) {
+ if (tag instanceof TextTag) {
+ TextTag textTag = (TextTag) tag;
+ if (textTag.getFontIds(swf.tags).contains(fontId)) {
+ String text = textTag.getFormattedText(textTag.getSwf().tags);
+ mainPanel.saveText(textTag, text);
+ }
+ }
+ }
+ }
+ }
+
+ public void showFontTag(FontTag ft) {
+ SWF swf = ft.getSwf();
+ fontTag = ft;
+ DefineFontNameTag fontNameTag = null;
+ for (Tag tag : swf.tags) {
+ if (tag instanceof DefineFontNameTag) {
+ DefineFontNameTag dfnt = (DefineFontNameTag) tag;
+ if (dfnt.fontId == ft.getFontId()) {
+ fontNameTag = dfnt;
+ }
+ }
+ }
+
+ fontNameLabel.setText(ft.getFontName());
+ if (fontNameTag != null) {
+ fontDisplayNameTextArea.setText(fontNameTag.fontName);
+ fontCopyrightTextArea.setText(fontNameTag.fontCopyright);
+ }
+
+ fontIsBoldCheckBox.setSelected(ft.isBold());
+ fontIsItalicCheckBox.setSelected(ft.isItalic());
+ fontDescentLabel.setText(ft.getDescent() == -1 ? translate("value.unknown") : "" + ft.getDescent());
+ fontAscentLabel.setText(ft.getAscent() == -1 ? translate("value.unknown") : "" + ft.getAscent());
+ fontLeadingLabel.setText(ft.getLeading() == -1 ? translate("value.unknown") : "" + ft.getLeading());
+ String chars = ft.getCharacters(swf.tags);
+ fontCharactersTextArea.setText(chars);
+ String key = swf.getShortFileName() + "_" + ft.getFontId() + "_" + ft.getFontName();
+ if (swf.sourceFontsMap.containsKey(ft.getFontId())) {
+ fontSelection.setSelectedItem(swf.sourceFontsMap.get(ft.getFontId()));
+ } else if (Configuration.getFontPairs().containsKey(key)) {
+ fontSelection.setSelectedItem(Configuration.getFontPairs().get(key));
+ } else if (Configuration.getFontPairs().containsKey(ft.getFontName())) {
+ fontSelection.setSelectedItem(Configuration.getFontPairs().get(ft.getFontName()));
+ } else {
+ fontSelection.setSelectedItem(FontTag.findInstalledFontName(ft.getFontName()));
+ }
+ setEditable(false);
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+ java.awt.GridBagConstraints gridBagConstraints;
+
+ jPanel1 = new javax.swing.JPanel();
+ javax.swing.JLabel jLabel1 = new javax.swing.JLabel();
+ fontNameLabel = new javax.swing.JLabel();
+ javax.swing.JLabel jLabel2 = new javax.swing.JLabel();
+ javax.swing.JLabel jLabel3 = new javax.swing.JLabel();
+ javax.swing.JLabel jLabel4 = new javax.swing.JLabel();
+ fontIsBoldCheckBox = new javax.swing.JCheckBox();
+ javax.swing.JLabel jLabel5 = new javax.swing.JLabel();
+ fontIsItalicCheckBox = new javax.swing.JCheckBox();
+ javax.swing.JLabel jLabel6 = new javax.swing.JLabel();
+ fontAscentLabel = new javax.swing.JLabel();
+ javax.swing.JLabel jLabel7 = new javax.swing.JLabel();
+ fontDescentLabel = new javax.swing.JLabel();
+ javax.swing.JLabel jLabel8 = new javax.swing.JLabel();
+ fontLeadingLabel = new javax.swing.JLabel();
+ javax.swing.JLabel jLabel9 = new javax.swing.JLabel();
+ jPanel2 = new javax.swing.JPanel();
+ jScrollPane3 = new javax.swing.JScrollPane();
+ fontDisplayNameTextArea = new javax.swing.JTextArea();
+ jScrollPane4 = new javax.swing.JScrollPane();
+ fontCopyrightTextArea = new javax.swing.JTextArea();
+ jScrollPane5 = new javax.swing.JScrollPane();
+ fontCharactersTextArea = new javax.swing.JTextArea();
+ javax.swing.JLabel jLabel10 = new javax.swing.JLabel();
+ fontAddCharactersField = new javax.swing.JTextField();
+ fontAddCharsButton = new javax.swing.JButton();
+ updateTextsCheckBox = new javax.swing.JCheckBox();
+ jLabel11 = new javax.swing.JLabel();
+ fontSelection = new javax.swing.JComboBox();
+ fontEmbedButton = new javax.swing.JButton();
+ buttonEdit = new javax.swing.JButton();
+ buttonSave = new javax.swing.JButton();
+ buttonCancel = new javax.swing.JButton();
+
+ jPanel1.setLayout(new java.awt.GridBagLayout());
+
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("com/jpexs/decompiler/flash/gui/locales/MainFrame"); // NOI18N
+ jLabel1.setText(bundle.getString("font.name")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel1, gridBagConstraints);
+
+ fontNameLabel.setText(bundle.getString("value.unknown")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weightx = 1.0;
+ jPanel1.add(fontNameLabel, gridBagConstraints);
+
+ jLabel2.setText(bundle.getString("fontName.name")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.ipadx = 8;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel2, gridBagConstraints);
+
+ jLabel3.setText(bundle.getString("fontName.copyright")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel3, gridBagConstraints);
+
+ jLabel4.setText(bundle.getString("font.isbold")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 3;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel4, gridBagConstraints);
+
+ fontIsBoldCheckBox.setEnabled(false);
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 3;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ jPanel1.add(fontIsBoldCheckBox, gridBagConstraints);
+
+ jLabel5.setText(bundle.getString("font.isitalic")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 4;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel5, gridBagConstraints);
+
+ fontIsItalicCheckBox.setEnabled(false);
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 4;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ jPanel1.add(fontIsItalicCheckBox, gridBagConstraints);
+
+ jLabel6.setText(bundle.getString("font.ascent")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 5;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel6, gridBagConstraints);
+
+ fontAscentLabel.setText(bundle.getString("value.unknown")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 5;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ jPanel1.add(fontAscentLabel, gridBagConstraints);
+
+ jLabel7.setText(bundle.getString("font.descent")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 6;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel7, gridBagConstraints);
+
+ fontDescentLabel.setText(bundle.getString("value.unknown")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 6;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ jPanel1.add(fontDescentLabel, gridBagConstraints);
+
+ jLabel8.setText(bundle.getString("font.leading")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 7;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel8, gridBagConstraints);
+
+ fontLeadingLabel.setText(bundle.getString("value.unknown")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 7;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ jPanel1.add(fontLeadingLabel, gridBagConstraints);
+
+ jLabel9.setText(bundle.getString("font.characters")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 8;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ gridBagConstraints.weighty = 1.0;
+ jPanel1.add(jLabel9, gridBagConstraints);
+
+ jPanel2.setLayout(new java.awt.GridBagLayout());
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 1;
+ jPanel1.add(jPanel2, gridBagConstraints);
+
+ jScrollPane3.setBorder(null);
+
+ fontDisplayNameTextArea.setEditable(false);
+ fontDisplayNameTextArea.setColumns(20);
+ fontDisplayNameTextArea.setFont(new JLabel().getFont());
+ fontDisplayNameTextArea.setLineWrap(true);
+ fontDisplayNameTextArea.setText(bundle.getString("value.unknown")); // NOI18N
+ fontDisplayNameTextArea.setWrapStyleWord(true);
+ fontDisplayNameTextArea.setOpaque(false);
+ jScrollPane3.setViewportView(fontDisplayNameTextArea);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ jPanel1.add(jScrollPane3, gridBagConstraints);
+
+ jScrollPane4.setBorder(null);
+
+ fontCopyrightTextArea.setEditable(false);
+ fontCopyrightTextArea.setColumns(20);
+ fontCopyrightTextArea.setFont(new JLabel().getFont());
+ fontCopyrightTextArea.setLineWrap(true);
+ fontCopyrightTextArea.setText(bundle.getString("value.unknown")); // NOI18N
+ fontCopyrightTextArea.setWrapStyleWord(true);
+ fontCopyrightTextArea.setOpaque(false);
+ jScrollPane4.setViewportView(fontCopyrightTextArea);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ jPanel1.add(jScrollPane4, gridBagConstraints);
+
+ jScrollPane5.setBorder(null);
+
+ fontCharactersTextArea.setEditable(false);
+ fontCharactersTextArea.setColumns(20);
+ fontCharactersTextArea.setFont(new JLabel().getFont());
+ fontCharactersTextArea.setLineWrap(true);
+ fontCharactersTextArea.setWrapStyleWord(true);
+ fontCharactersTextArea.setOpaque(false);
+ jScrollPane5.setViewportView(fontCharactersTextArea);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 8;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+ jPanel1.add(jScrollPane5, gridBagConstraints);
+
+ jLabel10.setText(bundle.getString("font.characters.add")); // NOI18N
+
+ fontAddCharsButton.setText(bundle.getString("button.ok")); // NOI18N
+ fontAddCharsButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ fontAddCharsButtonActionPerformed(evt);
+ }
+ });
+
+ updateTextsCheckBox.setText(bundle.getString("font.updateTexts")); // NOI18N
+
+ jLabel11.setText(bundle.getString("font.source")); // NOI18N
+
+ fontSelection.setModel(getModel());
+ fontSelection.setSelectedItem(FontTag.defaultFontName);
+ fontSelection.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ fontSelectionItemStateChanged(evt);
+ }
+ });
+
+ fontEmbedButton.setText(bundle.getString("button.font.embed")); // NOI18N
+ fontEmbedButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ fontEmbedButtonActionPerformed(evt);
+ }
+ });
+
+ buttonEdit.setText(bundle.getString("button.edit")); // NOI18N
+ buttonEdit.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonEditActionPerformed(evt);
+ }
+ });
+
+ buttonSave.setText(bundle.getString("button.save")); // NOI18N
+ buttonSave.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonSaveActionPerformed(evt);
+ }
+ });
+
+ buttonCancel.setText(bundle.getString("button.cancel")); // NOI18N
+ buttonCancel.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonCancelActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jLabel11)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(fontSelection, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jLabel10)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(fontAddCharactersField, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(fontAddCharsButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(updateTextsCheckBox))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(buttonEdit)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonSave)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonCancel))
+ .addComponent(fontEmbedButton))
+ .addGap(0, 68, Short.MAX_VALUE)))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(fontAddCharactersField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(fontAddCharsButton)
+ .addComponent(updateTextsCheckBox))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel11)
+ .addComponent(fontSelection, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(fontEmbedButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 32, Short.MAX_VALUE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonEdit)
+ .addComponent(buttonSave)
+ .addComponent(buttonCancel))
+ .addContainerGap())
+ );
+ }// //GEN-END:initComponents
+
+ private void fontAddCharsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fontAddCharsButtonActionPerformed
+ if (mainPanel.oldTag instanceof FontTag) {
+ FontEmbedDialog fed = new FontEmbedDialog(fontSelection.getSelectedItem().toString(), fontAddCharactersField.getText(), ((FontTag) mainPanel.oldTag).getFontStyle());
+ if (fed.display()) {
+ Set selChars = fed.getSelectedChars();
+ if (!selChars.isEmpty()) {
+ String selFont = fed.getSelectedFont();
+ fontSelection.setSelectedItem(selFont);
+ fontAddChars((FontTag) mainPanel.oldTag, selChars, selFont);
+ fontAddCharactersField.setText("");
+ mainPanel.reload(true);
+ }
+ }
+ }
+ }//GEN-LAST:event_fontAddCharsButtonActionPerformed
+
+ private void fontEmbedButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fontEmbedButtonActionPerformed
+ String newchars = fontAddCharactersField.getText();
+ if (mainPanel.oldTag instanceof FontTag) {
+ Set selChars = new TreeSet<>();
+ for (int c = 0; c < newchars.length(); c++) {
+ selChars.add(newchars.codePointAt(c));
+ }
+ fontAddChars((FontTag) mainPanel.oldTag, selChars, fontSelection.getSelectedItem().toString());
+ fontAddCharactersField.setText("");
+ mainPanel.reload(true);
+ }
+ }//GEN-LAST:event_fontEmbedButtonActionPerformed
+
+ private void fontSelectionItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_fontSelectionItemStateChanged
+ if (mainPanel.oldTag instanceof FontTag) {
+ FontTag f = (FontTag) mainPanel.oldTag;
+ SWF swf = f.getSwf();
+ String selectedSystemFont = (String) fontSelection.getSelectedItem();
+ swf.sourceFontsMap.put(f.getFontId(), selectedSystemFont);
+ Configuration.addFontPair(swf.getShortFileName(), f.getFontId(), f.getFontName(), selectedSystemFont);
+ }
+ }//GEN-LAST:event_fontSelectionItemStateChanged
+
+ private void buttonEditActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonEditActionPerformed
+ setEditable(true);
+ }//GEN-LAST:event_buttonEditActionPerformed
+
+ private void buttonSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSaveActionPerformed
+ fontTag.setBold(fontIsBoldCheckBox.isSelected());
+ fontTag.setItalic(fontIsItalicCheckBox.isSelected());
+ setEditable(false);
+ }//GEN-LAST:event_buttonSaveActionPerformed
+
+ private void buttonCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCancelActionPerformed
+ showFontTag(fontTag);
+ setEditable(false);
+ }//GEN-LAST:event_buttonCancelActionPerformed
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton buttonCancel;
+ private javax.swing.JButton buttonEdit;
+ private javax.swing.JButton buttonSave;
+ private javax.swing.JTextField fontAddCharactersField;
+ private javax.swing.JButton fontAddCharsButton;
+ private javax.swing.JLabel fontAscentLabel;
+ private javax.swing.JTextArea fontCharactersTextArea;
+ private javax.swing.JTextArea fontCopyrightTextArea;
+ private javax.swing.JLabel fontDescentLabel;
+ private javax.swing.JTextArea fontDisplayNameTextArea;
+ private javax.swing.JButton fontEmbedButton;
+ private javax.swing.JCheckBox fontIsBoldCheckBox;
+ private javax.swing.JCheckBox fontIsItalicCheckBox;
+ private javax.swing.JLabel fontLeadingLabel;
+ private javax.swing.JLabel fontNameLabel;
+ private javax.swing.JComboBox fontSelection;
+ private javax.swing.JLabel jLabel11;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JScrollPane jScrollPane2;
+ private javax.swing.JScrollPane jScrollPane3;
+ private javax.swing.JScrollPane jScrollPane4;
+ private javax.swing.JScrollPane jScrollPane5;
+ private javax.swing.JCheckBox updateTextsCheckBox;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java
index ee6cae94c..8a952b8dd 100644
--- a/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java
+++ b/trunk/src/com/jpexs/decompiler/flash/gui/MainPanel.java
@@ -19,7 +19,6 @@ package com.jpexs.decompiler.flash.gui;
import com.jpexs.decompiler.flash.AbortRetryIgnoreHandler;
import com.jpexs.decompiler.flash.ApplicationInfo;
import com.jpexs.decompiler.flash.FrameNode;
-import com.jpexs.decompiler.flash.PackageNode;
import com.jpexs.decompiler.flash.SWF;
import com.jpexs.decompiler.flash.SWFOutputStream;
import com.jpexs.decompiler.flash.TagNode;
@@ -76,8 +75,6 @@ import com.jpexs.decompiler.flash.tags.PlaceObject2Tag;
import com.jpexs.decompiler.flash.tags.SetBackgroundColorTag;
import com.jpexs.decompiler.flash.tags.ShowFrameTag;
import com.jpexs.decompiler.flash.tags.SoundStreamBlockTag;
-import com.jpexs.decompiler.flash.tags.SoundStreamHead2Tag;
-import com.jpexs.decompiler.flash.tags.SoundStreamHeadTag;
import com.jpexs.decompiler.flash.tags.SymbolClassTag;
import com.jpexs.decompiler.flash.tags.Tag;
import com.jpexs.decompiler.flash.tags.VideoFrameTag;
@@ -109,10 +106,8 @@ import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Desktop;
-import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
-import java.awt.Graphics;
import java.awt.Insets;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
@@ -158,7 +153,6 @@ import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
-import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
@@ -180,10 +174,7 @@ import javax.swing.event.DocumentListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.filechooser.FileFilter;
-import javax.swing.plaf.basic.BasicLabelUI;
import javax.swing.plaf.basic.BasicTreeUI;
-import javax.swing.tree.DefaultTreeCellRenderer;
-import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/TagTree.java b/trunk/src/com/jpexs/decompiler/flash/gui/TagTree.java
index be5375d9c..65d1f5528 100644
--- a/trunk/src/com/jpexs/decompiler/flash/gui/TagTree.java
+++ b/trunk/src/com/jpexs/decompiler/flash/gui/TagTree.java
@@ -54,7 +54,6 @@ import com.jpexs.decompiler.flash.tags.gfx.DefineCompactedFont;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
-import java.awt.Font;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java
index b26e0b0d5..8c90c44c6 100644
--- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java
+++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont2Tag.java
@@ -285,6 +285,21 @@ public class DefineFont2Tag extends FontTag {
return fontFlagsItalic;
}
+ @Override
+ public void setSmall(boolean value) {
+ fontFlagsSmallText = value;
+ }
+
+ @Override
+ public void setBold(boolean value) {
+ fontFlagsBold = value;
+ }
+
+ @Override
+ public void setItalic(boolean value) {
+ fontFlagsItalic = value;
+ }
+
@Override
public int getDivider() {
return 1;
diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont3Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont3Tag.java
index 3af4840b4..e16d4f77c 100644
--- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont3Tag.java
+++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineFont3Tag.java
@@ -272,6 +272,21 @@ public class DefineFont3Tag extends FontTag {
return fontFlagsItalic;
}
+ @Override
+ public void setSmall(boolean value) {
+ fontFlagsSmallText = value;
+ }
+
+ @Override
+ public void setBold(boolean value) {
+ fontFlagsBold = value;
+ }
+
+ @Override
+ public void setItalic(boolean value) {
+ fontFlagsItalic = value;
+ }
+
@Override
public int getDivider() {
return 20;
diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineFontTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineFontTag.java
index 9133479e1..2d9a1f9ff 100644
--- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineFontTag.java
+++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineFontTag.java
@@ -203,6 +203,30 @@ public class DefineFontTag extends FontTag {
return false;
}
+ @Override
+ public void setSmall(boolean value) {
+ }
+
+ @Override
+ public void setBold(boolean value) {
+ if (fontInfo2Tag != null) {
+ fontInfo2Tag.fontFlagsBold = value;
+ }
+ if (fontInfoTag != null) {
+ fontInfoTag.fontFlagsBold = value;
+ }
+ }
+
+ @Override
+ public void setItalic(boolean value) {
+ if (fontInfo2Tag != null) {
+ fontInfo2Tag.fontFlagsItalic = value;
+ }
+ if (fontInfoTag != null) {
+ fontInfoTag.fontFlagsItalic = value;
+ }
+ }
+
@Override
public int getAscent() {
return -1;
diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DoABCDefineTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DoABCDefineTag.java
index 7ad76dac7..9fd50d386 100644
--- a/trunk/src/com/jpexs/decompiler/flash/tags/DoABCDefineTag.java
+++ b/trunk/src/com/jpexs/decompiler/flash/tags/DoABCDefineTag.java
@@ -27,7 +27,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.List;
/**
* Defines a series of ActionScript 3 bytecodes to be executed
diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DoABCTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DoABCTag.java
index 717899168..8ece588a3 100644
--- a/trunk/src/com/jpexs/decompiler/flash/tags/DoABCTag.java
+++ b/trunk/src/com/jpexs/decompiler/flash/tags/DoABCTag.java
@@ -26,7 +26,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.List;
/**
* Defines a series of ActionScript 3 bytecodes to be executed
diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/base/Exportable.java b/trunk/src/com/jpexs/decompiler/flash/tags/base/Exportable.java
index 9dd44d32a..a879ec174 100644
--- a/trunk/src/com/jpexs/decompiler/flash/tags/base/Exportable.java
+++ b/trunk/src/com/jpexs/decompiler/flash/tags/base/Exportable.java
@@ -16,9 +16,6 @@
*/
package com.jpexs.decompiler.flash.tags.base;
-import com.jpexs.decompiler.flash.tags.Tag;
-import java.util.List;
-
/**
*
* @author JPEXS
diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/base/FontTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/base/FontTag.java
index 01c1a2b2c..d2f832ab0 100644
--- a/trunk/src/com/jpexs/decompiler/flash/tags/base/FontTag.java
+++ b/trunk/src/com/jpexs/decompiler/flash/tags/base/FontTag.java
@@ -75,6 +75,12 @@ public abstract class FontTag extends CharacterTag implements AloneTag, Drawable
public abstract boolean isItalic();
+ public abstract void setSmall(boolean value);
+
+ public abstract void setBold(boolean value);
+
+ public abstract void setItalic(boolean value);
+
public abstract int getDivider();
public abstract int getAscent();
diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java b/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java
index 109b0b3c1..d24836c5b 100644
--- a/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java
+++ b/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java
@@ -297,6 +297,30 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag {
return (fonts.get(0).flags & FontType.FF_Italic) == FontType.FF_Italic;
}
+ @Override
+ public void setSmall(boolean value) {
+ }
+
+ @Override
+ public void setBold(boolean value) {
+ for (FontType font : fonts) {
+ font.flags &= FontType.FF_Bold;
+ if (!value) {
+ font.flags ^= FontType.FF_Bold;
+ }
+ }
+ }
+
+ @Override
+ public void setItalic(boolean value) {
+ for (FontType font : fonts) {
+ font.flags &= FontType.FF_Italic;
+ if (!value) {
+ font.flags ^= FontType.FF_Italic;
+ }
+ }
+ }
+
@Override
public int getDivider() {
return 1;
diff --git a/trunk/src/com/jpexs/decompiler/flash/types/BUTTONCONDACTION.java b/trunk/src/com/jpexs/decompiler/flash/types/BUTTONCONDACTION.java
index 59703f376..ac7a75e69 100644
--- a/trunk/src/com/jpexs/decompiler/flash/types/BUTTONCONDACTION.java
+++ b/trunk/src/com/jpexs/decompiler/flash/types/BUTTONCONDACTION.java
@@ -22,7 +22,6 @@ import com.jpexs.decompiler.flash.SWFInputStream;
import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.ActionListReader;
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
-import com.jpexs.decompiler.flash.tags.Tag;
import com.jpexs.decompiler.flash.tags.base.ASMSource;
import com.jpexs.decompiler.flash.tags.base.ContainerItem;
import com.jpexs.decompiler.flash.tags.base.Exportable;
diff --git a/trunk/src/com/jpexs/decompiler/flash/types/CLIPACTIONRECORD.java b/trunk/src/com/jpexs/decompiler/flash/types/CLIPACTIONRECORD.java
index 218957345..d1c702ea1 100644
--- a/trunk/src/com/jpexs/decompiler/flash/types/CLIPACTIONRECORD.java
+++ b/trunk/src/com/jpexs/decompiler/flash/types/CLIPACTIONRECORD.java
@@ -22,7 +22,6 @@ import com.jpexs.decompiler.flash.SWFInputStream;
import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.ActionListReader;
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
-import com.jpexs.decompiler.flash.tags.Tag;
import com.jpexs.decompiler.flash.tags.base.ASMSource;
import com.jpexs.decompiler.flash.tags.base.ContainerItem;
import com.jpexs.decompiler.flash.tags.base.Exportable;