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;