init project add to GitHub
|
|
@ -0,0 +1,79 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- You may freely edit this file. See commented blocks below for -->
|
||||
<!-- some examples of how to customize the build. -->
|
||||
<!-- (If you delete it and reopen the project it will be recreated.) -->
|
||||
<project name="ColorOracle" default="default" basedir=".">
|
||||
<description>Builds, tests, and runs the project ColorOracle.</description>
|
||||
<import file="nbproject/build-impl.xml"/>
|
||||
<!--
|
||||
|
||||
There exist several targets which are by default empty and which can be
|
||||
used for execution of your tasks. These targets are usually executed
|
||||
before and after some main targets. They are:
|
||||
|
||||
-pre-init: called before initialization of project properties
|
||||
-post-init: called after initialization of project properties
|
||||
-pre-compile: called before javac compilation
|
||||
-post-compile: called after javac compilation
|
||||
-pre-compile-single: called before javac compilation of single file
|
||||
-post-compile-single: called after javac compilation of single file
|
||||
-pre-compile-test: called before javac compilation of JUnit tests
|
||||
-post-compile-test: called after javac compilation of JUnit tests
|
||||
-pre-compile-test-single: called before javac compilation of single JUnit test
|
||||
-post-compile-test-single: called after javac compilation of single JUunit test
|
||||
-pre-jar: called before JAR building
|
||||
-post-jar: called after JAR building
|
||||
-post-clean: called after cleaning build products
|
||||
|
||||
(Targets beginning with '-' are not intended to be called on their own.)
|
||||
|
||||
Example of inserting an obfuscator after compilation could look like this:
|
||||
|
||||
<target name="-post-compile">
|
||||
<obfuscate>
|
||||
<fileset dir="${build.classes.dir}"/>
|
||||
</obfuscate>
|
||||
</target>
|
||||
|
||||
For list of available properties check the imported
|
||||
nbproject/build-impl.xml file.
|
||||
|
||||
|
||||
Another way to customize the build is by overriding existing main targets.
|
||||
The targets of interest are:
|
||||
|
||||
-init-macrodef-javac: defines macro for javac compilation
|
||||
-init-macrodef-junit: defines macro for junit execution
|
||||
-init-macrodef-debug: defines macro for class debugging
|
||||
-init-macrodef-java: defines macro for class execution
|
||||
-do-jar-with-manifest: JAR building (if you are using a manifest)
|
||||
-do-jar-without-manifest: JAR building (if you are not using a manifest)
|
||||
run: execution of project
|
||||
-javadoc-build: Javadoc generation
|
||||
test-report: JUnit report generation
|
||||
|
||||
An example of overriding the target for project execution could look like this:
|
||||
|
||||
<target name="run" depends="ColorOracle-impl.jar">
|
||||
<exec dir="bin" executable="launcher.exe">
|
||||
<arg file="${dist.jar}"/>
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
Notice that the overridden target depends on the jar target and not only on
|
||||
the compile target as the regular run target does. Again, for a list of available
|
||||
properties which you can use, check the target you are overriding in the
|
||||
nbproject/build-impl.xml file.
|
||||
|
||||
-->
|
||||
|
||||
<target name="-post-jar">
|
||||
<property name="launch4j.dir" location="win/launch4j" />
|
||||
<taskdef name="launch4j"
|
||||
classname="net.sf.launch4j.ant.Launch4jTask"
|
||||
classpath="${launch4j.dir}/launch4j.jar
|
||||
:${launch4j.dir}/lib/xstream.jar" />
|
||||
<launch4j configFile="win/launch4j_config.xml" />
|
||||
</target>
|
||||
|
||||
</project>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
#Thu, 18 Apr 2013 15:04:00 -0700
|
||||
|
||||
|
||||
/Users/bernie/Documents/ColorBlindness/ColorOracleWindows/ColorOracle=
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
|
@ -0,0 +1,32 @@
|
|||
========================
|
||||
BUILD OUTPUT DESCRIPTION
|
||||
========================
|
||||
|
||||
When you build an Java application project that has a main class, the IDE
|
||||
automatically copies all of the JAR
|
||||
files on the projects classpath to your projects dist/lib folder. The IDE
|
||||
also adds each of the JAR files to the Class-Path element in the application
|
||||
JAR files manifest file (MANIFEST.MF).
|
||||
|
||||
To run the project from the command line, go to the dist folder and
|
||||
type the following:
|
||||
|
||||
java -jar "ColorOracle.jar"
|
||||
|
||||
To distribute this project, zip up the dist folder (including the lib folder)
|
||||
and distribute the ZIP file.
|
||||
|
||||
Notes:
|
||||
|
||||
* If two JAR files on the project classpath have the same name, only the first
|
||||
JAR file is copied to the lib folder.
|
||||
* Only JAR files are copied to the lib folder.
|
||||
If the classpath contains other types of files or folders, these files (folders)
|
||||
are not copied.
|
||||
* If a library on the projects classpath also has a Class-Path element
|
||||
specified in the manifest,the content of the Class-Path element has to be on
|
||||
the projects runtime path.
|
||||
* To set a main class in a standard Java project, right-click the project node
|
||||
in the Projects window and choose Properties. Then click Run and enter the
|
||||
class name in the Main Class field. Alternatively, you can manually type the
|
||||
class name in the manifest Main-Class element.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Manifest-Version: 1.0
|
||||
X-COMMENT: Main-Class will be added automatically by build
|
||||
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
build.xml.data.CRC32=0f5ae39e
|
||||
build.xml.script.CRC32=18e42ff7
|
||||
build.xml.stylesheet.CRC32=240b97a2
|
||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||
nbproject/build-impl.xml.data.CRC32=06d44573
|
||||
nbproject/build-impl.xml.script.CRC32=51061edb
|
||||
nbproject/build-impl.xml.stylesheet.CRC32=6ddba6b6@1.53.1.46
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
application.args=
|
||||
compile.on.save=false
|
||||
do.depend=false
|
||||
do.jar=true
|
||||
javac.debug=true
|
||||
javadoc.preview=true
|
||||
jaxbwiz.endorsed.dirs=/Applications/NetBeans/NetBeans 6.8.app/Contents/Resources/NetBeans/ide12/modules/ext/jaxb/api
|
||||
user.properties.file=/Users/bernie/Library/Application Support/NetBeans/7.2/build.properties
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
|
||||
<file>file:/Users/bernie/Documents/ColorBlindness/ColorOracleWindows/ColorOracle/build.xml</file>
|
||||
<file>file:/Users/bernie/Documents/ColorBlindness/ColorOracleWindows/ColorOracle/src/ika/colororacle/AboutPanel.java</file>
|
||||
</open-files>
|
||||
</project-private>
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
annotation.processing.enabled=true
|
||||
annotation.processing.enabled.in.editor=false
|
||||
annotation.processing.processors.list=
|
||||
annotation.processing.run.all.processors=true
|
||||
application.args=
|
||||
application.title=ColorOracle
|
||||
application.vendor=jenny
|
||||
build.classes.dir=${build.dir}/classes
|
||||
build.classes.excludes=**/*.java,**/*.form
|
||||
# This directory is removed when the project is cleaned:
|
||||
build.dir=build
|
||||
build.generated.dir=${build.dir}/generated
|
||||
build.generated.sources.dir=${build.dir}/generated-sources
|
||||
# Only compile against the classpath explicitly listed here:
|
||||
build.sysclasspath=ignore
|
||||
build.test.classes.dir=${build.dir}/test/classes
|
||||
build.test.results.dir=${build.dir}/test/results
|
||||
debug.classpath=\
|
||||
${run.classpath}
|
||||
debug.test.classpath=\
|
||||
${run.test.classpath}
|
||||
# This directory is removed when the project is cleaned:
|
||||
dist.dir=dist
|
||||
dist.jar=${dist.dir}/ColorOracle.jar
|
||||
dist.javadoc.dir=${dist.dir}/javadoc
|
||||
endorsed.classpath=
|
||||
excludes=
|
||||
includes=**
|
||||
jar.archive.disabled=${jnlp.enabled}
|
||||
jar.compress=true
|
||||
jar.index=${jnlp.enabled}
|
||||
javac.classpath=
|
||||
# Space-separated list of extra javac options
|
||||
javac.compilerargs=
|
||||
javac.deprecation=false
|
||||
javac.processorpath=\
|
||||
${javac.classpath}
|
||||
javac.source=1.6
|
||||
javac.target=1.6
|
||||
javac.test.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}
|
||||
javadoc.additionalparam=
|
||||
javadoc.author=false
|
||||
javadoc.encoding=
|
||||
javadoc.noindex=false
|
||||
javadoc.nonavbar=false
|
||||
javadoc.notree=false
|
||||
javadoc.private=false
|
||||
javadoc.splitindex=true
|
||||
javadoc.use=true
|
||||
javadoc.version=false
|
||||
javadoc.windowtitle=
|
||||
jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
|
||||
jnlp.codebase.type=no.codebase
|
||||
jnlp.descriptor=application
|
||||
jnlp.enabled=false
|
||||
jnlp.mixed.code=default
|
||||
jnlp.offline-allowed=false
|
||||
jnlp.signed=false
|
||||
jnlp.signing=
|
||||
jnlp.signing.alias=
|
||||
jnlp.signing.keystore=
|
||||
main.class=ika.colororacle.ColorOracle
|
||||
manifest.file=manifest.mf
|
||||
meta.inf.dir=${src.dir}/META-INF
|
||||
mkdist.disabled=false
|
||||
platform.active=default_platform
|
||||
run.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}
|
||||
# Space-separated list of JVM arguments used when running the project
|
||||
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
||||
# or test-sys-prop.name=value to set system properties for unit tests):
|
||||
run.jvmargs=
|
||||
run.test.classpath=\
|
||||
${javac.test.classpath}:\
|
||||
${build.test.classes.dir}
|
||||
src.dir=src
|
||||
test.src.dir=test
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>org.netbeans.modules.java.j2seproject</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
|
||||
<name>ColorOracle</name>
|
||||
<minimum-ant-version>1.6.5</minimum-ant-version>
|
||||
<source-roots>
|
||||
<root id="src.dir"/>
|
||||
</source-roots>
|
||||
<test-roots>
|
||||
<root id="test.src.dir"/>
|
||||
</test-roots>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,313 @@
|
|||
package com.muchsoft.util;
|
||||
|
||||
/**
|
||||
* <p>This class lets you determine which system your Java application runs on. Furthermore, it offers
|
||||
* methods for cross-platform queries for certain paths such as the preferences folder. It is used as
|
||||
* follows:
|
||||
* <p><pre> if (Sys.isMacOSX())
|
||||
* {
|
||||
* // Mac OS X-specific code goes here...
|
||||
* }
|
||||
* else
|
||||
* {
|
||||
* // code for other systems
|
||||
* }
|
||||
*
|
||||
* // store user's configuration data
|
||||
* DataOutputStream out = new DataOutputStream(
|
||||
* new BufferedOutputStream(
|
||||
* new FileOutputStream(
|
||||
* new File( Sys.getPrefsDirectory(), "config.dat" )
|
||||
* )));
|
||||
* //...</pre>
|
||||
* <p>The latest Sys version can be found at
|
||||
* <a href="http://www.muchsoft.com/java/">http://www.muchsoft.com/java/</a>.
|
||||
* <p>Copyright 1998-2004 by Thomas Much, <a href="mailto:thomas@muchsoft.com">thomas@muchsoft.com</a>.
|
||||
* <br>This class is free for commercial and non-commercial use,
|
||||
* as long as you do not distribute modified versions of the source code.
|
||||
* If you have any suggestions, bug reports or feature requests, let me know.
|
||||
* <p><b>Version History:</b></p>
|
||||
* <dl>
|
||||
* <dt> 2004-10-13
|
||||
* <dd> Added a new package, com.muchsoft.util.mac, and a new class, {@link Mac}.
|
||||
* <dt> 2004-05-04
|
||||
* <dd> isMacOSX() now matches <a href="http://developer.apple.com/technotes/tn2002/tn2110.html">http://developer.apple.com/technotes/tn2002/tn2110.html</a>
|
||||
* <dt> 2003-12-02
|
||||
* <dd> First public release.
|
||||
* </dl>
|
||||
*
|
||||
* @author Thomas Much
|
||||
* @version 2004-10-13
|
||||
*/
|
||||
|
||||
public class Sys {
|
||||
|
||||
|
||||
private static final boolean ismacos;
|
||||
private static final boolean ismacosx;
|
||||
private static final boolean islinux;
|
||||
private static final boolean iswindows;
|
||||
private static final boolean isos2;
|
||||
|
||||
private static final String homeDir = System.getProperty("user.home");
|
||||
private static final String workDir = System.getProperty("user.dir");
|
||||
private static final String prefDir;
|
||||
private static final String localPrefDir;
|
||||
private static final String javaHome;
|
||||
|
||||
|
||||
|
||||
static {
|
||||
|
||||
String osname = System.getProperty("os.name");
|
||||
String vendor = System.getProperty("java.vendor");
|
||||
String jhome = System.getProperty("java.home");
|
||||
|
||||
ismacosx = osname.toLowerCase().startsWith("mac os x");
|
||||
ismacos = (!ismacosx) && ((vendor.indexOf("Apple") >= 0) || (osname.indexOf("Mac OS") >= 0));
|
||||
islinux = (osname.indexOf("Linux") >= 0);
|
||||
iswindows = (osname.indexOf("Windows") >= 0);
|
||||
isos2 = (osname.indexOf("OS/2") >= 0);
|
||||
|
||||
if (ismacosx)
|
||||
{
|
||||
String pref = homeDir + "/Library/Preferences";
|
||||
String localPref = "/Library/Preferences";
|
||||
|
||||
/* // this way we'd do it ultra-correctly on Mac OS X / Java 1.4,
|
||||
// but then all Java apps would get a menu bar, which might not
|
||||
// be suitable for all situations
|
||||
|
||||
try
|
||||
{
|
||||
Class fileman = Class.forName("com.apple.eio.FileManager");
|
||||
|
||||
java.lang.reflect.Method findFolder =
|
||||
fileman.getMethod("findFolder", new Class[] { short.class, int.class });
|
||||
|
||||
final int kPreferencesFolderType = 0x70726566;
|
||||
final short kUserDomain = -32763;
|
||||
final short kLocalDomain = -32765;
|
||||
|
||||
pref = (String)findFolder.invoke(null,
|
||||
new Object[] { new Short(kUserDomain), new Integer(kPreferencesFolderType) });
|
||||
|
||||
localPref = (String)findFolder.invoke(null,
|
||||
new Object[] { new Short(kLocalDomain), new Integer(kPreferencesFolderType) });
|
||||
}
|
||||
catch (Exception e) {} */
|
||||
|
||||
prefDir = pref;
|
||||
localPrefDir = localPref;
|
||||
|
||||
if ((jhome == null) || (jhome.length() == 0))
|
||||
{
|
||||
jhome = "/Library/Java/Home";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
prefDir = homeDir;
|
||||
localPrefDir = (islinux) ? "/etc" : workDir;
|
||||
}
|
||||
|
||||
javaHome = jhome;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private Sys() { }
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return <code>true</code>, if the application is running on Mac OS 8/9, <code>false</code> otherwise
|
||||
*/
|
||||
|
||||
public static boolean isMacOS() {
|
||||
|
||||
return ismacos;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return <code>true</code>, if the application is running on Mac OS X, <code>false</code> otherwise
|
||||
*/
|
||||
|
||||
public static boolean isMacOSX() {
|
||||
|
||||
return ismacosx;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return <code>true</code>, if the application is running on a Mac (OS 8, 9 or X), <code>false</code> otherwise
|
||||
*/
|
||||
|
||||
public static boolean isAMac() {
|
||||
|
||||
return (ismacosx || ismacos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return <code>true</code>, if the application is running on Linux, <code>false</code> otherwise
|
||||
*/
|
||||
|
||||
public static boolean isLinux() {
|
||||
|
||||
return islinux;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return <code>true</code>, if the application is running on Windows, <code>false</code> otherwise
|
||||
*/
|
||||
|
||||
public static boolean isWindows() {
|
||||
|
||||
return iswindows;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return <code>true</code>, if the application is running on OS/2, <code>false</code> otherwise
|
||||
*/
|
||||
|
||||
public static boolean isOS2() {
|
||||
|
||||
return isos2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The home directory contains the user's data and applications. On UNIX systems this directory is denoted
|
||||
* by <code>~</code> and can be queried through the system property <code>user.home</code>.
|
||||
* @return the user's home directory without a trailing path separator
|
||||
*/
|
||||
|
||||
public static String getHomeDirectory() {
|
||||
|
||||
return homeDir;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The directory from which the application was launched is called the working directory. Its path can
|
||||
* be queried through the system property <code>user.dir</code>.
|
||||
* @return the application's working directory without a trailing path separator
|
||||
*/
|
||||
|
||||
public static String getWorkingDirectory() {
|
||||
|
||||
return workDir;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The preferences directory contains the user's configuration files. On Mac OS X, this method returns
|
||||
* <code>~/Library/Preferences</code>, on all other systems the user's home directory is used.
|
||||
* @return the user's preferences directory without a trailing path separator
|
||||
*/
|
||||
|
||||
public static String getPrefsDirectory() {
|
||||
|
||||
return prefDir;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The local preferences directory contains configuration files that are shared by all users on the computer.
|
||||
* On Mac OS X, this method returns <code>/Library/Preferences</code>, on Linux <code>/etc</code>. On all
|
||||
* other systems the application's working directory is used.
|
||||
* <i>Please note: There is no guarantee that your application has permission to use this directory!</i>
|
||||
* @return the shared preferences directory (without a trailing path separator) of all users on a local computer
|
||||
*/
|
||||
|
||||
public static String getLocalPrefsDirectory() {
|
||||
|
||||
return localPrefDir;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The Java home directory contains the <code>bin</code> subdirectory and is needed to invoke the Java tools
|
||||
* at runtime. It is specified by the environment variable <code>$JAVA_HOME</code> and can be queried through
|
||||
* the system property <code>java.home</code>. If the variable is not set properly, this method returns
|
||||
* <code>/Library/Java/Home</code> on Mac OS X.
|
||||
* @return the Java home directory without a trailing path separator
|
||||
*/
|
||||
|
||||
public static String getJavaHome() {
|
||||
|
||||
return javaHome;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This is a small test case for all the methods in this class.
|
||||
* On Mac OS X you can launch it by simply double-clicking the jar file (output goes to the Console).
|
||||
* On other systems, you can start it with <code>java -classpath .:Sys.jar com.muchsoft.util.Sys</code>
|
||||
* (or <code>java -jar Sys.jar</code>)
|
||||
* @param args not used
|
||||
*/
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
System.out.println();
|
||||
System.out.println("** com.muchsoft.util.Sys version 2004-10-13");
|
||||
System.out.println("**");
|
||||
System.out.println("** JavaHome: " + getJavaHome());
|
||||
System.out.println("** AppWork: " + getWorkingDirectory());
|
||||
System.out.println("** UserHome: " + getHomeDirectory());
|
||||
System.out.println("** UserPrefs: " + getPrefsDirectory());
|
||||
System.out.println("** LocalPrefs: " + getLocalPrefsDirectory());
|
||||
System.out.println("**");
|
||||
System.out.print( "** System: ");
|
||||
|
||||
if (isMacOSX())
|
||||
{
|
||||
System.out.println("Mac OS X");
|
||||
}
|
||||
else if (isMacOS())
|
||||
{
|
||||
System.out.println("Mac OS 8/9");
|
||||
}
|
||||
else if (isLinux())
|
||||
{
|
||||
System.out.println("Linux");
|
||||
}
|
||||
else if (isWindows())
|
||||
{
|
||||
System.out.println("Windows");
|
||||
}
|
||||
else if (isOS2())
|
||||
{
|
||||
System.out.println("OS/2");
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out.println("unknown");
|
||||
}
|
||||
|
||||
System.out.println("** " + System.getProperty("os.name"));
|
||||
System.out.println("** Java: " + System.getProperty("java.version"));
|
||||
System.out.println("** " + System.getProperty("java.runtime.version"));
|
||||
System.out.println("** " + System.getProperty("java.vm.version"));
|
||||
System.out.println("** " + System.getProperty("java.vendor"));
|
||||
System.out.println("** MRJ: " + System.getProperty("mrj.version"));
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||
<AuxValues>
|
||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
|
||||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,15,0,0,1,80"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JLabel" name="textLabel">
|
||||
<Properties>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
|
||||
<FontInfo relative="true">
|
||||
<Font component="textLabel" property="font" relativeSize="true" size="-2"/>
|
||||
</FontInfo>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" value="<html><center>Version 1.2.1<br><br>Programming by<br> Bernhard Jenny<br> Oregon State University<br> <br> Ideas, Testing and Icon by<br> Nathaniel Vaughn Kelso,<br> Stamen Design.<br> <br> Copyright 2006-2012,<br> all rights reserved.<br> <br> For updates and further information see:<br></center></html>"/>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
|
||||
</AuxValues>
|
||||
<Constraints>
|
||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||
<GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="16" insetsLeft="21" insetsBottom="4" insetsRight="21" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||
</Constraint>
|
||||
</Constraints>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="homepageButton">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="http://colororacle.org"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="homepageButtonActionPerformed"/>
|
||||
</Events>
|
||||
<Constraints>
|
||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||
<GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="6" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||
</Constraint>
|
||||
</Constraints>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="iconLabel">
|
||||
<Properties>
|
||||
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||
<Image iconType="3" name="/ika/icons/icon_big.png"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
|
||||
</AuxValues>
|
||||
<Constraints>
|
||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||
<GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="15" insetsLeft="0" insetsBottom="15" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||
</Constraint>
|
||||
</Constraints>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="titleLabel">
|
||||
<Properties>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
<Font name="Lucida Grande" size="13" style="1"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" value="<html>Color Oracle</html>"/>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
|
||||
</AuxValues>
|
||||
<Constraints>
|
||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||
<GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||
</Constraint>
|
||||
</Constraints>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="versionLabel">
|
||||
<Properties>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
|
||||
<FontInfo relative="true">
|
||||
<Font component="versionLabel" property="font" relativeSize="true" size="-2"/>
|
||||
</FontInfo>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" value="Java version"/>
|
||||
</Properties>
|
||||
<Constraints>
|
||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||
<GridBagConstraints gridX="0" gridY="4" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="12" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||
</Constraint>
|
||||
</Constraints>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Form>
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* AboutPanel.java
|
||||
*
|
||||
* Created on February 5, 2007, 10:00 AM
|
||||
*/
|
||||
|
||||
package ika.colororacle;
|
||||
|
||||
import java.awt.Desktop;
|
||||
import java.net.URI;
|
||||
import javax.swing.JButton;
|
||||
|
||||
/**
|
||||
* About panel for Color Oracle.
|
||||
* @author Bernhard Jenny, Institute of Cartography, ETH Zurich.
|
||||
*/
|
||||
public class AboutPanel extends javax.swing.JPanel {
|
||||
|
||||
/** Creates new form AboutPanel */
|
||||
public AboutPanel() {
|
||||
initComponents();
|
||||
versionLabel.setText("Java version " + System.getProperty("java.version"));
|
||||
// Before the Desktop API is used (since VM 1.6), first check
|
||||
// whether the API is supported by this particular
|
||||
// virtual machine (VM) on this particular host.
|
||||
this.homepageButton.setEnabled(Desktop.isDesktopSupported());
|
||||
}
|
||||
|
||||
/** This method is called from within the constructor to
|
||||
* initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is
|
||||
* always regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
java.awt.GridBagConstraints gridBagConstraints;
|
||||
|
||||
javax.swing.JLabel textLabel = new javax.swing.JLabel();
|
||||
homepageButton = new javax.swing.JButton();
|
||||
javax.swing.JLabel iconLabel = new javax.swing.JLabel();
|
||||
javax.swing.JLabel titleLabel = new javax.swing.JLabel();
|
||||
versionLabel = new javax.swing.JLabel();
|
||||
|
||||
setLayout(new java.awt.GridBagLayout());
|
||||
|
||||
textLabel.setFont(textLabel.getFont().deriveFont(textLabel.getFont().getSize()-2f));
|
||||
textLabel.setText("<html><center>Version 1.2.1<br><br>Programming by<br> Bernhard Jenny<br> Oregon State University<br> <br> Ideas, Testing and Icon by<br> Nathaniel Vaughn Kelso,<br> Stamen Design.<br> <br> Copyright 2006-2012,<br> all rights reserved.<br> <br> For updates and further information see:<br></center></html>");
|
||||
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||
gridBagConstraints.gridx = 0;
|
||||
gridBagConstraints.gridy = 2;
|
||||
gridBagConstraints.insets = new java.awt.Insets(16, 21, 4, 21);
|
||||
add(textLabel, gridBagConstraints);
|
||||
|
||||
homepageButton.setText("http://colororacle.org");
|
||||
homepageButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
homepageButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||
gridBagConstraints.gridx = 0;
|
||||
gridBagConstraints.gridy = 3;
|
||||
gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 0);
|
||||
add(homepageButton, gridBagConstraints);
|
||||
|
||||
iconLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ika/icons/icon_big.png"))); // NOI18N
|
||||
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||
gridBagConstraints.insets = new java.awt.Insets(15, 0, 15, 0);
|
||||
add(iconLabel, gridBagConstraints);
|
||||
|
||||
titleLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
|
||||
titleLabel.setText("<html>Color Oracle</html>");
|
||||
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||
gridBagConstraints.gridx = 0;
|
||||
gridBagConstraints.gridy = 1;
|
||||
add(titleLabel, gridBagConstraints);
|
||||
|
||||
versionLabel.setFont(versionLabel.getFont().deriveFont(versionLabel.getFont().getSize()-2f));
|
||||
versionLabel.setText("Java version");
|
||||
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||
gridBagConstraints.gridx = 0;
|
||||
gridBagConstraints.gridy = 4;
|
||||
gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 0);
|
||||
add(versionLabel, gridBagConstraints);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
/**
|
||||
* Event handler for clicks on the home page button.
|
||||
*/
|
||||
private void homepageButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_homepageButtonActionPerformed
|
||||
try {
|
||||
JButton button = (JButton)(evt.getSource());
|
||||
URI uri = new URI(button.getText());
|
||||
Desktop.getDesktop().browse(uri);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}//GEN-LAST:event_homepageButtonActionPerformed
|
||||
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton homepageButton;
|
||||
private javax.swing.JLabel versionLabel;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* ImageDisplay.java
|
||||
*
|
||||
* Created on September 29, 2006, 10:01 AM
|
||||
*
|
||||
*/
|
||||
|
||||
package ika.colororacle;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import javax.swing.JComponent;
|
||||
|
||||
/**
|
||||
* A Swing component that displays an image.
|
||||
* @author Bernhard Jenny, Institute of Cartography, ETH Zurich.
|
||||
*/
|
||||
public class ImageDisplay extends JComponent {
|
||||
|
||||
/**
|
||||
* The image to display.
|
||||
*/
|
||||
private Image image;
|
||||
|
||||
/** Creates a new instance of ImageDisplay */
|
||||
public ImageDisplay() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the image to display.
|
||||
* @param image The new image to display.
|
||||
*/
|
||||
public void setImage (Image image) {
|
||||
this.image = image;
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the image displayed by this component.
|
||||
* @return The image.
|
||||
*/
|
||||
public Image getImage() {
|
||||
return this.image;
|
||||
}
|
||||
|
||||
/**
|
||||
* Paints the image in the top-left corner of the component.
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g) {
|
||||
Graphics2D g2d = (Graphics2D)g;
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_OFF);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,
|
||||
RenderingHints.VALUE_COLOR_RENDER_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
|
||||
RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_DITHERING,
|
||||
RenderingHints.VALUE_DITHER_DISABLE);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
|
||||
RenderingHints.VALUE_RENDER_SPEED);
|
||||
|
||||
g2d.drawImage(image, 0, 0, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the preferred size which is equal to the size of the image that
|
||||
* is displayed.
|
||||
*/
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
if (this.image != null) {
|
||||
return new Dimension(image.getWidth(null), image.getHeight(null));
|
||||
} else {
|
||||
return new Dimension(100, 100);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inform Swing that this JComponent is opaque, i.e. we are drawing the
|
||||
* whole area of this Component. This accelerates the drawing of the component.
|
||||
* @return Always true.
|
||||
*/
|
||||
@Override
|
||||
public boolean isOpaque() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,211 @@
|
|||
/*
|
||||
* ImageDisplayWithPanel.java
|
||||
*
|
||||
* Created on February 22, 2007, 3:16 PM
|
||||
*
|
||||
*/
|
||||
|
||||
package ika.colororacle;
|
||||
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.Point;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.awt.event.MouseMotionListener;
|
||||
|
||||
/**
|
||||
* ImageDisplayWithPanel extends ImageDisplay by drawing a second centered
|
||||
* raster image ( = the panel) over the image drawn by ImageDisplay. The panel
|
||||
* can be interactively moved with the mouse.
|
||||
* @author Bernhard Jenny, Institute of Cartography, ETH Zurich.
|
||||
*/
|
||||
public class ImageDisplayWithPanel extends ImageDisplay
|
||||
implements MouseListener, MouseMotionListener {
|
||||
|
||||
/**
|
||||
* The raster image to display.
|
||||
*/
|
||||
private Image panel = null;
|
||||
|
||||
/**
|
||||
* Vertical position of the top left corner of the panel.
|
||||
* The panel will be centered when it is first drawn.
|
||||
*/
|
||||
private int panelTop = -1;
|
||||
|
||||
/**
|
||||
* Horizontal position of the top left corner of the panel.
|
||||
* The panel will be centered when it is first drawn.
|
||||
*/
|
||||
private int panelLeft = -1;
|
||||
|
||||
/**
|
||||
* Horizontal distance between the left border of the panel and the position
|
||||
* of the mouse click that started a dragging operation.
|
||||
*/
|
||||
private int dx = 0;
|
||||
|
||||
/**
|
||||
* Vertical distance between the left border of the panel and the position
|
||||
* of the mouse click that started a dragging operation.
|
||||
*/
|
||||
private int dy = 0;
|
||||
|
||||
/**
|
||||
* Flag that is true if the panel is currently being dragged, false otherwise.
|
||||
*/
|
||||
private boolean dragging = false;
|
||||
|
||||
/**
|
||||
* A reference to the controller of the application, which is used to hide
|
||||
* the main window if the user clicks outside the panel.
|
||||
*/
|
||||
private ColorOracle colorOracle;
|
||||
|
||||
/** Creates a new instance of ImageDisplayWithPanel */
|
||||
public ImageDisplayWithPanel(ColorOracle colorOracle) {
|
||||
this.colorOracle = colorOracle;
|
||||
this.addMouseListener(this);
|
||||
this.addMouseMotionListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the image to display.
|
||||
*/
|
||||
public void setPanel (Image panel) {
|
||||
this.panel = panel;
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw the panel image over what ImageDisplay draws.
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g) {
|
||||
super.paint(g);
|
||||
|
||||
if (this.panel == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Graphics2D g2d = (Graphics2D)g;
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_OFF);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,
|
||||
RenderingHints.VALUE_COLOR_RENDER_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
|
||||
RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_DITHERING,
|
||||
RenderingHints.VALUE_DITHER_DISABLE);
|
||||
g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
|
||||
RenderingHints.VALUE_RENDER_SPEED);
|
||||
|
||||
// make sure the panel is entirely visible. This also initializes
|
||||
// the position of the panel when it is first drawn.
|
||||
if (this.panelTop < 0 || this.panelLeft < 0) {
|
||||
this.panelLeft = (this.getWidth() - this.panel.getWidth(null)) / 2;
|
||||
this.panelTop = (int)((this.getHeight() - this.panel.getHeight(null)) / 2.5);
|
||||
}
|
||||
g2d.drawImage(panel, panelLeft, panelTop, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
this.colorOracle.switchToNormalVision();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
if (this.pointOnPanel(e.getPoint())) {
|
||||
this.dx = e.getX() - this.panelLeft;
|
||||
this.dy = e.getY() - this.panelTop;
|
||||
this.dragging = true;
|
||||
} else {
|
||||
this.dragging = false;
|
||||
this.colorOracle.switchToNormalVision();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {
|
||||
if (this.dragging) {
|
||||
this.dragging = false;
|
||||
} else {
|
||||
this.colorOracle.switchToNormalVision();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent e) {
|
||||
if (!this.dragging) {
|
||||
return;
|
||||
}
|
||||
|
||||
final int panelWidth = this.panel.getWidth(null);
|
||||
final int panelHeight = this.panel.getHeight(null);
|
||||
|
||||
// remember the old position of the panel
|
||||
final int oldPanelLeft = this.panelLeft;
|
||||
final int oldPanelTop = this.panelTop;
|
||||
|
||||
// compute the new position of the panel and make sure it is entirely
|
||||
// visible on screen.
|
||||
this.panelLeft = Math.max(0, e.getX() - this.dx);
|
||||
this.panelTop = Math.max(0, e.getY() - this.dy);
|
||||
if (this.panelLeft + panelWidth > this.getWidth())
|
||||
this.panelLeft = this.getWidth() - panelWidth;
|
||||
if (this.panelTop + panelHeight > this.getHeight())
|
||||
this.panelTop = this.getHeight() - panelHeight;
|
||||
|
||||
// compute the dirty region: the union of the area previously covered
|
||||
// by the panel and the area covered now.
|
||||
final int dirtyX, dirtyY, dirtyWidth, dirtyHeight;
|
||||
if (this.panelLeft > oldPanelLeft) {
|
||||
dirtyX = oldPanelLeft;
|
||||
dirtyWidth = this.panelLeft + panelWidth - oldPanelLeft;
|
||||
} else {
|
||||
dirtyX = this.panelLeft;
|
||||
dirtyWidth = oldPanelLeft + panelWidth - this.panelLeft;
|
||||
}
|
||||
if (this.panelTop > oldPanelTop) {
|
||||
dirtyY = oldPanelTop;
|
||||
dirtyHeight = this.panelTop + panelHeight - oldPanelTop;
|
||||
} else {
|
||||
dirtyY = this.panelTop;
|
||||
dirtyHeight = oldPanelTop + panelHeight - this.panelTop;
|
||||
}
|
||||
|
||||
// only paint the dirty region.
|
||||
// paintImmediately is safe to call, since this is running in the
|
||||
// swing event dispatching thread.
|
||||
this.paintImmediately(dirtyX, dirtyY, dirtyWidth, dirtyHeight);
|
||||
}
|
||||
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the passed point is inside the panel, false otherwise.
|
||||
*/
|
||||
private boolean pointOnPanel(Point point) {
|
||||
final int w = this.panel.getWidth(null);
|
||||
final int h = this.panel.getHeight(null);
|
||||
if (point.x < this.panelLeft || point.x > this.panelLeft + w)
|
||||
return false;
|
||||
if (point.y < this.panelTop || point.y > this.panelTop + h)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* MainWindow.java
|
||||
*
|
||||
* Created on February 5, 2007, 1:55 PM
|
||||
*/
|
||||
|
||||
package ika.colororacle;
|
||||
|
||||
import java.awt.Image;
|
||||
|
||||
/**
|
||||
* The main window is not a JFrame, but a JDialog, because dialogs are not
|
||||
* shown in the Windows taskbar.
|
||||
* @author Bernhard Jenny, Institute of Cartography, ETH Zurich.
|
||||
*/
|
||||
public class MainWindow extends javax.swing.JDialog {
|
||||
|
||||
private ika.colororacle.ImageDisplayWithPanel imageDisplayWithPanel;
|
||||
|
||||
/** Creates new form MainWindow */
|
||||
public MainWindow(java.awt.Frame parent, boolean modal, ColorOracle colorOracle) {
|
||||
super(parent, modal);
|
||||
|
||||
this.setUndecorated(true);
|
||||
this.setResizable(false);
|
||||
|
||||
// add a component to display the image.
|
||||
imageDisplayWithPanel = new ImageDisplayWithPanel(colorOracle);
|
||||
setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
|
||||
|
||||
getContentPane().add(imageDisplayWithPanel, java.awt.BorderLayout.CENTER);
|
||||
|
||||
pack();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the image to display.
|
||||
*/
|
||||
public void setImage(Image image) {
|
||||
this.imageDisplayWithPanel.setImage(image);
|
||||
this.validate();
|
||||
this.pack();
|
||||
}
|
||||
|
||||
Image getImage() {
|
||||
return this.imageDisplayWithPanel.getImage();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the image panel to draw over the image set by setImage().
|
||||
*/
|
||||
public void setPanel(Image panel) {
|
||||
this.imageDisplayWithPanel.setPanel(panel);
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
package ika.colororacle;
|
||||
|
||||
import com.muchsoft.util.Sys;
|
||||
import java.awt.AWTException;
|
||||
import java.awt.GraphicsConfiguration;
|
||||
import java.awt.GraphicsDevice;
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.awt.Image;
|
||||
import java.awt.Insets;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Robot;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.ArrayList;
|
||||
|
||||
final class Screen {
|
||||
|
||||
/*
|
||||
public static void main(String[] args) {
|
||||
|
||||
Screen.detectScreens();
|
||||
|
||||
// simulate color-impaired vision for all attached screens
|
||||
for (Screen screen : Screen.getScreens()) {
|
||||
try {
|
||||
//System.out.println();
|
||||
//System.out.println("Screen " + screen.toString());
|
||||
|
||||
// don't take a screenshot when a color-impaired simulation
|
||||
// is currently visible. Instead, use the same screenshot again.
|
||||
screen.takeScreenshot();
|
||||
|
||||
javax.imageio.ImageIO.write(screen.screenshotImage, "png", new java.io.File("/Volumes/Macintosh HD/Users/jenny/Desktop/screenshot" + Screen.getScreens().indexOf(screen) + ".png"));
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(Screen.class.getName()).log(Level.SEVERE, null, ex);
|
||||
} catch (AWTException ex) {
|
||||
Logger.getLogger(Screen.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* An array with all attached screens.
|
||||
*/
|
||||
private static final ArrayList<Screen> screens = new ArrayList<Screen>();
|
||||
|
||||
public static ArrayList<Screen> getScreens() {
|
||||
return screens;
|
||||
}
|
||||
|
||||
public static void detectScreens() {
|
||||
|
||||
// remove previous screens
|
||||
Screen.screens.clear();
|
||||
|
||||
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
|
||||
// multiple monitors are only supported by Color Oracle on Windows systems.
|
||||
// Linux systems are not reliable. Mac is inconsitent between versions
|
||||
// for Robot.createScreenCapture().
|
||||
if (Sys.isWindows()) {
|
||||
GraphicsDevice[] gs = ge.getScreenDevices();
|
||||
for (GraphicsDevice gd : gs) {
|
||||
Screen.screens.add(new Screen(gd.getDefaultConfiguration()));
|
||||
}
|
||||
} else {
|
||||
GraphicsDevice gd = ge.getDefaultScreenDevice();
|
||||
Screen.screens.add(new Screen(gd.getDefaultConfiguration()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public MainWindow simulationWindow = null;
|
||||
public BufferedImage screenshotImage = null;
|
||||
public GraphicsConfiguration gc = null;
|
||||
|
||||
private Screen(GraphicsConfiguration gc) {
|
||||
super();
|
||||
this.gc = gc;
|
||||
}
|
||||
|
||||
public Image getSimulationImage() {
|
||||
if (simulationWindow == null) {
|
||||
return null;
|
||||
}
|
||||
return simulationWindow.getImage();
|
||||
}
|
||||
|
||||
private void createSimulationWindow(ColorOracle colorOracle) {
|
||||
this.simulationWindow = new MainWindow(null, false, colorOracle);
|
||||
|
||||
// add event listeners that will hide the window when a key is pressed,
|
||||
// or when the window looses focus.
|
||||
// Note: There is a bug in Java 6 with listeners for mouse wheel events:
|
||||
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480024
|
||||
// Therefore the mouse wheel event listener is attached to a child of
|
||||
// the MainWindow (the ContentPane).
|
||||
// Note: mouse events are handled by ImageDisplayWithPanel
|
||||
this.simulationWindow.addKeyListener(colorOracle);
|
||||
this.simulationWindow.addWindowListener(colorOracle);
|
||||
this.simulationWindow.addFocusListener(colorOracle);
|
||||
this.simulationWindow.getContentPane().addMouseWheelListener(colorOracle);
|
||||
|
||||
//System.out.println("Window: " + this.getUsableScreenArea());
|
||||
|
||||
// set size and position of the window
|
||||
this.simulationWindow.setBounds(this.getUsableScreenArea());
|
||||
// need to validate to fix bug in AWT, see
|
||||
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4919042
|
||||
this.simulationWindow.validate();
|
||||
}
|
||||
|
||||
private Rectangle getUsableScreenArea() {
|
||||
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
if (toolkit == null) {
|
||||
return null;
|
||||
}
|
||||
Insets screenInsets = toolkit.getScreenInsets(gc);
|
||||
Rectangle screenRect = gc.getBounds();
|
||||
screenRect.x += screenInsets.left;
|
||||
screenRect.y += screenInsets.top;
|
||||
screenRect.width -= screenInsets.left + screenInsets.right;
|
||||
screenRect.height -= screenInsets.top + screenInsets.bottom;
|
||||
return screenRect;
|
||||
}
|
||||
|
||||
public void takeScreenshot() throws AWTException {
|
||||
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
if (toolkit == null) {
|
||||
return;
|
||||
}
|
||||
Rectangle screenRect = gc.getBounds();
|
||||
|
||||
Insets screenInsets = toolkit.getScreenInsets(gc);
|
||||
screenRect.x = screenInsets.left;
|
||||
screenRect.y = screenInsets.top;
|
||||
screenRect.width -= screenInsets.left + screenInsets.right;
|
||||
screenRect.height -= screenInsets.top + screenInsets.bottom;
|
||||
|
||||
Robot robot = new Robot(this.gc.getDevice());
|
||||
this.screenshotImage = robot.createScreenCapture(screenRect);
|
||||
}
|
||||
|
||||
public void showSimulationImage(BufferedImage simulationImage,
|
||||
ColorOracle colorOracle, Image panel) {
|
||||
|
||||
// don't create a window if there is already one visible
|
||||
if (this.simulationWindow == null) {
|
||||
this.createSimulationWindow(colorOracle);
|
||||
}
|
||||
this.simulationWindow.setImage(simulationImage);
|
||||
this.simulationWindow.setPanel(panel);
|
||||
|
||||
// Bring our application to the foreground. This discussion is for
|
||||
// frames, not dialogs:
|
||||
// http://forum.java.sun.com/thread.jspa?threadID=640210&messageID=3762680
|
||||
this.simulationWindow.setVisible(true);
|
||||
this.simulationWindow.requestFocus();
|
||||
this.simulationWindow.toFront();
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides the simulation window and deallocates the window and the
|
||||
* screenshot image.
|
||||
*/
|
||||
public void hideSimulation() {
|
||||
|
||||
if (this.simulationWindow != null) {
|
||||
this.simulationWindow.setVisible(false);
|
||||
this.simulationWindow.dispose();
|
||||
this.simulationWindow = null;
|
||||
}
|
||||
this.screenshotImage = null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,375 @@
|
|||
/*
|
||||
* Simulator.java
|
||||
*
|
||||
* Created on February 5, 2007, 11:22 AM
|
||||
*
|
||||
*/
|
||||
package ika.colororacle;
|
||||
|
||||
import ika.colororacle.ColorOracle.Simulation;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.geom.Point2D;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.awt.image.*;
|
||||
|
||||
/**
|
||||
* A simulator for color-impaired vision (deuteranopia, protanopia and tritanopia).
|
||||
*
|
||||
* For a description of the algorithm, see:
|
||||
* Vienot, F., Brettel, H., Mollon, J.D., (1999). Digital video colourmaps for
|
||||
* checking the legibility of displays by dichromats. Color Research and
|
||||
* Application 24, 243-252.
|
||||
*
|
||||
* @author Bernhard Jenny, Institute of Cartography, ETH Zurich.
|
||||
*/
|
||||
public class Simulator {
|
||||
|
||||
/**
|
||||
* Default screen gamma on Windows is 2.2.
|
||||
*/
|
||||
static final double GAMMA = 2.2;
|
||||
static final double GAMMA_INV = 1. / GAMMA;
|
||||
/**
|
||||
* A lookup table for the conversion from gamma-corrected sRGB values
|
||||
* [0..255] to linear RGB values [0..32767].
|
||||
*/
|
||||
static final short[] rgb2lin_red_LUT;
|
||||
|
||||
static {
|
||||
// initialize rgb2lin_red_LUT
|
||||
rgb2lin_red_LUT = new short[256];
|
||||
for (int i = 0; i < 256; i++) {
|
||||
// compute linear rgb between 0 and 1
|
||||
final double lin = (0.992052 * Math.pow(i / 255., GAMMA) + 0.003974);
|
||||
|
||||
// scale linear rgb to 0..32767
|
||||
rgb2lin_red_LUT[i] = (short) (lin * 32767.);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* A lookup table for the conversion of linear RGB values [0..255] to
|
||||
* gamma-corrected sRGB values [0..255].
|
||||
*/
|
||||
static final byte[] lin2rgb_LUT;
|
||||
|
||||
static {
|
||||
// initialize lin2rgb_LUT
|
||||
lin2rgb_LUT = new byte[256];
|
||||
for (int i = 0; i < 256; i++) {
|
||||
lin2rgb_LUT[i] = (byte) (255. * Math.pow(i / 255., GAMMA_INV));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Use this BufferedImageOp for the simulation.
|
||||
*/
|
||||
BufferedImageOp op;
|
||||
|
||||
/** Creates a new instance of Simulator */
|
||||
public Simulator() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter an image and return a new image with the filtered result.
|
||||
* @normal The image with normal vision.
|
||||
* @return The image with simulated color vision impairment.
|
||||
*/
|
||||
public BufferedImage filter(BufferedImage normal) {
|
||||
return this.op.filter(normal, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Simulate color impaired vision.
|
||||
* @param simulationType The type of impairment to simulate.
|
||||
*/
|
||||
void simulate(Simulation simulationType) {
|
||||
switch (simulationType) {
|
||||
case deutan:
|
||||
this.op = new RedGreenFilter(9591, 23173, -730);
|
||||
break;
|
||||
case protan:
|
||||
this.op = new RedGreenFilter(3683, 29084, 131);
|
||||
break;
|
||||
case tritan:
|
||||
this.op = new TritanFilter();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A red-green blindness filter (deuteranopia and protanopia).
|
||||
*/
|
||||
private class RedGreenFilter implements BufferedImageOp {
|
||||
|
||||
private final int k1;
|
||||
private final int k2;
|
||||
private final int k3;
|
||||
|
||||
public RedGreenFilter(int k1, int k2, int k3) {
|
||||
this.k1 = k1;
|
||||
this.k2 = k2;
|
||||
this.k3 = k3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedImage filter(BufferedImage src, BufferedImage dst) {
|
||||
if (dst == null) {
|
||||
dst = this.createCompatibleDestImage(src, null);
|
||||
}
|
||||
|
||||
// make sure the two images have the same size, color space, etc.
|
||||
// MISSING !!! ???
|
||||
|
||||
DataBufferInt inBuffer = (DataBufferInt) src.getRaster().getDataBuffer();
|
||||
DataBufferInt outBuffer = (DataBufferInt) dst.getRaster().getDataBuffer();
|
||||
int[] inData = inBuffer.getData();
|
||||
int[] outData = outBuffer.getData();
|
||||
|
||||
int prevIn = 0;
|
||||
int prevOut = 0;
|
||||
final int length = inData.length;
|
||||
for (int i = 0; i < length; i++) {
|
||||
final int in = inData[i];
|
||||
if (in == prevIn) {
|
||||
outData[i] = prevOut;
|
||||
} else {
|
||||
|
||||
final int r = (0xff0000 & in) >> 16;
|
||||
final int g = (0xff00 & in) >> 8;
|
||||
final int b = 0xff & in;
|
||||
|
||||
// get linear rgb values in the range 0..2^15-1
|
||||
final int r_lin = rgb2lin_red_LUT[r];
|
||||
final int g_lin = rgb2lin_red_LUT[g];
|
||||
final int b_lin = rgb2lin_red_LUT[b];
|
||||
|
||||
// simulated red and green are identical
|
||||
// scale the matrix values to 0..2^15 for integer computations
|
||||
// of the simulated protan values.
|
||||
// divide after the computation by 2^15 to rescale.
|
||||
// also divide by 2^15 and multiply by 2^8 to scale the linear rgb to 0..255
|
||||
// total division is by 2^15 * 2^15 / 2^8 = 2^22
|
||||
// shift the bits by 22 places instead of dividing
|
||||
int r_blind = (int) (k1 * r_lin + k2 * g_lin) >> 22;
|
||||
int b_blind = (int) (k3 * r_lin - k3 * g_lin + 32768 * b_lin) >> 22;
|
||||
|
||||
if (r_blind < 0) {
|
||||
r_blind = 0;
|
||||
} else if (r_blind > 255) {
|
||||
r_blind = 255;
|
||||
}
|
||||
|
||||
if (b_blind < 0) {
|
||||
b_blind = 0;
|
||||
} else if (b_blind > 255) {
|
||||
b_blind = 255;
|
||||
}
|
||||
|
||||
// convert reduced linear rgb to gamma corrected rgb
|
||||
int red = lin2rgb_LUT[r_blind];
|
||||
red = red >= 0 ? red : 256 + red; // from unsigned to signed
|
||||
int blue = lin2rgb_LUT[b_blind];
|
||||
blue = blue >= 0 ? blue : 256 + blue; // from unsigned to signed
|
||||
|
||||
final int out = 0xff000000 | red << 16 | red << 8 | blue;
|
||||
|
||||
outData[i] = out;
|
||||
prevIn = in;
|
||||
prevOut = out;
|
||||
}
|
||||
}
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rectangle2D getBounds2D(BufferedImage src) {
|
||||
return src.getRaster().getBounds();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedImage createCompatibleDestImage(BufferedImage src,
|
||||
ColorModel destCM) {
|
||||
if (destCM == null) {
|
||||
destCM = src.getColorModel();
|
||||
}
|
||||
int width = src.getWidth();
|
||||
int height = src.getHeight();
|
||||
BufferedImage image = new BufferedImage(destCM,
|
||||
destCM.createCompatibleWritableRaster(width, height),
|
||||
destCM.isAlphaPremultiplied(), null);
|
||||
return image;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Point2D getPoint2D(Point2D srcPt, Point2D dstPt) {
|
||||
if (dstPt == null) {
|
||||
dstPt = new Point2D.Float();
|
||||
}
|
||||
dstPt.setLocation(srcPt.getX(), srcPt.getY());
|
||||
return dstPt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderingHints getRenderingHints() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A filter for simulated Tritanopia.
|
||||
*/
|
||||
private class TritanFilter implements BufferedImageOp {
|
||||
|
||||
public TritanFilter() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedImage filter(BufferedImage src, BufferedImage dst) {
|
||||
|
||||
/* Code for tritan simulation from GIMP 2.2
|
||||
* This could be optimised for speed.
|
||||
* Performs tritan color image simulation based on
|
||||
* Brettel, Vienot and Mollon JOSA 14/10 1997
|
||||
* L,M,S for lambda=475,485,575,660
|
||||
*
|
||||
* Load the LMS anchor-point values for lambda = 475 & 485 nm (for
|
||||
* protans & deutans) and the LMS values for lambda = 575 & 660 nm
|
||||
* (for tritans)
|
||||
*/
|
||||
final float anchor_e0 = 0.05059983f + 0.08585369f + 0.00952420f;
|
||||
final float anchor_e1 = 0.01893033f + 0.08925308f + 0.01370054f;
|
||||
final float anchor_e2 = 0.00292202f + 0.00975732f + 0.07145979f;
|
||||
final float inflection = anchor_e1 / anchor_e0;
|
||||
|
||||
/* Set 1: regions where lambda_a=575, set 2: lambda_a=475 */
|
||||
final float a1 = -anchor_e2 * 0.007009f;
|
||||
final float b1 = anchor_e2 * 0.0914f;
|
||||
final float c1 = anchor_e0 * 0.007009f - anchor_e1 * 0.0914f;
|
||||
final float a2 = anchor_e1 * 0.3636f - anchor_e2 * 0.2237f;
|
||||
final float b2 = anchor_e2 * 0.1284f - anchor_e0 * 0.3636f;
|
||||
final float c2 = anchor_e0 * 0.2237f - anchor_e1 * 0.1284f;
|
||||
|
||||
if (dst == null) {
|
||||
dst = this.createCompatibleDestImage(src, null);
|
||||
}
|
||||
|
||||
// make sure the two images have the same size, color space, etc.
|
||||
// MISSING FIXME
|
||||
|
||||
DataBufferInt inBuffer = (DataBufferInt) src.getRaster().getDataBuffer();
|
||||
DataBufferInt outBuffer = (DataBufferInt) dst.getRaster().getDataBuffer();
|
||||
int[] inData = inBuffer.getData();
|
||||
int[] outData = outBuffer.getData();
|
||||
|
||||
int prevIn = 0;
|
||||
int prevOut = 0;
|
||||
final int length = inData.length;
|
||||
for (int i = 0; i < length; i++) {
|
||||
final int in = inData[i];
|
||||
if (in == prevIn) {
|
||||
outData[i] = prevOut;
|
||||
} else {
|
||||
final int rgb = inData[i];
|
||||
|
||||
int r = (0xff0000 & rgb) >> 16;
|
||||
int g = (0xff00 & rgb) >> 8;
|
||||
int b = 0xff & rgb;
|
||||
|
||||
// get linear rgb values in the range 0..2^15-1
|
||||
r = rgb2lin_red_LUT[r];
|
||||
g = rgb2lin_red_LUT[g];
|
||||
b = rgb2lin_red_LUT[b];
|
||||
|
||||
/* Convert to LMS (dot product with transform matrix) */
|
||||
final float L = (r * 0.05059983f + g * 0.08585369f + b * 0.00952420f) / 32767.f;
|
||||
final float M = (r * 0.01893033f + g * 0.08925308f + b * 0.01370054f) / 32767.f;
|
||||
float S = (r * 0.00292202f + g * 0.00975732f + b * 0.07145979f) / 32767.f;
|
||||
|
||||
final float tmp = M / L;
|
||||
|
||||
/* See which side of the inflection line we fall... */
|
||||
if (tmp < inflection) {
|
||||
S = -(a1 * L + b1 * M) / c1;
|
||||
} else {
|
||||
S = -(a2 * L + b2 * M) / c2;
|
||||
}
|
||||
|
||||
/* Convert back to RGB (cross product with transform matrix) */
|
||||
int ired = (int) (255.f * (L * 30.830854f
|
||||
- M * 29.832659f + S * 1.610474f));
|
||||
int igreen = (int) (255.f * (-L * 6.481468f
|
||||
+ M * 17.715578f - S * 2.532642f));
|
||||
int iblue = (int) (255.f * (-L * 0.375690f
|
||||
- M * 1.199062f + S * 14.273846f));
|
||||
|
||||
// convert reduced linear rgb to gamma corrected rgb
|
||||
if (ired < 0) {
|
||||
ired = 0;
|
||||
} else if (ired > 255) {
|
||||
ired = 255;
|
||||
} else {
|
||||
ired = lin2rgb_LUT[ired];
|
||||
ired = ired >= 0 ? ired : 256 + ired; // from unsigned to signed
|
||||
}
|
||||
if (igreen < 0) {
|
||||
igreen = 0;
|
||||
} else if (igreen > 255) {
|
||||
igreen = 255;
|
||||
} else {
|
||||
igreen = lin2rgb_LUT[igreen];
|
||||
igreen = igreen >= 0 ? igreen : 256 + igreen; // from unsigned to signed
|
||||
}
|
||||
if (iblue < 0) {
|
||||
iblue = 0;
|
||||
} else if (iblue > 255) {
|
||||
iblue = 255;
|
||||
} else {
|
||||
iblue = lin2rgb_LUT[iblue];
|
||||
iblue = iblue >= 0 ? iblue : 256 + iblue; // from unsigned to signed
|
||||
}
|
||||
|
||||
final int out = (int) (ired << 16 | igreen << 8 | iblue | 0xff000000);
|
||||
|
||||
outData[i] = out;
|
||||
prevIn = in;
|
||||
prevOut = out;
|
||||
}
|
||||
}
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rectangle2D getBounds2D(BufferedImage src) {
|
||||
return src.getRaster().getBounds();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedImage createCompatibleDestImage(BufferedImage src,
|
||||
ColorModel destCM) {
|
||||
if (destCM == null) {
|
||||
destCM = src.getColorModel();
|
||||
}
|
||||
int width = src.getWidth();
|
||||
int height = src.getHeight();
|
||||
BufferedImage image = new BufferedImage(destCM,
|
||||
destCM.createCompatibleWritableRaster(width, height),
|
||||
destCM.isAlphaPremultiplied(), null);
|
||||
return image;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Point2D getPoint2D(Point2D srcPt, Point2D dstPt) {
|
||||
if (dstPt == null) {
|
||||
dstPt = new Point2D.Float();
|
||||
}
|
||||
dstPt.setLocation(srcPt.getX(), srcPt.getY());
|
||||
return dstPt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderingHints getRenderingHints() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>ico</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Windows ICO</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<string>****</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>ICOBundle</string>
|
||||
<key>CFBundleGetInfoHTML</key>
|
||||
<string>ICOBundle by <a href="http://www.telegraphics.com.au/sw/">Telegraphics</a>. Please contact <a href="mailto:support@telegraphics.com.au">support@telegraphics.com.au</a> with feedback including bug reports.</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>1.2b1 © 2003-6 Telegraphics Pty Ltd</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.telegraphics.icobundle</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>ICOBundle</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>ICOB</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.2b1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
icobundle
|
||||
---------
|
||||
Copyright 2003 Toby Thain <toby@telegraphics.com.au>.
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
The "icobundle" utility copies Windows ICO format images from multiple
|
||||
input files, and bundles them together into a single output file, in ICO format.
|
||||
This program is meant to accompany my Photoshop ICO file format plugin,
|
||||
also released under the GPL and available from http://www.telegraphics.com.au/sw/
|
||||
|
||||
Source code is supplied (under GPL) to build under Linux
|
||||
and probably other UNIX variants. Built executables are supplied
|
||||
for Mac OS (PowerPC and 68K).
|
||||
|
||||
(For more information on ICO format, see
|
||||
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_icons.asp )
|
||||
|
||||
Please send comments and bug reports to support@telegraphics.com.au
|
||||
|
||||
|
||||
TO USE (Mac version)
|
||||
|
||||
Simply drag the ICO files you wish to bundle on to the application.
|
||||
Name the output file and OK. The icons will be stored as a suite in the output file.
|
||||
|
||||
TO USE (Command line version)
|
||||
|
||||
The syntax is simply:
|
||||
./icobundle -o outputfile inputfile(s)
|
||||
|
||||
While icobundle is running, some text is printed explaining what's going on.
|
||||
icobundle will report any problems it encounters. Some integrity checks are done
|
||||
on input files.
|
||||
|
||||
|
||||
TO BUILD (Command line tool)
|
||||
|
||||
"icobundle" has been tested under Linux and OS X, although it should build
|
||||
under most varieties of UNIX (BSD "make" may have problems with the Makefile
|
||||
as distributed - e.g. NetBSD).
|
||||
|
||||
As distributed, the command line tool cannot be used with Windows
|
||||
unless an environment such as Cygwin or MinGW is used -
|
||||
|
||||
|
||||
Under Mac OS X:
|
||||
* the Developer Tools must first be installed.
|
||||
* do not expand the source archive with Stuffit Expander,
|
||||
it will not fully recreate the source tree. Use the commands below.
|
||||
|
||||
To build the program, put the source archive in the current directory
|
||||
and execute the following commands in Terminal or a shell.
|
||||
|
||||
mkdir icobundle
|
||||
cd icobundle
|
||||
tar -xzf ../icobundle-1.1b1-GPL-src.tar.gz
|
||||
|
||||
make
|
||||
|
||||
To build Windows "console" tools with MinGW hosted on Linux,
|
||||
extract the source archive using the first three lines above, then:
|
||||
|
||||
CC=mingw32-gcc make
|
||||
mv icocheck icocheck.exe
|
||||
mv icobundle icobundl.exe
|
||||
|
||||
This builds two executables, "icocheck" and "icobundl",
|
||||
which can be copied to Windows used on the MS-DOS command line.
|
||||
|
||||
For more information on building for Windows,
|
||||
see http://www.cygwin.com/ and http://www.mingw.org/
|
||||
|
||||
|
||||
TO BUILD (Mac OS application)
|
||||
|
||||
After extracting the source, the directory layout should be:
|
||||
|
||||
icobundle/
|
||||
dist/
|
||||
ICOBundle/
|
||||
Contents/
|
||||
MacOS/
|
||||
MacOSClassic/
|
||||
PkgInfo
|
||||
...files...
|
||||
common/
|
||||
tt/
|
||||
...files...
|
||||
icoformat/
|
||||
...files...
|
||||
|
||||
In MPW, change the current directory to the "icobundle" directory.
|
||||
Choose "Build Program", enter "icobundle", and hit OK.
|
||||
This should build the two PowerPC binaries (Classic and Carbon)
|
||||
as an OS X bundle, "ICOBundle", and the 68K binary, "ICOBundle.68K".
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>ICOFormat</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>ICOFormat plugin 1.7b4 Copyright (C) Telegraphics Pty Ltd 1995-2005</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.telegraphics.ICOFormat</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>ICOFormat</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.7b4</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>8BIM</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>8BIF</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
|
|
@ -0,0 +1,188 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>ICO (Windows Icon) file format plugin for Photoshop</title>
|
||||
<link rel=stylesheet href="http://www.telegraphics.com.au/readme.css" type="text/css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h2>ICO (Windows Icon) file format plugin for Photoshop</h2>
|
||||
<p>
|
||||
<i>Copyright 2002-6 Toby Thain, <a href="mailto:toby@telegraphics.com.au">toby@telegraphics.com.au</a></i>
|
||||
|
||||
<p>The plugin gives Photoshop the ability to directly Open and Save Windows icon (.ICO) files.
|
||||
<b><a href="http://www.telegraphics.com.au/sw/#icoformat">Download the latest version here.</a></b>
|
||||
|
||||
<h3>Tested with:</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://www.adobe.com/products/photoshop/main.html">Photoshop</a> all versions 3.0-7.0, CS, CS2 on PowerPC Macintosh (OS X, OS 9 and Classic)
|
||||
<li>Photoshop 4.0 / MacOS 8.0 on 68K Macintosh
|
||||
<li>Photoshop 5.0, 7.0 & CS on Windows 98/NT and XP.
|
||||
<li><a href="http://www.corel.com/servlet/Satellite?pagename=Corel3/Products/Display&pid=1047025487586">Paint Shop Pro</a> 9 (may not work correctly with earlier versions due to PSP plugin compatibility issues)
|
||||
<li>reported to work with Photoshop Elements 3.0 (<a href="http://www.adobe.com/products/photoshopelmac/main.html">Mac</a> US$79.99/<a href="http://www.adobe.com/products/photoshopelwin/main.html">Win</a> US$89.99. Prices at time of writing)
|
||||
</ul>
|
||||
|
||||
<h3>Free software - donation requested</h3>
|
||||
<p>
|
||||
This program is free software licensed under the terms of the <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>.
|
||||
If you use this program and like it, please use <a href="http://www.paypal.com/">PayPal</a>
|
||||
to send the author what you think it is worth (US$5 suggested):
|
||||
<p><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
||||
<input type="hidden" name="cmd" value="_xclick">
|
||||
<input type="hidden" name="business" value="toby@telegraphics.com.au">
|
||||
|
||||
<input type="hidden" name="item_name" value="Windows Icon format plugin">
|
||||
<input type="hidden" name="item_number" value="icoformat">
|
||||
<input type="hidden" name="amount" value="5.00">
|
||||
<input type="hidden" name="image_url" value="http://www.telegraphics.com.au/img/tlogo-paypal.gif">
|
||||
<input type="hidden" name="no_shipping" value="1">
|
||||
<input type="hidden" name="return" value="http://www.telegraphics.com.au/sw/thankyou.html">
|
||||
<input type="hidden" name="cn" value="Message to developer">
|
||||
<input type="hidden" name="currency_code" value="USD">
|
||||
<input type="hidden" name="tax" value="0">
|
||||
<input type="image" src="https://www.paypal.com/images/x-click-but04.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
|
||||
</form>
|
||||
<p>
|
||||
The program is fully supported. Please <a href="mailto:toby@telegraphics.com.au">contact the author</a> with any bug reports, suggestions or comments.
|
||||
|
||||
<h3>To install</h3>
|
||||
|
||||
<ol>
|
||||
<li>Move the plugin into the "File Formats" folder
|
||||
inside your Photoshop Plugins folder:
|
||||
<ul>
|
||||
<li>On Windows, <b>ICOFormat.8bi</b>
|
||||
<li>On OS X/Classic, <b>icoformat</b> <!--(CS2/Mac version is <b>ICOFormat_cs2.plugin</b>)-->
|
||||
<li>On 68K MacOS, <b>icoformat(68K)</b>
|
||||
</ul>
|
||||
<li>Quit and relaunch Photoshop, if it's already running.
|
||||
</ol>
|
||||
|
||||
<h3>To use the plugin</h3>
|
||||
|
||||
<ul>
|
||||
<li>Use Photoshop's Open command (File menu) to open .ICO files (which will now appear
|
||||
in the file browser)
|
||||
<li>Use Photoshop's Save command to create .ICO files.
|
||||
</ul>
|
||||
|
||||
<h3>Having trouble?</h3>
|
||||
|
||||
<ul>
|
||||
<li>If you are not sure if the plugin is correctly installed, look for "ICO (Windows Icon)"
|
||||
under Photoshop's "About Plug-in" menu (on Windows, look under "Help"; on OS X, under "Photoshop").
|
||||
If it is not listed:
|
||||
<ul>
|
||||
<li>check you have downloaded the correct version (Windows/Mac)
|
||||
<li>is it in the "File Formats" subdirectory of Photoshop's "Plugins" folder?
|
||||
<li>have you quit and re-launched Photoshop?
|
||||
</ul>
|
||||
<li>The plugin is not a Filter or Import/Export plugin, so don't look for it there.
|
||||
It appears as a format option when Opening or Saving (eligible images).
|
||||
<li>The ICO format does not allow images more than 256 pixels high or wide.
|
||||
<li>Only Bitmap, Grey Scale, Indexed and RGB mode images, no more than 8 bits per channel,
|
||||
can be saved as ICO.
|
||||
<li>Using Windows98? If you see messages about "Assertion Failed", please download this
|
||||
<a href="http://www.telegraphics.com.au/sw/files/ICOFormat-1.6f8-win-cw7.zip">alternative build</a>.
|
||||
(Thanks to Qwerky for pointing out this issue.)
|
||||
</ul>
|
||||
|
||||
<h3>Features</h3>
|
||||
|
||||
<ul>
|
||||
<li>Reads and writes .ICO files of 1,4,8 bits as Indexed mode images, and 16,24,32 bit as RGB mode
|
||||
<li>If an input file contains multiple icons, a dialog box prompts to select one
|
||||
(indicates pixel size and colour depth of each contained icon).
|
||||
<li>ICO files created by the plugin contain one icon only.
|
||||
<li>In version 1.7 and later, when saving an icon, it is possible to save in either standard ICO
|
||||
or PNG (Vista) compressed formats. The latter format is not compatible with all software.
|
||||
</ul>
|
||||
|
||||
<h3>How to add a "favourites" icon (favicon, favicon.ico) to your web site</h3>
|
||||
|
||||
<ol>
|
||||
<li>Create the file named <span class=hl>favicon.ico</span> with your desired graphic
|
||||
(as "standard ICO" format, if asked when saving by version 1.7)
|
||||
<li>Put it at the root level
|
||||
of your web site. (If you want Internet Explorer to recognise it, it must be 16x16 pixels in size.)
|
||||
<li>Put a tag as follows in the <code><HEAD>...</HEAD></code> section of your top-level HTML page (home page):
|
||||
<pre><LINK REL="SHORTCUT ICON" HREF="favicon.ico"></pre>
|
||||
</ol>
|
||||
|
||||
<h3>More references:</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://www.golivein24.com/tips/favicon/">www.golivein24.com</a>
|
||||
<li><a href="http://www.photoshopsupport.com/tutorials/jennifer/favicon.html">photoshopsupport.com</a>
|
||||
<li><a href="http://www.thesitewizard.com/archive/favicon.shtml">www.thesitewizard.com</a>
|
||||
<li><a href="http://www.webdevelopersjournal.com/articles/favicon.html">www.webdevelopersjournal.com</a>
|
||||
<li><a href="http://www.winterdrache.de/freeware/png2ico/favicon.html">www.winterdrache.de</a> (for Linux)
|
||||
<li><a href="http://rock13.com/webhelp/favicon.html">rock13.com</a>
|
||||
<li><a href="http://www.davesite.com/webstation/html/favicon.shtml">www.davesite.com</a>
|
||||
<li><a href="http://www.latext.com/pm/comments/727_0_1_0_C/">www.latext.com</a> (Using a favicon with Safari)
|
||||
<li><a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/Author/dhtml/howto/ShortcutIcon.asp">msdn.microsoft.com</a>
|
||||
</ul>
|
||||
...and <a href="http://www.google.com/search?q=favicon+how">many others</a>.
|
||||
|
||||
<h3>About transparency</h3>
|
||||
<p>
|
||||
The ICO format has an inherent 1 bit transparency mask (0 = opaque, 1 = transparent), called the AND bitmap.
|
||||
<ul>
|
||||
<li>When reading or saving an RGB mode image in Photoshop 6.0 or later, layer transparency is used for the mask
|
||||
<li>If the image is Indexed mode, and uses a "transparent index", this will be used to set the icon mask
|
||||
<li>In other cases, the ICO mask is treated as an alpha channel (black = 0 = opaque, white = 255 = transparent)
|
||||
<li>In PNG (Vista) format icons, the alpha channel is simply stored as part of the PNG. There is no separate mask.
|
||||
</ul>
|
||||
|
||||
<h3>Saving indexed mode images</h3>
|
||||
<p>
|
||||
To ensure output files are as compact as possible, the smallest pixel depth is chosen
|
||||
sufficient to represent the colours used by the icon:
|
||||
<ul>
|
||||
<li>RGB mode: no colour table
|
||||
<li>Indexed/Grey Scale mode with >16 colours: 8 bits per pixel (up to 256 colours in colour table)
|
||||
<li>Indexed/Grey Scale mode with >2 colours: 4 bits per pixel (up to 16 colours in colour table)
|
||||
<li>Bitmap or Indexed/Grey Scale mode with 2 or fewer colours: 1 bit per pixel (up to 2 colours in colour table)
|
||||
</ul>
|
||||
|
||||
<h3>A note on file sizes (Mac only)</h3>
|
||||
<p>
|
||||
Do not be alarmed if the Mac Finder shows an unexpectedly large file size for ICO files saved out of Photoshop.
|
||||
The ICO itself is stored in the data fork and is as small as possible (see above).
|
||||
<p>
|
||||
The Finder's size calculation is increased by Photoshop's prolific "metadata" in the resource fork,
|
||||
and does not truly reflect the size of the ICO data. (This is stored for all files saved out of Photoshop,
|
||||
regardless of format, and whether image thumbnails and previews are enabled in Preferences.)
|
||||
Finder's "K" size is also affected by the volume's minimum allocation size (often 4 or 8K depending on partition size).
|
||||
<p>
|
||||
On upload to a web site, the data fork alone is copied and the resource fork is stripped, and so this extra data
|
||||
(and Finder's padded figure) has no effect or relevance whatsoever. The "true" logical size of the ICO file
|
||||
can be confirmed in OS X's Terminal with <code>ls -l</code> in the icon's directory (or <code>files -x br</code> in MPW Shell).
|
||||
|
||||
<h3>About 32-bit <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/winxpicons.asp">(Windows XP) icons</a></h3>
|
||||
<p>
|
||||
The plugin can create 32-bit icons with 8-bit alpha transparency. This will occur in two cases:
|
||||
<ol>
|
||||
<li>in Photoshop 6.0 or later, saving a layered RGB image (i.e. not flattened)
|
||||
<li>in any version of Photoshop, saving a flat RGB image with 2 or more alpha channels.
|
||||
</ol>
|
||||
<p>
|
||||
In the first case, the layer transparency will be used as the ICO alpha.
|
||||
The 1-bit "AND mask" is taken from the first alpha channel, or if there is no available alpha channel,
|
||||
is derived from layer transparency.
|
||||
<p>
|
||||
In the second case, the first alpha channel is used to create the 1-bit "AND mask",
|
||||
and the second alpha channel becomes the 8-bit ICO alpha.
|
||||
<p>
|
||||
In both cases, the colour data is set to zero (black) where the icon is transparent.
|
||||
This should produce the desired result (complete transparency over the background).
|
||||
|
||||
<h3>Still confused, or having trouble?</h3>
|
||||
<p>
|
||||
Don't hesitate to <a href="mailto:support@telegraphics.com.au">write to us</a>.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
@ -0,0 +1,616 @@
|
|||
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>GNU General Public License - GNU Project - Free Software Foundation (FSF)</TITLE>
|
||||
<LINK REV="made" HREF="mailto:webmasters@www.gnu.org">
|
||||
<link rel="stylesheet" type="text/css" href="/gnu.css" />
|
||||
<BASE HREF="http://www.gnu.org/"> </HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" VLINK="#9900DD">
|
||||
<H1>GNU General Public License</H1>
|
||||
<A HREF="/graphics/philosophicalgnu.html"><IMG SRC="/graphics/philosophical-gnu-sm.jpg"
|
||||
ALT=" [image of a Philosophical GNU] "
|
||||
WIDTH="160" HEIGHT="200"></A>
|
||||
|
||||
<!-- Please keep this list alphabetical -->
|
||||
<!-- tower, gpl.ja.html is Japanese translation of THIS PAGE, -->
|
||||
<!-- NOT translation of GPL itself(gpl.ja.html contains the original -->
|
||||
<!-- English version). So please do not remove the following. -->
|
||||
<!-- Thanks -mhatta -->
|
||||
<!-- The same for the Czech page. The entire text of GPL is not -->
|
||||
<!-- translated on this page. Thanks Sisao -->
|
||||
|
||||
[
|
||||
<A HREF="/licenses/gpl.cs.html">Czech</A>
|
||||
| <A HREF="/licenses/gpl.html">English</A>
|
||||
| <A HREF="/licenses/gpl.ja.html">Japanese</A>
|
||||
]
|
||||
|
||||
<!-- It is best to not enumerate the translations here in a menu bar, -->
|
||||
<!-- It is best to have the users follow this link, so they have the FSF' -->
|
||||
<!-- explanation about translations being unofficial, etc. -->
|
||||
|
||||
<P>
|
||||
<UL>
|
||||
<LI><A HREF="/licenses/gpl-violation.html"><EM>What to do if you see a
|
||||
possible GPL violation</EM></A>
|
||||
<LI><A HREF="/licenses/translations.html"><EM>Translations
|
||||
of the GPL</EM></A>
|
||||
<LI><A HREF="/licenses/gpl-faq.html"><EM>GPL Frequently Asked Questions</EM></A>
|
||||
<LI>The GNU General Public License (GPL)
|
||||
<A HREF="/licenses/gpl.txt">in plain text format</A>
|
||||
<LI>The GNU General Public License (GPL)
|
||||
<A HREF="/licenses/gpl.texi">in Texinfo format</A>
|
||||
<LI>The GNU General Public License (GPL)
|
||||
<A HREF="/licenses/gpl-2.0.tex">in LaTeX format</A>
|
||||
<li>The GNU General Public License (GPL)
|
||||
<a href="/licenses/gpl.dbk">as an appendix in DocBook format</a>
|
||||
</UL>
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<H2>Table of Contents</H2>
|
||||
<UL>
|
||||
|
||||
<LI><A NAME="TOC1" HREF="gpl.html#SEC1">GNU GENERAL PUBLIC LICENSE</A>
|
||||
<UL>
|
||||
<LI><A NAME="TOC2" HREF="gpl.html#SEC2">Preamble</A>
|
||||
<LI><A NAME="TOC3" HREF="gpl.html#SEC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A>
|
||||
<LI><A NAME="TOC4" HREF="gpl.html#SEC4">How to Apply These Terms to Your New Programs</A>
|
||||
|
||||
</UL>
|
||||
</UL>
|
||||
|
||||
<P>
|
||||
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
|
||||
|
||||
<H2><A NAME="SEC1" HREF="gpl.html#TOC1">GNU GENERAL PUBLIC LICENSE</A></H2>
|
||||
<P>
|
||||
Version 2, June 1991
|
||||
|
||||
</P>
|
||||
|
||||
<PRE>
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
</PRE>
|
||||
|
||||
|
||||
|
||||
<H2><A NAME="SEC2" HREF="gpl.html#TOC2">Preamble</A></H2>
|
||||
|
||||
<P>
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
</P>
|
||||
|
||||
|
||||
<H2><A NAME="SEC3" HREF="gpl.html#TOC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A></H2>
|
||||
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>0.</STRONG>
|
||||
This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
<P>
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>1.</STRONG>
|
||||
You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
<P>
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
<P>
|
||||
|
||||
<STRONG>2.</STRONG>
|
||||
You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
<P>
|
||||
|
||||
<DL>
|
||||
<DT>
|
||||
<DD>
|
||||
<STRONG>a)</STRONG>
|
||||
You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
</DD>
|
||||
</DT>
|
||||
</DL>
|
||||
<P>
|
||||
<DL>
|
||||
<DT>
|
||||
<DD>
|
||||
<STRONG>b)</STRONG>
|
||||
You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
</DD>
|
||||
</DT>
|
||||
</DL>
|
||||
<P>
|
||||
<DL>
|
||||
<DT>
|
||||
<DD>
|
||||
<STRONG>c)</STRONG>
|
||||
If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
</DD>
|
||||
</DT>
|
||||
</DL>
|
||||
<P>
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
<P>
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
<P>
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>3.</STRONG>
|
||||
You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
|
||||
<!-- we use this doubled UL to get the sub-sections indented, -->
|
||||
<!-- while making the bullets as unobvious as possible. -->
|
||||
|
||||
<DL>
|
||||
<DT>
|
||||
<DD>
|
||||
<STRONG>a)</STRONG>
|
||||
Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
</DD>
|
||||
</DT>
|
||||
</DL>
|
||||
<P>
|
||||
<DL>
|
||||
<DT>
|
||||
<DD>
|
||||
<STRONG>b)</STRONG>
|
||||
Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
</DD>
|
||||
</DT>
|
||||
</DL>
|
||||
<P>
|
||||
<DL>
|
||||
<DT>
|
||||
<DD>
|
||||
<STRONG>c)</STRONG>
|
||||
Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
</DD>
|
||||
</DT>
|
||||
</DL>
|
||||
<P>
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
<P>
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
<P>
|
||||
|
||||
<STRONG>4.</STRONG>
|
||||
You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>5.</STRONG>
|
||||
You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>6.</STRONG>
|
||||
Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>7.</STRONG>
|
||||
If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
<P>
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
<P>
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
<P>
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>8.</STRONG>
|
||||
If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>9.</STRONG>
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
<P>
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
<P>
|
||||
|
||||
|
||||
<STRONG>10.</STRONG>
|
||||
If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
|
||||
|
||||
<P><STRONG>NO WARRANTY</STRONG></P>
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>11.</STRONG>
|
||||
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
<P>
|
||||
|
||||
<STRONG>12.</STRONG>
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
<P>
|
||||
|
||||
|
||||
<H2>END OF TERMS AND CONDITIONS</H2>
|
||||
|
||||
|
||||
|
||||
<H2><A NAME="SEC4" HREF="gpl.html#TOC4">How to Apply These Terms to Your New Programs</A></H2>
|
||||
|
||||
<P>
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
</P>
|
||||
|
||||
<PRE>
|
||||
<VAR>one line to give the program's name and an idea of what it does.</VAR>
|
||||
Copyright (C) <VAR>yyyy</VAR> <VAR>name of author</VAR>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
</P>
|
||||
|
||||
<PRE>
|
||||
Gnomovision version 69, Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR>
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
||||
type `show w'. This is free software, and you are welcome
|
||||
to redistribute it under certain conditions; type `show c'
|
||||
for details.
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP> should show
|
||||
the appropriate parts of the General Public License. Of course, the
|
||||
commands you use may be called something other than <SAMP>`show w'</SAMP> and
|
||||
<SAMP>`show c'</SAMP>; they could even be mouse-clicks or menu items--whatever
|
||||
suits your program.
|
||||
|
||||
</P>
|
||||
<P>
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
</P>
|
||||
|
||||
<PRE>
|
||||
Yoyodyne, Inc., hereby disclaims all copyright
|
||||
interest in the program `Gnomovision'
|
||||
(which makes passes at compilers) written
|
||||
by James Hacker.
|
||||
|
||||
<VAR>signature of Ty Coon</VAR>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the
|
||||
<a href="/licenses/lgpl.html">GNU Lesser General Public License</a>
|
||||
instead of this License.
|
||||
|
||||
<p>
|
||||
|
||||
<HR>
|
||||
|
||||
|
||||
<p>
|
||||
|
||||
<div class="copyright">
|
||||
<p>
|
||||
Return to the <a href="/home.html">GNU Project home page</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Please send FSF & GNU inquiries to
|
||||
<a href="mailto:gnu@gnu.org"><em>gnu@gnu.org</em></a>.
|
||||
There are also <a href="/home.html#ContactInfo">other ways to contact</a>
|
||||
the FSF.
|
||||
<br />
|
||||
Please send broken links and other corrections (or suggestions) to
|
||||
<a href="mailto:webmasters@gnu.org"><em>webmasters@gnu.org</em></a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Please see the
|
||||
<a href="/server/standards/README.translations.html">Translations
|
||||
README</a> for information on coordinating and submitting
|
||||
translations of this article.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Copyright notice above.<br />
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
<br />
|
||||
Verbatim copying and distribution of this entire article is
|
||||
permitted in any medium without royalty provided this notice is
|
||||
preserved.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Updated:
|
||||
<!-- timestamp start -->
|
||||
$Date: 2005/06/07 16:30:55 $ $Author: novalis $
|
||||
<!-- timestamp end -->
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 766 B |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
|
@ -0,0 +1,23 @@
|
|||
{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410
|
||||
{\fonttbl\f0\fnil\fcharset77 Verdana;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}}
|
||||
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
|
||||
\paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\sa260\ql\qnatural
|
||||
|
||||
\f0\fs26\fsmilli13200 \cf0 Erstellen von ICO-Icon f\'9fr Windows mit variabler Aufl\'9asung und Farbtiefe\
|
||||
\
|
||||
Zuerst .ico mit ICOFormat f\'9fr Photoshop erstellen in Gr\'9assen wie unten aufgelistet. Dann alle ico-Files auf ICOBundle draggen und fallen lassen.\
|
||||
\
|
||||
When you make an icon file you should include at least the following dimensions and color depths: \
|
||||
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural
|
||||
\ls1\ilvl0\cf0 {\listtext \'a5 }16x16 4 bpp\
|
||||
{\listtext \'a5 }32x32 4 bpp\
|
||||
{\listtext \'a5 }48x48 4 bpp\
|
||||
{\listtext \'a5 }16x16 8 bpp\
|
||||
{\listtext \'a5 }32x32 8 bpp\
|
||||
{\listtext \'a5 }48x48 8 bpp\
|
||||
{\listtext \'a5 }16x16 32 bpp\
|
||||
{\listtext \'a5 }32x32 32 bpp\
|
||||
{\listtext \'a5 }48x48 32 bpp}
|
||||
|
After Width: | Height: | Size: 23 KiB |
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" output="demo/SimpleApp/build" path="demo/SimpleApp/src"/>
|
||||
<classpathentry kind="src" output="demo/ConsoleApp/build" path="demo/ConsoleApp/src"/>
|
||||
<classpathentry kind="lib" path="lib/formsrt.jar"/>
|
||||
<classpathentry kind="lib" path="lib/xstream.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-beanutils.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-logging.jar"/>
|
||||
<classpathentry kind="lib" path="lib/looks.jar"/>
|
||||
<classpathentry kind="lib" path="lib/foxtrot.jar"/>
|
||||
<classpathentry kind="lib" path="lib/forms.jar"/>
|
||||
<classpathentry kind="lib" path="lib/ant.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6"/>
|
||||
<classpathentry kind="output" path="build"/>
|
||||
</classpath>
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>launch4j</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
eclipse.preferences.version=1
|
||||
line.separator=\r\n
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deadCode=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
|
||||
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
|
||||
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.nullReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
|
||||
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Launch4j (http://launch4j.sourceforge.net/)
|
||||
Cross-platform Java application wrapper for creating Windows native executables.
|
||||
|
||||
Copyright (c) 2004, 2011 Grzegorz Kowal
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Launch4j nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||