mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-24 22:50:45 +00:00
Issue #612: show color in hex format
This commit is contained in:
@@ -253,6 +253,7 @@ public final class SWF implements TreeItem, Timelined {
|
|||||||
*/
|
*/
|
||||||
public byte[] lzmaProperties;
|
public byte[] lzmaProperties;
|
||||||
public byte[] uncompressedData;
|
public byte[] uncompressedData;
|
||||||
|
public byte[] originalUncompressedData;
|
||||||
public FileAttributesTag fileAttributes;
|
public FileAttributesTag fileAttributes;
|
||||||
/**
|
/**
|
||||||
* ScaleForm GFx
|
* ScaleForm GFx
|
||||||
@@ -537,6 +538,7 @@ public final class SWF implements TreeItem, Timelined {
|
|||||||
compression = header.compression;
|
compression = header.compression;
|
||||||
lzmaProperties = header.lzmaProperties;
|
lzmaProperties = header.lzmaProperties;
|
||||||
uncompressedData = baos.toByteArray();
|
uncompressedData = baos.toByteArray();
|
||||||
|
originalUncompressedData = uncompressedData;
|
||||||
|
|
||||||
SWFInputStream sis = new SWFInputStream(this, uncompressedData);
|
SWFInputStream sis = new SWFInputStream(this, uncompressedData);
|
||||||
dumpInfo = new DumpInfoSwfNode(this, "rootswf", "", null, 0, 0);
|
dumpInfo = new DumpInfoSwfNode(this, "rootswf", "", null, 0, 0);
|
||||||
|
|||||||
@@ -96,6 +96,10 @@ public class Configuration {
|
|||||||
@ConfigurationCategory("display")
|
@ConfigurationCategory("display")
|
||||||
public static final ConfigurationItem<Boolean> dumpView = null;
|
public static final ConfigurationItem<Boolean> dumpView = null;
|
||||||
|
|
||||||
|
@ConfigurationDefaultBoolean(false)
|
||||||
|
@ConfigurationCategory("display")
|
||||||
|
public static final ConfigurationItem<Boolean> useHexColorFormat = null;
|
||||||
|
|
||||||
@ConfigurationDefaultBoolean(false)
|
@ConfigurationDefaultBoolean(false)
|
||||||
@ConfigurationCategory("ui")
|
@ConfigurationCategory("ui")
|
||||||
public static final ConfigurationItem<Boolean> gotoMainClassOnStartup = null;
|
public static final ConfigurationItem<Boolean> gotoMainClassOnStartup = null;
|
||||||
|
|||||||
@@ -2170,7 +2170,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dumpViewPanel.setData(DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf().uncompressedData, dumpInfo);
|
dumpViewPanel.setData(DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf().originalUncompressedData, dumpInfo);
|
||||||
dumpViewPanel.revalidate();
|
dumpViewPanel.revalidate();
|
||||||
showCard(CARDDUMPVIEW);
|
showCard(CARDDUMPVIEW);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ public class DumpTree extends JTree implements ActionListener {
|
|||||||
if (fc.showSaveDialog(f) == JFileChooser.APPROVE_OPTION) {
|
if (fc.showSaveDialog(f) == JFileChooser.APPROVE_OPTION) {
|
||||||
File sf = Helper.fixDialogFile(fc.getSelectedFile());
|
File sf = Helper.fixDialogFile(fc.getSelectedFile());
|
||||||
try (FileOutputStream fos = new FileOutputStream(sf)) {
|
try (FileOutputStream fos = new FileOutputStream(sf)) {
|
||||||
byte[] data = DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf().uncompressedData;
|
byte[] data = DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf().originalUncompressedData;
|
||||||
fos.write(data, (int) dumpInfo.startByte, (int) (dumpInfo.getEndByte() - dumpInfo.startByte + 1));
|
fos.write(data, (int) dumpInfo.startByte, (int) (dumpInfo.getEndByte() - dumpInfo.startByte + 1));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
Logger.getLogger(DumpTree.class.getName()).log(Level.SEVERE, null, ex);
|
Logger.getLogger(DumpTree.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
@@ -240,7 +240,7 @@ public class DumpTree extends JTree implements ActionListener {
|
|||||||
TreePath[] paths = getSelectionPaths();
|
TreePath[] paths = getSelectionPaths();
|
||||||
DumpInfo dumpInfo = (DumpInfo) paths[0].getLastPathComponent();
|
DumpInfo dumpInfo = (DumpInfo) paths[0].getLastPathComponent();
|
||||||
SWF swf = DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf();
|
SWF swf = DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf();
|
||||||
byte[] data = swf.uncompressedData;
|
byte[] data = swf.originalUncompressedData;
|
||||||
int prevLength = (int) dumpInfo.startByte;
|
int prevLength = (int) dumpInfo.startByte;
|
||||||
try {
|
try {
|
||||||
SWFInputStream rri = new SWFInputStream(swf, data);
|
SWFInputStream rri = new SWFInputStream(swf, data);
|
||||||
@@ -266,7 +266,7 @@ public class DumpTree extends JTree implements ActionListener {
|
|||||||
TreePath[] paths = getSelectionPaths();
|
TreePath[] paths = getSelectionPaths();
|
||||||
DumpInfo dumpInfo = (DumpInfo) paths[0].getLastPathComponent();
|
DumpInfo dumpInfo = (DumpInfo) paths[0].getLastPathComponent();
|
||||||
SWF swf = DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf();
|
SWF swf = DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf();
|
||||||
byte[] data = swf.uncompressedData;
|
byte[] data = swf.originalUncompressedData;
|
||||||
int prevLength = (int) dumpInfo.startByte;
|
int prevLength = (int) dumpInfo.startByte;
|
||||||
try {
|
try {
|
||||||
ABCInputStream ais = new ABCInputStream(new MemoryInputStream(data, 0, prevLength + (int) dumpInfo.lengthBytes));
|
ABCInputStream ais = new ABCInputStream(new MemoryInputStream(data, 0, prevLength + (int) dumpInfo.lengthBytes));
|
||||||
@@ -283,7 +283,7 @@ public class DumpTree extends JTree implements ActionListener {
|
|||||||
TreePath[] paths = getSelectionPaths();
|
TreePath[] paths = getSelectionPaths();
|
||||||
DumpInfo dumpInfo = (DumpInfo) paths[0].getLastPathComponent();
|
DumpInfo dumpInfo = (DumpInfo) paths[0].getLastPathComponent();
|
||||||
SWF swf = DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf();
|
SWF swf = DumpInfoSwfNode.getSwfNode(dumpInfo).getSwf();
|
||||||
byte[] data = swf.uncompressedData;
|
byte[] data = swf.originalUncompressedData;
|
||||||
int prevLength = (int) dumpInfo.startByte;
|
int prevLength = (int) dumpInfo.startByte;
|
||||||
try {
|
try {
|
||||||
ABCInputStream ais = new ABCInputStream(new MemoryInputStream(data, 0, prevLength + (int) dumpInfo.lengthBytes));
|
ABCInputStream ais = new ABCInputStream(new MemoryInputStream(data, 0, prevLength + (int) dumpInfo.lengthBytes));
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ config.group.description.decompilation = Global decompilation related functions
|
|||||||
config.group.name.other = Other
|
config.group.name.other = Other
|
||||||
config.group.description.other = Other uncategorized configs
|
config.group.description.other = Other uncategorized configs
|
||||||
|
|
||||||
|
|
||||||
config.name.openMultipleFiles = Open multiple files
|
config.name.openMultipleFiles = Open multiple files
|
||||||
config.description.openMultipleFiles = Allows opening multiple files at once in one window
|
config.description.openMultipleFiles = Allows opening multiple files at once in one window
|
||||||
|
|
||||||
@@ -60,6 +59,9 @@ config.description.decompile = You can disable AS decompilation, then only P-cod
|
|||||||
config.name.dumpView = Dump View
|
config.name.dumpView = Dump View
|
||||||
config.description.dumpView = View raw data dump
|
config.description.dumpView = View raw data dump
|
||||||
|
|
||||||
|
config.name.useHexColorFormat = Hex color format
|
||||||
|
config.description.useHexColorFormat = Show the colors in hex format
|
||||||
|
|
||||||
config.name.parallelSpeedUp = Parallel SpeedUp
|
config.name.parallelSpeedUp = Parallel SpeedUp
|
||||||
config.description.parallelSpeedUp = Parallelism can speed up decompilation
|
config.description.parallelSpeedUp = Parallelism can speed up decompilation
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,9 @@ config.description.decompile = Kikapcsolhatja az AS visszaford\u00edt\u00e1s\u00
|
|||||||
config.name.dumpView = Dump N\u00e9zet
|
config.name.dumpView = Dump N\u00e9zet
|
||||||
config.description.dumpView = Nyers adatok mutat\u00e1sa
|
config.description.dumpView = Nyers adatok mutat\u00e1sa
|
||||||
|
|
||||||
|
config.name.useHexColorFormat = Hexa sz\u00edn form\u00e1tum
|
||||||
|
config.description.useHexColorFormat = A sz\u00ednek hexa form\u00e1tum\u00fa mutat\u00e1sa
|
||||||
|
|
||||||
config.name.parallelSpeedUp = P\u00e1rhuzamos gyors\u00edt\u00e1s
|
config.name.parallelSpeedUp = P\u00e1rhuzamos gyors\u00edt\u00e1s
|
||||||
config.description.parallelSpeedUp = P\u00e1rhuzamos\u00edt\u00e1s fel tudja gyors\u00edtani a visszaford\u00edt\u00e1st
|
config.description.parallelSpeedUp = P\u00e1rhuzamos\u00edt\u00e1s fel tudja gyors\u00edtani a visszaford\u00edt\u00e1st
|
||||||
|
|
||||||
|
|||||||
@@ -1,85 +1,90 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2010-2014 JPEXS
|
* Copyright (C) 2010-2014 JPEXS
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.jpexs.decompiler.flash.types;
|
package com.jpexs.decompiler.flash.types;
|
||||||
|
|
||||||
import com.jpexs.decompiler.flash.types.annotations.SWFType;
|
import com.jpexs.decompiler.flash.configuration.Configuration;
|
||||||
import java.awt.Color;
|
import com.jpexs.decompiler.flash.types.annotations.SWFType;
|
||||||
import java.io.Serializable;
|
import java.awt.Color;
|
||||||
|
import java.io.Serializable;
|
||||||
/**
|
|
||||||
* Represents 24-bit red, green, blue value
|
/**
|
||||||
*
|
* Represents 24-bit red, green, blue value
|
||||||
* @author JPEXS
|
*
|
||||||
*/
|
* @author JPEXS
|
||||||
public class RGB implements Serializable {
|
*/
|
||||||
|
public class RGB implements Serializable {
|
||||||
/**
|
|
||||||
* Red color value
|
/**
|
||||||
*/
|
* Red color value
|
||||||
@SWFType(BasicType.UI8)
|
*/
|
||||||
public int red;
|
@SWFType(BasicType.UI8)
|
||||||
/**
|
public int red;
|
||||||
* Green color value
|
/**
|
||||||
*/
|
* Green color value
|
||||||
@SWFType(BasicType.UI8)
|
*/
|
||||||
public int green;
|
@SWFType(BasicType.UI8)
|
||||||
/**
|
public int green;
|
||||||
* Blue color value
|
/**
|
||||||
*/
|
* Blue color value
|
||||||
@SWFType(BasicType.UI8)
|
*/
|
||||||
public int blue;
|
@SWFType(BasicType.UI8)
|
||||||
|
public int blue;
|
||||||
public RGB(int red, int green, int blue) {
|
|
||||||
this.red = red;
|
public RGB(int red, int green, int blue) {
|
||||||
this.green = green;
|
this.red = red;
|
||||||
this.blue = blue;
|
this.green = green;
|
||||||
}
|
this.blue = blue;
|
||||||
|
}
|
||||||
public RGB() {
|
|
||||||
}
|
public RGB() {
|
||||||
|
}
|
||||||
public String toHexRGB() {
|
|
||||||
String rh = Integer.toHexString(red);
|
public String toHexRGB() {
|
||||||
if (rh.length() < 2) {
|
String rh = Integer.toHexString(red);
|
||||||
rh = "0" + rh;
|
if (rh.length() < 2) {
|
||||||
}
|
rh = "0" + rh;
|
||||||
String gh = Integer.toHexString(green);
|
}
|
||||||
if (gh.length() < 2) {
|
String gh = Integer.toHexString(green);
|
||||||
gh = "0" + gh;
|
if (gh.length() < 2) {
|
||||||
}
|
gh = "0" + gh;
|
||||||
String bh = Integer.toHexString(blue);
|
}
|
||||||
if (bh.length() < 2) {
|
String bh = Integer.toHexString(blue);
|
||||||
bh = "0" + bh;
|
if (bh.length() < 2) {
|
||||||
}
|
bh = "0" + bh;
|
||||||
return "#" + rh + gh + bh;
|
}
|
||||||
}
|
return "#" + rh + gh + bh;
|
||||||
|
}
|
||||||
public Color toColor() {
|
|
||||||
return new Color(red, green, blue);
|
public Color toColor() {
|
||||||
}
|
return new Color(red, green, blue);
|
||||||
|
}
|
||||||
public RGB(Color color) {
|
|
||||||
this.red = color.getRed();
|
public RGB(Color color) {
|
||||||
this.green = color.getGreen();
|
this.red = color.getRed();
|
||||||
this.blue = color.getBlue();
|
this.green = color.getGreen();
|
||||||
}
|
this.blue = color.getBlue();
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public String toString() {
|
@Override
|
||||||
return "[RGB red:" + red + ", green:" + green + ", blue:" + blue + "]";
|
public String toString() {
|
||||||
}
|
if (Configuration.useHexColorFormat.get()) {
|
||||||
}
|
return "[RGB " + toHexRGB() + "]";
|
||||||
|
} else {
|
||||||
|
return "[RGB red:" + red + ", green:" + green + ", blue:" + blue + "]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,82 +1,87 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2010-2014 JPEXS
|
* Copyright (C) 2010-2014 JPEXS
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.jpexs.decompiler.flash.types;
|
package com.jpexs.decompiler.flash.types;
|
||||||
|
|
||||||
import com.jpexs.decompiler.flash.types.annotations.SWFType;
|
import com.jpexs.decompiler.flash.configuration.Configuration;
|
||||||
import java.awt.Color;
|
import com.jpexs.decompiler.flash.types.annotations.SWFType;
|
||||||
import java.io.Serializable;
|
import java.awt.Color;
|
||||||
|
import java.io.Serializable;
|
||||||
/**
|
|
||||||
* Represents 32-bit red, green, blue and alpha value
|
/**
|
||||||
*
|
* Represents 32-bit red, green, blue and alpha value
|
||||||
* @author JPEXS
|
*
|
||||||
*/
|
* @author JPEXS
|
||||||
public class RGBA extends RGB implements Serializable {
|
*/
|
||||||
|
public class RGBA extends RGB implements Serializable {
|
||||||
/**
|
|
||||||
* Alpha value defining opacity
|
/**
|
||||||
*/
|
* Alpha value defining opacity
|
||||||
@SWFType(BasicType.UI8)
|
*/
|
||||||
public int alpha;
|
@SWFType(BasicType.UI8)
|
||||||
|
public int alpha;
|
||||||
public float getAlphaFloat() {
|
|
||||||
return ((float) alpha) / 255.0f;
|
public float getAlphaFloat() {
|
||||||
}
|
return ((float) alpha) / 255.0f;
|
||||||
|
}
|
||||||
public String toHexARGB() {
|
|
||||||
String ra = Integer.toHexString(alpha);
|
public String toHexARGB() {
|
||||||
if (ra.length() < 2) {
|
String ra = Integer.toHexString(alpha);
|
||||||
ra = "0" + ra;
|
if (ra.length() < 2) {
|
||||||
}
|
ra = "0" + ra;
|
||||||
String rh = Integer.toHexString(red);
|
}
|
||||||
if (rh.length() < 2) {
|
String rh = Integer.toHexString(red);
|
||||||
rh = "0" + rh;
|
if (rh.length() < 2) {
|
||||||
}
|
rh = "0" + rh;
|
||||||
String gh = Integer.toHexString(green);
|
}
|
||||||
if (gh.length() < 2) {
|
String gh = Integer.toHexString(green);
|
||||||
gh = "0" + gh;
|
if (gh.length() < 2) {
|
||||||
}
|
gh = "0" + gh;
|
||||||
String bh = Integer.toHexString(blue);
|
}
|
||||||
if (bh.length() < 2) {
|
String bh = Integer.toHexString(blue);
|
||||||
bh = "0" + bh;
|
if (bh.length() < 2) {
|
||||||
}
|
bh = "0" + bh;
|
||||||
return "#" + ra + rh + gh + bh;
|
}
|
||||||
}
|
return "#" + ra + rh + gh + bh;
|
||||||
|
}
|
||||||
public RGBA(int red, int green, int blue, int alpha) {
|
|
||||||
super(red, green, blue);
|
public RGBA(int red, int green, int blue, int alpha) {
|
||||||
this.alpha = alpha;
|
super(red, green, blue);
|
||||||
}
|
this.alpha = alpha;
|
||||||
|
}
|
||||||
public RGBA(Color color) {
|
|
||||||
super(color);
|
public RGBA(Color color) {
|
||||||
this.alpha = color.getAlpha();
|
super(color);
|
||||||
}
|
this.alpha = color.getAlpha();
|
||||||
|
}
|
||||||
public RGBA() {
|
|
||||||
}
|
public RGBA() {
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Color toColor() {
|
@Override
|
||||||
return new Color(red, green, blue, alpha);
|
public Color toColor() {
|
||||||
}
|
return new Color(red, green, blue, alpha);
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public String toString() {
|
@Override
|
||||||
return "[RGB red:" + red + ", green:" + green + ", blue:" + blue + ", alpha:" + alpha + "]";
|
public String toString() {
|
||||||
}
|
if (Configuration.useHexColorFormat.get()) {
|
||||||
}
|
return "[RGB " + toHexRGB() + "]";
|
||||||
|
} else {
|
||||||
|
return "[RGB red:" + red + ", green:" + green + ", blue:" + blue + ", alpha:" + alpha + "]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user