Compare commits
10 Commits
54302c11f9
...
df376249f0
Author | SHA1 | Date | |
---|---|---|---|
df376249f0
|
|||
63ffafb7b8
|
|||
8704aff67e
|
|||
![]() |
b43da72604 | ||
![]() |
ca8d2fd8e6 | ||
![]() |
2d12e5ad91 | ||
![]() |
f1d67bf8c7 | ||
![]() |
f7366f0fee | ||
![]() |
8b2e038551 | ||
![]() |
a90fc2ef2f |
73
.gitignore
vendored
73
.gitignore
vendored
@@ -1 +1,72 @@
|
|||||||
out/
|
out/
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
# *.iml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based Rest Client
|
||||||
|
.idea/httpRequests
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# 默认忽略的文件
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# 基于编辑器的 HTTP 客户端请求
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
2
.idea/artifacts/StegSolve.xml
generated
2
.idea/artifacts/StegSolve.xml
generated
@@ -1,5 +1,5 @@
|
|||||||
<component name="ArtifactManager">
|
<component name="ArtifactManager">
|
||||||
<artifact type="jar" name="StegSolve">
|
<artifact type="jar" build-on-make="true" name="StegSolve">
|
||||||
<output-path>$PROJECT_DIR$/out/artifacts/StegSolve</output-path>
|
<output-path>$PROJECT_DIR$/out/artifacts/StegSolve</output-path>
|
||||||
<root id="archive" name="StegSolve.jar">
|
<root id="archive" name="StegSolve.jar">
|
||||||
<element id="directory" name="META-INF">
|
<element id="directory" name="META-INF">
|
||||||
|
9
.idea/artifacts/stegsolve_jar.xml
generated
Normal file
9
.idea/artifacts/stegsolve_jar.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="ArtifactManager">
|
||||||
|
<artifact type="jar" name="stegsolve:jar">
|
||||||
|
<output-path>$PROJECT_DIR$/out/artifacts/stegsolve_jar</output-path>
|
||||||
|
<root id="archive" name="stegsolve.jar">
|
||||||
|
<element id="module-output" name="stegsolve" />
|
||||||
|
<element id="extracted-dir" path="$USER_HOME$/Desktop/flatlaf-3.1.1.jar" path-in-jar="/" />
|
||||||
|
</root>
|
||||||
|
</artifact>
|
||||||
|
</component>
|
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||||
|
</state>
|
||||||
|
</component>
|
6
.idea/misc.xml
generated
6
.idea/misc.xml
generated
@@ -1,10 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectPlainTextFileTypeManager">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="jbrsdk_jcef-17" project-jdk-type="JavaSDK">
|
||||||
<file url="file://$PROJECT_DIR$/Extract.form" />
|
|
||||||
<file url="file://$PROJECT_DIR$/FileAnalysis.form" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
127
.idea/uiDesigner.xml
generated
127
.idea/uiDesigner.xml
generated
@@ -1,127 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Palette2">
|
|
||||||
<group name="Swing">
|
|
||||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="Button" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="RadioButton" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="CheckBox" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="Label" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
|
||||||
<preferred-size width="200" height="200" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
|
||||||
<preferred-size width="200" height="200" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
|
||||||
<preferred-size width="-1" height="20" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
|
||||||
</item>
|
|
||||||
</group>
|
|
||||||
</component>
|
|
||||||
<component name="uidesigner-configuration">
|
|
||||||
<option name="DEFAULT_LAYOUT_MANAGER" value="FlowLayout" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
1
.idea/vcs.xml
generated
1
.idea/vcs.xml
generated
@@ -2,5 +2,6 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="" vcs="Git" />
|
<mapping directory="" vcs="Git" />
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
576
.idea/workspace.xml
generated
576
.idea/workspace.xml
generated
@@ -1,576 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ArtifactsWorkspaceSettings">
|
|
||||||
<artifacts-to-build>
|
|
||||||
<artifact name="StegSolve" />
|
|
||||||
</artifacts-to-build>
|
|
||||||
</component>
|
|
||||||
<component name="ChangeListManager">
|
|
||||||
<list default="true" id="e0e33689-191e-444a-8f9d-4c2d5a37a68b" name="Default Changelist" comment="">
|
|
||||||
<change afterPath="$PROJECT_DIR$/.idea/artifacts/StegSolve.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
|
||||||
</list>
|
|
||||||
<ignored path="$PROJECT_DIR$/out/" />
|
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
||||||
</component>
|
|
||||||
<component name="CoverageDataManager">
|
|
||||||
<SUITE FILE_PATH="coverage/stegsolve$Unnamed.ic" NAME="Unnamed Coverage Results" MODIFIED="1544394178645" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" />
|
|
||||||
</component>
|
|
||||||
<component name="CoverageViewManager">
|
|
||||||
<option name="myElementSize" value="293" />
|
|
||||||
</component>
|
|
||||||
<component name="FUSProjectUsageTrigger">
|
|
||||||
<session id="-805381947">
|
|
||||||
<usages-collector id="statistics.lifecycle.project">
|
|
||||||
<counts>
|
|
||||||
<entry key="project.closed" value="2" />
|
|
||||||
<entry key="project.open.time.3" value="1" />
|
|
||||||
<entry key="project.open.time.6" value="1" />
|
|
||||||
<entry key="project.opened" value="2" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
<usages-collector id="statistics.file.extensions.open">
|
|
||||||
<counts>
|
|
||||||
<entry key="form" value="3" />
|
|
||||||
<entry key="java" value="22" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
<usages-collector id="statistics.file.types.open">
|
|
||||||
<counts>
|
|
||||||
<entry key="Enforced Plain Text" value="1" />
|
|
||||||
<entry key="GUI_DESIGNER_FORM" value="2" />
|
|
||||||
<entry key="JAVA" value="22" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
<usages-collector id="statistics.file.extensions.edit">
|
|
||||||
<counts>
|
|
||||||
<entry key="java" value="1334" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
<usages-collector id="statistics.file.types.edit">
|
|
||||||
<counts>
|
|
||||||
<entry key="JAVA" value="1334" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
</session>
|
|
||||||
<session id="863977787">
|
|
||||||
<usages-collector id="statistics.lifecycle.project">
|
|
||||||
<counts>
|
|
||||||
<entry key="project.closed" value="1" />
|
|
||||||
<entry key="project.open.time.5" value="1" />
|
|
||||||
<entry key="project.open.time.9" value="1" />
|
|
||||||
<entry key="project.opened" value="2" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
<usages-collector id="statistics.file.extensions.open">
|
|
||||||
<counts>
|
|
||||||
<entry key="form" value="3" />
|
|
||||||
<entry key="java" value="11" />
|
|
||||||
<entry key="txt" value="1" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
<usages-collector id="statistics.file.types.open">
|
|
||||||
<counts>
|
|
||||||
<entry key="Enforced Plain Text" value="1" />
|
|
||||||
<entry key="GUI_DESIGNER_FORM" value="2" />
|
|
||||||
<entry key="JAVA" value="11" />
|
|
||||||
<entry key="PLAIN_TEXT" value="1" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
<usages-collector id="statistics.file.extensions.edit">
|
|
||||||
<counts>
|
|
||||||
<entry key="form" value="17" />
|
|
||||||
<entry key="java" value="2350" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
<usages-collector id="statistics.file.types.edit">
|
|
||||||
<counts>
|
|
||||||
<entry key="Enforced Plain Text" value="17" />
|
|
||||||
<entry key="JAVA" value="2350" />
|
|
||||||
</counts>
|
|
||||||
</usages-collector>
|
|
||||||
</session>
|
|
||||||
</component>
|
|
||||||
<component name="FileEditorManager">
|
|
||||||
<splitter split-orientation="horizontal" split-proportion="0.5">
|
|
||||||
<split-first>
|
|
||||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
|
||||||
<file pinned="false" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/ZoomSlider.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="238">
|
|
||||||
<caret line="14" column="4" selection-start-line="14" selection-start-column="4" selection-end-line="14" selection-end-column="4" />
|
|
||||||
<folding>
|
|
||||||
<element signature="imports" expanded="true" />
|
|
||||||
<element signature="e#1103#1358#0" expanded="true" />
|
|
||||||
<element signature="e#1357#1358#0" expanded="true" />
|
|
||||||
<element signature="e#1223#1224#0" expanded="true" />
|
|
||||||
<element signature="e#1268#1269#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
</leaf>
|
|
||||||
</split-first>
|
|
||||||
<split-second>
|
|
||||||
<leaf>
|
|
||||||
<file pinned="false" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/StegSolve.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="761">
|
|
||||||
<caret line="463" column="33" selection-start-line="463" selection-start-column="33" selection-end-line="463" selection-end-column="33" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#2482#2547#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
</leaf>
|
|
||||||
</split-second>
|
|
||||||
</splitter>
|
|
||||||
</component>
|
|
||||||
<component name="FileTemplateManagerImpl">
|
|
||||||
<option name="RECENT_TEMPLATES">
|
|
||||||
<list>
|
|
||||||
<option value="Class" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="FindInProjectRecents">
|
|
||||||
<findStrings>
|
|
||||||
<find>fileOpen</find>
|
|
||||||
<find>dp</find>
|
|
||||||
<find>scrollPane</find>
|
|
||||||
<find>background</find>
|
|
||||||
<find>scroll</find>
|
|
||||||
<find>255</find>
|
|
||||||
</findStrings>
|
|
||||||
</component>
|
|
||||||
<component name="Git.Settings">
|
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
||||||
</component>
|
|
||||||
<component name="GradleLocalSettings">
|
|
||||||
<option name="projectSyncType">
|
|
||||||
<map>
|
|
||||||
<entry key="$PROJECT_DIR$/../lwjgl3-maven-gradle-master" value="PREVIEW" />
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="IdeDocumentHistory">
|
|
||||||
<option name="CHANGED_PATHS">
|
|
||||||
<list>
|
|
||||||
<option value="$PROJECT_DIR$/Combiner.java" />
|
|
||||||
<option value="$PROJECT_DIR$/stegsolve/DropTargetHandler.java" />
|
|
||||||
<option value="$PROJECT_DIR$/stegsolve/DPanel.java" />
|
|
||||||
<option value="$PROJECT_DIR$/Extract.form" />
|
|
||||||
<option value="$PROJECT_DIR$/stegsolve/Extract.java" />
|
|
||||||
<option value="$PROJECT_DIR$/stegsolve/AboutFrame.java" />
|
|
||||||
<option value="$PROJECT_DIR$/stegsolve/StegSolve.java" />
|
|
||||||
<option value="$PROJECT_DIR$/stegsolve/ZoomSlider.java" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
|
|
||||||
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
|
|
||||||
<component name="JsGulpfileManager">
|
|
||||||
<detection-done>true</detection-done>
|
|
||||||
<sorting>DEFINITION_ORDER</sorting>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectFrameBounds" extendedState="6">
|
|
||||||
<option name="x" value="-12" />
|
|
||||||
<option name="width" value="1941" />
|
|
||||||
<option name="height" value="2112" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectView">
|
|
||||||
<navigator proportions="" version="1">
|
|
||||||
<foldersAlwaysOnTop value="true" />
|
|
||||||
</navigator>
|
|
||||||
<panes>
|
|
||||||
<pane id="Scope" />
|
|
||||||
<pane id="PackagesPane" />
|
|
||||||
<pane id="ProjectPane">
|
|
||||||
<subPane>
|
|
||||||
<expand>
|
|
||||||
<path>
|
|
||||||
<item name="stegsolve" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="stegsolve" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
<path>
|
|
||||||
<item name="stegsolve" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="stegsolve" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="stegsolve" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
</expand>
|
|
||||||
<select />
|
|
||||||
</subPane>
|
|
||||||
</pane>
|
|
||||||
</panes>
|
|
||||||
</component>
|
|
||||||
<component name="PropertiesComponent">
|
|
||||||
<property name="GenerateAntBuildDialog.backupFiles" value="true" />
|
|
||||||
<property name="GenerateAntBuildDialog.enableUiFormCompile" value="true" />
|
|
||||||
<property name="GenerateAntBuildDialog.forceTargetJdk" value="true" />
|
|
||||||
<property name="GenerateAntBuildDialog.outputFileNameProperty" value="stegsolve" />
|
|
||||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
|
||||||
<property name="aspect.path.notification.shown" value="true" />
|
|
||||||
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1544478442035" />
|
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
|
||||||
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
|
|
||||||
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
|
||||||
<property name="project.structure.last.edited" value="Artifacts" />
|
|
||||||
<property name="project.structure.proportion" value="0.15" />
|
|
||||||
<property name="project.structure.side.proportion" value="0.2" />
|
|
||||||
</component>
|
|
||||||
<component name="RunDashboard">
|
|
||||||
<option name="ruleStates">
|
|
||||||
<list>
|
|
||||||
<RuleState>
|
|
||||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
|
||||||
</RuleState>
|
|
||||||
<RuleState>
|
|
||||||
<option name="name" value="StatusDashboardGroupingRule" />
|
|
||||||
</RuleState>
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="RunManager">
|
|
||||||
<configuration name="Run" type="Application" factoryName="Application">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="stegsolve.StegSolve" />
|
|
||||||
<module name="stegsolve" />
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
||||||
<component name="SvnConfiguration">
|
|
||||||
<configuration />
|
|
||||||
</component>
|
|
||||||
<component name="TaskManager">
|
|
||||||
<task active="true" id="Default" summary="Default task">
|
|
||||||
<changelist id="e0e33689-191e-444a-8f9d-4c2d5a37a68b" name="Default Changelist" comment="" />
|
|
||||||
<created>1544387756663</created>
|
|
||||||
<option name="number" value="Default" />
|
|
||||||
<option name="presentableId" value="Default" />
|
|
||||||
<updated>1544387756663</updated>
|
|
||||||
<workItem from="1544387760322" duration="3421000" />
|
|
||||||
<workItem from="1544392776270" duration="1872000" />
|
|
||||||
<workItem from="1544432631746" duration="3903000" />
|
|
||||||
<workItem from="1544473281617" duration="4890000" />
|
|
||||||
</task>
|
|
||||||
<servers />
|
|
||||||
</component>
|
|
||||||
<component name="TimeTrackingManager">
|
|
||||||
<option name="totallyTimeSpent" value="14086000" />
|
|
||||||
</component>
|
|
||||||
<component name="TodoView">
|
|
||||||
<todo-panel id="selected-file">
|
|
||||||
<is-autoscroll-to-source value="true" />
|
|
||||||
</todo-panel>
|
|
||||||
<todo-panel id="all">
|
|
||||||
<are-packages-shown value="true" />
|
|
||||||
<is-autoscroll-to-source value="true" />
|
|
||||||
</todo-panel>
|
|
||||||
</component>
|
|
||||||
<component name="ToolWindowManager">
|
|
||||||
<frame x="-7" y="-7" width="2575" height="1415" extended-state="6" />
|
|
||||||
<editor active="true" />
|
|
||||||
<layout>
|
|
||||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.12922466" />
|
|
||||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
|
||||||
<window_info id="Image Layers" order="2" />
|
|
||||||
<window_info id="Designer" order="3" />
|
|
||||||
<window_info id="UI Designer" order="4" />
|
|
||||||
<window_info id="Capture Tool" order="5" />
|
|
||||||
<window_info id="Favorites" order="6" side_tool="true" />
|
|
||||||
<window_info anchor="bottom" id="Messages" order="0" weight="0.32917318" />
|
|
||||||
<window_info anchor="bottom" id="Database Changes" order="1" show_stripe_button="false" />
|
|
||||||
<window_info anchor="bottom" id="Version Control" order="2" show_stripe_button="false" />
|
|
||||||
<window_info anchor="bottom" id="Terminal" order="3" weight="0.32967034" />
|
|
||||||
<window_info anchor="bottom" id="Event Log" order="4" side_tool="true" />
|
|
||||||
<window_info anchor="bottom" id="Message" order="5" />
|
|
||||||
<window_info anchor="bottom" id="Find" order="6" weight="0.33359498" />
|
|
||||||
<window_info anchor="bottom" id="Debug" order="7" weight="0.39937598" />
|
|
||||||
<window_info anchor="bottom" id="Cvs" order="8" weight="0.25" />
|
|
||||||
<window_info anchor="bottom" id="Inspection" order="9" weight="0.4" />
|
|
||||||
<window_info anchor="bottom" id="Run" order="10" visible="true" weight="0.32605305" />
|
|
||||||
<window_info anchor="bottom" id="TODO" order="11" weight="0.32967034" />
|
|
||||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
|
||||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
|
||||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
|
||||||
<window_info anchor="right" id="Palette" order="3" />
|
|
||||||
<window_info anchor="right" id="Capture Analysis" order="4" />
|
|
||||||
<window_info anchor="right" id="Database" order="5" />
|
|
||||||
<window_info anchor="right" id="Theme Preview" order="6" />
|
|
||||||
<window_info anchor="right" id="Palette	" order="7" />
|
|
||||||
<window_info anchor="right" id="Maven Projects" order="8" />
|
|
||||||
<window_info anchor="right" id="Coverage" order="9" side_tool="true" weight="0.671799" />
|
|
||||||
</layout>
|
|
||||||
</component>
|
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
|
||||||
<option name="version" value="1" />
|
|
||||||
</component>
|
|
||||||
<component name="VcsContentAnnotationSettings">
|
|
||||||
<option name="myLimit" value="2678400000" />
|
|
||||||
</component>
|
|
||||||
<component name="editorHistoryManager">
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/Combiner.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="34">
|
|
||||||
<caret line="4" column="12" selection-start-line="4" selection-start-column="12" selection-end-line="4" selection-end-column="12" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/CombineTransform.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="34">
|
|
||||||
<caret line="4" column="12" selection-start-line="4" selection-start-column="12" selection-end-line="4" selection-end-column="12" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/FileAnalysis.form">
|
|
||||||
<provider editor-type-id="ui-designer" />
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="-153">
|
|
||||||
<caret line="21" column="14" lean-forward="true" selection-start-line="21" selection-start-column="14" selection-end-line="21" selection-end-column="14" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/StereoTransform.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="34">
|
|
||||||
<caret line="4" column="13" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="jar://C:/Program Files/Java/jdk1.8.0_191/src.zip!/java/awt/Window.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="415">
|
|
||||||
<caret line="800" column="16" selection-start-line="800" selection-start-column="16" selection-end-line="800" selection-end-column="16" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="jar://C:/Program Files/Java/jdk1.8.0_191/src.zip!/java/awt/Component.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="821">
|
|
||||||
<caret line="3337" column="11" selection-start-line="3337" selection-start-column="11" selection-end-line="3337" selection-end-column="11" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/Stereo.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="34">
|
|
||||||
<caret line="4" column="13" lean-forward="true" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/DropTargetHandler.java" />
|
|
||||||
<entry file="jar://C:/Program Files/Java/jdk1.8.0_191/src.zip!/java/awt/List.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="-285">
|
|
||||||
<caret line="108" column="13" selection-start-line="108" selection-start-column="13" selection-end-line="108" selection-end-column="13" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/FrameBrowser.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="102">
|
|
||||||
<caret line="16" column="42" lean-forward="true" selection-start-line="16" selection-start-column="42" selection-end-line="16" selection-end-column="42" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/FileAnalysis.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="575">
|
|
||||||
<caret line="40" column="40" lean-forward="true" selection-start-line="40" selection-start-column="40" selection-end-line="40" selection-end-column="40" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/Extract.form">
|
|
||||||
<provider editor-type-id="ui-designer" />
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="255">
|
|
||||||
<caret line="123" column="32" selection-start-line="123" selection-start-column="32" selection-end-line="123" selection-end-column="32" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/Extract.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="605">
|
|
||||||
<caret line="644" column="25" lean-forward="true" selection-start-line="644" selection-start-column="25" selection-end-line="644" selection-end-column="25" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#30210#30211#0" expanded="true" />
|
|
||||||
<element signature="e#30275#30276#0" expanded="true" />
|
|
||||||
<element signature="e#30608#30609#0" expanded="true" />
|
|
||||||
<element signature="e#30674#30675#0" expanded="true" />
|
|
||||||
<element signature="e#31007#31008#0" expanded="true" />
|
|
||||||
<element signature="e#31072#31073#0" expanded="true" />
|
|
||||||
<element signature="e#31398#31399#0" expanded="true" />
|
|
||||||
<element signature="e#31462#31463#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/Transform.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="571">
|
|
||||||
<caret line="372" column="23" lean-forward="true" selection-start-line="372" selection-start-column="23" selection-end-line="372" selection-end-column="23" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/DPanel.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="2958">
|
|
||||||
<caret line="185" column="6" selection-start-line="185" selection-start-column="6" selection-end-line="185" selection-end-column="6" />
|
|
||||||
<folding>
|
|
||||||
<element signature="imports" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/test.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor" />
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/test.form">
|
|
||||||
<provider selected="true" editor-type-id="ui-designer" />
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/AboutFrame.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="-82">
|
|
||||||
<caret line="41" column="55" lean-forward="true" selection-start-line="41" selection-start-column="55" selection-end-line="41" selection-end-column="55" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/Updates.txt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="340">
|
|
||||||
<caret line="20" selection-start-line="20" selection-end-line="20" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="jar://C:/Program Files/Java/jdk1.8.0_191/src.zip!/java/awt/Container.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="339">
|
|
||||||
<caret line="467" column="21" selection-start-line="467" selection-start-column="21" selection-end-line="467" selection-end-column="21" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/StegSolve.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="761">
|
|
||||||
<caret line="463" column="33" selection-start-line="463" selection-start-column="33" selection-end-line="463" selection-end-column="33" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#2482#2547#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/stegsolve/ZoomSlider.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="238">
|
|
||||||
<caret line="14" column="4" selection-start-line="14" selection-start-column="4" selection-end-line="14" selection-end-column="4" />
|
|
||||||
<folding>
|
|
||||||
<element signature="imports" expanded="true" />
|
|
||||||
<element signature="e#1103#1358#0" expanded="true" />
|
|
||||||
<element signature="e#1357#1358#0" expanded="true" />
|
|
||||||
<element signature="e#1223#1224#0" expanded="true" />
|
|
||||||
<element signature="e#1268#1269#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</component>
|
|
||||||
<component name="masterDetails">
|
|
||||||
<states>
|
|
||||||
<state key="ArtifactsStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<artifact-editor />
|
|
||||||
<last-edited>StegSolve</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
<option value="0.5" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="FacetStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>No facets are configured</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="GlobalLibrariesConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="JdkListConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>1.8</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="ModuleStructureConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<last-edited>stegsolve</last-edited>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
<option value="0.6" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="ProjectJDKs.UI">
|
|
||||||
<settings>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
<state key="ProjectLibrariesConfigurable.UI">
|
|
||||||
<settings>
|
|
||||||
<splitter-proportions>
|
|
||||||
<option name="proportions">
|
|
||||||
<list>
|
|
||||||
<option value="0.2" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</splitter-proportions>
|
|
||||||
</settings>
|
|
||||||
</state>
|
|
||||||
</states>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
16
README.md
16
README.md
@@ -1,6 +1,13 @@
|
|||||||
# StegSolve
|
# StegSolve
|
||||||
|
|
||||||
A modifed version of stegsolve
|
StegSolve的升级修复版本!
|
||||||
|
|
||||||
|

|
||||||
|
## 1.5 changes
|
||||||
|
|
||||||
|
- 汉化部分内容
|
||||||
|
- 美化界面为Jetbrians风格
|
||||||
|
- 修复原来1.4版本的帧浏览器、合并图片等功能的不显示图片bug。
|
||||||
|
|
||||||
|
|
||||||
## 1.4 changes
|
## 1.4 changes
|
||||||
@@ -8,4 +15,9 @@ A modifed version of stegsolve
|
|||||||
- Added zoom to image
|
- Added zoom to image
|
||||||
- Added drag&drop zone for files
|
- Added drag&drop zone for files
|
||||||
- Added "all" option to channel planes in "Data Extract"
|
- Added "all" option to channel planes in "Data Extract"
|
||||||
- Added horizontal scrolling (Shift+Mousewheel)
|
- Added horizontal scrolling (Shift+Mousewheel)
|
||||||
|
|
||||||
|
# Special Thanks
|
||||||
|
Special thanks to [JetBrains](https://www.jetbrains.com) for their support to this project.
|
||||||
|
|
||||||
|
[](https://www.jetbrains.com)
|
||||||
|
BIN
flatlaf-3.1.1.jar
Normal file
BIN
flatlaf-3.1.1.jar
Normal file
Binary file not shown.
@@ -7,5 +7,6 @@
|
|||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="flatlaf-3.1.11" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
@@ -43,7 +43,7 @@ public class AboutFrame extends javax.swing.JFrame {
|
|||||||
|
|
||||||
jEditorPane1.setContentType("text/html");
|
jEditorPane1.setContentType("text/html");
|
||||||
jEditorPane1.setEditable(false);
|
jEditorPane1.setEditable(false);
|
||||||
jEditorPane1.setText("<html>\n<center><b>Stegsolve v1.4 by Caesum<br>Mod by Giotino</b></center>\n<br>\nStegsolve is a stegano solver for challenges. It provides these main functions:\n<ul>\n<li>A quick view of different bit planes and some simple transformations.</li>\n<li>Data extraction from planes. This can be row order or column order, with bits treated as a bitstream and converted into bytes.</li>\n<li>Some simple checking of file formats and reporting on the filesize, additional bytes, file holes, etc. This is highly dependent upon the type of image.</li>\n<li>Stereogram solver - simply change the offset until the image becomes visible.</li>\n<li>Frame browser for animated images. This should also work for viewing layers in multi-layered PNG files.</li>\n<li>Image combiner to combine two images in a variety of ways and browse through the different combinations.</li>\n</ul>\n<p>Copy/Cut and paste is available from most text using CTRL-C to copy, CTRL-V to paste and CTRL-X for cut.\n<p>If an image fails to load, for example because it is corrupt, then file analysis will still open the file that you just tried to view. It may, however, crash out before reporting the information that you want to know. This will work though on images where the PNG has corrupted CRC values for example.\n</html>\n");
|
jEditorPane1.setText("<html>\n<center><b>Stegsolve v1.5 by Souno Inherited in Caesum<br>Mod by Giotino</b></center>\n<br>\nStegsolve is a stegano solver for challenges. It provides these main functions:\n<ul>\n<li>A quick view of different bit planes and some simple transformations.</li>\n<li>Data extraction from planes. This can be row order or column order, with bits treated as a bitstream and converted into bytes.</li>\n<li>Some simple checking of file formats and reporting on the filesize, additional bytes, file holes, etc. This is highly dependent upon the type of image.</li>\n<li>Stereogram solver - simply change the offset until the image becomes visible.</li>\n<li>Frame browser for animated images. This should also work for viewing layers in multi-layered PNG files.</li>\n<li>Image combiner to combine two images in a variety of ways and browse through the different combinations.</li>\n</ul>\n<p>Copy/Cut and paste is available from most text using CTRL-C to copy, CTRL-V to paste and CTRL-X for cut.\n<p>If an image fails to load, for example because it is corrupt, then file analysis will still open the file that you just tried to view. It may, however, crash out before reporting the information that you want to know. This will work though on images where the PNG has corrupted CRC values for example.\n</html>\n");
|
||||||
jEditorPane1.setMinimumSize(new java.awt.Dimension(150, 150));
|
jEditorPane1.setMinimumSize(new java.awt.Dimension(150, 150));
|
||||||
jEditorPane1.setPreferredSize(new java.awt.Dimension(150, 150));
|
jEditorPane1.setPreferredSize(new java.awt.Dimension(150, 150));
|
||||||
jScrollPane1.setViewportView(jEditorPane1);
|
jScrollPane1.setViewportView(jEditorPane1);
|
||||||
|
@@ -192,7 +192,7 @@ public class Combiner extends JFrame
|
|||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
JOptionPane.showMessageDialog(this, "Failed to write file: "+e.toString());
|
JOptionPane.showMessageDialog(this, "写入文件失败: "+e.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,8 +222,10 @@ public class Combiner extends JFrame
|
|||||||
dp.setPreferredSize(new Dimension(transform.getImage().getWidth(),transform.getImage().getHeight()));
|
dp.setPreferredSize(new Dimension(transform.getImage().getWidth(),transform.getImage().getHeight()));
|
||||||
this.setMaximumSize(getToolkit().getScreenSize());
|
this.setMaximumSize(getToolkit().getScreenSize());
|
||||||
pack();
|
pack();
|
||||||
|
dp.apply(100);
|
||||||
scrollPane.revalidate();
|
scrollPane.revalidate();
|
||||||
repaint();
|
repaint();
|
||||||
|
this.setSize(500, 600);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -478,7 +478,7 @@ public class Extract extends javax.swing.JFrame {
|
|||||||
cancelButton = new javax.swing.JButton();
|
cancelButton = new javax.swing.JButton();
|
||||||
|
|
||||||
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
setMinimumSize(new java.awt.Dimension(720, 560));
|
setMinimumSize(new java.awt.Dimension(790, 560));
|
||||||
getContentPane().setLayout(new java.awt.BorderLayout(5, 5));
|
getContentPane().setLayout(new java.awt.BorderLayout(5, 5));
|
||||||
|
|
||||||
optionsPanel.setMinimumSize(new java.awt.Dimension(720, 280));
|
optionsPanel.setMinimumSize(new java.awt.Dimension(720, 280));
|
||||||
@@ -488,13 +488,14 @@ public class Extract extends javax.swing.JFrame {
|
|||||||
lhSettingsPanel.setMinimumSize(new java.awt.Dimension(360, 280));
|
lhSettingsPanel.setMinimumSize(new java.awt.Dimension(360, 280));
|
||||||
lhSettingsPanel.setPreferredSize(new java.awt.Dimension(360, 280));
|
lhSettingsPanel.setPreferredSize(new java.awt.Dimension(360, 280));
|
||||||
|
|
||||||
bitPlanesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Bit Planes"));
|
int bitPlanesWidth = 480;
|
||||||
bitPlanesPanel.setMinimumSize(new java.awt.Dimension(400, 200));
|
|
||||||
bitPlanesPanel.setPreferredSize(new java.awt.Dimension(400, 200));
|
bitPlanesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Bit Planes"));
|
||||||
|
bitPlanesPanel.setMinimumSize(new java.awt.Dimension(bitPlanesWidth, 200));
|
||||||
|
bitPlanesPanel.setPreferredSize(new java.awt.Dimension(bitPlanesWidth, 200));
|
||||||
|
|
||||||
alphaBitPanel.setMinimumSize(new java.awt.Dimension(100, 33));
|
|
||||||
alphaBitPanel.setName("alphaBitPanel"); // NOI18N
|
alphaBitPanel.setName("alphaBitPanel"); // NOI18N
|
||||||
alphaBitPanel.setPreferredSize(new java.awt.Dimension(390, 34));
|
alphaBitPanel.setPreferredSize(new java.awt.Dimension(bitPlanesWidth-10, 34));
|
||||||
|
|
||||||
alphaLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
alphaLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
alphaLabel.setText("Alpha");
|
alphaLabel.setText("Alpha");
|
||||||
@@ -536,8 +537,7 @@ public class Extract extends javax.swing.JFrame {
|
|||||||
bitPlanesPanel.add(alphaBitPanel);
|
bitPlanesPanel.add(alphaBitPanel);
|
||||||
alphaBitPanel.getAccessibleContext().setAccessibleName("alphaBitPanel");
|
alphaBitPanel.getAccessibleContext().setAccessibleName("alphaBitPanel");
|
||||||
|
|
||||||
redBitPanel.setMinimumSize(new java.awt.Dimension(100, 33));
|
redBitPanel.setPreferredSize(new java.awt.Dimension(bitPlanesWidth-10, 34));
|
||||||
redBitPanel.setPreferredSize(new java.awt.Dimension(390, 34));
|
|
||||||
|
|
||||||
redLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
redLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
redLabel.setText("Red");
|
redLabel.setText("Red");
|
||||||
@@ -578,8 +578,7 @@ public class Extract extends javax.swing.JFrame {
|
|||||||
|
|
||||||
bitPlanesPanel.add(redBitPanel);
|
bitPlanesPanel.add(redBitPanel);
|
||||||
|
|
||||||
greenBitPanel.setMinimumSize(new java.awt.Dimension(100, 33));
|
greenBitPanel.setPreferredSize(new java.awt.Dimension(bitPlanesWidth-10, 34));
|
||||||
greenBitPanel.setPreferredSize(new java.awt.Dimension(390, 34));
|
|
||||||
|
|
||||||
greenLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
greenLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
greenLabel.setText("Green");
|
greenLabel.setText("Green");
|
||||||
@@ -620,8 +619,7 @@ public class Extract extends javax.swing.JFrame {
|
|||||||
|
|
||||||
bitPlanesPanel.add(greenBitPanel);
|
bitPlanesPanel.add(greenBitPanel);
|
||||||
|
|
||||||
blueBitPanel.setMinimumSize(new java.awt.Dimension(100, 33));
|
blueBitPanel.setPreferredSize(new java.awt.Dimension(bitPlanesWidth-10, 34));
|
||||||
blueBitPanel.setPreferredSize(new java.awt.Dimension(390, 34));
|
|
||||||
|
|
||||||
blueLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
blueLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
blueLabel.setText("Blue");
|
blueLabel.setText("Blue");
|
||||||
@@ -684,8 +682,7 @@ public class Extract extends javax.swing.JFrame {
|
|||||||
rhSettingsPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 0, 5));
|
rhSettingsPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 0, 5));
|
||||||
|
|
||||||
orderSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Order settings"));
|
orderSettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Order settings"));
|
||||||
orderSettingsPanel.setMinimumSize(new java.awt.Dimension(300, 260));
|
orderSettingsPanel.setPreferredSize(new java.awt.Dimension(280, 260));
|
||||||
orderSettingsPanel.setPreferredSize(new java.awt.Dimension(300, 260));
|
|
||||||
orderSettingsPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
|
orderSettingsPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
|
||||||
|
|
||||||
extractByLabel.setText("Extract By");
|
extractByLabel.setText("Extract By");
|
||||||
@@ -702,7 +699,7 @@ public class Extract extends javax.swing.JFrame {
|
|||||||
|
|
||||||
orderSettingsPanel.add(extractByPanel);
|
orderSettingsPanel.add(extractByPanel);
|
||||||
|
|
||||||
bitOrderPanel.setPreferredSize(new java.awt.Dimension(240, 41));
|
bitOrderPanel.setPreferredSize(new java.awt.Dimension(250, 41));
|
||||||
bitOrderPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
|
bitOrderPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
|
||||||
|
|
||||||
bitOrderLabel.setText("Bit Order");
|
bitOrderLabel.setText("Bit Order");
|
||||||
@@ -719,7 +716,7 @@ public class Extract extends javax.swing.JFrame {
|
|||||||
|
|
||||||
orderSettingsPanel.add(bitOrderPanel);
|
orderSettingsPanel.add(bitOrderPanel);
|
||||||
|
|
||||||
bitPlaneOrderPanel.setPreferredSize(new java.awt.Dimension(200, 120));
|
bitPlaneOrderPanel.setPreferredSize(new java.awt.Dimension(250, 130));
|
||||||
|
|
||||||
bitPlaneOrderLabel.setText("Bit Plane Order");
|
bitPlaneOrderLabel.setText("Bit Plane Order");
|
||||||
|
|
||||||
|
@@ -39,9 +39,9 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
{
|
{
|
||||||
rep = new StringBuilder();
|
rep = new StringBuilder();
|
||||||
rep.append("<html><center><b>");
|
rep.append("<html><center><b>");
|
||||||
rep.append("File format report");
|
rep.append("文件格式报告");
|
||||||
rep.append("</b></center>");
|
rep.append("</b></center>");
|
||||||
rep.append(("<br>File: "+ifile.getName()));
|
rep.append(("<br>文件: "+ifile.getName()));
|
||||||
try{
|
try{
|
||||||
FileInputStream fis = new FileInputStream(ifile);
|
FileInputStream fis = new FileInputStream(ifile);
|
||||||
f = new byte[(int)ifile.length()];
|
f = new byte[(int)ifile.length()];
|
||||||
@@ -51,7 +51,7 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
rep.append(("Error reading file: "+e.toString()));
|
rep.append(("读取文件时出错: "+e.toString()));
|
||||||
}
|
}
|
||||||
rep.append("</html>");
|
rep.append("</html>");
|
||||||
report.setText(rep.toString());
|
report.setText(rep.toString());
|
||||||
@@ -66,7 +66,7 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
// analyse f, write report to rep
|
// analyse f, write report to rep
|
||||||
if(f.length<4)
|
if(f.length<4)
|
||||||
{
|
{
|
||||||
rep.append("<br>file too short?");
|
rep.append("<br>文件太短?");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(f[0] == 'B' && f[1] == 'M')
|
if(f[0] == 'B' && f[1] == 'M')
|
||||||
@@ -78,7 +78,7 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
analyse_gif();
|
analyse_gif();
|
||||||
else if(f[0]==(byte)0xff && f[1]==(byte)0xd8)
|
else if(f[0]==(byte)0xff && f[1]==(byte)0xd8)
|
||||||
analyse_jpg();
|
analyse_jpg();
|
||||||
else rep.append("<br>File format analysis code not done yet!");
|
else rep.append("<br>文件格式分析代码尚未完成!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -90,8 +90,8 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
cpos = analyse_jpg_sections(cpos);
|
cpos = analyse_jpg_sections(cpos);
|
||||||
if(cpos<f.length)
|
if(cpos<f.length)
|
||||||
{
|
{
|
||||||
rep.append(("<br>Additional bytes at end of file = " +(f.length-cpos)));
|
rep.append(("<br>文件末尾的附加字节数 = " +(f.length-cpos)));
|
||||||
rep.append("<br>Dump of additional bytes:");
|
rep.append("<br>转储附加字节:");
|
||||||
fdump(cpos, f.length);
|
fdump(cpos, f.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,12 +105,12 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
{
|
{
|
||||||
if(f[pos]==(byte)0xff && f[pos+1]==(byte)0xd8)
|
if(f[pos]==(byte)0xff && f[pos+1]==(byte)0xd8)
|
||||||
{
|
{
|
||||||
rep.append("<br>Start of Image");
|
rep.append("<br>图像的开头");
|
||||||
pos+=2;
|
pos+=2;
|
||||||
}
|
}
|
||||||
else if(f[pos] == (byte) 0xff && f[pos + 1] == (byte) 0xd9)
|
else if(f[pos] == (byte) 0xff && f[pos + 1] == (byte) 0xd9)
|
||||||
{
|
{
|
||||||
rep.append("<br><br>End of Image");
|
rep.append("<br><br>图像结尾");
|
||||||
pos+=2;
|
pos+=2;
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
@@ -932,7 +932,7 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
OKButton = new javax.swing.JButton();
|
OKButton = new javax.swing.JButton();
|
||||||
|
|
||||||
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
setTitle("File Format Analysis");
|
setTitle("文件格式分析");
|
||||||
|
|
||||||
jPanel1.setMinimumSize(new java.awt.Dimension(400, 300));
|
jPanel1.setMinimumSize(new java.awt.Dimension(400, 300));
|
||||||
jPanel1.setPreferredSize(new java.awt.Dimension(400, 350));
|
jPanel1.setPreferredSize(new java.awt.Dimension(400, 350));
|
||||||
@@ -941,7 +941,7 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
jScrollPane1.setPreferredSize(new java.awt.Dimension(400, 260));
|
jScrollPane1.setPreferredSize(new java.awt.Dimension(400, 260));
|
||||||
|
|
||||||
report.setContentType("text/html");
|
report.setContentType("text/html");
|
||||||
report.setFont(new java.awt.Font("Courier New", 0, 14)); // NOI18N
|
report.setFont(new java.awt.Font("微软雅黑", 0, 14)); // NOI18N
|
||||||
jScrollPane1.setViewportView(report);
|
jScrollPane1.setViewportView(report);
|
||||||
|
|
||||||
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
|
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
|
||||||
@@ -960,7 +960,7 @@ public class FileAnalysis extends javax.swing.JFrame {
|
|||||||
jPanel2.setMinimumSize(new java.awt.Dimension(400, 35));
|
jPanel2.setMinimumSize(new java.awt.Dimension(400, 35));
|
||||||
jPanel2.setPreferredSize(new java.awt.Dimension(400, 35));
|
jPanel2.setPreferredSize(new java.awt.Dimension(400, 35));
|
||||||
|
|
||||||
OKButton.setText("OK");
|
OKButton.setText("确认");
|
||||||
OKButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
OKButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
||||||
OKButton.addActionListener(new java.awt.event.ActionListener() {
|
OKButton.addActionListener(new java.awt.event.ActionListener() {
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
@@ -97,7 +97,7 @@ public class FrameBrowser extends JFrame
|
|||||||
frames.add(bnext);
|
frames.add(bnext);
|
||||||
numframes++;
|
numframes++;
|
||||||
}
|
}
|
||||||
System.out.println("total frames " + numframes);
|
System.out.println("总帧数 " + numframes);
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
@@ -253,8 +253,10 @@ public class FrameBrowser extends JFrame
|
|||||||
dp.setPreferredSize(new Dimension(bi.getWidth(),bi.getHeight()));
|
dp.setPreferredSize(new Dimension(bi.getWidth(),bi.getHeight()));
|
||||||
this.setMaximumSize(getToolkit().getScreenSize());
|
this.setMaximumSize(getToolkit().getScreenSize());
|
||||||
pack();
|
pack();
|
||||||
|
dp.apply(100);
|
||||||
scrollPane.revalidate();
|
scrollPane.revalidate();
|
||||||
repaint();
|
repaint();
|
||||||
|
this.setSize(500, 600);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
package stegsolve;
|
package stegsolve;
|
||||||
|
|
||||||
import sun.plugin2.main.server.ServerPrintHelper;
|
import com.formdev.flatlaf.FlatIntelliJLaf;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.border.Border;
|
import javax.swing.border.Border;
|
||||||
@@ -24,10 +24,10 @@ import java.awt.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* StegSolve
|
* StegSolve
|
||||||
|
*
|
||||||
* @author Caesum
|
* @author Caesum
|
||||||
*/
|
*/
|
||||||
public class StegSolve extends JFrame
|
public class StegSolve extends JFrame {
|
||||||
{
|
|
||||||
static StegSolve that;
|
static StegSolve that;
|
||||||
/**
|
/**
|
||||||
* Menu option - about
|
* Menu option - about
|
||||||
@@ -120,16 +120,17 @@ public class StegSolve extends JFrame
|
|||||||
*/
|
*/
|
||||||
private Transform transform = null;
|
private Transform transform = null;
|
||||||
|
|
||||||
/** Creates new form stegsolve */
|
/**
|
||||||
private StegSolve()
|
* Creates new form stegsolve
|
||||||
{
|
*/
|
||||||
|
private StegSolve() {
|
||||||
that = this;
|
that = this;
|
||||||
initComponents();
|
initComponents();
|
||||||
}
|
}
|
||||||
|
|
||||||
// <editor-fold defaultstate="collapsed" desc="Initcomponents()">
|
// <editor-fold defaultstate="collapsed" desc="Initcomponents()">
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
|
FlatIntelliJLaf.install();
|
||||||
menuBar = new JMenuBar();
|
menuBar = new JMenuBar();
|
||||||
menuFile = new JMenu();
|
menuFile = new JMenu();
|
||||||
fileOpen = new JMenuItem();
|
fileOpen = new JMenuItem();
|
||||||
@@ -147,52 +148,52 @@ public class StegSolve extends JFrame
|
|||||||
|
|
||||||
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
menuFile.setText("File");
|
menuFile.setText("文件");
|
||||||
|
|
||||||
fileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, 0));
|
fileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, 0));
|
||||||
fileOpen.setText("Open");
|
fileOpen.setText("打开");
|
||||||
fileOpen.addActionListener(this::fileOpenActionPerformed);
|
fileOpen.addActionListener(this::fileOpenActionPerformed);
|
||||||
menuFile.add(fileOpen);
|
menuFile.add(fileOpen);
|
||||||
|
|
||||||
fileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, 0));
|
fileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, 0));
|
||||||
fileSave.setText("Save As");
|
fileSave.setText("另存为");
|
||||||
fileSave.addActionListener(this::fileSaveActionPerformed);
|
fileSave.addActionListener(this::fileSaveActionPerformed);
|
||||||
menuFile.add(fileSave);
|
menuFile.add(fileSave);
|
||||||
|
|
||||||
fileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, 0));
|
fileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, 0));
|
||||||
fileExit.setText("Exit");
|
fileExit.setText("退出");
|
||||||
fileExit.addActionListener(this::fileExitActionPerformed);
|
fileExit.addActionListener(this::fileExitActionPerformed);
|
||||||
menuFile.add(fileExit);
|
menuFile.add(fileExit);
|
||||||
|
|
||||||
menuBar.add(menuFile);
|
menuBar.add(menuFile);
|
||||||
|
|
||||||
menuAnalyse.setText("Analyse");
|
menuAnalyse.setText("分析");
|
||||||
|
|
||||||
analyseFormat.setText("File Format");
|
analyseFormat.setText("文件格式");
|
||||||
analyseFormat.addActionListener(this::analyseFormatActionPerformed);
|
analyseFormat.addActionListener(this::analyseFormatActionPerformed);
|
||||||
menuAnalyse.add(analyseFormat);
|
menuAnalyse.add(analyseFormat);
|
||||||
|
|
||||||
analyseExtract.setText("Data Extract");
|
analyseExtract.setText("数据提取");
|
||||||
analyseExtract.addActionListener(this::analyseExtractActionPerformed);
|
analyseExtract.addActionListener(this::analyseExtractActionPerformed);
|
||||||
menuAnalyse.add(analyseExtract);
|
menuAnalyse.add(analyseExtract);
|
||||||
|
|
||||||
stereoSolve.setText("Stereogram Solver");
|
stereoSolve.setText("立体视图");
|
||||||
stereoSolve.addActionListener(this::stereoSolveActionPerformed);
|
stereoSolve.addActionListener(this::stereoSolveActionPerformed);
|
||||||
menuAnalyse.add(stereoSolve);
|
menuAnalyse.add(stereoSolve);
|
||||||
|
|
||||||
frameBrowse.setText("Frame Browser");
|
frameBrowse.setText("帧浏览器");
|
||||||
frameBrowse.addActionListener(this::frameBrowseActionPerformed);
|
frameBrowse.addActionListener(this::frameBrowseActionPerformed);
|
||||||
menuAnalyse.add(frameBrowse);
|
menuAnalyse.add(frameBrowse);
|
||||||
|
|
||||||
imageCombine.setText("Image Combiner");
|
imageCombine.setText("图像合成器");
|
||||||
imageCombine.addActionListener(this::imageCombineActionPerformed);
|
imageCombine.addActionListener(this::imageCombineActionPerformed);
|
||||||
menuAnalyse.add(imageCombine);
|
menuAnalyse.add(imageCombine);
|
||||||
|
|
||||||
menuBar.add(menuAnalyse);
|
menuBar.add(menuAnalyse);
|
||||||
|
|
||||||
menuHelp.setText("Help");
|
menuHelp.setText("帮助");
|
||||||
|
|
||||||
about.setText("About");
|
about.setText("关于");
|
||||||
about.addActionListener(this::aboutActionPerformed);
|
about.addActionListener(this::aboutActionPerformed);
|
||||||
menuHelp.add(about);
|
menuHelp.add(about);
|
||||||
|
|
||||||
@@ -236,44 +237,46 @@ public class StegSolve extends JFrame
|
|||||||
frame.addKeyListener(new KeyListener() {
|
frame.addKeyListener(new KeyListener() {
|
||||||
@Override
|
@Override
|
||||||
public void keyPressed(KeyEvent e) {
|
public void keyPressed(KeyEvent e) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
if(e.isShiftDown()) {
|
if (e.isShiftDown()) {
|
||||||
frame.addMouseWheelListener(arg01 -> {
|
frame.addMouseWheelListener(arg01 -> {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
scrollPane.getHorizontalScrollBar().setValue(scrollPane.getHorizontalScrollBar().getValue()+ arg01.getWheelRotation());
|
scrollPane.getHorizontalScrollBar().setValue(scrollPane.getHorizontalScrollBar().getValue() + arg01.getWheelRotation());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void keyReleased(KeyEvent e) {
|
public void keyReleased(KeyEvent e) {
|
||||||
if(!e.isShiftDown()) {
|
if (!e.isShiftDown()) {
|
||||||
frame.removeMouseWheelListener(frame.getMouseWheelListeners()[0]);
|
frame.removeMouseWheelListener(frame.getMouseWheelListeners()[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void keyTyped(KeyEvent e) {}
|
public void keyTyped(KeyEvent e) {
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
add(scrollPane, BorderLayout.CENTER);
|
add(scrollPane, BorderLayout.CENTER);
|
||||||
|
|
||||||
backwardButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT,0), "back");
|
backwardButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0), "back");
|
||||||
backwardButton.getActionMap().put("back", backButtonPress);
|
backwardButton.getActionMap().put("back", backButtonPress);
|
||||||
forwardButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT,0), "forward");
|
forwardButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0), "forward");
|
||||||
forwardButton.getActionMap().put("forward", forwardButtonPress);
|
forwardButton.getActionMap().put("forward", forwardButtonPress);
|
||||||
|
|
||||||
this.setTitle("StegSolve 1.4 by Caesum (Mod by Giotino)");
|
this.setTitle("StegSolve 1.5 by Souno (龙腾四季专版)");
|
||||||
this.setMaximumSize(getToolkit().getScreenSize());
|
this.setMaximumSize(getToolkit().getScreenSize());
|
||||||
|
|
||||||
pack();
|
pack();
|
||||||
|
|
||||||
this.setSize(500, 600);
|
this.setSize(800, 600);
|
||||||
//setResizable(false);
|
//setResizable(false);
|
||||||
}// </editor-fold>
|
}// </editor-fold>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the form on file exit
|
* Close the form on file exit
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void fileExitActionPerformed(ActionEvent evt) {
|
private void fileExitActionPerformed(ActionEvent evt) {
|
||||||
@@ -283,18 +286,19 @@ public class StegSolve extends JFrame
|
|||||||
/**
|
/**
|
||||||
* This is used to map the left arrow key to the back button
|
* This is used to map the left arrow key to the back button
|
||||||
*/
|
*/
|
||||||
private Action backButtonPress = new AbstractAction()
|
private Action backButtonPress = new AbstractAction() {
|
||||||
{
|
public void actionPerformed(ActionEvent e) {
|
||||||
public void actionPerformed(ActionEvent e)
|
backwardButtonActionPerformed(e);
|
||||||
{ backwardButtonActionPerformed(e);}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Move back by one image
|
* Move back by one image
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void backwardButtonActionPerformed(ActionEvent evt) {
|
private void backwardButtonActionPerformed(ActionEvent evt) {
|
||||||
if(transform == null) return;
|
if (transform == null) return;
|
||||||
transform.back();
|
transform.back();
|
||||||
updateImage();
|
updateImage();
|
||||||
}
|
}
|
||||||
@@ -302,24 +306,26 @@ public class StegSolve extends JFrame
|
|||||||
/**
|
/**
|
||||||
* This is used to map the right arrow key to the forward button
|
* This is used to map the right arrow key to the forward button
|
||||||
*/
|
*/
|
||||||
private Action forwardButtonPress = new AbstractAction()
|
private Action forwardButtonPress = new AbstractAction() {
|
||||||
{
|
public void actionPerformed(ActionEvent e) {
|
||||||
public void actionPerformed(ActionEvent e)
|
forwardButtonActionPerformed(e);
|
||||||
{ forwardButtonActionPerformed(e);}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Move forward by one image
|
* Move forward by one image
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void forwardButtonActionPerformed(ActionEvent evt) {
|
private void forwardButtonActionPerformed(ActionEvent evt) {
|
||||||
if(bi == null) return;
|
if (bi == null) return;
|
||||||
transform.forward();
|
transform.forward();
|
||||||
updateImage();
|
updateImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the help/about frame
|
* Show the help/about frame
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void aboutActionPerformed(ActionEvent evt) {
|
private void aboutActionPerformed(ActionEvent evt) {
|
||||||
@@ -328,6 +334,7 @@ public class StegSolve extends JFrame
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the file format analyser
|
* Open the file format analyser
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void analyseFormatActionPerformed(ActionEvent evt) {
|
private void analyseFormatActionPerformed(ActionEvent evt) {
|
||||||
@@ -336,6 +343,7 @@ public class StegSolve extends JFrame
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the stereogram solver
|
* Open the stereogram solver
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void stereoSolveActionPerformed(ActionEvent evt) {
|
private void stereoSolveActionPerformed(ActionEvent evt) {
|
||||||
@@ -344,6 +352,7 @@ public class StegSolve extends JFrame
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the frame browser
|
* Open the frame browser
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void frameBrowseActionPerformed(ActionEvent evt) {
|
private void frameBrowseActionPerformed(ActionEvent evt) {
|
||||||
@@ -352,33 +361,31 @@ public class StegSolve extends JFrame
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the image combiner
|
* Open the image combiner
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void imageCombineActionPerformed(ActionEvent evt) {
|
private void imageCombineActionPerformed(ActionEvent evt) {
|
||||||
JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));
|
JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));
|
||||||
FileNameExtensionFilter filter = new FileNameExtensionFilter("Images", "jpg", "jpeg", "gif", "bmp", "png");
|
FileNameExtensionFilter filter = new FileNameExtensionFilter("Images", "jpg", "jpeg", "gif", "bmp", "png");
|
||||||
fileChooser.setFileFilter(filter);
|
fileChooser.setFileFilter(filter);
|
||||||
fileChooser.setDialogTitle("Select image to combine with");
|
fileChooser.setDialogTitle("选择要合并的图像");
|
||||||
int rVal = fileChooser.showOpenDialog(this);
|
int rVal = fileChooser.showOpenDialog(this);
|
||||||
System.setProperty("user.dir", fileChooser.getCurrentDirectory().getAbsolutePath());
|
System.setProperty("user.dir", fileChooser.getCurrentDirectory().getAbsolutePath());
|
||||||
if(rVal == JFileChooser.APPROVE_OPTION)
|
if (rVal == JFileChooser.APPROVE_OPTION) {
|
||||||
{
|
|
||||||
sfile = fileChooser.getSelectedFile();
|
sfile = fileChooser.getSelectedFile();
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
BufferedImage bi2 = null;
|
BufferedImage bi2 = null;
|
||||||
bi2 = ImageIO.read(sfile);
|
bi2 = ImageIO.read(sfile);
|
||||||
new Combiner(bi, bi2).setVisible(true);
|
new Combiner(bi, bi2).setVisible(true);
|
||||||
}
|
} catch (Exception e) {
|
||||||
catch (Exception e)
|
JOptionPane.showMessageDialog(this, "加载文件失败: " + e.toString());
|
||||||
{
|
|
||||||
JOptionPane.showMessageDialog(this, "Failed to load file: " +e.toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the data extractor
|
* Open the data extractor
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void analyseExtractActionPerformed(ActionEvent evt) {
|
private void analyseExtractActionPerformed(ActionEvent evt) {
|
||||||
@@ -387,35 +394,32 @@ public class StegSolve extends JFrame
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the current transformed image
|
* Save the current transformed image
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void fileSaveActionPerformed(ActionEvent evt)
|
private void fileSaveActionPerformed(ActionEvent evt) {
|
||||||
{
|
|
||||||
JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));
|
JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));
|
||||||
fileChooser.setSelectedFile(new File("solved.bmp"));
|
fileChooser.setSelectedFile(new File("solved.bmp"));
|
||||||
int rVal = fileChooser.showSaveDialog(this);
|
int rVal = fileChooser.showSaveDialog(this);
|
||||||
System.setProperty("user.dir", fileChooser.getCurrentDirectory().getAbsolutePath());
|
System.setProperty("user.dir", fileChooser.getCurrentDirectory().getAbsolutePath());
|
||||||
if(rVal == JFileChooser.APPROVE_OPTION)
|
if (rVal == JFileChooser.APPROVE_OPTION) {
|
||||||
{
|
|
||||||
sfile = fileChooser.getSelectedFile();
|
sfile = fileChooser.getSelectedFile();
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
bi = transform.getImage();
|
bi = transform.getImage();
|
||||||
int rns = sfile.getName().lastIndexOf(".")+1;
|
int rns = sfile.getName().lastIndexOf(".") + 1;
|
||||||
if(rns==0)
|
if (rns == 0)
|
||||||
ImageIO.write(bi, "bmp", sfile);
|
ImageIO.write(bi, "bmp", sfile);
|
||||||
else
|
else
|
||||||
ImageIO.write(bi, sfile.getName().substring(rns), sfile);
|
ImageIO.write(bi, sfile.getName().substring(rns), sfile);
|
||||||
}
|
} catch (Exception e) {
|
||||||
catch (Exception e)
|
JOptionPane.showMessageDialog(this, "写入文件失败: " + e.toString());
|
||||||
{
|
|
||||||
JOptionPane.showMessageDialog(this, "Failed to write file: "+e.toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open a file
|
* Open a file
|
||||||
|
*
|
||||||
* @param evt Event
|
* @param evt Event
|
||||||
*/
|
*/
|
||||||
private void fileOpenActionPerformed(ActionEvent evt) {
|
private void fileOpenActionPerformed(ActionEvent evt) {
|
||||||
@@ -424,8 +428,7 @@ public class StegSolve extends JFrame
|
|||||||
fileChooser.setFileFilter(filter);
|
fileChooser.setFileFilter(filter);
|
||||||
int rVal = fileChooser.showOpenDialog(this);
|
int rVal = fileChooser.showOpenDialog(this);
|
||||||
System.setProperty("user.dir", fileChooser.getCurrentDirectory().getAbsolutePath());
|
System.setProperty("user.dir", fileChooser.getCurrentDirectory().getAbsolutePath());
|
||||||
if(rVal == JFileChooser.APPROVE_OPTION)
|
if (rVal == JFileChooser.APPROVE_OPTION) {
|
||||||
{
|
|
||||||
sfile = fileChooser.getSelectedFile();
|
sfile = fileChooser.getSelectedFile();
|
||||||
loadImage(sfile);
|
loadImage(sfile);
|
||||||
}
|
}
|
||||||
@@ -438,28 +441,24 @@ public class StegSolve extends JFrame
|
|||||||
|
|
||||||
void loadImage(File sfile) {
|
void loadImage(File sfile) {
|
||||||
this.sfile = sfile;
|
this.sfile = sfile;
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
bi = ImageIO.read(sfile);
|
bi = ImageIO.read(sfile);
|
||||||
transform = new Transform(bi);
|
transform = new Transform(bi);
|
||||||
newImage();
|
newImage();
|
||||||
}
|
} catch (Exception e) {
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
JOptionPane.showMessageDialog(this, "Failed to load file: " +e.toString());
|
JOptionPane.showMessageDialog(this, "加载文件失败: " + e.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset settings for a new image
|
* Reset settings for a new image
|
||||||
*/
|
*/
|
||||||
private void newImage()
|
private void newImage() {
|
||||||
{
|
|
||||||
nowShowing.setText(transform.getText());
|
nowShowing.setText(transform.getText());
|
||||||
dp.setImage(transform.getImage());
|
dp.setImage(transform.getImage());
|
||||||
dp.setSize(transform.getImage().getWidth(), transform.getImage().getHeight());
|
dp.setSize(transform.getImage().getWidth(), transform.getImage().getHeight());
|
||||||
dp.setPreferredSize(new Dimension(transform.getImage().getWidth(),transform.getImage().getHeight()));
|
dp.setPreferredSize(new Dimension(transform.getImage().getWidth(), transform.getImage().getHeight()));
|
||||||
this.setMaximumSize(getToolkit().getScreenSize());
|
this.setMaximumSize(getToolkit().getScreenSize());
|
||||||
zoomSlider.setValue(100);
|
zoomSlider.setValue(100);
|
||||||
dp.apply(100);
|
dp.apply(100);
|
||||||
@@ -470,16 +469,15 @@ public class StegSolve extends JFrame
|
|||||||
/**
|
/**
|
||||||
* Update the image being shown for new transform
|
* Update the image being shown for new transform
|
||||||
*/
|
*/
|
||||||
private void updateImage()
|
private void updateImage() {
|
||||||
{
|
|
||||||
nowShowing.setText(transform.getText());
|
nowShowing.setText(transform.getText());
|
||||||
dp.setImage(transform.getImage());
|
dp.setImage(transform.getImage());
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param args the command line arguments
|
* @param args the command line arguments
|
||||||
*/
|
*/
|
||||||
public static void main(String args[]) {
|
public static void main(String args[]) {
|
||||||
EventQueue.invokeLater(() -> new StegSolve().setVisible(true));
|
EventQueue.invokeLater(() -> new StegSolve().setVisible(true));
|
||||||
}
|
}
|
||||||
|
@@ -214,7 +214,9 @@ public class Stereo extends JFrame
|
|||||||
this.setMaximumSize(getToolkit().getScreenSize());
|
this.setMaximumSize(getToolkit().getScreenSize());
|
||||||
pack();
|
pack();
|
||||||
scrollPane.revalidate();
|
scrollPane.revalidate();
|
||||||
|
dp.apply(100);
|
||||||
repaint();
|
repaint();
|
||||||
|
this.setSize(500, 600);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -78,7 +78,7 @@ public class StereoTransform {
|
|||||||
*/
|
*/
|
||||||
public String getText()
|
public String getText()
|
||||||
{
|
{
|
||||||
return "Offset: "+transNum;
|
return "偏移量: "+transNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -375,9 +375,9 @@ public class Transform {
|
|||||||
switch(transNum)
|
switch(transNum)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return "Normal Image";
|
return "正常图像";
|
||||||
case 1:
|
case 1:
|
||||||
return "Colour Inversion (Xor)";
|
return "颜色反转 (Xor)";
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@@ -429,7 +429,7 @@ public class Transform {
|
|||||||
case 40:
|
case 40:
|
||||||
return "Random colour map 3";
|
return "Random colour map 3";
|
||||||
case 41:
|
case 41:
|
||||||
return "Gray bits";
|
return "灰度";
|
||||||
default:
|
default:
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@@ -26,7 +26,7 @@ public class ZoomSlider extends JPanel {
|
|||||||
private List<SliderChangeListener> changeListeners = new ArrayList<>();
|
private List<SliderChangeListener> changeListeners = new ArrayList<>();
|
||||||
|
|
||||||
ZoomSlider(int min, int max, int defaultValue) {
|
ZoomSlider(int min, int max, int defaultValue) {
|
||||||
JLabel tip = new JLabel("Zoom:");
|
JLabel tip = new JLabel("缩放:");
|
||||||
|
|
||||||
add(tip);
|
add(tip);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user