Delete stuff that's been split into their own repos
@ -1 +0,0 @@
|
||||
SUBDIRS = src
|
@ -1,473 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="assdraw_2008"
|
||||
ProjectGUID="{3BC75951-691C-4703-A29A-D29E298248AC}"
|
||||
RootNamespace="assdraw"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="131072"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="../bin/assdraw3_d.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(OutDir)\assdraw3_d_x64.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="../bin/assdraw3.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(OutDir)\assdraw3_x64.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\src\agg_bcspline.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\agg_vcgen_bcspline.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\wxAGG\AGGWindow.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\assdraw.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\assdraw_settings.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\canvas.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\canvas_mouse.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\cmd.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\dlgctrl.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\engine.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\library.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\settings.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\src\_common.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\agg_bcspline.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\agg_conv_bcspline.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\agg_vcgen_bcspline.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\agghelper.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\wxAGG\AGGWindow.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\assdraw.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\canvas.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\canvas_mouse.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\cmd.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\dlgctrl.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\engine.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\enums.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\include_once.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\library.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\wxAGG\PixelFormatConvertor.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\resource.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\settings.hpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\src\assdraw.rc"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@ -1,74 +0,0 @@
|
||||
AC_PREREQ(2.61)
|
||||
|
||||
#######
|
||||
# Setup
|
||||
#######
|
||||
AC_INIT([assdraw], [1.0.0])
|
||||
AC_CONFIG_SRCDIR([src/engine.cpp])
|
||||
AC_CONFIG_HEADER([config.h])
|
||||
AM_INIT_AUTOMAKE([foreign])
|
||||
AC_CANONICAL_HOST
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
####################
|
||||
# Check for programs
|
||||
####################
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
AC_LANG(C++)
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_INSTALL
|
||||
PKG_PROG_PKG_CONFIG([0.20])
|
||||
|
||||
#################
|
||||
# Developers only
|
||||
#################
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
AC_ARG_VAR([DEBUG_FLAGS], [Debug flag to use with --enable debug (default: -g)])
|
||||
if test -z "$DEBUG_FLAGS"; then
|
||||
DEBUG_FLAGS="-g";
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([whether to turn on debugging])
|
||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging (default=no)])
|
||||
if test "$enable_debug" = "yes"; then
|
||||
AC_MSG_RESULT([yes ($DEBUG_FLAGS)])
|
||||
CPPFLAGS="$DEBUG_FLAGS $CPPFLAGS"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(build-dist)
|
||||
if test "$enable_build_dist" = "yes"; then
|
||||
SVN_VERSION=`svnversion .`
|
||||
PACKAGE_STRING="${PACKAGE_STRING}-r$SVN_VERSION"
|
||||
PACKAGE_VERSION="${PACKAGE_VERSION}-r$SVN_VERSION"
|
||||
VERSION="${VERSION}-r$SVN_VERSION"
|
||||
fi
|
||||
|
||||
# Checks for header files.
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AM_OPTIONS_WXCONFIG
|
||||
AM_PATH_WXCONFIG(2.8.1, [have_wxconfig=1], [have_wxconfig=0], [std,gl,stc,aui, propgrid])
|
||||
|
||||
if test "$have_wxconfig" != 1; then
|
||||
AC_MSG_FAILURE([
|
||||
wxWidgets detection failed, please set --with-wx* or add
|
||||
the libraries to your LDFLAGS, CXX/CFLAGS.
|
||||
])
|
||||
fi
|
||||
|
||||
PKG_CHECK_MODULES(LIBAGG, libagg >= 2.5.0, [with_libagg=yes], [with_libagg=no])
|
||||
|
||||
if test "$with_libagg" != "yes"; then
|
||||
AC_MSG_FAILURE([You must have AGG installed: http://vector-agg.sourceforge.net/])
|
||||
fi
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
src/wxAGG/Makefile
|
||||
src/xpm/Makefile
|
||||
src/Makefile
|
||||
])
|
@ -1,41 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
BUNDLE_ROOT="$(dirname $0)/Assdraw.app/"
|
||||
SRC_DIR="$(dirname $0)"
|
||||
|
||||
if test -d "${BUNDLE_ROOT}"; then
|
||||
rm -rf "${BUNDLE_ROOT}"
|
||||
fi
|
||||
|
||||
mkdir -p "${BUNDLE_ROOT}/Contents/MacOS"
|
||||
|
||||
cp "${SRC_DIR}/src/assdraw" "${BUNDLE_ROOT}/Contents/MacOS/assdraw"
|
||||
|
||||
python ../../aegisub/tools/osx-fix-libs.py "${BUNDLE_ROOT}/Contents/MacOS/assdraw"
|
||||
|
||||
cat << 'EOF' > "${BUNDLE_ROOT}/Info.plist"
|
||||
<?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>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>assdraw</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.aegisub.assdraw</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>ASSDraw3</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>ASSDraw3</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>LSHasLocalizedDisplayName</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
EOF
|
@ -1,323 +0,0 @@
|
||||
[Project]
|
||||
FileName=ASSDraw3.dev
|
||||
Name=ASSDraw
|
||||
UnitCount=26
|
||||
Type=0
|
||||
Ver=3
|
||||
IsCpp=1
|
||||
Folders=AGG
|
||||
CommandLine=
|
||||
CompilerSettings=0000000001001000000100
|
||||
PchHead=-1
|
||||
PchSource=-1
|
||||
ProfilesCount=1
|
||||
ProfileIndex=0
|
||||
|
||||
[Unit1]
|
||||
FileName=assdraw.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[VersionInfo]
|
||||
Major=3
|
||||
Minor=0
|
||||
Release=0
|
||||
Build=0
|
||||
LanguageID=1033
|
||||
CharsetID=1252
|
||||
CompanyName=ai-chan
|
||||
FileVersion=3.0.0.0
|
||||
FileDescription=A tool for designing shapes to be used in ASS subtitle
|
||||
InternalName=ASSDraw3
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=ASSDraw3.exe
|
||||
ProductName=ASSDraw
|
||||
ProductVersion=3
|
||||
AutoIncBuildNrOnRebuild=0
|
||||
AutoIncBuildNrOnCompile=0
|
||||
UnitCount=20
|
||||
|
||||
[Unit3]
|
||||
FileName=cmd.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit4]
|
||||
FileName=engine.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit5]
|
||||
FileName=assdraw.rc
|
||||
CompileCpp=1
|
||||
Folder=Resources
|
||||
Compile=1
|
||||
Link=0
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit7]
|
||||
FileName=engine.cpp
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
CompileCpp=1
|
||||
|
||||
[Unit9]
|
||||
FileName=include_once.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit6]
|
||||
FileName=assdraw.hpp
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
CompileCpp=1
|
||||
|
||||
[Unit2]
|
||||
FileName=cmd.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Profile1]
|
||||
ProfileName=Default Profile
|
||||
Type=0
|
||||
ObjFiles=
|
||||
Includes=E:\DEV;E:\DEV\agg-2.5\include;E:\DEV\wxTreeMultiCtrl\include
|
||||
Libs=E:\DEV\agg-2.5;E:\DEV\wxTreeMultiCtrl
|
||||
PrivateResource=E:\DEV\_projects\ASSDraw 3\Default Profile\ASSDraw_private.rc
|
||||
ResourceIncludes=
|
||||
MakeIncludes=
|
||||
Compiler=
|
||||
CppCompiler=-D__WXMSW__ -DNO_GCC_PRAGMA -fno-rtti -fno-exceptions_@@_ -Wno-deprecated_@@_
|
||||
Linker=-lwxmsw28_propgrid_@@_-mwindows_@@_-lwxmsw28_@@_-lwxmsw28_gl_@@_-lwxtiff_@@_-lwxjpeg_@@_-lwxpng_@@_-lwxzlib_@@_-lwxregex_@@_-lwxexpat_@@_-lkernel32_@@_-luser32_@@_-lgdi32_@@_-lcomdlg32_@@_-lwinspool_@@_-lwinmm_@@_-lshell32_@@_-lcomctl32_@@_-lole32_@@_-loleaut32_@@_-luuid_@@_-lrpcrt4_@@_-ladvapi32_@@_-lwsock32_@@_-lodbc32_@@_-lopengl32_@@_-lagg_@@_
|
||||
PreprocDefines=
|
||||
CompilerSettings=0000000001001000000100
|
||||
Icon=
|
||||
ExeOutput=E:\DEV\_projects\ASSDraw 3\Default Profile\
|
||||
ObjectOutput=E:\DEV\_projects\ASSDraw 3\Default Profile\
|
||||
OverrideOutput=1
|
||||
OverrideOutputName=ASSDraw3.exe
|
||||
HostApplication=
|
||||
CommandLine=
|
||||
UseCustomMakefile=0
|
||||
CustomMakefile=
|
||||
IncludeVersionInfo=1
|
||||
SupportXPThemes=1
|
||||
CompilerSet=0
|
||||
compilerType=0
|
||||
|
||||
[Unit8]
|
||||
FileName=dlgctrl.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit10]
|
||||
FileName=resource.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit15]
|
||||
FileName=agg_bcspline.cpp
|
||||
CompileCpp=1
|
||||
Folder=AGG
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit16]
|
||||
FileName=enums.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit18]
|
||||
FileName=library.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit17]
|
||||
FileName=library.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit13]
|
||||
FileName=wxAGG\AGGWindow.cpp
|
||||
CompileCpp=1
|
||||
Folder=AGG
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit14]
|
||||
FileName=agg_vcgen_bcspline.cpp
|
||||
CompileCpp=1
|
||||
Folder=AGG
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit11]
|
||||
FileName=canvas.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit12]
|
||||
FileName=canvas.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit20]
|
||||
FileName=dlgctrl.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit19]
|
||||
FileName=_common.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit21]
|
||||
FileName=settings.cpp
|
||||
CompileCpp=1
|
||||
Folder=ASSDraw
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit22]
|
||||
FileName=settings.hpp
|
||||
CompileCpp=1
|
||||
Folder=ASSDraw
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit23]
|
||||
FileName=assdraw_settings.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit24]
|
||||
FileName=agghelper.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit25]
|
||||
FileName=canvas_mouse.hpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit26]
|
||||
FileName=canvas_mouse.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
@ -1,185 +0,0 @@
|
||||
[Editor_10]
|
||||
CursorCol=32
|
||||
CursorRow=553
|
||||
TopLine=535
|
||||
LeftChar=1
|
||||
Open=1
|
||||
Top=0
|
||||
[Editor_7]
|
||||
CursorCol=6
|
||||
CursorRow=227
|
||||
TopLine=197
|
||||
LeftChar=1
|
||||
Open=1
|
||||
Top=1
|
||||
[Editor_5]
|
||||
CursorCol=11
|
||||
CursorRow=19
|
||||
TopLine=1
|
||||
LeftChar=1
|
||||
Open=1
|
||||
Top=0
|
||||
[Editor_18]
|
||||
CursorCol=11
|
||||
CursorRow=14
|
||||
TopLine=1
|
||||
LeftChar=1
|
||||
Open=0
|
||||
Top=0
|
||||
[Editor_19]
|
||||
CursorCol=12
|
||||
CursorRow=3
|
||||
TopLine=3
|
||||
LeftChar=1
|
||||
Open=0
|
||||
Top=0
|
||||
[Editor_11]
|
||||
CursorCol=8
|
||||
CursorRow=44
|
||||
TopLine=31
|
||||
LeftChar=1
|
||||
Open=0
|
||||
Top=0
|
||||
[Editor_3]
|
||||
CursorCol=1
|
||||
CursorRow=268
|
||||
TopLine=243
|
||||
LeftChar=1
|
||||
Open=1
|
||||
Top=0
|
||||
[Editor_15]
|
||||
CursorCol=15
|
||||
CursorRow=7
|
||||
TopLine=1
|
||||
LeftChar=1
|
||||
Open=1
|
||||
Top=0
|
||||
[Editor_8]
|
||||
CursorCol=1
|
||||
CursorRow=69
|
||||
TopLine=33
|
||||
LeftChar=1
|
||||
Open=0
|
||||
Top=0
|
||||
[Editor_16]
|
||||
CursorCol=2
|
||||
CursorRow=25
|
||||
TopLine=1
|
||||
LeftChar=1
|
||||
Open=0
|
||||
Top=0
|
||||
[Editor_0]
|
||||
CursorCol=39
|
||||
CursorRow=212
|
||||
TopLine=184
|
||||
LeftChar=1
|
||||
Open=1
|
||||
Top=0
|
||||
[Editors]
|
||||
Focused=7
|
||||
Order=5,0,10,17,3,6,7,22,21,20,15
|
||||
[Editor_1]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=21
|
||||
CursorRow=63
|
||||
TopLine=30
|
||||
LeftChar=1
|
||||
[Editor_2]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=7
|
||||
CursorRow=83
|
||||
TopLine=50
|
||||
LeftChar=1
|
||||
[Editor_4]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=19
|
||||
CursorRow=21
|
||||
TopLine=21
|
||||
LeftChar=1
|
||||
[Editor_6]
|
||||
Open=1
|
||||
Top=0
|
||||
CursorCol=1
|
||||
CursorRow=577
|
||||
TopLine=556
|
||||
LeftChar=1
|
||||
[Editor_9]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=1
|
||||
CursorRow=1
|
||||
TopLine=1
|
||||
LeftChar=1
|
||||
[Editor_12]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=6
|
||||
CursorRow=99
|
||||
TopLine=91
|
||||
LeftChar=1
|
||||
[Editor_13]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=1
|
||||
CursorRow=204
|
||||
TopLine=170
|
||||
LeftChar=1
|
||||
[Editor_14]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=1
|
||||
CursorRow=290
|
||||
TopLine=256
|
||||
LeftChar=1
|
||||
[Editor_17]
|
||||
Open=1
|
||||
Top=0
|
||||
CursorCol=68
|
||||
CursorRow=133
|
||||
TopLine=112
|
||||
LeftChar=1
|
||||
[Editor_20]
|
||||
Open=1
|
||||
Top=0
|
||||
CursorCol=46
|
||||
CursorRow=195
|
||||
TopLine=163
|
||||
LeftChar=1
|
||||
[Editor_21]
|
||||
Open=1
|
||||
Top=0
|
||||
CursorCol=2
|
||||
CursorRow=58
|
||||
TopLine=57
|
||||
LeftChar=1
|
||||
[Editor_22]
|
||||
Open=1
|
||||
Top=0
|
||||
CursorCol=32
|
||||
CursorRow=160
|
||||
TopLine=129
|
||||
LeftChar=1
|
||||
[Editor_23]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=2
|
||||
CursorRow=6
|
||||
TopLine=1
|
||||
LeftChar=1
|
||||
[Editor_24]
|
||||
CursorCol=1
|
||||
CursorRow=56
|
||||
TopLine=25
|
||||
LeftChar=1
|
||||
Open=0
|
||||
Top=0
|
||||
[Editor_25]
|
||||
Open=0
|
||||
Top=0
|
||||
CursorCol=18
|
||||
CursorRow=8
|
||||
TopLine=1
|
||||
LeftChar=1
|
@ -1,43 +0,0 @@
|
||||
SUFFIXES = .cpp
|
||||
|
||||
SUBDIRS = wxAGG xpm
|
||||
|
||||
AM_CXXFLAGS = @WX_CPPFLAGS@ @LIBAGG_CFLAGS@
|
||||
|
||||
bin_PROGRAMS = assdraw
|
||||
#assdraw_CPPFLAGS =
|
||||
assdraw_LDFLAGS = @WX_LIBS@ @LIBAGG_LIBS@
|
||||
assdraw_LDADD = wxAGG/libaggwindow.a xpm/libres.a
|
||||
|
||||
assdraw_SOURCES = \
|
||||
agg_bcspline.cpp \
|
||||
agg_vcgen_bcspline.cpp \
|
||||
assdraw.cpp \
|
||||
assdraw_settings.cpp \
|
||||
canvas.cpp \
|
||||
canvas_mouse.cpp \
|
||||
cmd.cpp \
|
||||
dlgctrl.cpp \
|
||||
engine.cpp \
|
||||
library.cpp \
|
||||
settings.cpp
|
||||
|
||||
assdraw_SOURCES += \
|
||||
agg_bcspline.h \
|
||||
agg_conv_bcspline.h \
|
||||
agg_vcgen_bcspline.h \
|
||||
resource.h
|
||||
|
||||
EXTRA_DIST = \
|
||||
_common.hpp \
|
||||
agghelper.hpp
|
||||
assdraw.hpp \
|
||||
canvas.hpp \
|
||||
canvas_mouse.hpp \
|
||||
cmd.hpp \
|
||||
dlgctrl.hpp \
|
||||
engine.hpp \
|
||||
enums.hpp \
|
||||
include_once.hpp \
|
||||
library.hpp \
|
||||
settings.hpp
|
@ -1,69 +0,0 @@
|
||||
# Project: ASSDraw
|
||||
# Compiler: Default GCC compiler
|
||||
# Compiler Type: MingW 3
|
||||
# Makefile created by wxDev-C++ 6.10.2 on 20/01/08 23:46
|
||||
|
||||
CPP = g++.exe
|
||||
CC = gcc.exe
|
||||
WINDRES = windres.exe
|
||||
OBJ = ../Default\ Profile/assdraw.o ../Default\ Profile/cmd.o ../Default\ Profile/engine.o ../Default\ Profile/dlgctrl.o ../Default\ Profile/canvas.o ../Default\ Profile/AGGWindow.o ../Default\ Profile/agg_vcgen_bcspline.o ../Default\ Profile/agg_bcspline.o ../Default\ Profile/library.o ../Default\ Profile/settings.o ../Default\ Profile/assdraw_settings.o ../Default\ Profile/canvas_mouse.o ../Default\ Profile/ASSDraw3_private.res
|
||||
LINKOBJ = "../Default Profile/assdraw.o" "../Default Profile/cmd.o" "../Default Profile/engine.o" "../Default Profile/dlgctrl.o" "../Default Profile/canvas.o" "../Default Profile/AGGWindow.o" "../Default Profile/agg_vcgen_bcspline.o" "../Default Profile/agg_bcspline.o" "../Default Profile/library.o" "../Default Profile/settings.o" "../Default Profile/assdraw_settings.o" "../Default Profile/canvas_mouse.o" "../Default Profile/ASSDraw3_private.res"
|
||||
LIBS = -L"D:/Program Files/Dev-Cpp/Lib" -L"E:/DEV/agg-2.5" -L"E:/DEV/wxTreeMultiCtrl" -lwxmsw28_propgrid -mwindows -lwxmsw28 -lwxmsw28_gl -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregex -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32 -lopengl32 -lagg -s
|
||||
INCS = -I"include" -I"E:/DEV" -I"E:/DEV/agg-2.5/include" -I"E:/DEV/wxTreeMultiCtrl/include"
|
||||
CXXINCS = -I"D:/Program Files/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"D:/Program Files/Dev-Cpp/include/c++/3.4.2/backward" -I"D:/Program Files/Dev-Cpp/include/c++/3.4.2/mingw32" -I"D:/Program Files/Dev-Cpp/include/c++/3.4.2" -I"D:/Program Files/Dev-Cpp/include" -I"D:/Program Files/Dev-Cpp/" -I"D:/Program Files/Dev-Cpp/include/common/wx/msw" -I"D:/Program Files/Dev-Cpp/include/common/wx/generic" -I"D:/Program Files/Dev-Cpp/include/common/wx/fl" -I"D:/Program Files/Dev-Cpp/include/common/wx/gizmos" -I"D:/Program Files/Dev-Cpp/include/common/wx/html" -I"D:/Program Files/Dev-Cpp/include/common/wx/mmedia" -I"D:/Program Files/Dev-Cpp/include/common/wx/net" -I"D:/Program Files/Dev-Cpp/include/common/wx/ogl" -I"D:/Program Files/Dev-Cpp/include/common/wx/plot" -I"D:/Program Files/Dev-Cpp/include/common/wx/protocol" -I"D:/Program Files/Dev-Cpp/include/common/wx/stc" -I"D:/Program Files/Dev-Cpp/include/common/wx/svg" -I"D:/Program Files/Dev-Cpp/include/common/wx/xml" -I"D:/Program Files/Dev-Cpp/include/common/wx/xrc" -I"D:/Program Files/Dev-Cpp/include/common/wx" -I"D:/Program Files/Dev-Cpp/include/common" -I"E:/dev/ACE-5.5" -I"E:/DEV" -I"E:/DEV/agg-2.5/include" -I"E:/DEV/wxTreeMultiCtrl/include"
|
||||
RCINCS = --include-dir "D:/PROGRA~1/Dev-Cpp/include/common"
|
||||
BIN = ../Default\ Profile/ASSDraw3.exe
|
||||
DEFINES =
|
||||
CXXFLAGS = $(CXXINCS) $(DEFINES) -D__WXMSW__ -DNO_GCC_PRAGMA -fno-rtti -fno-exceptions -Wno-deprecated -fexpensive-optimizations -O3
|
||||
CFLAGS = $(INCS) $(DEFINES) -fexpensive-optimizations -O3
|
||||
GPROF = gprof.exe
|
||||
RM = rm -f
|
||||
LINK = g++.exe
|
||||
|
||||
.PHONY: all all-before all-after clean clean-custom
|
||||
all: all-before $(BIN) all-after
|
||||
|
||||
clean: clean-custom
|
||||
$(RM) $(OBJ) $(BIN)
|
||||
|
||||
$(BIN): $(OBJ)
|
||||
$(LINK) $(LINKOBJ) -o "..\Default Profile\ASSDraw3.exe" $(LIBS)
|
||||
|
||||
../Default\ Profile/assdraw.o: $(GLOBALDEPS) assdraw.cpp assdraw.hpp _common.hpp enums.hpp include_once.hpp
|
||||
$(CPP) -c assdraw.cpp -o "../Default Profile/assdraw.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/cmd.o: $(GLOBALDEPS) cmd.cpp
|
||||
$(CPP) -c cmd.cpp -o "../Default Profile/cmd.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/engine.o: $(GLOBALDEPS) engine.cpp
|
||||
$(CPP) -c engine.cpp -o "../Default Profile/engine.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/dlgctrl.o: $(GLOBALDEPS) dlgctrl.cpp assdraw.hpp _common.hpp
|
||||
$(CPP) -c dlgctrl.cpp -o "../Default Profile/dlgctrl.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/canvas.o: $(GLOBALDEPS) canvas.cpp assdraw.hpp _common.hpp cmd.hpp agghelper.hpp
|
||||
$(CPP) -c canvas.cpp -o "../Default Profile/canvas.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/AGGWindow.o: $(GLOBALDEPS) wxAGG/AGGWindow.cpp wxAGG/AGGWindow.h wxAGG/PixelFormatConvertor.h
|
||||
$(CPP) -c wxAGG/AGGWindow.cpp -o "../Default Profile/AGGWindow.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/agg_vcgen_bcspline.o: $(GLOBALDEPS) agg_vcgen_bcspline.cpp agg_vcgen_bcspline.h agg_bcspline.h
|
||||
$(CPP) -c agg_vcgen_bcspline.cpp -o "../Default Profile/agg_vcgen_bcspline.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/agg_bcspline.o: $(GLOBALDEPS) agg_bcspline.cpp agg_bcspline.h
|
||||
$(CPP) -c agg_bcspline.cpp -o "../Default Profile/agg_bcspline.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/library.o: $(GLOBALDEPS) library.cpp assdraw.hpp _common.hpp library.hpp engine.hpp _common.hpp wxAGG/AGGWindow.h wxAGG/PixelFormatConvertor.h agg_conv_bcspline.h agg_vcgen_bcspline.h agg_bcspline.h
|
||||
$(CPP) -c library.cpp -o "../Default Profile/library.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/settings.o: $(GLOBALDEPS) settings.cpp assdraw.hpp _common.hpp settings.hpp _common.hpp
|
||||
$(CPP) -c settings.cpp -o "../Default Profile/settings.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/assdraw_settings.o: $(GLOBALDEPS) assdraw_settings.cpp assdraw.hpp _common.hpp
|
||||
$(CPP) -c assdraw_settings.cpp -o "../Default Profile/assdraw_settings.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/canvas_mouse.o: $(GLOBALDEPS) canvas_mouse.cpp canvas_mouse.hpp _common.hpp enums.hpp engine.hpp _common.hpp wxAGG/AGGWindow.h wxAGG/PixelFormatConvertor.h agg_conv_bcspline.h agg_vcgen_bcspline.h agg_bcspline.h canvas.hpp engine.hpp enums.hpp
|
||||
$(CPP) -c canvas_mouse.cpp -o "../Default Profile/canvas_mouse.o" $(CXXFLAGS)
|
||||
|
||||
../Default\ Profile/ASSDraw3_private.res: ../Default\ Profile/ASSDraw3_private.rc assdraw.rc
|
||||
$(WINDRES) --input-format=rc -o "../Default Profile/ASSDraw3_private.res" $(RCINCS) ../DEFAUL~1/ASSDRA~1.RC -O coff
|
@ -1,14 +0,0 @@
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/wx.h"
|
||||
#endif
|
||||
|
||||
#define TITLE wxT("ASSDraw3")
|
||||
|
||||
#define __DPDS__ wxDefaultPosition, wxDefaultSize
|
@ -1,289 +0,0 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// Anti-Grain Geometry (AGG) - Version 2.5
|
||||
// A high quality rendering engine for C++
|
||||
// Copyright (C) 2002-2006 Maxim Shemanarev
|
||||
// Contact: mcseem@antigrain.com
|
||||
// mcseemagg@yahoo.com
|
||||
// http://antigrain.com
|
||||
//
|
||||
// AGG 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.
|
||||
//
|
||||
// AGG 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 AGG; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#include "agg_bcspline.h"
|
||||
|
||||
namespace agg
|
||||
{
|
||||
//------------------------------------------------------------------------
|
||||
bcspline::bcspline() :
|
||||
m_max(0),
|
||||
m_num(0),
|
||||
m_x(0),
|
||||
m_y(0),
|
||||
m_last_idx(-1)
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
bcspline::bcspline(int num) :
|
||||
m_max(0),
|
||||
m_num(0),
|
||||
m_x(0),
|
||||
m_y(0),
|
||||
m_last_idx(-1)
|
||||
{
|
||||
init(num);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
bcspline::bcspline(int num, const double* x, const double* y) :
|
||||
m_max(0),
|
||||
m_num(0),
|
||||
m_x(0),
|
||||
m_y(0),
|
||||
m_last_idx(-1)
|
||||
{
|
||||
init(num, x, y);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void bcspline::init(int max)
|
||||
{
|
||||
if(max > 2 && max > m_max)
|
||||
{
|
||||
m_am.resize(max * 3);
|
||||
m_max = max;
|
||||
m_x = &m_am[m_max];
|
||||
m_y = &m_am[m_max * 2];
|
||||
}
|
||||
m_num = 0;
|
||||
m_last_idx = -1;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void bcspline::add_point(double x, double y)
|
||||
{
|
||||
if(m_num < m_max)
|
||||
{
|
||||
m_x[m_num] = x;
|
||||
m_y[m_num] = y;
|
||||
++m_num;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void bcspline::prepare()
|
||||
{
|
||||
if(m_num > 2)
|
||||
{
|
||||
int i, k, n1;
|
||||
double* temp;
|
||||
double* r;
|
||||
double* s;
|
||||
double h, p, d, f, e;
|
||||
|
||||
for(k = 0; k < m_num; k++)
|
||||
{
|
||||
m_am[k] = 0.0;
|
||||
}
|
||||
|
||||
n1 = 3 * m_num;
|
||||
|
||||
pod_array<double> al(n1);
|
||||
temp = &al[0];
|
||||
|
||||
for(k = 0; k < n1; k++)
|
||||
{
|
||||
temp[k] = 0.0;
|
||||
}
|
||||
|
||||
r = temp + m_num;
|
||||
s = temp + m_num * 2;
|
||||
|
||||
n1 = m_num - 1;
|
||||
d = m_x[1] - m_x[0];
|
||||
e = (m_y[1] - m_y[0]) / d;
|
||||
|
||||
for(k = 1; k < n1; k++)
|
||||
{
|
||||
h = d;
|
||||
d = m_x[k + 1] - m_x[k];
|
||||
f = e;
|
||||
e = (m_y[k + 1] - m_y[k]) / d;
|
||||
al[k] = d / (d + h);
|
||||
r[k] = 1.0 - al[k];
|
||||
s[k] = 6.0 * (e - f) / (h + d);
|
||||
}
|
||||
|
||||
for(k = 1; k < n1; k++)
|
||||
{
|
||||
p = 1.0 / (r[k] * al[k - 1] + 2.0);
|
||||
al[k] *= -p;
|
||||
s[k] = (s[k] - r[k] * s[k - 1]) * p;
|
||||
}
|
||||
|
||||
m_am[n1] = 0.0;
|
||||
al[n1 - 1] = s[n1 - 1];
|
||||
m_am[n1 - 1] = al[n1 - 1];
|
||||
|
||||
for(k = n1 - 2, i = 0; i < m_num - 2; i++, k--)
|
||||
{
|
||||
al[k] = al[k] * al[k + 1] + s[k];
|
||||
m_am[k] = al[k];
|
||||
}
|
||||
}
|
||||
m_last_idx = -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void bcspline::init(int num, const double* x, const double* y)
|
||||
{
|
||||
if(num > 2)
|
||||
{
|
||||
init(num);
|
||||
int i;
|
||||
for(i = 0; i < num; i++)
|
||||
{
|
||||
add_point(*x++, *y++);
|
||||
}
|
||||
prepare();
|
||||
}
|
||||
m_last_idx = -1;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void bcspline::bsearch(int n, const double *x, double x0, int *i)
|
||||
{
|
||||
int j = n - 1;
|
||||
int k;
|
||||
|
||||
for(*i = 0; (j - *i) > 1; )
|
||||
{
|
||||
if(x0 < x[k = (*i + j) >> 1]) j = k;
|
||||
else *i = k;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
double bcspline::interpolation(double x, int i) const
|
||||
{
|
||||
int j = i + 1;
|
||||
double d = m_x[i] - m_x[j];
|
||||
double h = x - m_x[j];
|
||||
double r = m_x[i] - x;
|
||||
double p = d * d / 6.0;
|
||||
return (m_am[j] * r * r * r + m_am[i] * h * h * h) / 6.0 / d +
|
||||
((m_y[j] - m_am[j] * p) * r + (m_y[i] - m_am[i] * p) * h) / d;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
double bcspline::extrapolation_left(double x) const
|
||||
{
|
||||
double d = m_x[1] - m_x[0];
|
||||
return (-d * m_am[1] / 6 + (m_y[1] - m_y[0]) / d) *
|
||||
(x - m_x[0]) +
|
||||
m_y[0];
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
double bcspline::extrapolation_right(double x) const
|
||||
{
|
||||
double d = m_x[m_num - 1] - m_x[m_num - 2];
|
||||
return (d * m_am[m_num - 2] / 6 + (m_y[m_num - 1] - m_y[m_num - 2]) / d) *
|
||||
(x - m_x[m_num - 1]) +
|
||||
m_y[m_num - 1];
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
double bcspline::get(double x) const
|
||||
{
|
||||
if(m_num > 2)
|
||||
{
|
||||
int i;
|
||||
|
||||
// Extrapolation on the left
|
||||
if(x < m_x[0]) return extrapolation_left(x);
|
||||
|
||||
// Extrapolation on the right
|
||||
if(x >= m_x[m_num - 1]) return extrapolation_right(x);
|
||||
|
||||
// Interpolation
|
||||
bsearch(m_num, m_x, x, &i);
|
||||
return interpolation(x, i);
|
||||
}
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
double bcspline::get_stateful(double x) const
|
||||
{
|
||||
if(m_num > 2)
|
||||
{
|
||||
// Extrapolation on the left
|
||||
if(x < m_x[0]) return extrapolation_left(x);
|
||||
|
||||
// Extrapolation on the right
|
||||
if(x >= m_x[m_num - 1]) return extrapolation_right(x);
|
||||
|
||||
if(m_last_idx >= 0)
|
||||
{
|
||||
// Check if x is not in current range
|
||||
if(x < m_x[m_last_idx] || x > m_x[m_last_idx + 1])
|
||||
{
|
||||
// Check if x between next points (most probably)
|
||||
if(m_last_idx < m_num - 2 &&
|
||||
x >= m_x[m_last_idx + 1] &&
|
||||
x <= m_x[m_last_idx + 2])
|
||||
{
|
||||
++m_last_idx;
|
||||
}
|
||||
else
|
||||
if(m_last_idx > 0 &&
|
||||
x >= m_x[m_last_idx - 1] &&
|
||||
x <= m_x[m_last_idx])
|
||||
{
|
||||
// x is between pevious points
|
||||
--m_last_idx;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Else perform full search
|
||||
bsearch(m_num, m_x, x, &m_last_idx);
|
||||
}
|
||||
}
|
||||
return interpolation(x, m_last_idx);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Interpolation
|
||||
bsearch(m_num, m_x, x, &m_last_idx);
|
||||
return interpolation(x, m_last_idx);
|
||||
}
|
||||
}
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,81 +0,0 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// Anti-Grain Geometry (AGG) - Version 2.5
|
||||
// A high quality rendering engine for C++
|
||||
// Copyright (C) 2002-2006 Maxim Shemanarev
|
||||
// Contact: mcseem@antigrain.com
|
||||
// mcseemagg@yahoo.com
|
||||
// http://antigrain.com
|
||||
//
|
||||
// AGG 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.
|
||||
//
|
||||
// AGG 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 AGG; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#ifndef AGG_bcspline_INCLUDED
|
||||
#define AGG_bcspline_INCLUDED
|
||||
|
||||
#include "agg_array.h"
|
||||
|
||||
namespace agg
|
||||
{
|
||||
//----------------------------------------------------------------bcspline
|
||||
// A very simple class of Bi-cubic Spline interpolation.
|
||||
// First call init(num, x[], y[]) where num - number of source points,
|
||||
// x, y - arrays of X and Y values respectively. Here Y must be a function
|
||||
// of X. It means that all the X-coordinates must be arranged in the ascending
|
||||
// order.
|
||||
// Then call get(x) that calculates a value Y for the respective X.
|
||||
// The class supports extrapolation, i.e. you can call get(x) where x is
|
||||
// outside the given with init() X-range. Extrapolation is a simple linear
|
||||
// function.
|
||||
//
|
||||
// See Implementation agg_bcspline.cpp
|
||||
//------------------------------------------------------------------------
|
||||
class bcspline
|
||||
{
|
||||
public:
|
||||
bcspline();
|
||||
bcspline(int num);
|
||||
bcspline(int num, const double* x, const double* y);
|
||||
|
||||
void init(int num);
|
||||
void add_point(double x, double y);
|
||||
void prepare();
|
||||
|
||||
void init(int num, const double* x, const double* y);
|
||||
|
||||
double get(double x) const;
|
||||
double get_stateful(double x) const;
|
||||
|
||||
private:
|
||||
bcspline(const bcspline&);
|
||||
const bcspline& operator = (const bcspline&);
|
||||
|
||||
static void bsearch(int n, const double *x, double x0, int *i);
|
||||
double extrapolation_left(double x) const;
|
||||
double extrapolation_right(double x) const;
|
||||
double interpolation(double x, int i) const;
|
||||
|
||||
int m_max;
|
||||
int m_num;
|
||||
double* m_x;
|
||||
double* m_y;
|
||||
pod_array<double> m_am;
|
||||
mutable int m_last_idx;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -1,58 +0,0 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// Anti-Grain Geometry (AGG) - Version 2.5
|
||||
// A high quality rendering engine for C++
|
||||
// Copyright (C) 2002-2006 Maxim Shemanarev
|
||||
// Contact: mcseem@antigrain.com
|
||||
// mcseemagg@yahoo.com
|
||||
// http://antigrain.com
|
||||
//
|
||||
// AGG 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.
|
||||
//
|
||||
// AGG 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 AGG; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#ifndef AGG_conv_bcspline_INCLUDED
|
||||
#define AGG_conv_bcspline_INCLUDED
|
||||
|
||||
#include "agg_basics.h"
|
||||
#include "agg_vcgen_bcspline.h"
|
||||
#include "agg_conv_adaptor_vcgen.h"
|
||||
|
||||
|
||||
namespace agg
|
||||
{
|
||||
|
||||
//---------------------------------------------------------conv_bcspline
|
||||
template<class VertexSource>
|
||||
struct conv_bcspline : public conv_adaptor_vcgen<VertexSource, vcgen_bcspline>
|
||||
{
|
||||
typedef conv_adaptor_vcgen<VertexSource, vcgen_bcspline> base_type;
|
||||
|
||||
conv_bcspline(VertexSource& vs) :
|
||||
conv_adaptor_vcgen<VertexSource, vcgen_bcspline>(vs) {}
|
||||
|
||||
void interpolation_step(double v) { base_type::generator().interpolation_step(v); }
|
||||
double interpolation_step() const { return base_type::generator().interpolation_step(); }
|
||||
|
||||
private:
|
||||
conv_bcspline(const conv_bcspline<VertexSource>&);
|
||||
const conv_bcspline<VertexSource>&
|
||||
operator = (const conv_bcspline<VertexSource>&);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -1,203 +0,0 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// Anti-Grain Geometry (AGG) - Version 2.5
|
||||
// A high quality rendering engine for C++
|
||||
// Copyright (C) 2002-2006 Maxim Shemanarev
|
||||
// Contact: mcseem@antigrain.com
|
||||
// mcseemagg@yahoo.com
|
||||
// http://antigrain.com
|
||||
//
|
||||
// AGG 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.
|
||||
//
|
||||
// AGG 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 AGG; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#include "agg_vcgen_bcspline.h"
|
||||
|
||||
namespace agg
|
||||
{
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
vcgen_bcspline::vcgen_bcspline() :
|
||||
m_src_vertices(),
|
||||
m_spline_x(),
|
||||
m_spline_y(),
|
||||
m_interpolation_step(1.0/50.0),
|
||||
m_closed(0),
|
||||
m_status(initial),
|
||||
m_src_vertex(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void vcgen_bcspline::remove_all()
|
||||
{
|
||||
m_src_vertices.remove_all();
|
||||
m_closed = 0;
|
||||
m_status = initial;
|
||||
m_src_vertex = 0;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void vcgen_bcspline::add_vertex(double x, double y, unsigned cmd)
|
||||
{
|
||||
m_status = initial;
|
||||
if(is_move_to(cmd))
|
||||
{
|
||||
m_src_vertices.modify_last(point_d(x, y));
|
||||
}
|
||||
else
|
||||
{
|
||||
if(is_vertex(cmd))
|
||||
{
|
||||
m_src_vertices.add(point_d(x, y));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_closed = get_close_flag(cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void vcgen_bcspline::rewind(unsigned)
|
||||
{
|
||||
m_cur_abscissa = 0.0;
|
||||
m_max_abscissa = 0.0;
|
||||
m_src_vertex = 0;
|
||||
if(m_status == initial && m_src_vertices.size() > 2)
|
||||
{
|
||||
if(m_closed)
|
||||
{
|
||||
m_spline_x.init(m_src_vertices.size() + 8);
|
||||
m_spline_y.init(m_src_vertices.size() + 8);
|
||||
m_spline_x.add_point(0.0, m_src_vertices.prev(m_src_vertices.size() - 3).x);
|
||||
m_spline_y.add_point(0.0, m_src_vertices.prev(m_src_vertices.size() - 3).y);
|
||||
m_spline_x.add_point(1.0, m_src_vertices[m_src_vertices.size() - 3].x);
|
||||
m_spline_y.add_point(1.0, m_src_vertices[m_src_vertices.size() - 3].y);
|
||||
m_spline_x.add_point(2.0, m_src_vertices[m_src_vertices.size() - 2].x);
|
||||
m_spline_y.add_point(2.0, m_src_vertices[m_src_vertices.size() - 2].y);
|
||||
m_spline_x.add_point(3.0, m_src_vertices[m_src_vertices.size() - 1].x);
|
||||
m_spline_y.add_point(3.0, m_src_vertices[m_src_vertices.size() - 1].y);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_spline_x.init(m_src_vertices.size());
|
||||
m_spline_y.init(m_src_vertices.size());
|
||||
}
|
||||
unsigned i;
|
||||
for(i = 0; i < m_src_vertices.size(); i++)
|
||||
{
|
||||
double x = m_closed ? i + 4 : i;
|
||||
m_spline_x.add_point(x, m_src_vertices[i].x);
|
||||
m_spline_y.add_point(x, m_src_vertices[i].y);
|
||||
}
|
||||
m_cur_abscissa = 0.0;
|
||||
m_max_abscissa = m_src_vertices.size() - 1;
|
||||
if(m_closed)
|
||||
{
|
||||
m_cur_abscissa = 4.0;
|
||||
m_max_abscissa += 5.0;
|
||||
m_spline_x.add_point(m_src_vertices.size() + 4, m_src_vertices[0].x);
|
||||
m_spline_y.add_point(m_src_vertices.size() + 4, m_src_vertices[0].y);
|
||||
m_spline_x.add_point(m_src_vertices.size() + 5, m_src_vertices[1].x);
|
||||
m_spline_y.add_point(m_src_vertices.size() + 5, m_src_vertices[1].y);
|
||||
m_spline_x.add_point(m_src_vertices.size() + 6, m_src_vertices[2].x);
|
||||
m_spline_y.add_point(m_src_vertices.size() + 6, m_src_vertices[2].y);
|
||||
m_spline_x.add_point(m_src_vertices.size() + 7, m_src_vertices.next(2).x);
|
||||
m_spline_y.add_point(m_src_vertices.size() + 7, m_src_vertices.next(2).y);
|
||||
}
|
||||
m_spline_x.prepare();
|
||||
m_spline_y.prepare();
|
||||
}
|
||||
m_status = ready;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
unsigned vcgen_bcspline::vertex(double* x, double* y)
|
||||
{
|
||||
unsigned cmd = path_cmd_line_to;
|
||||
while(!is_stop(cmd))
|
||||
{
|
||||
switch(m_status)
|
||||
{
|
||||
case initial:
|
||||
rewind(0);
|
||||
|
||||
case ready:
|
||||
if(m_src_vertices.size() < 2)
|
||||
{
|
||||
cmd = path_cmd_stop;
|
||||
break;
|
||||
}
|
||||
|
||||
if(m_src_vertices.size() == 2)
|
||||
{
|
||||
*x = m_src_vertices[m_src_vertex].x;
|
||||
*y = m_src_vertices[m_src_vertex].y;
|
||||
m_src_vertex++;
|
||||
if(m_src_vertex == 1) return path_cmd_move_to;
|
||||
if(m_src_vertex == 2) return path_cmd_line_to;
|
||||
cmd = path_cmd_stop;
|
||||
break;
|
||||
}
|
||||
|
||||
cmd = path_cmd_move_to;
|
||||
m_status = polygon;
|
||||
m_src_vertex = 0;
|
||||
|
||||
case polygon:
|
||||
if(m_cur_abscissa >= m_max_abscissa)
|
||||
{
|
||||
if(m_closed)
|
||||
{
|
||||
m_status = end_poly;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
*x = m_src_vertices[m_src_vertices.size() - 1].x;
|
||||
*y = m_src_vertices[m_src_vertices.size() - 1].y;
|
||||
m_status = end_poly;
|
||||
return path_cmd_line_to;
|
||||
}
|
||||
}
|
||||
|
||||
*x = m_spline_x.get(m_cur_abscissa);
|
||||
*y = m_spline_y.get(m_cur_abscissa);
|
||||
m_src_vertex++;
|
||||
m_cur_abscissa += m_interpolation_step;
|
||||
return (m_src_vertex == 1) ? path_cmd_move_to : path_cmd_line_to;
|
||||
|
||||
case end_poly:
|
||||
m_status = stop;
|
||||
return path_cmd_end_poly | m_closed;
|
||||
|
||||
case stop:
|
||||
return path_cmd_stop;
|
||||
}
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,83 +0,0 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// Anti-Grain Geometry (AGG) - Version 2.5
|
||||
// A high quality rendering engine for C++
|
||||
// Copyright (C) 2002-2006 Maxim Shemanarev
|
||||
// Contact: mcseem@antigrain.com
|
||||
// mcseemagg@yahoo.com
|
||||
// http://antigrain.com
|
||||
//
|
||||
// AGG 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.
|
||||
//
|
||||
// AGG 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 AGG; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
// MA 02110-1301, USA.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#ifndef AGG_vcgen_bcspline_INCLUDED
|
||||
#define AGG_vcgen_bcspline_INCLUDED
|
||||
|
||||
#include "agg_basics.h"
|
||||
#include "agg_array.h"
|
||||
#include "agg_bcspline.h"
|
||||
|
||||
|
||||
namespace agg
|
||||
{
|
||||
|
||||
//==========================================================vcgen_bcspline
|
||||
class vcgen_bcspline
|
||||
{
|
||||
enum status_e
|
||||
{
|
||||
initial,
|
||||
ready,
|
||||
polygon,
|
||||
end_poly,
|
||||
stop
|
||||
};
|
||||
|
||||
public:
|
||||
typedef pod_bvector<point_d, 6> vertex_storage;
|
||||
|
||||
vcgen_bcspline();
|
||||
|
||||
void interpolation_step(double v) { m_interpolation_step = v; }
|
||||
double interpolation_step() const { return m_interpolation_step; }
|
||||
|
||||
// Vertex Generator Interface
|
||||
void remove_all();
|
||||
void add_vertex(double x, double y, unsigned cmd);
|
||||
|
||||
// Vertex Source Interface
|
||||
void rewind(unsigned path_id);
|
||||
unsigned vertex(double* x, double* y);
|
||||
|
||||
private:
|
||||
vcgen_bcspline(const vcgen_bcspline&);
|
||||
const vcgen_bcspline& operator = (const vcgen_bcspline&);
|
||||
|
||||
vertex_storage m_src_vertices;
|
||||
bcspline m_spline_x;
|
||||
bcspline m_spline_y;
|
||||
double m_interpolation_step;
|
||||
unsigned m_closed;
|
||||
status_e m_status;
|
||||
unsigned m_src_vertex;
|
||||
double m_cur_abscissa;
|
||||
double m_max_abscissa;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -1,20 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "agg_path_storage.h"
|
||||
|
||||
class agghelper
|
||||
{
|
||||
public:
|
||||
|
||||
static agg::path_storage RectanglePath(double left, double right, double top, double bottom)
|
||||
{
|
||||
agg::path_storage path;
|
||||
path.move_to(left,top);
|
||||
path.line_to(right,top);
|
||||
path.line_to(right,bottom);
|
||||
path.line_to(left,bottom);
|
||||
path.line_to(left,top);
|
||||
return path;
|
||||
}
|
||||
|
||||
};
|
@ -1,741 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: assdraw.cpp
|
||||
// Purpose: ASSDraw main source file
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#include "assdraw.hpp"
|
||||
#include "enums.hpp"
|
||||
#include "include_once.hpp"
|
||||
#include <wx/clipbrd.h>
|
||||
#include <wx/wfstream.h>
|
||||
#include <wx/filename.h>
|
||||
#include <wx/dynlib.h>
|
||||
#include <wx/stdpaths.h>
|
||||
|
||||
#if !defined(__WINDOWS__)
|
||||
#include "xpm/res.h"
|
||||
#endif
|
||||
|
||||
/////////////
|
||||
// Libraries
|
||||
#ifdef __VISUALC__
|
||||
#pragma comment(lib, "Vfw32.lib")
|
||||
#pragma comment(lib, "comctl32.lib")
|
||||
#pragma comment(lib, "rpcrt4.lib")
|
||||
#pragma comment(lib, "winmm.lib")
|
||||
#pragma comment(lib, "advapi32.lib")
|
||||
#pragma comment(lib, "wsock32.lib")
|
||||
#ifdef __WXDEBUG__
|
||||
#pragma comment(lib, "wxmsw28ud_propgrid.lib")
|
||||
#else
|
||||
#pragma comment(lib, "wxmsw28u_propgrid.lib")
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
//DEFINE_EVENT_TYPE(wxEVT_SETTINGS_CHANGED)
|
||||
|
||||
// initialize wxWidget to accept our App class
|
||||
IMPLEMENT_APP(ASSDrawApp)
|
||||
|
||||
BEGIN_EVENT_TABLE(ASSDrawFrame, wxFrame)
|
||||
EVT_TOOL(TB_CLEAR, ASSDrawFrame::OnSelect_Clear)
|
||||
EVT_TOOL(TB_PREVIEW, ASSDrawFrame::OnSelect_Preview)
|
||||
EVT_TOOL(TB_TRANSFORM, ASSDrawFrame::OnSelect_Transform)
|
||||
EVT_TOOL_RANGE(MODE_ARR, MODE_DEL, ASSDrawFrame::OnChoose_Mode)
|
||||
EVT_TOOL_RCLICKED(wxID_ANY, ASSDrawFrame::OnToolRClick)
|
||||
EVT_COMMAND(wxID_ANY, wxEVT_SETTINGS_CHANGED, ASSDrawFrame::OnSettingsChanged)
|
||||
EVT_MENU_RANGE(MENU_TB_ALL, MENU_TB_BGIMG, ASSDrawFrame::OnChoose_TBarRClickMenu)
|
||||
EVT_MENU(MENU_CLEAR, ASSDrawFrame::OnSelect_Clear)
|
||||
EVT_MENU(MENU_PREVIEW, ASSDrawFrame::OnSelect_Preview)
|
||||
EVT_MENU(MENU_TRANSFORM, ASSDrawFrame::OnSelect_Transform)
|
||||
EVT_MENU(MENU_LIBRARY, ASSDrawFrame::OnSelect_Library)
|
||||
EVT_MENU(MENU_SETTINGS, ASSDrawFrame::OnSelect_Settings)
|
||||
EVT_MENU(MENU_RESETPERSPECTIVE, ASSDrawFrame::OnSelect_ResetPerspective)
|
||||
EVT_MENU(MENU_HELP, ASSDrawFrame::OnSelect_Help)
|
||||
EVT_MENU(wxID_ABOUT, ASSDrawFrame::OnSelect_About)
|
||||
EVT_MENU(MENU_UNDO, ASSDrawFrame::OnSelect_Undo)
|
||||
EVT_MENU(MENU_REDO, ASSDrawFrame::OnSelect_Redo)
|
||||
EVT_MENU(MENU_PASTE, ASSDrawFrame::OnSelect_Paste)
|
||||
EVT_MENU(MENU_BGIMG_REMOVE, ASSDrawFrame::OnSelect_RemoveBG)
|
||||
EVT_MENU(MENU_BGIMG_ALPHA, ASSDrawFrame::OnSelect_AlphaBG)
|
||||
EVT_MENU_RANGE(MODE_ARR, MODE_NUT_BILINEAR, ASSDrawFrame::OnChoose_Mode)
|
||||
EVT_MENU_RANGE(MENU_REPOS_TOPLEFT, MENU_REPOS_BOTRIGHT, ASSDrawFrame::OnChoose_Recenter)
|
||||
EVT_MENU_RANGE(MENU_REPOS_BGTOPLEFT, MENU_REPOS_BGBOTRIGHT, ASSDrawFrame::OnChoose_RecenterToBG)
|
||||
EVT_CLOSE(ASSDrawFrame::OnClose)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// the application class: ASSDrawApp
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// 'Main program' equivalent: the program execution _T("starts") here
|
||||
bool ASSDrawApp::OnInit()
|
||||
{
|
||||
SetAppName(TITLE);
|
||||
// create the main application window
|
||||
ASSDrawFrame * assdrawframe = new ASSDrawFrame( this, TITLE, wxDefaultPosition, wxSize(640, 480) );
|
||||
SetTopWindow(assdrawframe);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// main frame: ASSDrawFrame
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// constructor
|
||||
|
||||
ASSDrawFrame::ASSDrawFrame( wxApp *app, const wxString& title, const wxPoint& pos, const wxSize& size, long style)
|
||||
: wxFrame(NULL, wxID_ANY, title, pos, size, style)
|
||||
{
|
||||
m_app = app;
|
||||
m_mgr.SetManagedWindow(this);
|
||||
#ifndef __UNIX__
|
||||
m_mgr.SetFlags(m_mgr.GetFlags() | wxAUI_MGR_ALLOW_ACTIVE_PANE);
|
||||
#else
|
||||
m_mgr.SetFlags(wxAUI_MGR_ALLOW_FLOATING | wxAUI_MGR_ALLOW_ACTIVE_PANE | wxAUI_MGR_RECTANGLE_HINT);
|
||||
#endif
|
||||
|
||||
// set the frame icon
|
||||
SetIcon(wxICON(appico));
|
||||
|
||||
// Create status bar for the frame
|
||||
CreateStatusBar(3);
|
||||
int statwidths[] = { 64, -1, 64 };
|
||||
GetStatusBar()->SetStatusWidths(3, statwidths);
|
||||
SetStatusBarPane(1);
|
||||
|
||||
InitializeDefaultSettings();
|
||||
|
||||
// load config
|
||||
configfile = wxFileName(wxStandardPaths::Get().GetUserDataDir(), _T("ASSDraw3.cfg")).GetFullPath();
|
||||
|
||||
bool firsttime = !::wxFileExists(configfile);
|
||||
if (firsttime) {
|
||||
wxFileName::Mkdir(wxStandardPaths::Get().GetUserDataDir(), wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL);
|
||||
wxFileOutputStream(configfile).Close();
|
||||
}
|
||||
wxFileInputStream cfgf(configfile);
|
||||
config = new wxFileConfig(cfgf);
|
||||
|
||||
// nullify transformdlg
|
||||
transformdlg = NULL;
|
||||
|
||||
Maximize(true);
|
||||
Show(true); // to get the right client size, must call Show() first
|
||||
|
||||
// config
|
||||
LoadSettings();
|
||||
|
||||
// THE CANVAS
|
||||
m_canvas = new ASSDrawCanvas( this , this );
|
||||
|
||||
// shapes library
|
||||
shapelib = new ASSDrawShapeLibrary(this, this);
|
||||
|
||||
// source text ctrl
|
||||
srctxtctrl = new ASSDrawSrcTxtCtrl(this, this);
|
||||
|
||||
// settings
|
||||
settingsdlg = new ASSDrawSettingsDialog(this, this);
|
||||
settingsdlg->Init();
|
||||
|
||||
SetMenus();
|
||||
SetToolBars();
|
||||
SetPanes();
|
||||
|
||||
// config
|
||||
|
||||
config->SetPath(_T("info"));
|
||||
wxString version;
|
||||
config->Read(_T("version"), &version);
|
||||
config->SetPath(_T(".."));
|
||||
|
||||
default_perspective = m_mgr.SavePerspective(); // back up default perspective
|
||||
config->SetPath(_T("perspective"));
|
||||
wxString perspective;
|
||||
if (config->Read(_T("perspective"), &perspective) && version == VERSION) m_mgr.LoadPerspective(perspective, false);
|
||||
config->SetPath(_T(".."));
|
||||
|
||||
config->SetPath(_T("library"));
|
||||
int n = 0;
|
||||
config->Read(_T("n"), &n);
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
wxString libcmds;
|
||||
config->Read(wxString::Format(_T("%d"),i), &libcmds);
|
||||
shapelib->AddShapePreview(libcmds);
|
||||
}
|
||||
config->SetPath(_T(".."));
|
||||
|
||||
m_mgr.Update();
|
||||
m_canvas->SetFocus();
|
||||
m_canvas->Show();
|
||||
|
||||
wxSize clientsize = m_canvas->GetClientSize();
|
||||
m_canvas->ChangeZoomLevelTo(DEFAULT_SCALE, wxPoint(clientsize.x / 2, clientsize.y / 2));
|
||||
m_canvas->MoveCanvasOriginTo(clientsize.x / 2, clientsize.y / 2);
|
||||
UpdateASSCommandStringToSrcTxtCtrl(m_canvas->GenerateASS());
|
||||
|
||||
UpdateFrameUI();
|
||||
ApplySettings();
|
||||
|
||||
if (firsttime)
|
||||
_About();
|
||||
else if (!behaviors.nosplashscreen)
|
||||
_About(3);
|
||||
|
||||
helpcontroller.SetParentWindow(this);
|
||||
helpcontroller.Initialize(wxFileName(::wxGetCwd(), _T("ASSDraw3.chm")).GetFullPath());
|
||||
}
|
||||
|
||||
void ASSDrawFrame::SetToolBars()
|
||||
{
|
||||
drawtbar = new wxToolBar(this, wxID_ANY, __DPDS__ , wxTB_FLAT | wxTB_TEXT | wxTB_NODIVIDER | wxTB_HORIZONTAL);
|
||||
drawtbar->AddTool(TB_CLEAR, _T("Clear"), wxBITMAP(new_), wxNullBitmap, wxITEM_NORMAL, _T(""), TIPS_CLEAR);
|
||||
//tbar->AddTool(TB_EDITSRC, _T("Source"), wxBITMAP(src_), wxNullBitmap, wxITEM_NORMAL, _T(""), TIPS_EDITSRC);
|
||||
drawtbar->AddCheckTool(TB_PREVIEW, _T("Preview"), wxBITMAP(preview_), wxNullBitmap, _T(""), TIPS_PREVIEW);
|
||||
//drawtbar->AddTool(TB_TRANSFORM, _T("Transform"), wxBITMAP(rot_), wxNullBitmap, wxITEM_NORMAL, _T(""), TIPS_TRANSFORM);
|
||||
zoomslider = new wxSlider(drawtbar, TB_ZOOMSLIDER, 1000, 100, 5000, __DPDS__ );
|
||||
//zoomslider->SetSize(280, zoomslider->GetSize().y);
|
||||
zoomslider->Connect(wxEVT_SCROLL_LINEUP, wxScrollEventHandler(ASSDrawFrame::OnZoomSliderChanged), NULL, this);
|
||||
zoomslider->Connect(wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler(ASSDrawFrame::OnZoomSliderChanged), NULL, this);
|
||||
zoomslider->Connect(wxEVT_SCROLL_PAGEUP, wxScrollEventHandler(ASSDrawFrame::OnZoomSliderChanged), NULL, this);
|
||||
zoomslider->Connect(wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler(ASSDrawFrame::OnZoomSliderChanged), NULL, this);
|
||||
zoomslider->Connect(wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler(ASSDrawFrame::OnZoomSliderChanged), NULL, this);
|
||||
zoomslider->Connect(wxEVT_SCROLL_CHANGED, wxScrollEventHandler(ASSDrawFrame::OnZoomSliderChanged), NULL, this);
|
||||
drawtbar->AddControl(zoomslider);
|
||||
drawtbar->Realize();
|
||||
|
||||
m_mgr.AddPane(drawtbar, wxAuiPaneInfo().Name(_T("drawtbar")).Caption(TBNAME_DRAW).
|
||||
ToolbarPane().Top().Position(0).Dockable(true).LeftDockable(false).RightDockable(false));
|
||||
|
||||
modetbar = new wxToolBar(this, wxID_ANY, __DPDS__ , wxTB_FLAT | wxTB_TEXT | wxTB_NODIVIDER | wxTB_HORIZONTAL);
|
||||
modetbar->AddRadioTool(MODE_ARR, _T("Drag"), wxBITMAP(arr_), wxNullBitmap, _T(""), TIPS_ARR);
|
||||
modetbar->AddRadioTool(MODE_M, _T("Move"), wxBITMAP(m_), wxNullBitmap, _T(""), TIPS_M);
|
||||
//modetbar->AddRadioTool(MODE_N, _T("Move*"), wxBITMAP(n_), wxNullBitmap, _T(""), TIPS_N);
|
||||
modetbar->AddRadioTool(MODE_L, _T("Line"), wxBITMAP(l_), wxNullBitmap, _T(""), TIPS_L);
|
||||
modetbar->AddRadioTool(MODE_B, _T("Bezier"), wxBITMAP(b_), wxNullBitmap, _T(""), TIPS_B);
|
||||
//modetbar->AddRadioTool(MODE_S, _T("Spline"), wxBITMAP(s_), wxNullBitmap, _T(""), TIPS_S);
|
||||
//modetbar->AddRadioTool(MODE_P, _T("Extend"), wxBITMAP(p_), wxNullBitmap, _T(""), TIPS_P);
|
||||
//modetbar->AddRadioTool(MODE_C, _T("Close"), wxBITMAP(c_), wxNullBitmap, _T(""), TIPS_C);
|
||||
modetbar->AddRadioTool(MODE_DEL, _T("Delete"), wxBITMAP(del_), wxNullBitmap, _T(""), TIPS_DEL);
|
||||
modetbar->AddRadioTool(MODE_SCALEROTATE, _T("Scale/Rotate"), wxBITMAP(sc_rot_), wxNullBitmap, _T(""), TIPS_SCALEROTATE);
|
||||
modetbar->AddRadioTool(MODE_NUT_BILINEAR, _T("Bilinear"), wxBITMAP(nut_), wxNullBitmap, _T(""), TIPS_NUTB);
|
||||
//modetbar->AddRadioTool(MODE_NUT_PERSPECTIVE, _T("NUT:P"), wxBITMAP(arr_), wxNullBitmap, _T(""), _T(""));
|
||||
modetbar->Realize();
|
||||
|
||||
m_mgr.AddPane(modetbar, wxAuiPaneInfo().Name(_T("modetbar")).Caption(TBNAME_MODE).
|
||||
ToolbarPane().Top().Position(1).Dockable(true).LeftDockable(false).RightDockable(false));
|
||||
|
||||
bgimgtbar = new wxToolBar(this, wxID_ANY, __DPDS__ , wxTB_FLAT | wxTB_TEXT | wxTB_NODIVIDER | wxTB_HORIZONTAL);
|
||||
bgimgtbar->SetToolBitmapSize(wxSize(24,15));
|
||||
bgimgtbar->AddCheckTool(DRAG_DWG, _T("Pan drawing"), wxBITMAP(pan_shp), wxNullBitmap, _T(""), TIPS_DWG);
|
||||
bgimgtbar->AddCheckTool(DRAG_BGIMG, _T("Pan background"), wxBITMAP(pan_bg), wxNullBitmap, _T(""), TIPS_BGIMG);
|
||||
//bgimgtbar->AddRadioTool(DRAG_BOTH, _T("Pan both"), wxBITMAP(pan_both), wxNullBitmap, _T(""), TIPS_BOTH);
|
||||
bgimgtbar->Realize();
|
||||
|
||||
m_mgr.AddPane(bgimgtbar, wxAuiPaneInfo().Name(_T("bgimgtbar")).Caption(TBNAME_BGIMG).
|
||||
ToolbarPane().Top().Position(2).Dockable(true).LeftDockable(false).RightDockable(false));
|
||||
|
||||
}
|
||||
|
||||
void ASSDrawFrame::SetMenus()
|
||||
{
|
||||
drawMenu = new wxMenu;
|
||||
drawMenu->Append(MENU_CLEAR, _T("&Clear\tCtrl+N"), TIPS_CLEAR);
|
||||
//drawMenu->Append(MENU_EDITSRC, _T("&Source"), TIPS_EDITSRC);
|
||||
drawMenu->Append(MENU_PREVIEW, _T("&Preview\tCtrl+P"), TIPS_PREVIEW, wxITEM_CHECK);
|
||||
drawMenu->Append(MENU_TRANSFORM, _T("&Transform"), TIPS_TRANSFORM);
|
||||
drawMenu->Append(MENU_PASTE, _T("&Paste\tCtrl+V"), TIPS_PASTE);
|
||||
drawMenu->AppendSeparator();
|
||||
drawMenu->Append(MENU_UNDO, _T("&Undo\tCtrl+Z"), TIPS_UNDO);
|
||||
drawMenu->Append(MENU_REDO, _T("&Redo\tCtrl+Y"), TIPS_REDO);
|
||||
drawMenu->Enable(MENU_UNDO, false);
|
||||
drawMenu->Enable(MENU_REDO, false);
|
||||
|
||||
modeMenu = new wxMenu;
|
||||
modeMenu->Append(MODE_ARR, _T("D&rag\tF1"), TIPS_ARR, wxITEM_RADIO);
|
||||
modeMenu->Append(MODE_M, _T("Draw &M\tF2"), TIPS_M, wxITEM_RADIO);
|
||||
modeMenu->Append(MODE_L, _T("Draw &L\tF3"), TIPS_L, wxITEM_RADIO);
|
||||
modeMenu->Append(MODE_B, _T("Draw &B\tF4"), TIPS_B, wxITEM_RADIO);
|
||||
modeMenu->Append(MODE_DEL, _T("&Delete\tF5"), TIPS_DEL, wxITEM_RADIO);
|
||||
modeMenu->Append(MODE_SCALEROTATE, _T("&Scale/Rotate\tF6"), TIPS_NUTB, wxITEM_RADIO);
|
||||
modeMenu->Append(MODE_NUT_BILINEAR, _T("&Bilinear transformation\tF7"), TIPS_SCALEROTATE, wxITEM_RADIO);
|
||||
|
||||
bgimgMenu = new wxMenu;
|
||||
bgimgMenu->Append(DRAG_DWG, _T("Pan/Zoom &Drawing\tShift+F1"), TIPS_DWG, wxITEM_CHECK);
|
||||
bgimgMenu->Append(DRAG_BGIMG, _T("Pan/Zoom Back&ground\tShift+F2"), TIPS_BGIMG, wxITEM_CHECK);
|
||||
bgimgMenu->AppendSeparator();
|
||||
bgimgMenu->Append(MENU_BGIMG_ALPHA, _T("Set background image opacity"), _T(""));
|
||||
wxMenu* reposbgMenu = new wxMenu;
|
||||
reposbgMenu->Append( MENU_REPOS_BGTOPLEFT, _T("Top left\tCtrl+Shift+7") );
|
||||
reposbgMenu->Append( MENU_REPOS_BGTOPRIGHT, _T("Top right\tCtrl+Shift+9") );
|
||||
reposbgMenu->Append( MENU_REPOS_BGCENTER, _T("&Center\tCtrl+Shift+5") );
|
||||
reposbgMenu->Append( MENU_REPOS_BGBOTLEFT, _T("Bottom left\tCtrl+Shift+1") );
|
||||
reposbgMenu->Append( MENU_REPOS_BGBOTRIGHT, _T("Bottom right\tCtrl+Shift+3") );
|
||||
bgimgMenu->Append(MENU_BGIMG_RECENTER, _T("Reposition [&0, 0]"), reposbgMenu);
|
||||
bgimgMenu->Append(MENU_BGIMG_REMOVE, _T("Remove background\tShift+Del"), _T(""));
|
||||
|
||||
wxMenu* reposMenu = new wxMenu;
|
||||
reposMenu->Append( MENU_REPOS_TOPLEFT, _T("Top left\tCtrl+7") );
|
||||
reposMenu->Append( MENU_REPOS_TOPRIGHT, _T("Top right\tCtrl+9") );
|
||||
reposMenu->Append( MENU_REPOS_CENTER, _T("&Center\tCtrl+5") );
|
||||
reposMenu->Append( MENU_REPOS_BOTLEFT, _T("Bottom left\tCtrl+1") );
|
||||
reposMenu->Append( MENU_REPOS_BOTRIGHT, _T("Bottom right\tCtrl+3") );
|
||||
|
||||
tbarMenu = new wxMenu;
|
||||
tbarMenu->AppendCheckItem(MENU_TB_DRAW, TBNAME_DRAW);
|
||||
tbarMenu->AppendCheckItem(MENU_TB_MODE, TBNAME_MODE);
|
||||
tbarMenu->AppendCheckItem(MENU_TB_BGIMG, TBNAME_BGIMG);
|
||||
tbarMenu->AppendSeparator();
|
||||
tbarMenu->Append(MENU_TB_ALL, _T("Show all"));
|
||||
tbarMenu->Append(MENU_TB_NONE, _T("Hide all"));
|
||||
tbarMenu->Append(MENU_TB_DOCK, _T("Dock all"));
|
||||
tbarMenu->Append(MENU_TB_UNDOCK, _T("Undock all"));
|
||||
|
||||
viewMenu = new wxMenu;
|
||||
viewMenu->Append(MENU_LIBRARY, _T("&Library"), TIPS_LIBRARY, wxITEM_CHECK);
|
||||
if (settingsdlg)
|
||||
viewMenu->Append(MENU_SETTINGS, _T("&Settings"), _T(""), wxITEM_CHECK);
|
||||
viewMenu->Append(MENU_TBAR, _T("&Toolbars"), tbarMenu);
|
||||
viewMenu->Append(MENU_RECENTER, _T("Reposition [&0, 0]"), reposMenu);
|
||||
viewMenu->AppendSeparator();
|
||||
viewMenu->Append(MENU_RESETPERSPECTIVE, _T("&Reset workspace"));
|
||||
|
||||
wxMenu* helpMenu = new wxMenu;
|
||||
helpMenu->Append(MENU_HELP, _T("&Manual"));
|
||||
helpMenu->Append(wxID_ABOUT, _T("&About"));
|
||||
|
||||
wxMenuBar *menuBar = new wxMenuBar();
|
||||
menuBar->Append(drawMenu, _T("&Canvas"));
|
||||
menuBar->Append(modeMenu, _T("&Mode"));
|
||||
menuBar->Append(bgimgMenu, _T("&Background"));
|
||||
menuBar->Append(viewMenu, _T("&Workspace"));
|
||||
menuBar->Append(helpMenu, _T("&Help"));
|
||||
|
||||
|
||||
SetMenuBar(menuBar);
|
||||
}
|
||||
|
||||
void ASSDrawFrame::SetPanes()
|
||||
{
|
||||
m_mgr.AddPane(shapelib, wxAuiPaneInfo().Name(_T("library")).Caption(_T("Shapes Library")).
|
||||
Right().Layer(2).Position(0).CloseButton(true).BestSize(wxSize(120, 480)).MinSize(wxSize(100, 200)));
|
||||
|
||||
m_mgr.AddPane(m_canvas, wxAuiPaneInfo().Name(_T("canvas")).CenterPane());
|
||||
|
||||
m_mgr.AddPane(srctxtctrl, wxAuiPaneInfo().Name(_T("commands")).Caption(_T("Drawing commands")).
|
||||
Bottom().Layer(1).CloseButton(false).BestSize(wxSize(320, 48)));
|
||||
|
||||
if (settingsdlg)
|
||||
m_mgr.AddPane(settingsdlg, wxAuiPaneInfo().Name(_T("settings")).Caption(_T("Settings")).
|
||||
Right().Layer(3).Position(0).CloseButton(true).BestSize(wxSize(240, 480)).MinSize(wxSize(200, 200)).Show(false));
|
||||
}
|
||||
|
||||
ASSDrawFrame::~ASSDrawFrame()
|
||||
{
|
||||
config->SetPath(_T("info"));
|
||||
config->Write(_T("assdraw3.exe"), wxStandardPaths::Get().GetExecutablePath());
|
||||
config->Write(_T("version"), VERSION);
|
||||
config->SetPath(_T(".."));
|
||||
|
||||
SaveSettings();
|
||||
|
||||
config->SetPath(_T("perspective"));
|
||||
config->Write(_T("perspective"), m_mgr.SavePerspective());
|
||||
config->SetPath(_T(".."));
|
||||
|
||||
config->DeleteGroup(_T("library"));
|
||||
config->SetPath(_T("library"));
|
||||
typedef std::vector< ASSDrawShapePreview *> PrevVec;
|
||||
PrevVec shapes = shapelib->GetShapePreviews();
|
||||
int n = shapes.size();
|
||||
config->Write(_T("n"), n);
|
||||
for (int i = 0; i < n; i++)
|
||||
config->Write(wxString::Format(_T("%d"),i), shapes[i]->GenerateASS());
|
||||
config->SetPath(_T(".."));
|
||||
|
||||
wxFileOutputStream cfgf(configfile);
|
||||
config->Save(cfgf);
|
||||
delete config;
|
||||
|
||||
if (settingsdlg) settingsdlg->Destroy(); // we need this since wxPropertyGrid must be Clear()ed before deleting
|
||||
|
||||
m_mgr.UnInit();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_Clear()
|
||||
{
|
||||
wxMessageDialog msgb(this, _T("Clear the canvas and create a new drawing?"),
|
||||
_T("Confirmation"), wxOK | wxCANCEL | wxICON_QUESTION );
|
||||
if (msgb.ShowModal() == wxID_OK)
|
||||
{
|
||||
m_canvas->RefreshUndocmds();
|
||||
m_canvas->AddUndo(_T("Clear canvas"));
|
||||
m_canvas->ResetEngine(true);
|
||||
wxSize siz = m_canvas->GetClientSize();
|
||||
m_canvas->ChangeZoomLevelTo(DEFAULT_SCALE, wxPoint(siz.x / 2, siz.y / 2));
|
||||
m_canvas->MoveCanvasOriginTo(siz.x / 2, siz.y / 2);
|
||||
UpdateUndoRedoMenu();
|
||||
m_canvas->RefreshDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_Preview()
|
||||
{
|
||||
m_canvas->SetPreviewMode( !m_canvas->IsPreviewMode() );
|
||||
UpdateFrameUI();
|
||||
m_canvas->RefreshDisplay();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_ToggleLibrary()
|
||||
{
|
||||
m_mgr.GetPane(shapelib).Show(!m_mgr.GetPane(shapelib).IsShown());
|
||||
m_mgr.Update();
|
||||
UpdateFrameUI();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_ToggleSettings()
|
||||
{
|
||||
if (settingsdlg == NULL) return;
|
||||
m_mgr.GetPane(settingsdlg).Show(!m_mgr.GetPane(settingsdlg).IsShown());
|
||||
m_mgr.Update();
|
||||
UpdateFrameUI();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_ResetPerspective()
|
||||
{
|
||||
m_mgr.LoadPerspective(default_perspective, false);
|
||||
UpdateFrameUI();
|
||||
m_mgr.Update();
|
||||
DRAGMODE bck = m_canvas->GetDragMode();
|
||||
if (m_canvas->HasBackgroundImage()) m_canvas->SetDragMode(DRAGMODE(true, true));
|
||||
wxSize clientsize = m_canvas->GetClientSize();
|
||||
m_canvas->ChangeZoomLevelTo(DEFAULT_SCALE, wxPoint(clientsize.x / 2, clientsize.y / 2));
|
||||
m_canvas->MoveCanvasOriginTo(clientsize.x / 2, clientsize.y / 2);
|
||||
m_canvas->SetDragMode(bck);
|
||||
UpdateFrameUI();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_Transform()
|
||||
{
|
||||
if (transformdlg == NULL)
|
||||
transformdlg = new ASSDrawTransformDlg( this );
|
||||
|
||||
if (transformdlg->ShowModal() == wxID_OK)
|
||||
{
|
||||
m_canvas->Transform(
|
||||
transformdlg->xformvals.f1,
|
||||
transformdlg->xformvals.f2,
|
||||
transformdlg->xformvals.f3,
|
||||
transformdlg->xformvals.f4,
|
||||
transformdlg->xformvals.f5,
|
||||
transformdlg->xformvals.f6,
|
||||
transformdlg->xformvals.f7,
|
||||
transformdlg->xformvals.f8 );
|
||||
m_canvas->AddUndo(_T("Transform"));
|
||||
m_canvas->RefreshDisplay();
|
||||
UpdateUndoRedoMenu();
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_Paste()
|
||||
{
|
||||
if (wxTheClipboard->Open())
|
||||
{
|
||||
if (wxTheClipboard->IsSupported( wxDF_BITMAP ))
|
||||
{
|
||||
wxBitmapDataObject data;
|
||||
wxTheClipboard->GetData( data );
|
||||
m_canvas->SetBackgroundImage( data.GetBitmap().ConvertToImage() );
|
||||
//m_canvas->AskUserForBackgroundAlpha();
|
||||
}
|
||||
else if (wxTheClipboard->IsSupported( wxDF_TEXT ))
|
||||
{
|
||||
wxTextDataObject data;
|
||||
wxTheClipboard->GetData( data );
|
||||
UpdateASSCommandStringToSrcTxtCtrl( data.GetText() );
|
||||
}
|
||||
wxTheClipboard->Close();
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnChoose_Recenter(wxCommandEvent& event)
|
||||
{
|
||||
int x = 0, y = 0;
|
||||
wxSize f = m_canvas->GetClientSize();
|
||||
|
||||
switch (event.GetId())
|
||||
{
|
||||
case MENU_REPOS_TOPLEFT: x = 0, y = 0; break;
|
||||
case MENU_REPOS_TOPRIGHT: x = f.x, y = 0; break;
|
||||
case MENU_REPOS_CENTER: x = f.x / 2, y = f.y / 2; break;
|
||||
case MENU_REPOS_BOTLEFT: x = 0, y = f.y; break;
|
||||
case MENU_REPOS_BOTRIGHT: x = f.x, y = f.y; break;
|
||||
}
|
||||
|
||||
m_canvas->MoveCanvasOriginTo(x, y);
|
||||
m_canvas->RefreshDisplay();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnChoose_RecenterToBG(wxCommandEvent& event)
|
||||
{
|
||||
unsigned w, h;
|
||||
wxRealPoint disp;
|
||||
double scale;
|
||||
if (m_canvas->GetBackgroundInfo(w, h, disp, scale))
|
||||
{
|
||||
int x = 0, y = 0;
|
||||
int lx = (int)disp.x, ty = (int)disp.y;
|
||||
int rx = lx + (int)(w * scale);
|
||||
int by = ty + (int)(h * scale);
|
||||
|
||||
switch (event.GetId())
|
||||
{
|
||||
case MENU_REPOS_BGTOPLEFT: x = lx, y = ty; break;
|
||||
case MENU_REPOS_BGTOPRIGHT: x = rx, y = ty; break;
|
||||
case MENU_REPOS_BGCENTER: x = (rx + lx) / 2, y = (by + ty) / 2; break;
|
||||
case MENU_REPOS_BGBOTLEFT: x = lx, y = by; break;
|
||||
case MENU_REPOS_BGBOTRIGHT: x = rx, y = by; break;
|
||||
}
|
||||
|
||||
m_canvas->MoveCanvasDrawing(x - m_canvas->GetOriginX(), y - m_canvas->GetOriginY());
|
||||
m_canvas->RefreshDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_Help()
|
||||
{
|
||||
helpcontroller.DisplayContents();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::_About(unsigned timeout)
|
||||
{
|
||||
ASSDrawAboutDlg *aboutdlg = new ASSDrawAboutDlg( this, timeout );
|
||||
aboutdlg->ShowModal();
|
||||
aboutdlg->Destroy();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnChoose_Mode(wxCommandEvent& event)
|
||||
{
|
||||
m_canvas->SetDrawMode( (MODE) event.GetId() );
|
||||
UpdateFrameUI();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnChoose_DragMode(wxCommandEvent& event)
|
||||
{
|
||||
DRAGMODE dm = m_canvas->GetDragMode();
|
||||
switch (event.GetId())
|
||||
{
|
||||
case DRAG_DWG: dm.drawing = !dm.drawing; break;
|
||||
case DRAG_BGIMG: dm.bgimg = !dm.bgimg; break;
|
||||
}
|
||||
m_canvas->SetDragMode( dm );
|
||||
UpdateFrameUI();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnZoomSliderChanged(wxScrollEvent &event)
|
||||
{
|
||||
double zoom = (double) event.GetPosition() / 100.0;
|
||||
m_canvas->ChangeZoomLevelTo(zoom, wxPoint((int) m_canvas->GetOriginX(), (int) m_canvas->GetOriginY()));
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnToolRClick(wxCommandEvent& event)
|
||||
{
|
||||
int id = event.GetId();
|
||||
if (drawtbar->FindById(id) != NULL
|
||||
|| modetbar->FindById(id) != NULL
|
||||
|| bgimgtbar->FindById(id) != NULL)
|
||||
{
|
||||
PopupMenu(tbarMenu);
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnChoose_TBarRClickMenu(wxCommandEvent& event)
|
||||
{
|
||||
int id = event.GetId();
|
||||
wxToolBar* tbar[3] = { drawtbar, modetbar, bgimgtbar };
|
||||
bool tb[3] = { false, false, false };
|
||||
bool show[2] = { false, true };
|
||||
bool dock[2] = { false, true };
|
||||
switch (id)
|
||||
{
|
||||
case MENU_TB_ALL:
|
||||
tb[0] = true, tb[1] = true, tb[2] = true;
|
||||
show[0] = true, show[1] = true;
|
||||
break;
|
||||
case MENU_TB_NONE:
|
||||
tb[0] = true, tb[1] = true, tb[2] = true;
|
||||
show[0] = true, show[1] = false;
|
||||
break;
|
||||
case MENU_TB_DOCK:
|
||||
tb[0] = true, tb[1] = true, tb[2] = true;
|
||||
dock[0] = true, dock[1] = true;
|
||||
break;
|
||||
case MENU_TB_UNDOCK:
|
||||
tb[0] = true, tb[1] = true, tb[2] = true;
|
||||
dock[0] = true, dock[1] = false;
|
||||
break;
|
||||
case MENU_TB_DRAW:
|
||||
tb[0] = true;
|
||||
show[0] = true, show[1] = !m_mgr.GetPane(tbar[0]).IsShown();
|
||||
break;
|
||||
case MENU_TB_MODE:
|
||||
tb[1] = true;
|
||||
show[0] = true, show[1] = !m_mgr.GetPane(tbar[1]).IsShown();
|
||||
break;
|
||||
case MENU_TB_BGIMG:
|
||||
tb[2] = true;
|
||||
show[0] = true, show[1] = !m_mgr.GetPane(tbar[2]).IsShown();
|
||||
break;
|
||||
}
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
if (tb[i])
|
||||
{
|
||||
if (show[0])
|
||||
m_mgr.GetPane(tbar[i]).Show(show[1]);
|
||||
if (dock[0])
|
||||
if (dock[1])
|
||||
m_mgr.GetPane(tbar[i]).Dock();
|
||||
else
|
||||
m_mgr.GetPane(tbar[i]).Float();
|
||||
}
|
||||
}
|
||||
m_mgr.Update();
|
||||
UpdateFrameUI();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::UpdateASSCommandStringFromSrcTxtCtrl(wxString cmds)
|
||||
{
|
||||
m_canvas->ParseASS(cmds, true);
|
||||
m_canvas->RefreshDisplay();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::UpdateASSCommandStringToSrcTxtCtrl(wxString cmd)
|
||||
{
|
||||
if (behaviors.capitalizecmds)
|
||||
cmd.UpperCase();
|
||||
else
|
||||
cmd.LowerCase();
|
||||
srctxtctrl->ChangeValue(cmd);
|
||||
//srctxtctrl->AppendText(cmd);
|
||||
}
|
||||
|
||||
void ASSDrawFrame::UndoOrRedo(bool isundo)
|
||||
{
|
||||
if (isundo)
|
||||
m_canvas->Undo();
|
||||
else
|
||||
m_canvas->Redo();
|
||||
UpdateUndoRedoMenu();
|
||||
UpdateFrameUI();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::UpdateUndoRedoMenu()
|
||||
{
|
||||
wxString nextUndo = m_canvas->GetTopUndo();
|
||||
if (nextUndo.IsSameAs(_T("")))
|
||||
{
|
||||
drawMenu->SetLabel(MENU_UNDO, _T("Undo\tCtrl+Z"));
|
||||
drawMenu->Enable(MENU_UNDO, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
drawMenu->SetLabel(MENU_UNDO, wxString::Format(_T("Undo: %s\tCtrl+Z"), nextUndo.c_str()));
|
||||
drawMenu->Enable(MENU_UNDO, true);
|
||||
}
|
||||
wxString nextRedo = m_canvas->GetTopRedo();
|
||||
if (nextRedo.IsSameAs(_T("")))
|
||||
{
|
||||
drawMenu->SetLabel(MENU_REDO, _T("Redo\tCtrl+Y"));
|
||||
drawMenu->Enable(MENU_REDO, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
drawMenu->SetLabel(MENU_REDO, wxString::Format(_T("Redo: %s\tCtrl+Y"), nextRedo.c_str()));
|
||||
drawMenu->Enable(MENU_REDO, true);
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawFrame::UpdateFrameUI(unsigned level)
|
||||
{
|
||||
bool hasbg = m_canvas->HasBackgroundImage();
|
||||
int zoom = (int) ((m_canvas->GetScale() * 100.0)+0.5);
|
||||
switch (level)
|
||||
{
|
||||
case 0: // all
|
||||
drawtbar->ToggleTool(TB_PREVIEW, m_canvas->IsPreviewMode());
|
||||
modetbar->ToggleTool(m_canvas->GetDrawMode(), true);
|
||||
drawMenu->Check(MENU_PREVIEW, m_canvas->IsPreviewMode());
|
||||
modeMenu->Check(m_canvas->GetDrawMode(), true);
|
||||
case 2: // bgimg & toolbars
|
||||
bgimgtbar->ToggleTool(DRAG_DWG, m_canvas->GetDragMode().drawing);
|
||||
bgimgtbar->ToggleTool(DRAG_BGIMG, m_canvas->GetDragMode().bgimg);
|
||||
bgimgtbar->EnableTool(DRAG_BGIMG, hasbg);
|
||||
m_mgr.Update();
|
||||
viewMenu->Check(MENU_LIBRARY, m_mgr.GetPane(shapelib).IsShown());
|
||||
if (settingsdlg)
|
||||
viewMenu->Check(MENU_SETTINGS, m_mgr.GetPane(settingsdlg).IsShown());
|
||||
bgimgMenu->Check(DRAG_DWG, m_canvas->GetDragMode().drawing);
|
||||
bgimgMenu->Check(DRAG_BGIMG, m_canvas->GetDragMode().bgimg);
|
||||
bgimgMenu->Enable(DRAG_BGIMG, hasbg);
|
||||
bgimgMenu->Enable(MENU_BGIMG_ALPHA, hasbg);
|
||||
bgimgMenu->Enable(MENU_BGIMG_RECENTER, hasbg);
|
||||
bgimgMenu->Enable(MENU_BGIMG_REMOVE, hasbg);
|
||||
tbarMenu->Check(MENU_TB_DRAW, m_mgr.GetPane(drawtbar).IsShown());
|
||||
tbarMenu->Check(MENU_TB_MODE, m_mgr.GetPane(modetbar).IsShown());
|
||||
tbarMenu->Check(MENU_TB_BGIMG, m_mgr.GetPane(bgimgtbar).IsShown());
|
||||
case 3: // zoom slider
|
||||
zoomslider->SetValue(zoom);
|
||||
SetStatusText( wxString::Format(_T("%d%%"), zoom), 2 );
|
||||
zoomslider->Enable(m_canvas->GetDragMode().drawing && m_canvas->CanZoom());
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnClose(wxCloseEvent &event)
|
||||
{
|
||||
if (event.CanVeto() && behaviors.confirmquit)
|
||||
{
|
||||
if (wxMessageDialog(this, _T("Do you want to close ASSDraw3 now?"), _T("Confirmation"), wxOK | wxCANCEL).ShowModal() == wxID_OK)
|
||||
Destroy();
|
||||
else
|
||||
event.Veto();
|
||||
}
|
||||
else
|
||||
Destroy();
|
||||
}
|
@ -1,209 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: assdraw.hpp
|
||||
// Purpose: header file for ASSDraw main source file; also includes
|
||||
// declarations for all GUI elements (except wxRuler, which has
|
||||
// its own header file)
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "_common.hpp"
|
||||
|
||||
#include <vector>
|
||||
#include <wx/wxprec.h>
|
||||
#include <wx/aui/aui.h>
|
||||
#include <wx/fileconf.h>
|
||||
#include <wx/help.h>
|
||||
|
||||
#include "canvas.hpp" // the canvas
|
||||
#include "dlgctrl.hpp" // custom dialogs & controls
|
||||
#include "settings.hpp" // settings property grid
|
||||
#include "library.hpp" // shape library
|
||||
|
||||
//#define BETAVERSION 2
|
||||
#define VERSION _T("3.0 final")
|
||||
|
||||
// this header file declares the following classes
|
||||
class ASSDrawApp;
|
||||
class ASSDrawFrame;
|
||||
class ASSDrawCanvas;
|
||||
|
||||
class ASSDrawApp : public wxApp
|
||||
{
|
||||
public:
|
||||
bool OnInit();
|
||||
};
|
||||
|
||||
class ASSDrawFrame : public wxFrame
|
||||
{
|
||||
public:
|
||||
// constructor
|
||||
ASSDrawFrame(wxApp *app, const wxString& title, const wxPoint& pos, const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE);
|
||||
virtual ~ASSDrawFrame();
|
||||
|
||||
// event handlers (these functions should _not_ be virtual)
|
||||
// OnSelect_* for single items, OnChoose_* for many-choose-one items
|
||||
void OnSelect_Clear(wxCommandEvent& WXUNUSED(event)) { _Clear(); }
|
||||
void OnSelect_Preview(wxCommandEvent& WXUNUSED(event)) { _Preview(); }
|
||||
void OnSelect_Transform(wxCommandEvent& WXUNUSED(event)) { _Transform(); }
|
||||
void OnSelect_Library(wxCommandEvent& WXUNUSED(event)) { _ToggleLibrary(); }
|
||||
void OnSelect_Settings(wxCommandEvent& WXUNUSED(event)) { _ToggleSettings(); }
|
||||
void OnSelect_ResetPerspective(wxCommandEvent& WXUNUSED(event)) { _ResetPerspective(); }
|
||||
void OnSelect_Help(wxCommandEvent& WXUNUSED(event)) { _Help(); }
|
||||
void OnSelect_About(wxCommandEvent& WXUNUSED(event)) { _About(); }
|
||||
void OnSelect_Undo(wxCommandEvent& WXUNUSED(event)) { UndoOrRedo( true ); }
|
||||
void OnSelect_Redo(wxCommandEvent& WXUNUSED(event)) { UndoOrRedo( false ); }
|
||||
void OnSelect_Paste(wxCommandEvent& WXUNUSED(event)) { _Paste(); }
|
||||
void OnSelect_RemoveBG(wxCommandEvent& WXUNUSED(event)) { m_canvas->RemoveBackgroundImage(); }
|
||||
void OnSelect_AlphaBG(wxCommandEvent& WXUNUSED(event)) { m_canvas->AskUserForBackgroundAlpha(); }
|
||||
void OnChoose_Recenter(wxCommandEvent& event);
|
||||
void OnChoose_RecenterToBG(wxCommandEvent& event);
|
||||
void OnChoose_Mode(wxCommandEvent& event);
|
||||
void OnChoose_DragMode(wxCommandEvent& event);
|
||||
void OnZoomSliderChanged(wxScrollEvent &event);
|
||||
void OnToolRClick(wxCommandEvent& event);
|
||||
void OnChoose_TBarRClickMenu(wxCommandEvent& event);
|
||||
void OnSettingsChanged(wxCommandEvent& event);
|
||||
void OnClose(wxCloseEvent &event);
|
||||
|
||||
void UpdateASSCommandStringToSrcTxtCtrl(wxString cmds);
|
||||
void UpdateASSCommandStringFromSrcTxtCtrl(wxString cmds);
|
||||
|
||||
void UndoOrRedo(bool isundo);
|
||||
void UpdateUndoRedoMenu();
|
||||
|
||||
void _Clear();
|
||||
void _Preview();
|
||||
void _Transform();
|
||||
void _ToggleLibrary();
|
||||
void _ToggleSettings();
|
||||
void _Help();
|
||||
void _About(unsigned timeout = 0);
|
||||
void _Paste();
|
||||
void _ResetPerspective();
|
||||
|
||||
void UpdateFrameUI(unsigned level = 0);
|
||||
|
||||
// the canvas
|
||||
wxApp *m_app;
|
||||
ASSDrawCanvas* m_canvas;
|
||||
wxAuiManager m_mgr;
|
||||
wxString default_perspective;
|
||||
ASSDrawSrcTxtCtrl* srctxtctrl;
|
||||
|
||||
// config
|
||||
wxString configfile;
|
||||
wxFileConfig *config;
|
||||
|
||||
// toolbars
|
||||
wxToolBar *drawtbar, *modetbar, *bgimgtbar;
|
||||
|
||||
// zoom slider
|
||||
wxSlider* zoomslider;
|
||||
|
||||
//library
|
||||
ASSDrawShapeLibrary *shapelib;
|
||||
typedef std::vector< ASSDrawEngine* > DrawEngineVec;
|
||||
DrawEngineVec libshapes;
|
||||
|
||||
// menus
|
||||
#if wxUSE_MENUS
|
||||
wxMenu *drawMenu;
|
||||
wxMenu *modeMenu;
|
||||
wxMenu *bgimgMenu;
|
||||
wxMenu *viewMenu;
|
||||
wxMenu *tbarMenu;
|
||||
#endif
|
||||
|
||||
// dialogs
|
||||
ASSDrawTransformDlg* transformdlg;
|
||||
ASSDrawSettingsDialog* settingsdlg;
|
||||
|
||||
// colors
|
||||
struct
|
||||
{
|
||||
wxColour canvas_bg;
|
||||
wxColour canvas_shape_normal;
|
||||
wxColour canvas_shape_preview;
|
||||
wxColour canvas_shape_outline;
|
||||
wxColour canvas_shape_guideline;
|
||||
wxColour canvas_shape_mainpoint;
|
||||
wxColour canvas_shape_controlpoint;
|
||||
wxColour canvas_shape_selectpoint;
|
||||
wxColour library_shape;
|
||||
wxColour library_libarea;
|
||||
wxColour origin, ruler_h, ruler_v;
|
||||
} colors;
|
||||
|
||||
struct
|
||||
{
|
||||
long canvas_shape_normal;
|
||||
long canvas_shape_preview;
|
||||
long canvas_shape_outline;
|
||||
long canvas_shape_guideline;
|
||||
long canvas_shape_mainpoint;
|
||||
long canvas_shape_controlpoint;
|
||||
long canvas_shape_selectpoint;
|
||||
} alphas;
|
||||
|
||||
struct
|
||||
{
|
||||
long origincross;
|
||||
} sizes;
|
||||
|
||||
struct
|
||||
{
|
||||
bool capitalizecmds;
|
||||
bool autoaskimgopac;
|
||||
bool parse_spc;
|
||||
bool nosplashscreen;
|
||||
bool confirmquit;
|
||||
} behaviors;
|
||||
|
||||
void LoadSettings();
|
||||
void SaveSettings();
|
||||
void InitializeDefaultSettings();
|
||||
void ApplySettings();
|
||||
static void wxColourToAggRGBA(wxColour &colour, agg::rgba &rgba);
|
||||
static void wxColourSetAlpha(wxColour &colour, long alpha);
|
||||
|
||||
protected:
|
||||
virtual void SetToolBars();
|
||||
virtual void SetMenus();
|
||||
virtual void SetPanes();
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
wxHelpController helpcontroller;
|
||||
|
||||
};
|
@ -1,101 +0,0 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
APPICO ICON "tsukasa.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
ASSDRAW3_ BITMAP "bitmaps/assdraw3.bmp"
|
||||
NEW_ BITMAP "bitmaps/new_.bmp"
|
||||
SRC_ BITMAP "bitmaps/src_.bmp"
|
||||
PREVIEW_ BITMAP "bitmaps/preview_.bmp"
|
||||
ARR_ BITMAP "bitmaps/arr_.bmp"
|
||||
M_ BITMAP "bitmaps/m_.bmp"
|
||||
N_ BITMAP "bitmaps/n_.bmp"
|
||||
L_ BITMAP "bitmaps/l_.bmp"
|
||||
B_ BITMAP "bitmaps/b_.bmp"
|
||||
S_ BITMAP "bitmaps/s_.bmp"
|
||||
P_ BITMAP "bitmaps/p_.bmp"
|
||||
C_ BITMAP "bitmaps/c_.bmp"
|
||||
DEL_ BITMAP "bitmaps/del_.bmp"
|
||||
NUT_ BITMAP "bitmaps/nut_.bmp"
|
||||
SC_ROT_ BITMAP "bitmaps/sc_rot_.bmp"
|
||||
ROT_ BITMAP "bitmaps/rot_.bmp"
|
||||
HELP_ BITMAP "bitmaps/help_.bmp"
|
||||
TRANSFORM BITMAP "bitmaps/transform.bmp"
|
||||
PAN_SHP BITMAP "bitmaps/pan_shp.bmp"
|
||||
PAN_BG BITMAP "bitmaps/pan_bg.bmp"
|
||||
//PAN_BOTH BITMAP "bitmaps/pan_both.bmp"
|
||||
ADD BITMAP "bitmaps/add_.bmp"
|
||||
CHECK BITMAP "bitmaps/check_.bmp"
|
||||
UNCHECK BITMAP "bitmaps/uncheck_.bmp"
|
||||
DELCROSS BITMAP "bitmaps/del_cross.bmp"
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
@ -1,190 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
|
||||
#include "assdraw.hpp"
|
||||
|
||||
void ASSDrawFrame::InitializeDefaultSettings()
|
||||
{
|
||||
colors.canvas_bg = wxColour(0xFF, 0xFF, 0xFF);
|
||||
colors.canvas_shape_normal = wxColour(0x0, 0x0, 0xFF, 0x99);
|
||||
colors.canvas_shape_preview = wxColour(0x0, 0x0, 0xFF);
|
||||
colors.canvas_shape_outline = wxColour(0x0, 0x0, 0x0);
|
||||
colors.canvas_shape_guideline = wxColour(0x66, 0x66, 0x66);
|
||||
colors.canvas_shape_mainpoint = wxColour(0xFF, 0x0, 0x0, 0xCC);
|
||||
colors.canvas_shape_controlpoint = wxColour(0x0, 0xFF, 0x0, 0xCC);
|
||||
colors.canvas_shape_selectpoint = wxColour(0x0, 0x0, 0xCC);
|
||||
colors.library_shape = wxColour(0x0, 0x66, 0x99);
|
||||
colors.library_libarea = wxColour(0xFF, 0xFF, 0x99);
|
||||
colors.origin = wxColour(0xFF, 0x0, 0x0);
|
||||
colors.ruler_h = wxColour(0x0, 0x0, 0x66);
|
||||
colors.ruler_v = wxColour(0x66, 0x0, 0x0);
|
||||
|
||||
alphas.canvas_shape_normal = 128;
|
||||
alphas.canvas_shape_preview = 255;
|
||||
alphas.canvas_shape_outline = 255;
|
||||
alphas.canvas_shape_guideline = 255;
|
||||
alphas.canvas_shape_mainpoint = 128;
|
||||
alphas.canvas_shape_controlpoint = 128;
|
||||
alphas.canvas_shape_selectpoint = 255;
|
||||
|
||||
sizes.origincross = 2;
|
||||
|
||||
behaviors.capitalizecmds = false;
|
||||
behaviors.autoaskimgopac = true;
|
||||
behaviors.parse_spc = false;
|
||||
behaviors.nosplashscreen = false;
|
||||
behaviors.confirmquit = true;
|
||||
}
|
||||
|
||||
void ASSDrawFrame::ApplySettings()
|
||||
{
|
||||
wxColourSetAlpha(colors.canvas_shape_normal, alphas.canvas_shape_normal);
|
||||
wxColourSetAlpha(colors.canvas_shape_preview, alphas.canvas_shape_preview);
|
||||
wxColourSetAlpha(colors.canvas_shape_outline, alphas.canvas_shape_outline);
|
||||
wxColourSetAlpha(colors.canvas_shape_guideline, alphas.canvas_shape_guideline);
|
||||
wxColourSetAlpha(colors.canvas_shape_mainpoint, alphas.canvas_shape_mainpoint);
|
||||
wxColourSetAlpha(colors.canvas_shape_controlpoint, alphas.canvas_shape_controlpoint);
|
||||
wxColourSetAlpha(colors.canvas_shape_selectpoint, alphas.canvas_shape_selectpoint);
|
||||
|
||||
wxColourToAggRGBA(colors.canvas_shape_normal, m_canvas->rgba_shape_normal);
|
||||
wxColourToAggRGBA(colors.canvas_shape_preview, m_canvas->rgba_shape);
|
||||
wxColourToAggRGBA(colors.canvas_shape_outline, m_canvas->rgba_outline);
|
||||
wxColourToAggRGBA(colors.canvas_shape_guideline, m_canvas->rgba_guideline);
|
||||
wxColourToAggRGBA(colors.canvas_shape_mainpoint, m_canvas->rgba_mainpoint);
|
||||
wxColourToAggRGBA(colors.canvas_shape_controlpoint, m_canvas->rgba_controlpoint);
|
||||
wxColourToAggRGBA(colors.canvas_shape_selectpoint, m_canvas->rgba_selectpoint);
|
||||
wxColourToAggRGBA(colors.origin, m_canvas->rgba_origin);
|
||||
wxColourToAggRGBA(colors.ruler_h, m_canvas->rgba_ruler_h);
|
||||
wxColourToAggRGBA(colors.ruler_v, m_canvas->rgba_ruler_v);
|
||||
|
||||
m_canvas->color_bg.r = colors.canvas_bg.Red();
|
||||
m_canvas->color_bg.g = colors.canvas_bg.Green();
|
||||
m_canvas->color_bg.b = colors.canvas_bg.Blue();
|
||||
m_canvas->color_bg.a = colors.canvas_bg.Alpha();
|
||||
m_canvas->PrepareBackgroundBitmap(-1.0);
|
||||
m_canvas->Refresh();
|
||||
|
||||
shapelib->libarea->SetBackgroundColour(colors.library_libarea);
|
||||
typedef std::vector< ASSDrawShapePreview *> PrevVec;
|
||||
PrevVec shapes = shapelib->GetShapePreviews();
|
||||
int n = shapes.size();
|
||||
for (int i = 0; i < n; i++)
|
||||
wxColourToAggRGBA(colors.library_shape, shapes[i]->rgba_shape);
|
||||
shapelib->libarea->Refresh();
|
||||
|
||||
m_canvas->SetDrawCmdSet(behaviors.parse_spc? _T("m n l b s p c _"):_T("m n l b _"));
|
||||
|
||||
UpdateASSCommandStringToSrcTxtCtrl(m_canvas->GenerateASS());
|
||||
}
|
||||
|
||||
void ASSDrawFrame::wxColourToAggRGBA(wxColour &colour, agg::rgba &rgba)
|
||||
{
|
||||
rgba.r = (double) colour.Red() / 255.0;
|
||||
rgba.g = (double) colour.Green() / 255.0;
|
||||
rgba.b = (double) colour.Blue() / 255.0;
|
||||
rgba.a = (double) colour.Alpha() / 255.0;
|
||||
}
|
||||
|
||||
void ASSDrawFrame::wxColourSetAlpha(wxColour &colour, long alpha)
|
||||
{
|
||||
colour.Set(colour.Red(), colour.Green(), colour.Blue(), alpha);
|
||||
}
|
||||
|
||||
void ASSDrawFrame::OnSettingsChanged(wxCommandEvent& event)
|
||||
{
|
||||
ApplySettings();
|
||||
}
|
||||
|
||||
void ASSDrawFrame::LoadSettings()
|
||||
{
|
||||
#define CFGREADCOLOR(color) if (config->Read(wxString(#color,wxConvUTF8), &tmpstr)) color.Set(tmpstr);
|
||||
#define CFGREAD(var) config->Read(wxString(#var,wxConvUTF8), &var);
|
||||
config->SetPath(_T("settings"));
|
||||
wxString tmpstr;
|
||||
CFGREADCOLOR(colors.canvas_bg)
|
||||
CFGREADCOLOR(colors.canvas_shape_normal)
|
||||
CFGREADCOLOR(colors.canvas_shape_preview)
|
||||
CFGREADCOLOR(colors.canvas_shape_controlpoint)
|
||||
CFGREADCOLOR(colors.canvas_shape_guideline)
|
||||
CFGREADCOLOR(colors.canvas_shape_mainpoint)
|
||||
CFGREADCOLOR(colors.canvas_shape_outline)
|
||||
CFGREADCOLOR(colors.canvas_shape_selectpoint)
|
||||
CFGREADCOLOR(colors.library_libarea)
|
||||
CFGREADCOLOR(colors.library_shape)
|
||||
CFGREADCOLOR(colors.origin)
|
||||
CFGREADCOLOR(colors.ruler_h)
|
||||
CFGREADCOLOR(colors.ruler_v)
|
||||
CFGREAD(alphas.canvas_shape_normal)
|
||||
CFGREAD(alphas.canvas_shape_preview)
|
||||
CFGREAD(alphas.canvas_shape_controlpoint)
|
||||
CFGREAD(alphas.canvas_shape_guideline)
|
||||
CFGREAD(alphas.canvas_shape_mainpoint)
|
||||
CFGREAD(alphas.canvas_shape_outline)
|
||||
CFGREAD(alphas.canvas_shape_selectpoint)
|
||||
CFGREAD(sizes.origincross)
|
||||
CFGREAD(behaviors.autoaskimgopac)
|
||||
CFGREAD(behaviors.capitalizecmds)
|
||||
CFGREAD(behaviors.parse_spc)
|
||||
CFGREAD(behaviors.nosplashscreen)
|
||||
CFGREAD(behaviors.confirmquit)
|
||||
config->SetPath(_T(".."));
|
||||
}
|
||||
|
||||
void ASSDrawFrame::SaveSettings()
|
||||
{
|
||||
#define CFGWRITE(var) config->Write(wxString(#var,wxConvUTF8), var);
|
||||
#define CFGWRITECOLOR(color) config->Write(wxString(#color,wxConvUTF8), color.GetAsString(wxC2S_CSS_SYNTAX));
|
||||
config->SetPath(_T("settings"));
|
||||
CFGWRITECOLOR(colors.canvas_bg)
|
||||
CFGWRITECOLOR(colors.canvas_shape_normal)
|
||||
CFGWRITECOLOR(colors.canvas_shape_preview)
|
||||
CFGWRITECOLOR(colors.canvas_shape_controlpoint)
|
||||
CFGWRITECOLOR(colors.canvas_shape_guideline)
|
||||
CFGWRITECOLOR(colors.canvas_shape_mainpoint)
|
||||
CFGWRITECOLOR(colors.canvas_shape_outline)
|
||||
CFGWRITECOLOR(colors.canvas_shape_selectpoint)
|
||||
CFGWRITECOLOR(colors.library_libarea)
|
||||
CFGWRITECOLOR(colors.library_shape)
|
||||
CFGWRITECOLOR(colors.origin)
|
||||
CFGWRITECOLOR(colors.ruler_h)
|
||||
CFGWRITECOLOR(colors.ruler_v)
|
||||
CFGWRITE(alphas.canvas_shape_normal)
|
||||
CFGWRITE(alphas.canvas_shape_preview)
|
||||
CFGWRITE(alphas.canvas_shape_controlpoint)
|
||||
CFGWRITE(alphas.canvas_shape_guideline)
|
||||
CFGWRITE(alphas.canvas_shape_mainpoint)
|
||||
CFGWRITE(alphas.canvas_shape_outline)
|
||||
CFGWRITE(alphas.canvas_shape_selectpoint)
|
||||
CFGWRITE(sizes.origincross)
|
||||
CFGWRITE(behaviors.autoaskimgopac)
|
||||
CFGWRITE(behaviors.capitalizecmds)
|
||||
CFGWRITE(behaviors.parse_spc)
|
||||
CFGWRITE(behaviors.nosplashscreen)
|
||||
CFGWRITE(behaviors.confirmquit)
|
||||
config->SetPath(_T(".."));
|
||||
}
|
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 774 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 774 B |
Before Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 774 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 774 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 774 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 774 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 774 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 774 B |
Before Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 774 B |
@ -1,304 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: canvas.hpp
|
||||
// Purpose: header file for ASSDraw main canvas class
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "engine.hpp"
|
||||
#include "enums.hpp"
|
||||
|
||||
#include <wx/dnd.h>
|
||||
#include <wx/splitter.h>
|
||||
#include <wx/clntdata.h>
|
||||
|
||||
#include "agg_span_allocator.h"
|
||||
#include "agg_span_interpolator_linear.h"
|
||||
#include "agg_span_image_filter_rgb.h"
|
||||
#include "agg_span_image_filter_rgba.h"
|
||||
#include "agg_image_accessors.h"
|
||||
#include "agg_conv_clip_polygon.h"
|
||||
|
||||
class ASSDrawFrame;
|
||||
class ASSDrawCanvas;
|
||||
|
||||
struct UndoRedo
|
||||
{
|
||||
wxString cmds;
|
||||
wxString desc;
|
||||
double originx, originy, scale;
|
||||
|
||||
std::vector< bool > c1cont;
|
||||
wxString bgimgfile;
|
||||
wxRealPoint bgdisp, bgcenter;
|
||||
double bgscale, bgalpha;
|
||||
|
||||
MODE draw_mode;
|
||||
agg::path_storage backupcmds;
|
||||
wxRealPoint rectbound[4], rectbound2[4], backup[4];
|
||||
bool isshapetransformable;
|
||||
|
||||
void Import(ASSDrawCanvas *canvas, bool prestage, wxString cmds = _T(""));
|
||||
void Export(ASSDrawCanvas *canvas);
|
||||
|
||||
};
|
||||
|
||||
// for multiple point selection
|
||||
enum SELECTMODE { NEW, ADD, DEL };
|
||||
|
||||
class ASSDrawCanvas: public ASSDrawEngine, public wxClientData
|
||||
{
|
||||
public:
|
||||
ASSDrawCanvas( wxWindow *parent, ASSDrawFrame *frame, int extraflags = 0 );
|
||||
|
||||
// destructor
|
||||
~ASSDrawCanvas();
|
||||
|
||||
virtual void ResetEngine(bool addM);
|
||||
virtual void SetPreviewMode( bool mode );
|
||||
virtual bool IsPreviewMode() { return preview_mode; }
|
||||
virtual void ParseASS(wxString str, bool addundo = false);
|
||||
|
||||
virtual void SetDrawMode( MODE mode );
|
||||
virtual MODE GetDrawMode() { return draw_mode; }
|
||||
virtual bool IsTransformMode();
|
||||
virtual void SetDragMode( DRAGMODE mode );
|
||||
virtual DRAGMODE GetDragMode() { return drag_mode; }
|
||||
virtual void RefreshDisplay();
|
||||
virtual bool CanZoom();
|
||||
virtual bool CanMove();
|
||||
|
||||
virtual void OnMouseMove(wxMouseEvent &event);
|
||||
virtual void OnMouseLeftUp(wxMouseEvent &event);
|
||||
virtual void OnMouseLeftDown(wxMouseEvent &event);
|
||||
virtual void OnMouseRightUp(wxMouseEvent &event);
|
||||
virtual void OnMouseRightDown(wxMouseEvent &event);
|
||||
virtual void OnMouseRightDClick(wxMouseEvent &event);
|
||||
virtual void OnMouseWheel(wxMouseEvent &event);
|
||||
virtual void CustomOnKeyDown(wxKeyEvent &event);
|
||||
virtual void CustomOnKeyUp(wxKeyEvent &event);
|
||||
virtual void ChangeZoomLevel(double zoomamount, wxPoint bgzoomctr);
|
||||
virtual void ChangeZoomLevelTo(double zoom, wxPoint bgzoomctr);
|
||||
virtual void ChangeDrawingZoomLevel(double zoom);
|
||||
virtual void ChangeBackgroundZoomLevel(double zoom, wxRealPoint newcenter);
|
||||
virtual void MoveCanvas(double xamount, double yamount);
|
||||
virtual void MoveCanvasOriginTo(double originx, double originy);
|
||||
virtual void MoveCanvasDrawing(double xamount, double yamount);
|
||||
virtual void MoveCanvasBackground(double xamount, double yamount);
|
||||
virtual void OnSelect_ConvertLineToBezier(wxCommandEvent& WXUNUSED(event));
|
||||
virtual void OnSelect_ConvertBezierToLine(wxCommandEvent& WXUNUSED(event));
|
||||
virtual void OnSelect_C1ContinuityBezier(wxCommandEvent& WXUNUSED(event));
|
||||
virtual void OnSelect_Move00Here(wxCommandEvent& WXUNUSED(event));
|
||||
void OnAlphaSliderChanged(wxScrollEvent &event);
|
||||
|
||||
// to replace _PointSystem() that has been made protected
|
||||
double GetScale() { return pointsys->scale; }
|
||||
double GetOriginX() { return pointsys->originx; }
|
||||
double GetOriginY() { return pointsys->originy; }
|
||||
|
||||
// undo/redo system
|
||||
virtual void AddUndo( wxString desc );
|
||||
virtual bool UndoOrRedo(bool isundo);
|
||||
virtual bool Undo();
|
||||
virtual bool Redo();
|
||||
virtual wxString GetTopUndo();
|
||||
virtual wxString GetTopRedo();
|
||||
virtual void RefreshUndocmds();
|
||||
|
||||
virtual bool HasBackgroundImage() { return bgimg.bgimg != NULL; }
|
||||
virtual void RemoveBackgroundImage();
|
||||
virtual void ReceiveBackgroundImageFileDropEvent(const wxString& filename);
|
||||
virtual void SetBackgroundImage(const wxImage& img, wxString fname = _T("<clipboard>"), bool ask4alpha = true);
|
||||
virtual void PrepareBackgroundBitmap(double alpha);
|
||||
virtual void AskUserForBackgroundAlpha();
|
||||
virtual bool GetBackgroundInfo(unsigned& w, unsigned& h, wxRealPoint& disp, double& scale);
|
||||
|
||||
agg::rgba rgba_shape_normal, rgba_outline, rgba_guideline;
|
||||
agg::rgba rgba_mainpoint, rgba_controlpoint, rgba_selectpoint;
|
||||
agg::rgba rgba_origin, rgba_ruler_h, rgba_ruler_v;
|
||||
|
||||
protected:
|
||||
|
||||
typedef PixelFormat::AGGType::color_type color_type;
|
||||
typedef agg::span_interpolator_linear<> interpolator_type;
|
||||
typedef agg::span_image_filter_rgb_bilinear_clip<PixelFormat::AGGType, interpolator_type> span_gen_type;
|
||||
|
||||
// The GUI window
|
||||
ASSDrawFrame* m_frame;
|
||||
|
||||
// highlight mechanism
|
||||
DrawCmd* hilite_cmd;
|
||||
Point* hilite_point;
|
||||
|
||||
// mouse capture
|
||||
bool capturemouse_left, capturemouse_right;
|
||||
virtual void CustomOnMouseCaptureLost(wxMouseCaptureLostEvent &event);
|
||||
virtual void ProcessOnMouseLeftUp();
|
||||
virtual void ProcessOnMouseRightUp();
|
||||
|
||||
// selection mechanism
|
||||
PointSet selected_points;
|
||||
|
||||
// if it has status bar
|
||||
bool hasStatusBar;
|
||||
|
||||
// some mouse readings
|
||||
Point* mousedownAt_point;
|
||||
Point* pointedAt_point;
|
||||
Point* dblclicked_point_right;
|
||||
wxPoint mouse_point;
|
||||
|
||||
// The wxPoint being dragged by left button
|
||||
wxPoint* dragAnchor_left;
|
||||
wxPoint* lastDrag_left;
|
||||
|
||||
// The wxPoint being dragged by right button
|
||||
wxPoint* dragAnchor_right;
|
||||
wxPoint* lastDrag_right;
|
||||
|
||||
// true if the drawing origin (0, 0) is being dragged
|
||||
bool dragOrigin;
|
||||
|
||||
// The newest command being initialized thru dragging action
|
||||
DrawCmd* newcommand;
|
||||
|
||||
// the draw mode
|
||||
MODE draw_mode;
|
||||
DRAGMODE drag_mode;
|
||||
|
||||
// holding shift key temporarily switches to drag mode (MODE_ARR)
|
||||
// so we want to save the mode before the key-down to restore it on key-up
|
||||
MODE mode_b4_shift;
|
||||
|
||||
// true if preview mode (i.e don't draw anything except the shape itself;
|
||||
// also draw the shape as closed)
|
||||
bool preview_mode;
|
||||
|
||||
// background image!
|
||||
struct
|
||||
{
|
||||
agg::rendering_buffer ibuf;
|
||||
wxImage *bgimg;
|
||||
wxBitmap *bgbmp;
|
||||
wxString bgimgfile;
|
||||
agg::path_storage bg_path;
|
||||
agg::span_allocator<color_type> spanalloc;
|
||||
//span_gen_type spangen;
|
||||
agg::trans_affine img_mtx, path_mtx;
|
||||
|
||||
wxRealPoint disp, center, new_disp, new_center;
|
||||
double scale, new_scale, alpha;
|
||||
wxDialog* alpha_dlg;
|
||||
wxSlider* alpha_slider;
|
||||
} bgimg;
|
||||
|
||||
// Undo/redo system (simply stores the ASS commands)
|
||||
std::list<UndoRedo> undos;
|
||||
std::list<UndoRedo> redos;
|
||||
UndoRedo _undo;
|
||||
|
||||
// last action and commands (for undo/redo system)
|
||||
wxString undodesc;
|
||||
|
||||
wxString oldasscmds;
|
||||
|
||||
// was preview_mode
|
||||
//bool was_preview_mode;
|
||||
|
||||
PointSystem* _PointSystem() { return pointsys; }
|
||||
|
||||
// for Undo/Redo system
|
||||
virtual void PrepareUndoRedo(UndoRedo& ur, bool prestage, wxString cmds, wxString desc);
|
||||
|
||||
// -------------------- points highlight/selection ---------------------------
|
||||
|
||||
// set command and point to highlight
|
||||
virtual void SetHighlighted ( DrawCmd* cmd, Point* point );
|
||||
|
||||
// selects all points within (lx, ty) , (rx, by) returns # of selected points
|
||||
virtual int SelectPointsWithin( int lx, int rx, int ty, int by, SELECTMODE smode = NEW );
|
||||
virtual void ClearPointsSelection();
|
||||
virtual SELECTMODE GetSelectMode(wxMouseEvent &event);
|
||||
|
||||
// -------------------- misc ---------------------------
|
||||
|
||||
// non-uniform transformation
|
||||
virtual bool InitiateDraggingIfTransformMode();
|
||||
virtual void UpdateTranformModeRectCenter();
|
||||
virtual bool GetThe4thPoint(double ox, double oy, double a1x, double a1y, double a2x, double a2y, double *x, double *y);
|
||||
enum { NONE, LEFT, RIGHT } backupowner;
|
||||
agg::path_storage backupcmds;
|
||||
int rectbound2upd, rectbound2upd2;
|
||||
wxRealPoint rectbound[4], rectbound2[4], backup[4], rectcenter;
|
||||
bool isshapetransformable;
|
||||
|
||||
// do the real drawing
|
||||
virtual void DoDraw( RendererBase& rbase, RendererPrimitives& rprim, RendererSolid& rsolid, agg::trans_affine& mtx );
|
||||
|
||||
// update background image scale & position
|
||||
virtual void UpdateBackgroundImgScalePosition(bool firsttime = false);
|
||||
|
||||
// perform extra stuff other than calling ASSDrawEngine::ConnectSubsequentCmds
|
||||
virtual void ConnectSubsequentCmds (DrawCmd* cmd1, DrawCmd* cmd2);
|
||||
|
||||
// make sure the c1 continuity is followed after performing a drag-point action
|
||||
virtual void EnforceC1Continuity (DrawCmd* cmd, Point* pnt);
|
||||
|
||||
// after the bounding quadrangle has changed, update the shape to fill up inside it
|
||||
virtual void UpdateNonUniformTransformation();
|
||||
|
||||
friend struct UndoRedo;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
class ASSDrawFileDropTarget : public wxFileDropTarget
|
||||
{
|
||||
public:
|
||||
ASSDrawFileDropTarget(ASSDrawCanvas *canvas): wxFileDropTarget()
|
||||
{
|
||||
m_canvas = canvas;
|
||||
}
|
||||
|
||||
virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames)
|
||||
{
|
||||
m_canvas->ReceiveBackgroundImageFileDropEvent(filenames.Item(0));
|
||||
return true;
|
||||
}
|
||||
|
||||
protected:
|
||||
ASSDrawCanvas *m_canvas;
|
||||
|
||||
};
|
@ -1,56 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
#include "canvas_mouse.hpp"
|
||||
#include "canvas.hpp"
|
||||
|
||||
DEFINE_EVENT_TYPE( wxEVT_MOUSEONCANVAS )
|
||||
|
||||
|
||||
ASSDrawMouseOnCanvasEvent::ASSDrawMouseOnCanvasEvent(const ASSDrawCanvas* canvas)
|
||||
: wxNotifyEvent(),
|
||||
_canvas(canvas)
|
||||
{
|
||||
_data = NULL;
|
||||
}
|
||||
|
||||
wxEvent* ASSDrawMouseOnCanvasEvent::Clone()
|
||||
{
|
||||
ASSDrawMouseOnCanvasEvent *clone = new ASSDrawMouseOnCanvasEvent(_canvas);
|
||||
clone->SetData(_data);
|
||||
return clone;
|
||||
}
|
||||
|
||||
void ASSDrawMouseOnCanvasEvent::SetData(MouseOnCanvasData *data)
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
|
||||
MouseOnCanvasData* ASSDrawMouseOnCanvasEvent::GetData()
|
||||
{
|
||||
return _data;
|
||||
}
|
@ -1,85 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "_common.hpp"
|
||||
#include "enums.hpp"
|
||||
#include "engine.hpp"
|
||||
|
||||
#include <wx/event.h>
|
||||
|
||||
struct MouseOnCanvasData
|
||||
{
|
||||
MODE mode;
|
||||
wxMouseEvent event;
|
||||
enum { NONE, LEFT, RIGHT, BOTH } button;
|
||||
|
||||
Point* mousedownAt_point;
|
||||
Point* pointedAt_point;
|
||||
Point* dblclicked_point_right;
|
||||
|
||||
wxPoint mouse_point;
|
||||
wxPoint* dragAnchor_left;
|
||||
wxPoint* lastDrag_left;
|
||||
wxPoint* dragAnchor_right;
|
||||
wxPoint* lastDrag_right;
|
||||
};
|
||||
|
||||
class ASSDrawCanvas;
|
||||
|
||||
class ASSDrawMouseOnCanvasEvent : public wxNotifyEvent
|
||||
{
|
||||
public:
|
||||
ASSDrawMouseOnCanvasEvent(const ASSDrawCanvas* canvas);
|
||||
|
||||
wxEvent* Clone();
|
||||
|
||||
void SetData(MouseOnCanvasData *data);
|
||||
|
||||
MouseOnCanvasData* GetData();
|
||||
|
||||
private:
|
||||
const ASSDrawCanvas* _canvas;
|
||||
MouseOnCanvasData* _data;
|
||||
|
||||
};
|
||||
|
||||
DECLARE_EVENT_TYPE( wxEVT_MOUSEONCANVAS, -1 )
|
||||
|
||||
typedef void (wxEvtHandler::*wxMouseOnCanvasEventFunction)(ASSDrawMouseOnCanvasEvent&);
|
||||
|
||||
#define EVT_MOUSEONCANVAS(fn) \
|
||||
DECLARE_EVENT_TABLE_ENTRY( wxEVT_MOUSEONCANVAS, -1, -1, \
|
||||
(wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) \
|
||||
wxStaticCastEvent( wxMouseOnCanvasEventFunction, & fn ), (wxObject *) NULL ),
|
||||
|
||||
class ASSDrawMouseOnCanvasHandler
|
||||
{
|
||||
|
||||
|
||||
};
|
@ -1,213 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: cmd.cpp
|
||||
// Purpose: ASSDraw drawing command classes
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "cmd.hpp" // the header for this file
|
||||
#include <wx/log.h>
|
||||
// ----------------------------------------------------------------------------
|
||||
// DrawCmd_M
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// constructor
|
||||
DrawCmd_M::DrawCmd_M ( int x, int y, PointSystem *ps, DrawCmd *prev )
|
||||
: DrawCmd ( x, y, ps, prev )
|
||||
{
|
||||
type = M;
|
||||
}
|
||||
|
||||
// to ASS drawing command
|
||||
wxString DrawCmd_M::ToString()
|
||||
{
|
||||
return wxString::Format(_T("m %d %d"), m_point->x(), m_point->y());
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// DrawCmd_L
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// constructor
|
||||
DrawCmd_L::DrawCmd_L ( int x, int y, PointSystem *ps, DrawCmd *prev )
|
||||
: DrawCmd ( x, y, ps, prev )
|
||||
{
|
||||
type = L;
|
||||
}
|
||||
|
||||
// to ASS drawing command
|
||||
wxString DrawCmd_L::ToString()
|
||||
{
|
||||
return wxString::Format(_T("l %d %d"), m_point->x(), m_point->y());
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// DrawCmd_B
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// constructor
|
||||
DrawCmd_B::DrawCmd_B
|
||||
( int x, int y, int x1, int y1, int x2, int y2, PointSystem *ps, DrawCmd *prev )
|
||||
: DrawCmd ( x, y, ps, prev )
|
||||
{
|
||||
type = B;
|
||||
controlpoints.push_back( new Point(x1, y1, ps, CP, this, 1) );
|
||||
controlpoints.push_back( new Point(x2, y2, ps, CP, this, 2) );
|
||||
initialized = true;
|
||||
C1Cont = false;
|
||||
}
|
||||
|
||||
// constructor
|
||||
DrawCmd_B::DrawCmd_B ( int x, int y, PointSystem *ps, DrawCmd *prev )
|
||||
: DrawCmd ( x, y, ps, prev )
|
||||
{
|
||||
type = B;
|
||||
initialized = false;
|
||||
C1Cont = false;
|
||||
}
|
||||
|
||||
// initialize; generate control points
|
||||
void DrawCmd_B::Init ( unsigned n )
|
||||
{
|
||||
// Ignore if this is already initted
|
||||
if (initialized) return;
|
||||
|
||||
wxPoint wx0 = prev->m_point->ToWxPoint();
|
||||
wxPoint wx1 = m_point->ToWxPoint();
|
||||
int xdiff = (wx1.x - wx0.x) / 3;
|
||||
int ydiff = (wx1.y - wx0.y) / 3;
|
||||
int xg, yg;
|
||||
|
||||
// first control
|
||||
m_point->pointsys->FromWxPoint( wx0.x + xdiff, wx0.y + ydiff, xg, yg );
|
||||
controlpoints.push_back( new Point( xg, yg, m_point->pointsys, CP, this, 1 ) );
|
||||
|
||||
// second control
|
||||
m_point->pointsys->FromWxPoint( wx1.x - xdiff, wx1.y - ydiff, xg, yg );
|
||||
controlpoints.push_back( new Point( xg, yg, m_point->pointsys, CP, this, 2 ) );
|
||||
|
||||
initialized = true;
|
||||
|
||||
}
|
||||
|
||||
// to ASS drawing command
|
||||
wxString DrawCmd_B::ToString()
|
||||
{
|
||||
if (initialized) {
|
||||
PointList::iterator iterate = controlpoints.begin();
|
||||
Point* c1 = (*iterate++);
|
||||
Point* c2 = (*iterate);
|
||||
return wxString::Format(_T("b %d %d %d %d %d %d"), c1->x(), c1->y(), c2->x(), c2->y(), m_point->x(), m_point->y());
|
||||
}
|
||||
else
|
||||
return wxString::Format(_T("b ? ? ? ? %d %d"), m_point->x(), m_point->y());
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// DrawCmd_S
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// constructor
|
||||
DrawCmd_S::DrawCmd_S
|
||||
( int x, int y, PointSystem *ps, DrawCmd *prev )
|
||||
: DrawCmd ( x, y, ps, prev )
|
||||
{
|
||||
type = S;
|
||||
initialized = false;
|
||||
closed = false;
|
||||
}
|
||||
|
||||
// constructor
|
||||
DrawCmd_S::DrawCmd_S
|
||||
( int x, int y, std::vector< int > vals, PointSystem *ps, DrawCmd *prev )
|
||||
: DrawCmd ( x, y, ps, prev )
|
||||
{
|
||||
type = S;
|
||||
std::vector< int >::iterator it = vals.begin();
|
||||
unsigned n = 0;
|
||||
while (it != vals.end())
|
||||
{
|
||||
int ix = *it; it++;
|
||||
int iy = *it; it++;
|
||||
n++;
|
||||
//::wxLogMessage(_T("%d %d\n"), ix, iy);
|
||||
controlpoints.push_back( new Point( ix, iy, ps, CP, this, n ) );
|
||||
}
|
||||
|
||||
initialized = true;
|
||||
closed = false;
|
||||
}
|
||||
|
||||
// initialize; generate control points
|
||||
void DrawCmd_S::Init(unsigned n)
|
||||
{
|
||||
// Ignore if this is already initted
|
||||
if (initialized) return;
|
||||
|
||||
wxPoint wx0 = prev->m_point->ToWxPoint();
|
||||
wxPoint wx1 = m_point->ToWxPoint();
|
||||
int xdiff = (wx1.x - wx0.x) / 3;
|
||||
int ydiff = (wx1.y - wx0.y) / 3;
|
||||
int xg, yg;
|
||||
|
||||
// first control
|
||||
m_point->pointsys->FromWxPoint( wx0.x + xdiff, wx0.y + ydiff, xg, yg );
|
||||
controlpoints.push_back( new Point( xg, yg, m_point->pointsys, CP, this, 1 ) );
|
||||
|
||||
// second control
|
||||
m_point->pointsys->FromWxPoint( wx1.x - xdiff, wx1.y - ydiff, xg, yg );
|
||||
controlpoints.push_back( new Point( xg, yg, m_point->pointsys, CP, this, 2 ) );
|
||||
|
||||
initialized = true;
|
||||
|
||||
}
|
||||
|
||||
// to ASS drawing command
|
||||
wxString DrawCmd_S::ToString()
|
||||
{
|
||||
PointList::iterator iterate = controlpoints.begin();
|
||||
wxString assout = _T("s");
|
||||
for (; iterate != controlpoints.end(); iterate++)
|
||||
{
|
||||
if (initialized)
|
||||
assout = wxString::Format(_T("%s %d %d"), assout.c_str(), (*iterate)->x(), (*iterate)->y());
|
||||
else
|
||||
assout = wxString::Format(_T("%s ? ?"), assout.c_str());
|
||||
}
|
||||
assout = wxString::Format(_T("%s %d %d"), assout.c_str(), m_point->x(), m_point->y());
|
||||
if (closed) assout = wxString::Format(_T("%s c"), assout.c_str());
|
||||
return assout;
|
||||
}
|
@ -1,112 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: cmd.hpp
|
||||
// Purpose: header file for ASSDraw drawing command classes
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "engine.hpp" // include the engine header for DrawCmd
|
||||
#include <vector> // ok, we use vector too
|
||||
|
||||
// this header file declares the following classes
|
||||
class DrawCmd_M;
|
||||
class DrawCmd_L;
|
||||
class DrawCmd_B;
|
||||
|
||||
// The M command
|
||||
class DrawCmd_M: public DrawCmd
|
||||
{
|
||||
public:
|
||||
// Constructor
|
||||
DrawCmd_M ( int x, int y, PointSystem *ps, DrawCmd *prev );
|
||||
|
||||
// to ASS drawing command
|
||||
wxString ToString();
|
||||
|
||||
};
|
||||
|
||||
// The L command
|
||||
class DrawCmd_L: public DrawCmd
|
||||
{
|
||||
public:
|
||||
// Constructor
|
||||
DrawCmd_L ( int x, int y, PointSystem *ps, DrawCmd *prev );
|
||||
|
||||
// to ASS drawing command
|
||||
wxString ToString();
|
||||
|
||||
};
|
||||
|
||||
// The B command
|
||||
class DrawCmd_B: public DrawCmd
|
||||
{
|
||||
public:
|
||||
// Constructor
|
||||
DrawCmd_B ( int x, int y, int x1, int y1, int x2, int y2, PointSystem *ps, DrawCmd *prev );
|
||||
|
||||
// Special constructor where only m_point is defined
|
||||
// Need to call Init() to generate the controls
|
||||
DrawCmd_B ( int x, int y, PointSystem *ps, DrawCmd *prev );
|
||||
|
||||
// Init this B command; generate controlpoints
|
||||
void Init ( unsigned n = 0 );
|
||||
|
||||
// to ASS drawing command
|
||||
wxString ToString();
|
||||
|
||||
//special
|
||||
bool C1Cont;
|
||||
|
||||
};
|
||||
|
||||
// The S command
|
||||
class DrawCmd_S: public DrawCmd
|
||||
{
|
||||
public:
|
||||
// Constructor
|
||||
DrawCmd_S ( int x, int y, PointSystem *ps, DrawCmd *prev );
|
||||
|
||||
// Constructor (with points info)
|
||||
DrawCmd_S ( int x, int y, std::vector< int > vals, PointSystem *ps, DrawCmd *prev );
|
||||
|
||||
// Init this S command; generate controlpoints
|
||||
void Init ( unsigned n = 0 );
|
||||
|
||||
// to ASS drawing command
|
||||
wxString ToString();
|
||||
|
||||
// special
|
||||
bool closed;
|
||||
};
|
||||
|
@ -1,2 +0,0 @@
|
||||
perl t-stringifier.pl agg_bcspline.h agg_conv_bcspline.h agg_vcgen_bcspline.h resource.h agg_bcspline.cpp agg_vcgen_bcspline.cpp assdraw.cpp assdraw_settings.cpp canvas.cpp canvas_mouse.cpp cmd.cpp dlgctrl.cpp engine.cpp library.cpp settings.cpp
|
||||
pause
|
@ -1,375 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: dlgctrl.cpp
|
||||
// Purpose: custom dialogs and controls
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "assdraw.hpp"
|
||||
|
||||
#if !defined(__WINDOWS__)
|
||||
#include "xpm/res.h"
|
||||
#endif
|
||||
|
||||
BEGIN_EVENT_TABLE(ASSDrawSrcTxtCtrl, wxTextCtrl)
|
||||
EVT_CHAR(ASSDrawSrcTxtCtrl::CustomOnChar)
|
||||
EVT_TEXT(wxID_ANY, ASSDrawSrcTxtCtrl::CustomOnText)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
BEGIN_EVENT_TABLE(ASSDrawTransformDlg, wxDialog)
|
||||
EVT_COMBOBOX(-1, ASSDrawTransformDlg::OnTemplatesCombo)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
//BEGIN_EVENT_TABLE(ASSDrawCanvasRecenterButton, wxWindow)
|
||||
//END_EVENT_TABLE()
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ASSDrawSrcTxtCtrl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
ASSDrawSrcTxtCtrl::ASSDrawSrcTxtCtrl(wxWindow *parent, ASSDrawFrame *frame)
|
||||
: wxTextCtrl(parent, wxID_ANY, _T(""), __DPDS__ , wxTE_MULTILINE )
|
||||
{
|
||||
m_frame = frame;
|
||||
}
|
||||
|
||||
void ASSDrawSrcTxtCtrl::CustomOnChar(wxKeyEvent &event)
|
||||
{
|
||||
switch (event.GetKeyCode())
|
||||
{
|
||||
case WXK_RETURN:
|
||||
m_frame->UpdateASSCommandStringFromSrcTxtCtrl(GetValue());
|
||||
break;
|
||||
case WXK_TAB:
|
||||
break; //do nothing
|
||||
default:
|
||||
//m_frame->SetTitle(wxString::Format(_T("Key: %d"), event.GetKeyCode()));
|
||||
event.Skip(true);
|
||||
}
|
||||
|
||||
//SetBackgroundColour(IsModified()? wxColour(0xFF, 0xFF, 0x99):*wxWHITE);
|
||||
}
|
||||
|
||||
void ASSDrawSrcTxtCtrl::CustomOnText(wxCommandEvent &event)
|
||||
{
|
||||
//SetBackgroundColour(IsModified()? wxColour(0xFF, 0xFF, 0x99):*wxWHITE);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ASSDrawTransformDlg
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
ASSDrawTransformDlg::ASSDrawTransformDlg(ASSDrawFrame* parent)
|
||||
: wxDialog(parent, -1, wxString(_T("Transform")))
|
||||
{
|
||||
m_frame = parent;
|
||||
|
||||
wxBoxSizer* sizer_main = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(sizer_main);
|
||||
|
||||
wxBoxSizer* sizer_templates = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer_main->Add(sizer_templates, 0, wxGROW|wxLEFT, 5);
|
||||
|
||||
sizer_templates->Add(new wxStaticText( this, -1, _("Templates"), __DPDS__ , 0 ),
|
||||
0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
combo_templates = new wxComboBox( this, -1, combo_templatesStrings[0], __DPDS__ , 10, combo_templatesStrings, wxCB_READONLY );
|
||||
sizer_templates->Add(combo_templates, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxFlexGridSizer* sizer_fields = new wxFlexGridSizer(3, 4, 0, 0);
|
||||
sizer_main->Add(sizer_fields, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT, 5);
|
||||
|
||||
int flag_txtctrl = wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL;
|
||||
int flag_statictxt = wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL;
|
||||
|
||||
sizer_fields->Add(new wxStaticText( this, -1, _("m11"), __DPDS__ , 0 ),
|
||||
0, flag_statictxt, 5);
|
||||
|
||||
txtctrl_m11 = new wxTextCtrl( this, -1, _T("1.0"), __DPDS__ , wxTE_RIGHT );
|
||||
sizer_fields->Add(txtctrl_m11, 0, flag_txtctrl, 5);
|
||||
|
||||
sizer_fields->Add(new wxStaticText( this, -1, _("m12"), __DPDS__ , 0 ),
|
||||
0, flag_statictxt, 5);
|
||||
|
||||
txtctrl_m12 = new wxTextCtrl( this, -1, _T("0.0"), __DPDS__ , wxTE_RIGHT );
|
||||
sizer_fields->Add(txtctrl_m12, 0, flag_txtctrl, 5);
|
||||
|
||||
sizer_fields->Add(new wxStaticText( this, -1, _("m21"), __DPDS__ , 0 ),
|
||||
0, flag_statictxt, 5);
|
||||
|
||||
txtctrl_m21 = new wxTextCtrl( this, -1, _T("0.0"), __DPDS__ , wxTE_RIGHT );
|
||||
sizer_fields->Add(txtctrl_m21, 0, flag_txtctrl, 5);
|
||||
|
||||
sizer_fields->Add(new wxStaticText( this, -1, _("m22"), __DPDS__ , 0 ),
|
||||
0, flag_statictxt, 5);
|
||||
|
||||
txtctrl_m22 = new wxTextCtrl( this, -1, _T("1.0"), __DPDS__ , wxTE_RIGHT );
|
||||
sizer_fields->Add(txtctrl_m22, 0, flag_txtctrl, 5);
|
||||
|
||||
sizer_fields->Add(new wxStaticText( this, -1, _("mx"), __DPDS__ , 0 ),
|
||||
0, flag_statictxt, 5);
|
||||
|
||||
txtctrl_mx = new wxTextCtrl( this, -1, _T("0.0"), __DPDS__ , wxTE_RIGHT );
|
||||
sizer_fields->Add(txtctrl_mx, 0, flag_txtctrl, 5);
|
||||
|
||||
sizer_fields->Add(new wxStaticText( this, -1, _("my"), __DPDS__ , 0 ),
|
||||
0, flag_statictxt, 5);
|
||||
|
||||
txtctrl_my = new wxTextCtrl( this, -1, _T("0.0"), __DPDS__ , wxTE_RIGHT );
|
||||
sizer_fields->Add(txtctrl_my, 0, flag_txtctrl, 5);
|
||||
|
||||
sizer_fields->Add(new wxStaticText( this, -1, _("nx"), __DPDS__ , 0 ),
|
||||
0, flag_statictxt, 5);
|
||||
|
||||
txtctrl_nx = new wxTextCtrl( this, -1, _T("0.0"), __DPDS__ , wxTE_RIGHT );
|
||||
sizer_fields->Add(txtctrl_nx, 0, flag_txtctrl, 5);
|
||||
|
||||
sizer_fields->Add(new wxStaticText( this, -1, _("ny"), __DPDS__ , 0 ),
|
||||
0, flag_statictxt, 5);
|
||||
|
||||
txtctrl_ny = new wxTextCtrl( this, -1, _T("0.0"), __DPDS__ , wxTE_RIGHT );
|
||||
sizer_fields->Add(txtctrl_ny, 0, flag_txtctrl, 5);
|
||||
|
||||
wxStaticBitmap* staticbmp = new wxStaticBitmap( this, -1, wxBITMAP(transform), wxDefaultPosition, wxSize(224, 56), 0 );
|
||||
sizer_main->Add(staticbmp, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxStdDialogButtonSizer* sizer_stdbutt = new wxStdDialogButtonSizer;
|
||||
|
||||
sizer_main->Add(sizer_stdbutt, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
wxButton* button_ok = new wxButton( this, wxID_OK, _("&OK"), __DPDS__ , 0 );
|
||||
sizer_stdbutt->AddButton(button_ok);
|
||||
|
||||
wxButton* button_cancel = new wxButton( this, wxID_CANCEL, _("&Cancel"), __DPDS__ , 0 );
|
||||
sizer_stdbutt->AddButton(button_cancel);
|
||||
|
||||
sizer_stdbutt->Realize();
|
||||
|
||||
sizer_main->Fit(this);
|
||||
|
||||
}
|
||||
|
||||
void ASSDrawTransformDlg::OnTemplatesCombo(wxCommandEvent &event)
|
||||
{
|
||||
int pos = -1;
|
||||
for (int i = 0; i < combo_templatesCount; i++)
|
||||
if (combo_templatesStrings[i].IsSameAs(((wxComboBox *) event.GetEventObject())->GetValue()))
|
||||
{
|
||||
pos = i;
|
||||
break;
|
||||
}
|
||||
if (pos == -1)
|
||||
return;
|
||||
|
||||
txtctrl_m11->SetValue( wxString::Format(_T("%.1f"), combo_templatesValues[pos].f1) );
|
||||
txtctrl_m12->SetValue( wxString::Format(_T("%.1f"), combo_templatesValues[pos].f2) );
|
||||
txtctrl_m21->SetValue( wxString::Format(_T("%.1f"), combo_templatesValues[pos].f3) );
|
||||
txtctrl_m22->SetValue( wxString::Format(_T("%.1f"), combo_templatesValues[pos].f4) );
|
||||
txtctrl_mx->SetValue( wxString::Format(_T("%.1f"), combo_templatesValues[pos].f5) );
|
||||
txtctrl_my->SetValue( wxString::Format(_T("%.1f"), combo_templatesValues[pos].f6) );
|
||||
txtctrl_nx->SetValue( wxString::Format(_T("%.1f"), combo_templatesValues[pos].f7) );
|
||||
txtctrl_ny->SetValue( wxString::Format(_T("%.1f"), combo_templatesValues[pos].f8) );
|
||||
}
|
||||
|
||||
void ASSDrawTransformDlg::EndModal(int retCode)
|
||||
{
|
||||
if (retCode != wxID_OK)
|
||||
{
|
||||
wxDialog::EndModal(retCode);
|
||||
return;
|
||||
}
|
||||
|
||||
bool ok = true;
|
||||
|
||||
ok = ok && txtctrl_m11->GetValue().ToDouble( &xformvals.f1 );
|
||||
ok = ok && txtctrl_m12->GetValue().ToDouble( &xformvals.f2 );
|
||||
ok = ok && txtctrl_m21->GetValue().ToDouble( &xformvals.f3 );
|
||||
ok = ok && txtctrl_m22->GetValue().ToDouble( &xformvals.f4 );
|
||||
ok = ok && txtctrl_mx->GetValue().ToDouble( &xformvals.f5 );
|
||||
ok = ok && txtctrl_my->GetValue().ToDouble( &xformvals.f6 );
|
||||
ok = ok && txtctrl_nx->GetValue().ToDouble( &xformvals.f7 );
|
||||
ok = ok && txtctrl_ny->GetValue().ToDouble( &xformvals.f8 );
|
||||
|
||||
if (ok)
|
||||
wxDialog::EndModal(wxID_OK);
|
||||
else
|
||||
wxMessageBox(_T("One or more values entered are not real numbers.\nPlease fix."), _T("Value error"), wxOK | wxICON_INFORMATION, m_frame);
|
||||
|
||||
}
|
||||
|
||||
|
||||
ASSDrawAboutDlg::ASSDrawAboutDlg(ASSDrawFrame *parent, unsigned timeout)
|
||||
: wxDialog(parent, wxID_ANY, wxString(TITLE), __DPDS__ , wxSIMPLE_BORDER), time_out(timeout)
|
||||
{
|
||||
SetBackgroundColour(*wxWHITE);
|
||||
htmlwin = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxSize(396, 200), wxHW_DEFAULT_STYLE | wxSIMPLE_BORDER);
|
||||
htmlwin->SetPage(
|
||||
_T("<html><body> \
|
||||
<p>ASSDraw3 is a tool for designing shapes to be used in ASS subtitle file. \
|
||||
<p>To add lines or curves, initiate the draw mode by clicking on the drawing tools. \
|
||||
Then, either click on empty space or drag from an existing point to add the new lines/curves. \
|
||||
Control points for Bezier curves are generated once you release the mouse button. \
|
||||
<p>To modify shapes, drag their points (squares) and control points (circles) in the drag mode. \
|
||||
<p><b>Some tips & tricks:</b> \
|
||||
<ul> \
|
||||
<li> Set background image by dragging image file from explorer onto the canvas \
|
||||
<li> Use the Shapes Library to store your drawings \
|
||||
<li> Ctrl-Z for undo, Ctrl-Y for redo \
|
||||
<li> Use your mousewheel to zoom in/out (PageUp/PageDown keys work too) \
|
||||
<li> Dragging with right mouse button moves the drawing and/or background image around. \
|
||||
<li> Double clicking with right mouse button for popup menus. \
|
||||
<li> Holding shift key while in the draw mode temporarily switches to the drag mode \
|
||||
<li> The shapes origin (coordinate [0, 0] depicted by the small cross) is draggable \
|
||||
</ul> \
|
||||
<p><b>Acknowledgements:</b> \
|
||||
<ul> \
|
||||
<li> Maxim Shemanarev <a href=\"http://www.antigrain.com\">http://www.antigrain.com</a> for his Anti-Grain Geometry (AGG) graphic toolkit. \
|
||||
<li> wxWidgets Project <a href=\"http://www.wxwidgets.org\">http://www.wxwidgets.org</a> for the ultracool GUI toolkit. \
|
||||
<li> Adrian Secord <a href=\"http://mrl.nyu.edu/~ajsecord/index.html\">http://mrl.nyu.edu/~ajsecord/index.html</a> for wxAGG, that combines AGG and wxWidgets\
|
||||
<li> jfs, ArchMageZeratul, RoRo and everyone at Aegisub's forum <a href=\"http://malakith.net/aegisub\">http://malakith.net/aegisub</a> for all suggestions and supports. \
|
||||
</ul> \
|
||||
<p>ai-chan recommends Aegisub for all your subtitle and typesetting needs! \
|
||||
</body></html>")
|
||||
);
|
||||
htmlwin->Connect(wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler(ASSDrawAboutDlg::OnURL), NULL, this);
|
||||
|
||||
wxFlexGridSizer *sizer = new wxFlexGridSizer(1);
|
||||
sizer->AddGrowableCol(0);
|
||||
//sizer->AddGrowableRow(1);
|
||||
|
||||
sizer->Add(new BigStaticBitmapCtrl(this, wxBITMAP(assdraw3_), *wxWHITE, this), 1, wxEXPAND);
|
||||
sizer->Add(htmlwin, 1, wxLEFT | wxRIGHT, 2);
|
||||
sizer->Add(new wxStaticText(this, wxID_ANY, wxString::Format(_T("Version: %s"), VERSION)), 1, wxEXPAND | wxALL, 2);
|
||||
sizer->Add(new wxButton(this, wxID_OK), 0, wxALIGN_CENTER | wxBOTTOM, 10);
|
||||
SetSizer(sizer);
|
||||
sizer->Layout();
|
||||
sizer->Fit(this);
|
||||
|
||||
Center();
|
||||
//if (CanSetTransparent()) SetTransparent(0xCC);
|
||||
|
||||
timer.SetOwner(this);
|
||||
Connect(wxEVT_TIMER, wxTimerEventHandler(ASSDrawAboutDlg::OnTimeout));
|
||||
Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(ASSDrawAboutDlg::OnMouseEnterWindow));
|
||||
}
|
||||
|
||||
ASSDrawAboutDlg::~ASSDrawAboutDlg()
|
||||
{
|
||||
timer.Stop();
|
||||
}
|
||||
|
||||
int ASSDrawAboutDlg::ShowModal()
|
||||
{
|
||||
if (time_out > 0)
|
||||
timer.Start(time_out * 1000, true);
|
||||
return wxDialog::ShowModal();
|
||||
}
|
||||
|
||||
void ASSDrawAboutDlg::OnURL(wxHtmlLinkEvent &event)
|
||||
{
|
||||
wxString URL(event.GetLinkInfo().GetHref());
|
||||
if (URL.StartsWith(_T("http://")))
|
||||
::wxLaunchDefaultBrowser(URL);
|
||||
else
|
||||
event.Skip(true);
|
||||
}
|
||||
|
||||
void ASSDrawAboutDlg::OnTimeout(wxTimerEvent& event)
|
||||
{
|
||||
if (IsShown())
|
||||
EndModal(wxID_OK);
|
||||
}
|
||||
|
||||
void ASSDrawAboutDlg::OnMouseEnterWindow(wxMouseEvent& event)
|
||||
{
|
||||
// if mouse enters this dialog, stop the timout timer
|
||||
// and dialog will only close through user input
|
||||
timer.Stop();
|
||||
}
|
||||
|
||||
BEGIN_EVENT_TABLE(BigStaticBitmapCtrl, wxPanel)
|
||||
EVT_PAINT(BigStaticBitmapCtrl::OnPaint)
|
||||
EVT_MOTION (BigStaticBitmapCtrl::OnMouseMove)
|
||||
EVT_LEFT_UP(BigStaticBitmapCtrl::OnMouseLeftUp)
|
||||
EVT_LEFT_DOWN(BigStaticBitmapCtrl::OnMouseLeftDown)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
BigStaticBitmapCtrl::BigStaticBitmapCtrl(wxWindow *parent, wxBitmap bmap, wxColour bgcol, wxWindow *todrag)
|
||||
: wxPanel(parent, wxID_ANY)
|
||||
{
|
||||
bitmap = bmap;
|
||||
bgbrush = wxBrush(bgcol);
|
||||
window_to_drag = todrag;
|
||||
SetSize(bitmap.GetWidth(), bitmap.GetHeight());
|
||||
Refresh();
|
||||
}
|
||||
|
||||
BigStaticBitmapCtrl::~BigStaticBitmapCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
void BigStaticBitmapCtrl::OnPaint(wxPaintEvent& event)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
dc.SetBackground(bgbrush);
|
||||
dc.Clear();
|
||||
dc.DrawBitmap(bitmap, wxPoint(0,0));
|
||||
}
|
||||
|
||||
void BigStaticBitmapCtrl::OnMouseLeftDown(wxMouseEvent &event)
|
||||
{
|
||||
if (window_to_drag != NULL)
|
||||
{
|
||||
dragpoint = event.GetPosition();
|
||||
}
|
||||
CaptureMouse();
|
||||
}
|
||||
|
||||
void BigStaticBitmapCtrl::OnMouseLeftUp(wxMouseEvent &event)
|
||||
{
|
||||
ReleaseMouse();
|
||||
}
|
||||
|
||||
void BigStaticBitmapCtrl::OnMouseMove(wxMouseEvent &event)
|
||||
{
|
||||
if (window_to_drag != NULL && event.Dragging() && HasCapture())
|
||||
{
|
||||
wxPoint npoint(event.GetPosition());
|
||||
wxPoint wndpos = window_to_drag->GetScreenPosition();
|
||||
wxPoint thispos = this->GetScreenPosition();
|
||||
//ReleaseMouse();
|
||||
window_to_drag->Move(wndpos.x + npoint.x - dragpoint.x,
|
||||
wndpos.y + npoint.y - dragpoint.y);
|
||||
//CaptureMouse();
|
||||
if (thispos == this->GetScreenPosition()) // if this ctrl did not move when window_to_drag moved
|
||||
dragpoint = npoint;
|
||||
}
|
||||
event.Skip(true);
|
||||
}
|
@ -1,115 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "_common.hpp"
|
||||
#include <wx/html/htmlwin.h>
|
||||
#include <wx/timer.h>
|
||||
|
||||
|
||||
class ASSDrawFrame;
|
||||
|
||||
class ASSDrawSrcTxtCtrl : public wxTextCtrl
|
||||
{
|
||||
public:
|
||||
ASSDrawSrcTxtCtrl(wxWindow *parent, ASSDrawFrame *frame);
|
||||
virtual void CustomOnChar(wxKeyEvent &event);
|
||||
virtual void CustomOnText(wxCommandEvent &event);
|
||||
|
||||
protected:
|
||||
ASSDrawFrame *m_frame;
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
struct EightDouble
|
||||
{
|
||||
double f1, f2, f3, f4, f5, f6, f7, f8;
|
||||
};
|
||||
|
||||
class ASSDrawTransformDlg : public wxDialog
|
||||
{
|
||||
|
||||
public:
|
||||
ASSDrawTransformDlg(ASSDrawFrame* parent);
|
||||
void OnTemplatesCombo(wxCommandEvent &event);
|
||||
void EndModal(int retCode);
|
||||
|
||||
ASSDrawFrame* m_frame;
|
||||
wxComboBox* combo_templates;
|
||||
wxTextCtrl* txtctrl_m11;
|
||||
wxTextCtrl* txtctrl_m12;
|
||||
wxTextCtrl* txtctrl_m21;
|
||||
wxTextCtrl* txtctrl_m22;
|
||||
wxTextCtrl* txtctrl_mx;
|
||||
wxTextCtrl* txtctrl_my;
|
||||
wxTextCtrl* txtctrl_nx;
|
||||
wxTextCtrl* txtctrl_ny;
|
||||
EightDouble xformvals;
|
||||
|
||||
static wxString combo_templatesStrings[];
|
||||
static int combo_templatesCount;
|
||||
static EightDouble combo_templatesValues[];
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
};
|
||||
|
||||
class ASSDrawAboutDlg : public wxDialog
|
||||
{
|
||||
public:
|
||||
ASSDrawAboutDlg(ASSDrawFrame *parent, unsigned timeout = 0);
|
||||
virtual ~ASSDrawAboutDlg();
|
||||
virtual void OnURL(wxHtmlLinkEvent &event);
|
||||
virtual int ShowModal();
|
||||
virtual void OnTimeout(wxTimerEvent& event);
|
||||
virtual void OnMouseEnterWindow(wxMouseEvent& event);
|
||||
|
||||
protected:
|
||||
wxTimer timer;
|
||||
wxHtmlWindow *htmlwin;
|
||||
const unsigned time_out;
|
||||
};
|
||||
|
||||
class BigStaticBitmapCtrl : public wxPanel
|
||||
{
|
||||
public:
|
||||
BigStaticBitmapCtrl(wxWindow *parent, wxBitmap bmap, wxColour bgcol, wxWindow *todrag = NULL);
|
||||
virtual ~BigStaticBitmapCtrl();
|
||||
virtual void OnPaint(wxPaintEvent& event);
|
||||
virtual void OnMouseLeftDown(wxMouseEvent &event);
|
||||
virtual void OnMouseLeftUp(wxMouseEvent &event);
|
||||
virtual void OnMouseMove(wxMouseEvent &event);
|
||||
|
||||
protected:
|
||||
wxBitmap bitmap;
|
||||
wxBrush bgbrush;
|
||||
wxWindow *window_to_drag;
|
||||
wxPoint dragpoint, wndpos;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
@ -1,749 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: engine.cpp
|
||||
// Purpose: ASSDraw drawing engine
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "engine.hpp" // the header
|
||||
#include "cmd.hpp" // we need the drawing command classes declaration
|
||||
#include <wx/tokenzr.h> // we use string tokenizer
|
||||
#include <vector> // ok, we use vector too
|
||||
#include <stdio.h>
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Point
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// constructor
|
||||
Point::Point ( int _x, int _y, PointSystem* ps, POINTTYPE t, DrawCmd* cmd, unsigned n )
|
||||
{
|
||||
x_ = _x;
|
||||
y_ = _y;
|
||||
pointsys = ps;
|
||||
cmd_main = cmd;
|
||||
cmd_next = NULL;
|
||||
type = t;
|
||||
isselected = false;
|
||||
num = n;
|
||||
}
|
||||
|
||||
// setters
|
||||
void Point::setXY( int _x, int _y)
|
||||
{
|
||||
x_ = _x;
|
||||
y_ = _y;
|
||||
}
|
||||
|
||||
// simply returns true if px and py are the coordinate values
|
||||
bool Point::IsAt( int px, int py )
|
||||
{
|
||||
return (x_ == px && y_ == py );
|
||||
}
|
||||
|
||||
// convert this point to wxPoint using scale and originx, originy
|
||||
wxPoint Point::ToWxPoint ( bool useorigin )
|
||||
{
|
||||
if (useorigin)
|
||||
return pointsys->ToWxPoint( x_, y_ );
|
||||
else
|
||||
return *(new wxPoint(x_ * (int) pointsys->scale, y_ * (int) pointsys->scale ));
|
||||
}
|
||||
|
||||
// check if wxpoint is nearby this point
|
||||
bool Point::CheckWxPoint ( wxPoint wxpoint )
|
||||
{
|
||||
wxPoint p = ToWxPoint();
|
||||
int cx, cy;
|
||||
pointsys->FromWxPoint( wxpoint, cx, cy );
|
||||
//delete &p;
|
||||
return (x_ == cx && y_ == cy );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// DrawCmd
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// constructor
|
||||
DrawCmd::DrawCmd ( int x, int y, PointSystem *ps, DrawCmd *pv )
|
||||
{
|
||||
m_point = new Point ( x, y, ps, MP, this );
|
||||
m_point->cmd_main = this;
|
||||
prev = pv;
|
||||
dobreak = false;
|
||||
invisible = false;
|
||||
}
|
||||
|
||||
// destructor
|
||||
DrawCmd::~DrawCmd ( )
|
||||
{
|
||||
if (m_point)
|
||||
delete m_point;
|
||||
for (PointList::iterator iter_cpoint = controlpoints.begin();
|
||||
iter_cpoint != controlpoints.end(); iter_cpoint++)
|
||||
delete (*iter_cpoint);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ASSDrawEngine
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
BEGIN_EVENT_TABLE(ASSDrawEngine, GUI::AGGWindow)
|
||||
EVT_PAINT (ASSDrawEngine::OnPaint)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
// constructor
|
||||
ASSDrawEngine::ASSDrawEngine( wxWindow *parent, int extraflags )
|
||||
: GUI::AGGWindow(parent, -1, wxDefaultPosition, wxDefaultSize,
|
||||
wxNO_FULL_REPAINT_ON_RESIZE | extraflags )
|
||||
{
|
||||
pointsys = new PointSystem(1, 0, 0) ;
|
||||
refresh_called = false;
|
||||
fitviewpoint_hmargin = 10;
|
||||
fitviewpoint_vmargin = 10;
|
||||
setfitviewpoint = false;
|
||||
rgba_shape = agg::rgba(0,0,1);
|
||||
color_bg = PixelFormat::AGGType::color_type(255, 255, 255);
|
||||
drawcmdset = _T("m n l b s p c _"); //the spaces and underscore are in there for a reason, guess?
|
||||
ResetEngine();
|
||||
}
|
||||
|
||||
ASSDrawEngine::~ASSDrawEngine()
|
||||
{
|
||||
ResetEngine ( false );
|
||||
//delete pointsys;
|
||||
}
|
||||
|
||||
// parse ASS draw commands; returns the number of parsed commands
|
||||
int ASSDrawEngine::ParseASS ( wxString str )
|
||||
{
|
||||
ResetEngine( false );
|
||||
str.Replace(_T("\t"), _T(""));
|
||||
str.Replace(_T("\r"), _T(""));
|
||||
str.Replace(_T("\n"), _T(""));
|
||||
str = str.Lower() + _T(" _ _");
|
||||
// we don't use regex because the pattern is too simple
|
||||
wxStringTokenizer tkz( str, _T(" ") );
|
||||
wxString currcmd(_T(""));
|
||||
std::vector<int> val;
|
||||
wxString token;
|
||||
long tmp_int;
|
||||
|
||||
bool n_collected = false;
|
||||
DrawCmd_S *s_command = NULL;
|
||||
wxPoint tmp_n_pnt;
|
||||
|
||||
while ( tkz.HasMoreTokens() )
|
||||
{
|
||||
token = tkz.GetNextToken();
|
||||
|
||||
if ( drawcmdset.Find(token) > -1 )
|
||||
{
|
||||
bool done;
|
||||
|
||||
do {
|
||||
done = true;
|
||||
|
||||
// N
|
||||
if (currcmd.IsSameAs(_T("n")) && val.size() >= 2)
|
||||
{
|
||||
tmp_n_pnt.x = val[0], tmp_n_pnt.y = val[1];
|
||||
n_collected = true;
|
||||
}
|
||||
else if(n_collected)
|
||||
{
|
||||
AppendCmd ( L, tmp_n_pnt.x, tmp_n_pnt.y );
|
||||
n_collected = false;
|
||||
}
|
||||
|
||||
if (s_command != NULL)
|
||||
{
|
||||
bool ends = true;
|
||||
if (currcmd.IsSameAs(_T("p"))&& val.size() >= 2)
|
||||
{
|
||||
s_command->m_point->type = CP;
|
||||
s_command->m_point->num = s_command->controlpoints.size() + 1;
|
||||
s_command->controlpoints.push_back(s_command->m_point);
|
||||
s_command->m_point = new Point(val[0], val[1], pointsys, MP, s_command);
|
||||
ends = false;
|
||||
}
|
||||
else if (currcmd.IsSameAs(_T("c")))
|
||||
s_command->closed = true;
|
||||
|
||||
if (ends)
|
||||
{
|
||||
AppendCmd(s_command);
|
||||
s_command = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// M
|
||||
if (currcmd.IsSameAs(_T("m")) && val.size() >= 2)
|
||||
AppendCmd ( M, val[0], val[1] );
|
||||
|
||||
// L
|
||||
if (currcmd.IsSameAs(_T("l")) && val.size() >= 2)
|
||||
{
|
||||
AppendCmd ( L, val[0], val[1] );
|
||||
val.erase(val.begin(), val.begin()+2);
|
||||
// L is greedy
|
||||
if (val.size() >= 2)
|
||||
done = false;
|
||||
}
|
||||
|
||||
// B
|
||||
if (currcmd.IsSameAs(_T("b")) && val.size() >= 6)
|
||||
{
|
||||
AppendCmd ( new DrawCmd_B(val[4], val[5], val[0], val[1],
|
||||
val[2], val[3], pointsys, LastCmd()) );
|
||||
val.erase(val.begin(), val.begin()+6);
|
||||
// so is B
|
||||
if (val.size() >= 6)
|
||||
done = false;
|
||||
}
|
||||
|
||||
// S
|
||||
if (currcmd.IsSameAs(_T("s")) && val.size() >= 6)
|
||||
{
|
||||
int num = (val.size() / 2) * 2;
|
||||
std::vector<int> val2;
|
||||
int i = 0;
|
||||
for (; i < num - 2; i++)
|
||||
val2.push_back(val[i]);
|
||||
|
||||
s_command = new DrawCmd_S(val[num - 2], val[num - 1], val2, pointsys, LastCmd());
|
||||
}
|
||||
// more to come later
|
||||
} while (!done);
|
||||
|
||||
val.clear();
|
||||
currcmd = token;
|
||||
}
|
||||
else if (token.ToLong( &tmp_int ))
|
||||
{
|
||||
val.push_back( (int) tmp_int );
|
||||
}
|
||||
}
|
||||
|
||||
return (int) cmds.size();
|
||||
}
|
||||
|
||||
// generate ASS draw commands
|
||||
wxString ASSDrawEngine::GenerateASS ( )
|
||||
{
|
||||
wxString output = _T("");
|
||||
for (DrawCmdList::iterator iterate = cmds.begin(); iterate != cmds.end(); iterate++)
|
||||
output = output + (*iterate)->ToString() + _T(" ");
|
||||
return output;
|
||||
}
|
||||
|
||||
// reset; delete all points and add a new M(0,0)
|
||||
void ASSDrawEngine::ResetEngine()
|
||||
{
|
||||
ResetEngine(true);
|
||||
}
|
||||
|
||||
// reset; delete all points and add a new M(0,0) if addM == true
|
||||
void ASSDrawEngine::ResetEngine( bool addM )
|
||||
{
|
||||
for (DrawCmdList::iterator iterate = cmds.begin(); iterate != cmds.end(); iterate++)
|
||||
delete (*iterate);
|
||||
cmds.clear();
|
||||
if (addM) AppendCmd( M, 0, 0 );
|
||||
}
|
||||
|
||||
// Create draw command of type 'type' and m_point (x, y), append to the
|
||||
// list and return it
|
||||
DrawCmd* ASSDrawEngine::AppendCmd ( CMDTYPE type, int x, int y )
|
||||
{
|
||||
|
||||
// use a variation of this method
|
||||
return AppendCmd( NewCmd( type, x, y ) );
|
||||
}
|
||||
|
||||
// Append draw command
|
||||
DrawCmd* ASSDrawEngine::AppendCmd ( DrawCmd* cmd )
|
||||
{
|
||||
// no NULL command!
|
||||
if (cmd == NULL) return NULL;
|
||||
|
||||
// set dependency of this command on the m_point of the last command
|
||||
if (!cmds.empty())
|
||||
ConnectSubsequentCmds( cmds.back(), cmd );
|
||||
else
|
||||
{
|
||||
// since this is the first command, if it's not an M make it into one
|
||||
if (cmd->type != M)
|
||||
cmd = NewCmd( M, cmd->m_point->x(), cmd->m_point->y() );
|
||||
ConnectSubsequentCmds( NULL, cmd );
|
||||
}
|
||||
// put it in the list
|
||||
cmds.push_back( cmd );
|
||||
|
||||
return cmd;
|
||||
}
|
||||
|
||||
// create draw command of type 'type' and m_point (x, y), insert to the
|
||||
// list after the _cmd and return it
|
||||
DrawCmd* ASSDrawEngine::InsertCmd ( CMDTYPE type, int x, int y, DrawCmd* _cmd )
|
||||
{
|
||||
// prepare the new DrawCmd
|
||||
DrawCmd* c = NewCmd( type, x, y );
|
||||
|
||||
// use a variation of this method
|
||||
InsertCmd( c, _cmd );
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// insert draw command cmd after _cmd
|
||||
void ASSDrawEngine::InsertCmd ( DrawCmd* cmd, DrawCmd* _cmd )
|
||||
{
|
||||
DrawCmdList::iterator iterate = cmds.begin();
|
||||
for (; iterate != cmds.end() && *iterate != _cmd; iterate++)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
if (iterate == cmds.end())
|
||||
{
|
||||
AppendCmd( cmd );
|
||||
}
|
||||
else
|
||||
{
|
||||
iterate++;
|
||||
if (iterate != cmds.end())
|
||||
{
|
||||
ConnectSubsequentCmds( cmd, (*iterate) );
|
||||
}
|
||||
cmds.insert( iterate, cmd );
|
||||
ConnectSubsequentCmds( _cmd, cmd );
|
||||
}
|
||||
}
|
||||
|
||||
DrawCmd* ASSDrawEngine::NewCmd ( CMDTYPE type, int x, int y )
|
||||
{
|
||||
DrawCmd* c = NULL;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case M:
|
||||
c = new DrawCmd_M(x, y, pointsys, LastCmd());
|
||||
break;
|
||||
case L:
|
||||
c = new DrawCmd_L(x, y, pointsys, LastCmd());
|
||||
break;
|
||||
case B:
|
||||
c = new DrawCmd_B(x, y, pointsys, LastCmd());
|
||||
break;
|
||||
case S:
|
||||
c = new DrawCmd_S(x, y, pointsys, LastCmd());
|
||||
break;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
// returns the iterator for the list
|
||||
DrawCmdList::iterator ASSDrawEngine::Iterator ( )
|
||||
{
|
||||
return cmds.begin();
|
||||
}
|
||||
|
||||
// returns the 'end' iterator for the list
|
||||
DrawCmdList::iterator ASSDrawEngine::IteratorEnd ( )
|
||||
{
|
||||
return cmds.end();
|
||||
}
|
||||
|
||||
// returns the last command in the list
|
||||
DrawCmd* ASSDrawEngine::LastCmd ()
|
||||
{
|
||||
if (cmds.size() == 0)
|
||||
return NULL;
|
||||
else
|
||||
return cmds.back();
|
||||
}
|
||||
|
||||
// move all points by relative amount of x, y coordinates
|
||||
void ASSDrawEngine::MovePoints ( int x, int y )
|
||||
{
|
||||
DrawCmdList::iterator iterate = cmds.begin();
|
||||
PointList::iterator iterate2;
|
||||
|
||||
for (; iterate != cmds.end(); iterate++)
|
||||
{
|
||||
(*iterate)->m_point->setXY( (*iterate)->m_point->x() + x, (*iterate)->m_point->y() + y );
|
||||
for (iterate2 = (*iterate)->controlpoints.begin();
|
||||
iterate2 != (*iterate)->controlpoints.end(); iterate2++)
|
||||
{
|
||||
(*iterate2)->setXY( (*iterate2)->x() + x, (*iterate2)->y() + y );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// transform all points using the calculation:
|
||||
// | (m11) (m12) | x | (x - mx) | + | nx |
|
||||
// | (m21) (m22) | | (y - my) | | ny |
|
||||
void ASSDrawEngine::Transform( float m11, float m12, float m21, float m22,
|
||||
float mx, float my, float nx, float ny )
|
||||
{
|
||||
DrawCmdList::iterator iterate = cmds.begin();
|
||||
PointList::iterator iterate2;
|
||||
float x, y;
|
||||
for (; iterate != cmds.end(); iterate++)
|
||||
{
|
||||
x = ((float) (*iterate)->m_point->x()) - mx;
|
||||
y = ((float) (*iterate)->m_point->y()) - my;
|
||||
(*iterate)->m_point->setXY((int) (x * m11 + y * m12 + nx), (int) (x * m21 + y * m22 + ny) );
|
||||
for (iterate2 = (*iterate)->controlpoints.begin();
|
||||
iterate2 != (*iterate)->controlpoints.end(); iterate2++)
|
||||
{
|
||||
x = ((float) (*iterate2)->x()) - mx;
|
||||
y = ((float) (*iterate2)->y()) - my;
|
||||
(*iterate2)->setXY((int) (x * m11 + y * m12 + nx), (int) (x * m21 + y * m22 + ny) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// returns some DrawCmd if its m_point = (x, y)
|
||||
DrawCmd* ASSDrawEngine::PointAt ( int x, int y )
|
||||
{
|
||||
DrawCmd* c = NULL;
|
||||
DrawCmdList::iterator iterate = cmds.begin();
|
||||
|
||||
for (; iterate != cmds.end(); iterate++)
|
||||
{
|
||||
if ( (*iterate)->m_point->IsAt( x, y ) )
|
||||
c = (*iterate);
|
||||
}
|
||||
|
||||
//delete &iterate;
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
// returns some DrawCmd if one of its control point = (x, y)
|
||||
// also set &point to refer to that control point
|
||||
DrawCmd* ASSDrawEngine::ControlAt ( int x, int y, Point* &point )
|
||||
{
|
||||
DrawCmd* c = NULL;
|
||||
point = NULL;
|
||||
DrawCmdList::iterator cmd_iterator = cmds.begin();
|
||||
PointList::iterator pnt_iterator;
|
||||
PointList::iterator end;
|
||||
|
||||
for (; cmd_iterator != cmds.end(); cmd_iterator++)
|
||||
{
|
||||
pnt_iterator = (*cmd_iterator)->controlpoints.begin();
|
||||
end = (*cmd_iterator)->controlpoints.end();
|
||||
for (; pnt_iterator != end; pnt_iterator++)
|
||||
{
|
||||
if ( (*pnt_iterator)->IsAt( x, y ) )
|
||||
{
|
||||
c = (*cmd_iterator);
|
||||
point = (*pnt_iterator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
// attempts to delete a commmand, returns true|false if successful|fail
|
||||
bool ASSDrawEngine::DeleteCommand ( DrawCmd* cmd )
|
||||
{
|
||||
|
||||
DrawCmdList::iterator iterate = cmds.begin();
|
||||
// can't delete the first command without deleting other commands first
|
||||
if ( cmd == (*iterate) && cmds.size() > 1) return false;
|
||||
|
||||
DrawCmd* lastiter = NULL;
|
||||
|
||||
for (; iterate != cmds.end(); iterate++)
|
||||
{
|
||||
if ( cmd == (*iterate) )
|
||||
{
|
||||
iterate++;
|
||||
DrawCmd* nxt = (iterate != cmds.end()? (*iterate):NULL);
|
||||
ConnectSubsequentCmds( lastiter, nxt );
|
||||
iterate--;
|
||||
cmds.erase( iterate );
|
||||
delete cmd;
|
||||
break;
|
||||
}
|
||||
else
|
||||
lastiter = (*iterate);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// set stuff to connect two drawing commands cmd1 and cmd2 such that
|
||||
// cmd1 comes right before cmd2
|
||||
void ASSDrawEngine::ConnectSubsequentCmds (DrawCmd* cmd1, DrawCmd* cmd2)
|
||||
{
|
||||
if (cmd1 != NULL)
|
||||
{
|
||||
cmd1->m_point->cmd_next = cmd2;
|
||||
}
|
||||
|
||||
if (cmd2 != NULL)
|
||||
{
|
||||
cmd2->prev = cmd1;
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawEngine::RefreshDisplay()
|
||||
{
|
||||
if (!refresh_called)
|
||||
{
|
||||
Refresh();
|
||||
refresh_called = true;
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawEngine::OnPaint(wxPaintEvent& event)
|
||||
{
|
||||
draw();
|
||||
onPaint(event);
|
||||
if (setfitviewpoint)
|
||||
{
|
||||
FitToViewPoint( fitviewpoint_hmargin, fitviewpoint_vmargin );
|
||||
setfitviewpoint = false;
|
||||
RefreshDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawEngine::draw()
|
||||
{
|
||||
refresh_called = false;
|
||||
|
||||
PixelFormat::AGGType pixf(rBuf);
|
||||
RendererBase rbase(pixf);
|
||||
RendererPrimitives rprim(rbase);
|
||||
RendererSolid rsolid(rbase);
|
||||
|
||||
agg::trans_affine mtx;
|
||||
ConstructPathsAndCurves(mtx, rm_path, rb_path, rm_curve);
|
||||
|
||||
rasterizer.reset();
|
||||
update_rendered_bound_coords(true);
|
||||
DoDraw(rbase, rprim, rsolid, mtx);
|
||||
|
||||
delete rm_path, rb_path, rm_curve;
|
||||
}
|
||||
|
||||
void ASSDrawEngine::ConstructPathsAndCurves(agg::trans_affine& mtx,
|
||||
trans_path*& _rm_path, trans_path*& _rb_path, agg::conv_curve<trans_path>*& _rm_curve)
|
||||
{
|
||||
mtx *= agg::trans_affine_scaling(pointsys->scale);
|
||||
mtx *= agg::trans_affine_translation(pointsys->originx, pointsys->originy);
|
||||
|
||||
m_path.remove_all();
|
||||
b_path.remove_all();
|
||||
|
||||
DrawCmdList::iterator ci = cmds.begin();
|
||||
while (ci != cmds.end())
|
||||
{
|
||||
AddDrawCmdToAGGPathStorage(*ci, m_path);
|
||||
AddDrawCmdToAGGPathStorage(*ci, b_path, CTRL_LN);
|
||||
ci++;
|
||||
}
|
||||
_rm_path = new trans_path(m_path, mtx);
|
||||
_rb_path = new trans_path(b_path, mtx);
|
||||
_rm_curve = new agg::conv_curve<trans_path>(*rm_path);
|
||||
}
|
||||
|
||||
void ASSDrawEngine::DoDraw( RendererBase& rbase, RendererPrimitives& rprim, RendererSolid& rsolid, agg::trans_affine& mtx )
|
||||
{
|
||||
Draw_Clear( rbase );
|
||||
Draw_Draw( rbase, rprim, rsolid, mtx, rgba_shape );
|
||||
}
|
||||
|
||||
void ASSDrawEngine::Draw_Clear( RendererBase& rbase )
|
||||
{
|
||||
rbase.clear(color_bg);
|
||||
}
|
||||
|
||||
void ASSDrawEngine::Draw_Draw( RendererBase& rbase, RendererPrimitives& rprim, RendererSolid& rsolid, agg::trans_affine& mtx, agg::rgba color )
|
||||
{
|
||||
agg::conv_contour< agg::conv_curve< agg::conv_transform< agg::path_storage > > > contour(*rm_curve);
|
||||
rasterizer.add_path(contour);
|
||||
render_scanlines_aa_solid(rbase, color);
|
||||
}
|
||||
|
||||
void ASSDrawEngine::AddDrawCmdToAGGPathStorage(DrawCmd* cmd, agg::path_storage& path, DRAWCMDMODE mode)
|
||||
{
|
||||
if (mode == HILITE && cmd->prev)
|
||||
path.move_to(cmd->prev->m_point->x(), cmd->prev->m_point->y());
|
||||
|
||||
switch(cmd->type)
|
||||
{
|
||||
case M:
|
||||
path.move_to(cmd->m_point->x(),cmd->m_point->y());
|
||||
break;
|
||||
|
||||
case B:
|
||||
if (cmd->initialized)
|
||||
{
|
||||
//path.move_to(cmd->prev->m_point->x(),cmd->prev->m_point->y());
|
||||
PointList::iterator iterate = cmd->controlpoints.begin();
|
||||
int x[2], y[2];
|
||||
x[0] = (*iterate)->x();
|
||||
y[0] = (*iterate)->y();
|
||||
iterate++;
|
||||
x[1] = (*iterate)->x();
|
||||
y[1] = (*iterate)->y();
|
||||
path.curve4(x[0], y[0], x[1], y[1], cmd->m_point->x(),cmd->m_point->y());
|
||||
break;
|
||||
}
|
||||
|
||||
case L:
|
||||
if (mode == CTRL_LN)
|
||||
path.move_to(cmd->m_point->x(),cmd->m_point->y());
|
||||
else
|
||||
path.line_to(cmd->m_point->x(),cmd->m_point->y());
|
||||
break;
|
||||
|
||||
case S:
|
||||
unsigned np = cmd->controlpoints.size();
|
||||
agg::pod_array<double> m_polygon(np * 2);
|
||||
unsigned _pn = 0;
|
||||
PointList::iterator iterate = cmd->controlpoints.begin();
|
||||
while (iterate != cmd->controlpoints.end())
|
||||
{
|
||||
m_polygon[_pn] = (*iterate)->x(); _pn++;
|
||||
m_polygon[_pn] = (*iterate)->y(); _pn++;
|
||||
iterate++;
|
||||
}
|
||||
//m_polygon[_pn++] = cmd->m_point->x();
|
||||
//m_polygon[_pn++] = cmd->m_point->y();
|
||||
//path.move_to(cmd->prev->m_point->x(),cmd->prev->m_point->y());
|
||||
if (mode == CTRL_LN)
|
||||
{
|
||||
_pn = 0;
|
||||
while (_pn < np * 2)
|
||||
{
|
||||
path.line_to((int) m_polygon[_pn],(int) m_polygon[_pn + 1]);
|
||||
_pn += 2;
|
||||
}
|
||||
path.line_to(cmd->m_point->x(), cmd->m_point->y());
|
||||
}
|
||||
else
|
||||
{
|
||||
//path.line_to((int) m_polygon[0],(int) m_polygon[1]);
|
||||
aggpolygon poly(&m_polygon[0], np, false, false);
|
||||
agg::conv_bcspline<agg::simple_polygon_vertex_source> bspline(poly);
|
||||
bspline.interpolation_step(0.01);
|
||||
agg::path_storage npath;
|
||||
npath.join_path(bspline);
|
||||
path.join_path(npath);
|
||||
if (mode == HILITE)
|
||||
path.move_to((int) m_polygon[np * 2 - 2], (int) m_polygon[np * 2 - 1] );
|
||||
path.line_to(cmd->m_point->x(), cmd->m_point->y());
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ASSDrawEngine::render_scanlines_aa_solid(RendererBase& rbase, agg::rgba rgba, bool affectboundaries)
|
||||
{
|
||||
agg::render_scanlines_aa_solid(rasterizer, scanline, rbase, rgba);
|
||||
if (affectboundaries) update_rendered_bound_coords();
|
||||
}
|
||||
|
||||
void ASSDrawEngine::render_scanlines(RendererSolid& rsolid, bool affectboundaries)
|
||||
{
|
||||
agg::render_scanlines(rasterizer, scanline, rsolid);
|
||||
if (affectboundaries) update_rendered_bound_coords();
|
||||
}
|
||||
|
||||
void ASSDrawEngine::update_rendered_bound_coords(bool rendered_fresh)
|
||||
{
|
||||
int min_x = rasterizer.min_x();
|
||||
int min_y = rasterizer.min_y();
|
||||
int max_x = rasterizer.max_x();
|
||||
int max_y = rasterizer.max_y();
|
||||
if (min_x < rendered_min_x || rendered_fresh) rendered_min_x = min_x;
|
||||
if (min_y < rendered_min_y || rendered_fresh) rendered_min_y = min_y;
|
||||
if (max_x > rendered_max_x || rendered_fresh) rendered_max_x = max_x;
|
||||
if (max_y > rendered_max_y || rendered_fresh) rendered_max_y = max_y;
|
||||
}
|
||||
|
||||
void ASSDrawEngine::FitToViewPoint(int hmargin, int vmargin)
|
||||
{
|
||||
wxSize v = GetClientSize();
|
||||
double wide = rendered_max_x - rendered_min_x;
|
||||
double high = rendered_max_y - rendered_min_y;
|
||||
double widthratio = (double) (v.x - hmargin * 2) / wide;
|
||||
double heightratio = (double) (v.y - vmargin * 2) / high;
|
||||
double ratio = (widthratio < heightratio? widthratio:heightratio);
|
||||
pointsys->scale = pointsys->scale * ratio;
|
||||
if (pointsys->scale < 0.01) pointsys->scale = 0.01;
|
||||
double new_min_x = pointsys->originx + (rendered_min_x - pointsys->originx) * ratio;
|
||||
double new_max_x = pointsys->originx + (rendered_max_x - pointsys->originx) * ratio;
|
||||
pointsys->originx += (v.x - new_max_x + new_min_x) / 2 - new_min_x;
|
||||
double new_min_y = pointsys->originy + (rendered_min_y - pointsys->originy) * ratio;
|
||||
double new_max_y = pointsys->originy + (rendered_max_y - pointsys->originy) * ratio;
|
||||
pointsys->originy += (v.y - new_max_y + new_min_y) / 2 - new_min_y;
|
||||
RefreshDisplay();
|
||||
}
|
||||
|
||||
void ASSDrawEngine::SetFitToViewPointOnNextPaint(int hmargin, int vmargin)
|
||||
{
|
||||
if (vmargin >= 0) fitviewpoint_vmargin = vmargin;
|
||||
if (hmargin >= 0) fitviewpoint_hmargin = hmargin;
|
||||
setfitviewpoint = true;
|
||||
}
|
||||
|
||||
std::vector< bool > ASSDrawEngine::PrepareC1ContData()
|
||||
{
|
||||
std::vector< bool > out;
|
||||
for (DrawCmdList::iterator it = cmds.begin(); it != cmds.end(); it++)
|
||||
{
|
||||
bool c1 = false;
|
||||
if ((*it)->type == B)
|
||||
{
|
||||
DrawCmd_B *cmdb = static_cast<DrawCmd_B *>(*it);
|
||||
c1 = cmdb->C1Cont;
|
||||
}
|
||||
out.push_back(c1);
|
||||
}
|
||||
return out;
|
||||
}
|
@ -1,406 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: engine.hpp
|
||||
// Purpose: header file for ASSDraw drawing engine
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "_common.hpp"
|
||||
|
||||
// we use these 2 standard libraries
|
||||
#include <math.h>
|
||||
#include <list>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
// agg support
|
||||
#include "wxAGG/AGGWindow.h"
|
||||
#include "agg_color_rgba.h"
|
||||
#include "agg_rasterizer_scanline_aa.h"
|
||||
#include "agg_scanline_p.h"
|
||||
#include "agg_renderer_base.h"
|
||||
#include "agg_renderer_primitives.h"
|
||||
#include "agg_renderer_scanline.h"
|
||||
#include "agg_path_storage.h"
|
||||
#include "agg_curves.h"
|
||||
#include "agg_conv_curve.h"
|
||||
#include "agg_conv_contour.h"
|
||||
#include "agg_conv_stroke.h"
|
||||
#include "agg_conv_bcspline.h"
|
||||
#include "agg_math.h"
|
||||
|
||||
#define DEFAULT_SCALE 10
|
||||
|
||||
// this header file declare the following classes
|
||||
class DrawEngine;
|
||||
class Point;
|
||||
class PointSystem;
|
||||
class DrawCmd;
|
||||
|
||||
typedef std::list<DrawCmd*> DrawCmdList;
|
||||
typedef std::list<Point*> PointList;
|
||||
typedef std::set<Point*> PointSet;
|
||||
|
||||
// Command type
|
||||
enum CMDTYPE
|
||||
{
|
||||
M = 0,
|
||||
N = 1,
|
||||
L = 2,
|
||||
B = 3,
|
||||
S = 4,
|
||||
P = 5,
|
||||
C = 6
|
||||
};
|
||||
|
||||
// Point type
|
||||
enum POINTTYPE
|
||||
{
|
||||
MP, // main point
|
||||
CP // control point
|
||||
};
|
||||
|
||||
// A PointSystem is a centralized entity holding the parameters:
|
||||
// scale, originx and originy, all of which are needed by Point
|
||||
class PointSystem
|
||||
{
|
||||
public:
|
||||
double scale, originx, originy;
|
||||
|
||||
PointSystem ( double sc = 1.0, double origx = 0.0, double origy = 0.0 )
|
||||
{ Set( sc, origx, origy ); }
|
||||
|
||||
// set scale, originx and originy;
|
||||
void Set( double sc, double origx, double origy )
|
||||
{ scale = sc, originx = origx, originy = origy; }
|
||||
|
||||
wxRealPoint ToWxRealPoint ( double x, double y )
|
||||
{ return wxRealPoint( originx + x * scale, originy + y * scale ); }
|
||||
|
||||
// given drawing command coordinates returns the wxPoint on the GUI
|
||||
wxPoint ToWxPoint ( double x, double y )
|
||||
{ return wxPoint( (int) (originx + x * scale), (int) (originy + y * scale) ); }
|
||||
|
||||
// given wxPoint on the GUI returns the nearest drawing command coords
|
||||
void FromWxPoint ( int wxpx, int wxpy, int &x, int &y )
|
||||
{
|
||||
x = int( floor( ((double) wxpx - originx) / scale + 0.5 ) );
|
||||
y = int( floor( ((double) wxpy - originy) / scale + 0.5 ) );
|
||||
}
|
||||
|
||||
// given wxPoint on the GUI returns the nearest drawing command coords
|
||||
void FromWxPoint ( wxPoint wxp, int &x, int &y )
|
||||
{
|
||||
FromWxPoint( wxp.x, wxp.y, x, y );
|
||||
}
|
||||
};
|
||||
|
||||
// The point class
|
||||
// note: this actually refers to the x,y-coordinate in drawing commands,
|
||||
// not the coordinate in the GUI
|
||||
class Point
|
||||
{
|
||||
public:
|
||||
POINTTYPE type;
|
||||
PointSystem *pointsys;
|
||||
|
||||
// drawing commands that depend on this point
|
||||
DrawCmd* cmd_main;
|
||||
DrawCmd* cmd_next;
|
||||
bool isselected;
|
||||
unsigned num;
|
||||
|
||||
// constructor
|
||||
//Point ( ) { cmd_main = NULL; cmd_next = NULL; }
|
||||
|
||||
// constructor
|
||||
Point ( int _x, int _y, PointSystem* ps, POINTTYPE t, DrawCmd* cmd, unsigned n = 0 );
|
||||
|
||||
// getters
|
||||
int x() { return x_; }
|
||||
|
||||
int y() { return y_; }
|
||||
|
||||
//set x and y
|
||||
void setXY( int _x, int _y);
|
||||
|
||||
// simply returns true if px and py are the coordinate values
|
||||
bool IsAt( int px, int py );
|
||||
|
||||
// convert this point to wxPoint using scale and originx, originy
|
||||
wxPoint ToWxPoint () { return ToWxPoint(true); }
|
||||
|
||||
// convert this point to wxPoint using scale;
|
||||
// also use originx and originy if useorigin = true
|
||||
wxPoint ToWxPoint (bool useorigin);
|
||||
|
||||
// check if wxpoint is nearby this point
|
||||
bool CheckWxPoint ( wxPoint wxpoint );
|
||||
|
||||
private:
|
||||
int x_, y_;
|
||||
|
||||
};
|
||||
|
||||
// The base class for all draw commands
|
||||
class DrawCmd
|
||||
{
|
||||
public:
|
||||
CMDTYPE type;
|
||||
|
||||
// main point (almost every command has one)
|
||||
// for B and S it's the last (destination) point
|
||||
Point* m_point;
|
||||
|
||||
// other points than the main point
|
||||
// subclasses must populate this list even if they define
|
||||
// new variables for other points
|
||||
PointList controlpoints;
|
||||
|
||||
// Linked list feature
|
||||
DrawCmd *prev;
|
||||
|
||||
// Must set to true if the next command should NOT utilize this command
|
||||
// for the drawing
|
||||
bool dobreak;
|
||||
|
||||
// Set to true if invisible m_point (not drawn)
|
||||
bool invisible;
|
||||
|
||||
// true if this DrawCmd has been initialized with Init(), false otherwise
|
||||
// (initialized means that the control points have been generated)
|
||||
bool initialized;
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// Constructor(s)
|
||||
DrawCmd ( int x, int y, PointSystem *ps, DrawCmd *pv );
|
||||
|
||||
// Destructor
|
||||
virtual ~DrawCmd ();
|
||||
|
||||
// Init the draw command (for example to generate the control points)
|
||||
virtual void Init(unsigned n = 0) { initialized = true; }
|
||||
|
||||
virtual wxString ToString() { return wxT(""); }
|
||||
|
||||
};
|
||||
|
||||
class ASSDrawEngine: public GUI::AGGWindow
|
||||
{
|
||||
public:
|
||||
ASSDrawEngine( wxWindow *parent, int extraflags = 0 );
|
||||
|
||||
// destructor
|
||||
~ASSDrawEngine();
|
||||
|
||||
virtual void SetDrawCmdSet(wxString set) { drawcmdset = set; }
|
||||
|
||||
virtual void ResetEngine();
|
||||
virtual void ResetEngine(bool addM);
|
||||
virtual void RefreshDisplay();
|
||||
|
||||
void FitToViewPoint(int hmargin, int vmargin);
|
||||
void SetFitToViewPointOnNextPaint(int hmargin = -1, int vmargin = -1);
|
||||
|
||||
PointSystem* _PointSystem() { return pointsys; }
|
||||
|
||||
// ASS draw commands; returns the number of parsed commands
|
||||
virtual int ParseASS ( wxString str );
|
||||
// generate ASS draw commands
|
||||
virtual wxString GenerateASS ( );
|
||||
|
||||
// drawing
|
||||
virtual void OnPaint(wxPaintEvent &event);
|
||||
|
||||
// -------------------- adding new commands ----------------------------
|
||||
|
||||
// create draw command of type 'type' and m_point (x, y), append to the
|
||||
// list and return it
|
||||
virtual DrawCmd* AppendCmd ( CMDTYPE type, int x, int y );
|
||||
|
||||
// append draw command
|
||||
virtual DrawCmd* AppendCmd ( DrawCmd* cmd );
|
||||
|
||||
// create draw command of type 'type' and m_point (x, y), insert to the
|
||||
// list after the _cmd and return it
|
||||
virtual DrawCmd* InsertCmd ( CMDTYPE type, int x, int y, DrawCmd* _cmd );
|
||||
|
||||
// insert draw command cmd after _cmd
|
||||
virtual void InsertCmd ( DrawCmd* cmd, DrawCmd* _cmd );
|
||||
|
||||
// Create new DrawCmd
|
||||
DrawCmd* NewCmd ( CMDTYPE type, int x, int y );
|
||||
|
||||
// -------------------- read/modify commands ---------------------------
|
||||
|
||||
// returns the iterator for the list
|
||||
virtual DrawCmdList::iterator Iterator ( );
|
||||
|
||||
// returns the 'end' iterator for the list
|
||||
virtual DrawCmdList::iterator IteratorEnd ( );
|
||||
|
||||
// returns the last command in the list
|
||||
virtual DrawCmd* LastCmd ();
|
||||
|
||||
// returns the total number of commands in the list
|
||||
//virtual int CmdCount () { return cmds.size(); }
|
||||
|
||||
// move all points by relative amount of x, y coordinates
|
||||
virtual void MovePoints ( int x, int y );
|
||||
|
||||
// transform all points using the calculation:
|
||||
// | (m11) (m12) | x | (x - mx) | + | nx |
|
||||
// | (m21) (m22) | | (y - my) | | ny |
|
||||
virtual void Transform( float m11, float m12, float m21, float m22,
|
||||
float mx, float my, float nx, float ny );
|
||||
|
||||
// returns some DrawCmd if its m_point = (x, y)
|
||||
virtual DrawCmd* PointAt ( int x, int y );
|
||||
|
||||
// returns some DrawCmd if one of its control point = (x, y)
|
||||
// also set &point to refer to that control point
|
||||
virtual DrawCmd* ControlAt ( int x, int y, Point* &point );
|
||||
|
||||
// attempts to delete a commmand, returns true|false if successful|fail
|
||||
virtual bool DeleteCommand ( DrawCmd* cmd );
|
||||
|
||||
agg::rgba rgba_shape;
|
||||
PixelFormat::AGGType::color_type color_bg;
|
||||
|
||||
protected:
|
||||
/// The AGG base renderer
|
||||
typedef agg::renderer_base<PixelFormat::AGGType> RendererBase;
|
||||
/// The AGG primitives renderer
|
||||
typedef agg::renderer_primitives<RendererBase> RendererPrimitives;
|
||||
/// The AGG solid renderer
|
||||
typedef agg::renderer_scanline_aa_solid<RendererBase> RendererSolid;
|
||||
|
||||
enum DRAWCMDMODE {
|
||||
NORMAL,
|
||||
CTRL_LN,
|
||||
HILITE
|
||||
};
|
||||
|
||||
DrawCmdList cmds;
|
||||
wxString drawcmdset;
|
||||
|
||||
PointSystem* pointsys;
|
||||
|
||||
// for FitToViewPoint feature
|
||||
bool setfitviewpoint;
|
||||
int fitviewpoint_vmargin, fitviewpoint_hmargin;
|
||||
|
||||
// AGG
|
||||
agg::rasterizer_scanline_aa<> rasterizer; ///< Scanline rasterizer
|
||||
agg::scanline_p8 scanline; ///< Scanline container
|
||||
void render_scanlines_aa_solid(RendererBase& rbase, agg::rgba rbga, bool affectboundaries = true);
|
||||
void render_scanlines(RendererSolid& rsolid, bool affectboundaries = true);
|
||||
int rendered_min_x, rendered_min_y, rendered_max_x, rendered_max_y; //bounding coord of rendered shapes
|
||||
void update_rendered_bound_coords(bool rendered_fresh = false);
|
||||
|
||||
typedef agg::conv_transform<agg::path_storage> trans_path;
|
||||
agg::path_storage m_path, b_path;
|
||||
trans_path *rm_path, *rb_path;
|
||||
agg::conv_curve<trans_path> *rm_curve;
|
||||
|
||||
void draw();
|
||||
virtual void ConstructPathsAndCurves(agg::trans_affine& mtx, trans_path*& _rm_path, trans_path*& _rb_path, agg::conv_curve<trans_path>*& _rm_curve);
|
||||
virtual void DoDraw( RendererBase& rbase, RendererPrimitives& rprim, RendererSolid& rsolid, agg::trans_affine& mtx );
|
||||
virtual void Draw_Clear( RendererBase& rbase );
|
||||
virtual void Draw_Draw( RendererBase& rbase, RendererPrimitives& rprim, RendererSolid& rsolid, agg::trans_affine& mtx, agg::rgba color );
|
||||
bool refresh_called;
|
||||
|
||||
// set stuff to connect two drawing commands cmd1 and cmd2 such that
|
||||
// cmd1 comes right before cmd2
|
||||
virtual void ConnectSubsequentCmds (DrawCmd* cmd1, DrawCmd* cmd2);
|
||||
|
||||
virtual void AddDrawCmdToAGGPathStorage(DrawCmd* cmd, agg::path_storage& path, DRAWCMDMODE mode = NORMAL);
|
||||
|
||||
virtual std::vector< bool > PrepareC1ContData();
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
namespace agg
|
||||
{
|
||||
class simple_polygon_vertex_source
|
||||
{
|
||||
public:
|
||||
simple_polygon_vertex_source(const double* polygon, unsigned np,
|
||||
bool roundoff = false,
|
||||
bool close = true) :
|
||||
m_polygon(polygon),
|
||||
m_num_points(np),
|
||||
m_vertex(0),
|
||||
m_roundoff(roundoff),
|
||||
m_close(close)
|
||||
{
|
||||
}
|
||||
|
||||
void close(bool f) { m_close = f; }
|
||||
bool close() const { return m_close; }
|
||||
|
||||
void rewind(unsigned)
|
||||
{
|
||||
m_vertex = 0;
|
||||
}
|
||||
|
||||
unsigned vertex(double* x, double* y)
|
||||
{
|
||||
if(m_vertex > m_num_points) return path_cmd_stop;
|
||||
if(m_vertex == m_num_points)
|
||||
{
|
||||
++m_vertex;
|
||||
return path_cmd_end_poly | (m_close ? path_flags_close : 0);
|
||||
}
|
||||
*x = m_polygon[m_vertex * 2];
|
||||
*y = m_polygon[m_vertex * 2 + 1];
|
||||
if(m_roundoff)
|
||||
{
|
||||
*x = floor(*x) + 0.5;
|
||||
*y = floor(*y) + 0.5;
|
||||
}
|
||||
++m_vertex;
|
||||
return (m_vertex == 1) ? path_cmd_move_to : path_cmd_line_to;
|
||||
}
|
||||
|
||||
private:
|
||||
const double* m_polygon;
|
||||
unsigned m_num_points;
|
||||
unsigned m_vertex;
|
||||
bool m_roundoff;
|
||||
bool m_close;
|
||||
};
|
||||
};
|
||||
|
||||
typedef agg::simple_polygon_vertex_source aggpolygon;
|
@ -1,113 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// enum for IDs of menus
|
||||
enum {
|
||||
MENU_DUMMY = 200,
|
||||
MENU_CLEAR,
|
||||
MENU_PREVIEW,
|
||||
MENU_TRANSFORM,
|
||||
MENU_LIBRARY,
|
||||
MENU_HELP,
|
||||
MENU_RESETPERSPECTIVE,
|
||||
MENU_SETTINGS,
|
||||
MENU_UNDO,
|
||||
MENU_REDO,
|
||||
MENU_PASTE,
|
||||
MENU_BGIMG_LOAD,
|
||||
MENU_BGIMG_ALPHA,
|
||||
MENU_BGIMG_REMOVE,
|
||||
MENU_RECENTER,
|
||||
MENU_TBAR,
|
||||
MENU_REPOS_TOPLEFT,
|
||||
MENU_REPOS_TOPRIGHT,
|
||||
MENU_REPOS_CENTER,
|
||||
MENU_REPOS_BOTLEFT,
|
||||
MENU_REPOS_BOTRIGHT,
|
||||
MENU_BGIMG_RECENTER,
|
||||
MENU_REPOS_BGTOPLEFT,
|
||||
MENU_REPOS_BGTOPRIGHT,
|
||||
MENU_REPOS_BGCENTER,
|
||||
MENU_REPOS_BGBOTLEFT,
|
||||
MENU_REPOS_BGBOTRIGHT,
|
||||
MENU_DRC_LNTOBEZ,
|
||||
MENU_DRC_C1CONTBEZ,
|
||||
MENU_DRC_BEZTOLN,
|
||||
MENU_DRC_MOVE00,
|
||||
MENU_TB_ALL,
|
||||
MENU_TB_NONE,
|
||||
MENU_TB_DOCK,
|
||||
MENU_TB_UNDOCK,
|
||||
MENU_TB_DRAW,
|
||||
MENU_TB_MODE,
|
||||
MENU_TB_BGIMG
|
||||
};
|
||||
|
||||
// enum for modes (i.e. create m, b, l etc or normal mode)
|
||||
// also use as tools IDs
|
||||
enum MODE
|
||||
{
|
||||
MODE_ARR = 100,
|
||||
MODE_M = 101,
|
||||
MODE_N = 102,
|
||||
MODE_L = 103,
|
||||
MODE_B = 104,
|
||||
MODE_S = 105,
|
||||
MODE_P = 106,
|
||||
MODE_C = 107,
|
||||
MODE_DEL = 108,
|
||||
MODE_SCALEROTATE = 109,
|
||||
MODE_NUT_BILINEAR = 110
|
||||
};
|
||||
|
||||
// enum for IDs of other tools on the toolbar
|
||||
enum {
|
||||
TB_CLEAR = 111,
|
||||
TB_EDITSRC = 112,
|
||||
TB_PREVIEW = 113,
|
||||
TB_TRANSFORM = 114,
|
||||
TB_HELP = 115,
|
||||
TB_ZOOMSLIDER = 116,
|
||||
TB_BGALPHA_SLIDER = 117
|
||||
};
|
||||
|
||||
enum DRAGMODETOOL
|
||||
{
|
||||
DRAG_DWG = 120,
|
||||
DRAG_BGIMG = 121,
|
||||
DRAG_BOTH = 122
|
||||
};
|
||||
|
||||
struct DRAGMODE
|
||||
{
|
||||
bool drawing;
|
||||
bool bgimg;
|
||||
DRAGMODE() { drawing = true, bgimg = false; }
|
||||
DRAGMODE(bool d, bool b) { drawing = d, bgimg = b; }
|
||||
};
|
@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: include_once.hpp
|
||||
// Purpose: A header file that is included exactly once for the whole code
|
||||
// (supposed to be included by assdraw.cpp only)
|
||||
// Put must-define-exactly-once codes here
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// tooltips
|
||||
const wxString TIPS_CLEAR = wxT("Clear the canvas and create a new drawing");
|
||||
const wxString TIPS_EDITSRC = wxT("Edit the source");
|
||||
const wxString TIPS_PREVIEW = wxT("Draw the shapes without enlarged points and control points");
|
||||
const wxString TIPS_TRANSFORM = wxT("Transform the drawing using matrix transformation");
|
||||
const wxString TIPS_LIBRARY = wxT("Shapes library");
|
||||
const wxString TIPS_HELP = wxT("Help! Help!");
|
||||
const wxString TIPS_PASTE = wxT("Depending on what's in the clipboard, import as drawing commands or background");
|
||||
const wxString TIPS_UNDO = wxT("Undo last action");
|
||||
const wxString TIPS_REDO = wxT("Redo last undo");
|
||||
const wxString TIPS_ARR = wxT("Drag mode");
|
||||
const wxString TIPS_M = wxT("Draw M mode (Close current shape and move the virtual pen to a new point)");
|
||||
const wxString TIPS_N = wxT("Draw N mode (Same as M but doesn't close the shape)");
|
||||
const wxString TIPS_L = wxT("Draw L mode (Straight line)");
|
||||
const wxString TIPS_B = wxT("Draw B mode (Cubic Bezier curve)");
|
||||
const wxString TIPS_S = wxT("Draw S mode (Spline)");
|
||||
const wxString TIPS_P = wxT("Draw P mode (Extends a spline with another point)");
|
||||
const wxString TIPS_C = wxT("Draw C mode (Close the last spline)");
|
||||
const wxString TIPS_DEL = wxT("Delete mode");
|
||||
const wxString TIPS_NUTB = wxT("Bilinear transformation mode: Drag the vertices to distort the shape; Dragging an edge moves two adjacent vertices together");
|
||||
const wxString TIPS_SCALEROTATE = wxT("Scale/Rotate mode: Drag a vertex or an edge to rescale the shape; Right-drag to rotate");
|
||||
const wxString TIPS_DWG = wxT("Right-dragging pans drawing, mousewheel zooms in/out drawing");
|
||||
const wxString TIPS_BGIMG = wxT("Right-dragging pans background, mousewheel zooms in/out background");
|
||||
const wxString TIPS_BOTH = wxT("Right-dragging pans drawing & background, mousewheel zooms in/out drawing & background");
|
||||
|
||||
const wxString TBNAME_DRAW = wxT("Canvas");
|
||||
const wxString TBNAME_MODE = wxT("Drawing mode");
|
||||
const wxString TBNAME_BGIMG = wxT("Background");
|
||||
const wxString TBNAME_ZOOM = wxT("Zoom");
|
||||
|
||||
wxString ASSDrawTransformDlg::combo_templatesStrings[] = {
|
||||
_("<Select>"),
|
||||
_("Move 5 units down"),
|
||||
_("Move 5 units right"),
|
||||
_("Rotate 90\370 clockwise at (1, 2)"),
|
||||
_("Rotate 90\370 counterclockwise at (-1, 2)"),
|
||||
_("Rotate 180\370 at (0, 0)"),
|
||||
_("Flip horizontally at X = 4"),
|
||||
_("Flip vertically at Y = 3"),
|
||||
_("Scale up horizontally by a factor of 2"),
|
||||
_("Scale up vertically by a factor of 3")
|
||||
};
|
||||
|
||||
int ASSDrawTransformDlg::combo_templatesCount = 10;
|
||||
|
||||
EightDouble ASSDrawTransformDlg::combo_templatesValues[] = {
|
||||
{ 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }, //<Select>
|
||||
{ 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 5.0f }, //5 units down
|
||||
{ 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 5.0f, 0.0f }, //5 units left
|
||||
{ 0.0f, -1.0f, 1.0f, 0.0f, 1.0f, 2.0f, 1.0f, 2.0f }, //90 CW (1,2)
|
||||
{ 0.0f, 1.0f, -1.0f, 0.0f, -1.0f, 2.0f, -1.0f, 2.0f }, //90 CCW, (-1,2)
|
||||
{ -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f }, //180 (0,0)
|
||||
{ -1.0f, 0.0f, 0.0f, 1.0f, 4.0f, 0.0f, 4.0f, 0.0f }, //Flip X = 4
|
||||
{ 1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 3.0f, 0.0f, 3.0f }, //Flip Y = 3
|
||||
{ 2.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }, //Scale X * 2
|
||||
{ 1.0f, 0.0f, 0.0f, 3.0f, 0.0f, 0.0f, 0.0f, 0.0f } //Scale Y * 3
|
||||
};
|
@ -1,265 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
#include "assdraw.hpp"
|
||||
#include "library.hpp"
|
||||
|
||||
#include <wx/clipbrd.h>
|
||||
|
||||
#if !defined(__WINDOWS__)
|
||||
#include "xpm/res.h"
|
||||
#endif
|
||||
|
||||
BEGIN_EVENT_TABLE(ASSDrawShapePreview, ASSDrawEngine)
|
||||
EVT_SIZE(ASSDrawShapePreview::OnSize)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
ASSDrawShapePreview::ASSDrawShapePreview( wxWindow *parent, ASSDrawShapeLibrary *_shapelib, wxString initialcmds )
|
||||
: ASSDrawEngine(parent, wxSIMPLE_BORDER)
|
||||
{
|
||||
shapelib = _shapelib;
|
||||
if (ParseASS(initialcmds) > 0)
|
||||
SetFitToViewPointOnNextPaint(5, 5);
|
||||
cb = new wxCheckBox(this, wxID_ANY, _T(""));
|
||||
}
|
||||
|
||||
void ASSDrawShapePreview::OnSize(wxSizeEvent& event)
|
||||
{
|
||||
return;
|
||||
wxSize siz = event.GetSize();
|
||||
|
||||
if (shapelib->layout == HORIZONTAL)
|
||||
SetSize(siz.x, siz.x);
|
||||
else
|
||||
SetSize(siz.y, siz.y);
|
||||
SetFitToViewPointOnNextPaint(10, 10);
|
||||
}
|
||||
|
||||
BEGIN_EVENT_TABLE(ASSDrawShapeLibrary, wxScrolledWindow)
|
||||
EVT_SIZE(ASSDrawShapeLibrary::OnSize)
|
||||
EVT_MENU_RANGE(MENU_RANGE_START, MENU_RANGE_END, ASSDrawShapeLibrary::OnPopupMenuClicked)
|
||||
EVT_TOOL(TOOL_SAVE, ASSDrawShapeLibrary::SaveShapeFromCanvas)
|
||||
EVT_TOOL_RANGE(TOOL_CHECK, TOOL_UNCHECK, ASSDrawShapeLibrary::CheckUncheckAllPreviews)
|
||||
EVT_TOOL(TOOL_DELETE, ASSDrawShapeLibrary::DeleteChecked)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
ASSDrawShapeLibrary::ASSDrawShapeLibrary( wxWindow *parent, ASSDrawFrame *frame )
|
||||
: wxScrolledWindow(parent, wxID_ANY)
|
||||
{
|
||||
m_frame = frame;
|
||||
//sizer = NULL;
|
||||
layout = VERTICAL;
|
||||
|
||||
wxToolBar *tbar = new wxToolBar(this, wxID_ANY, __DPDS__ , wxTB_HORIZONTAL | wxNO_BORDER | wxTB_FLAT | wxTB_NODIVIDER);
|
||||
tbar->SetMargins(0, 3);
|
||||
tbar->AddTool(TOOL_SAVE, _T("Save canvas"), wxBITMAP(add));
|
||||
tbar->AddSeparator();
|
||||
tbar->AddTool(TOOL_CHECK, _T("Select all"), wxBITMAP(check));
|
||||
tbar->AddTool(TOOL_UNCHECK, _T("Select none"), wxBITMAP(uncheck));
|
||||
tbar->AddTool(TOOL_DELETE, _T("Delete selected"), wxBITMAP(delcross));
|
||||
|
||||
libarea = new wxScrolledWindow(this, wxID_ANY, __DPDS__ , wxScrolledWindowStyle | wxSIMPLE_BORDER);
|
||||
libarea->SetBackgroundColour(wxColour(0xFF, 0xFF, 0x99));
|
||||
sizer = new wxFlexGridSizer(0, 1, 0, 0);
|
||||
((wxFlexGridSizer*) sizer)->AddGrowableCol(0);
|
||||
libarea->SetSizer(sizer);
|
||||
libarea->SetScrollbars(20, 20, 50, 50);
|
||||
libsizer = new wxFlexGridSizer(2, 1, 0, 0);
|
||||
libsizer->AddGrowableCol(0);
|
||||
libsizer->AddGrowableRow(1);
|
||||
libsizer->Add(tbar, 0, wxBOTTOM, 2);
|
||||
libsizer->Add(libarea,1,wxEXPAND);
|
||||
tbar->Realize();
|
||||
libsizer->Layout();
|
||||
|
||||
SetSizer(libsizer);
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::OnSize(wxSizeEvent& event)
|
||||
{
|
||||
if (sizer == NULL || sizer->GetChildren().size() == 0) return;
|
||||
|
||||
wxSize siz = GetClientSize();
|
||||
libsizer->SetDimension(0, 0, siz.x, siz.y);
|
||||
|
||||
UpdatePreviewDisplays();
|
||||
}
|
||||
|
||||
ASSDrawShapePreview* ASSDrawShapeLibrary::AddShapePreview(wxString cmds, bool addtotop)
|
||||
{
|
||||
ASSDrawShapePreview *prev = new ASSDrawShapePreview(libarea, this, cmds);
|
||||
prev->Connect(wxEVT_LEFT_DCLICK, wxMouseEventHandler(ASSDrawShapeLibrary::OnMouseLeftDClick), NULL, this);
|
||||
prev->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(ASSDrawShapeLibrary::OnMouseRightClick), NULL, this);
|
||||
ASSDrawFrame::wxColourToAggRGBA(m_frame->colors.library_shape, prev->rgba_shape);
|
||||
if (addtotop)
|
||||
sizer->Insert(0, prev, 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5);
|
||||
else
|
||||
sizer->Add(prev, 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5);
|
||||
UpdatePreviewDisplays();
|
||||
return prev;
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::UpdatePreviewDisplays()
|
||||
{
|
||||
wxSize siz = GetClientSize();
|
||||
int dim = siz.x - 15;
|
||||
libarea->Show(false);
|
||||
wxwxSizerItemListNode *node = sizer->GetChildren().GetFirst();
|
||||
while (node != NULL)
|
||||
{
|
||||
ASSDrawShapePreview *shprvw = (ASSDrawShapePreview *) node->GetData()->GetWindow();
|
||||
shprvw->SetSize(dim, dim);
|
||||
sizer->SetItemMinSize(shprvw, dim - 20, dim - 20);
|
||||
shprvw->SetFitToViewPointOnNextPaint(10, 10);
|
||||
shprvw->Refresh();
|
||||
node = node->GetNext();
|
||||
}
|
||||
sizer->Layout();
|
||||
sizer->FitInside(libarea);
|
||||
libarea->Show(true);
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::OnMouseLeftDClick(wxMouseEvent &event)
|
||||
{
|
||||
ASSDrawShapePreview *preview = (ASSDrawShapePreview *) event.GetEventObject();
|
||||
LoadToCanvas(preview);
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::OnMouseRightClick(wxMouseEvent &event)
|
||||
{
|
||||
ASSDrawShapePreview *prev = (ASSDrawShapePreview *) event.GetEventObject();
|
||||
if (prev && prev->shapelib == this)
|
||||
{
|
||||
activepreview = prev;
|
||||
wxMenu *menu = new wxMenu;
|
||||
wxMenuItem *menuload = new wxMenuItem(menu, MENU_LOAD, _T("Load to canvas"));
|
||||
#ifdef __WINDOWS__
|
||||
wxFont f = menuload->GetFont();
|
||||
f.SetWeight(wxFONTWEIGHT_BOLD);
|
||||
menuload->SetFont(f);
|
||||
#endif
|
||||
menu->Append(menuload);
|
||||
//menu->Append(MENU_LOAD, _T("Load to canvas"))->GetFont().SetWeight(wxFONTWEIGHT_BOLD);
|
||||
menu->Append(MENU_COPYCLIPBOARD, _T("Copy commands to clipboard"));
|
||||
menu->Append(MENU_SAVECANVAS, _T("Save canvas here"));
|
||||
wxMenu *submenu = new wxMenu;
|
||||
submenu->Append(MENU_DELETE, _T("Confirm delete?"));
|
||||
menu->Append(MENU_DUMMY, _T("Delete from library"), submenu);
|
||||
PopupMenu(menu);
|
||||
delete menu;
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::OnPopupMenuClicked(wxCommandEvent &event)
|
||||
{
|
||||
int id = event.GetId();
|
||||
switch(id)
|
||||
{
|
||||
case MENU_LOAD:
|
||||
LoadToCanvas(activepreview);
|
||||
break;
|
||||
case MENU_COPYCLIPBOARD:
|
||||
if (wxTheClipboard->Open())
|
||||
{
|
||||
if (wxTheClipboard->IsSupported( wxDF_TEXT ))
|
||||
{
|
||||
wxTheClipboard->SetData( new wxTextDataObject( activepreview->GenerateASS() ) );
|
||||
}
|
||||
wxTheClipboard->Close();
|
||||
}
|
||||
break;
|
||||
case MENU_SAVECANVAS:
|
||||
activepreview->ParseASS(m_frame->m_canvas->GenerateASS());
|
||||
activepreview->SetFitToViewPointOnNextPaint();
|
||||
activepreview->RefreshDisplay();
|
||||
break;
|
||||
case MENU_DELETE:
|
||||
sizer->Detach(activepreview);
|
||||
activepreview->Show(false);
|
||||
activepreview->Destroy();
|
||||
UpdatePreviewDisplays();
|
||||
Refresh();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::SaveShapeFromCanvas(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
AddShapePreview(m_frame->m_canvas->GenerateASS(), true);
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::CheckUncheckAllPreviews(wxCommandEvent &event)
|
||||
{
|
||||
bool checked = event.GetId() == TOOL_CHECK;
|
||||
wxwxSizerItemListNode *node = sizer->GetChildren().GetFirst();
|
||||
while (node != NULL)
|
||||
{
|
||||
ASSDrawShapePreview *shprvw = (ASSDrawShapePreview *) node->GetData()->GetWindow();
|
||||
shprvw->cb->SetValue(checked);
|
||||
node = node->GetNext();
|
||||
}
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::DeleteChecked(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxwxSizerItemListNode *node = sizer->GetChildren().GetFirst();
|
||||
while (node != NULL)
|
||||
{
|
||||
ASSDrawShapePreview *shprvw = (ASSDrawShapePreview *) node->GetData()->GetWindow();
|
||||
if (shprvw->cb->GetValue())
|
||||
{
|
||||
sizer->Detach(shprvw);
|
||||
shprvw->Show(false);
|
||||
shprvw->Destroy();
|
||||
}
|
||||
node = node->GetNext();
|
||||
}
|
||||
UpdatePreviewDisplays();
|
||||
Refresh();
|
||||
}
|
||||
|
||||
std::vector< ASSDrawShapePreview *> ASSDrawShapeLibrary::GetShapePreviews()
|
||||
{
|
||||
std::vector< ASSDrawShapePreview *> out;
|
||||
wxwxSizerItemListNode *node = sizer->GetChildren().GetFirst();
|
||||
while (node != NULL)
|
||||
{
|
||||
ASSDrawShapePreview *shprvw = (ASSDrawShapePreview *) node->GetData()->GetWindow();
|
||||
out.push_back(shprvw);
|
||||
node = node->GetNext();
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
void ASSDrawShapeLibrary::LoadToCanvas(ASSDrawShapePreview *preview)
|
||||
{
|
||||
m_frame->m_canvas->AddUndo(_T("Load shape from library"));
|
||||
m_frame->m_canvas->ParseASS(preview->GenerateASS());
|
||||
m_frame->m_canvas->RefreshDisplay();
|
||||
m_frame->m_canvas->RefreshUndocmds();
|
||||
m_frame->UpdateFrameUI();
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "engine.hpp"
|
||||
#include <wx/scrolwin.h>
|
||||
|
||||
class ASSDrawFrame;
|
||||
class ASSDrawShapeLibrary;
|
||||
|
||||
enum LIBLAYOUT { VERTICAL, HORIZONTAL };
|
||||
|
||||
enum {
|
||||
MENU_RANGE_START = 450,
|
||||
MENU_LOAD,
|
||||
MENU_COPYCLIPBOARD,
|
||||
MENU_SAVECANVAS,
|
||||
MENU_DELETE,
|
||||
MENU_RANGE_END,
|
||||
TOOL_SAVE,
|
||||
TOOL_CHECK,
|
||||
TOOL_UNCHECK,
|
||||
TOOL_DELETE
|
||||
};
|
||||
|
||||
class ASSDrawShapePreview : public ASSDrawEngine
|
||||
{
|
||||
protected:
|
||||
ASSDrawShapePreview( wxWindow *parent, ASSDrawShapeLibrary *shapelib, wxString initialcmds = _T(""));
|
||||
virtual void OnSize(wxSizeEvent& event);
|
||||
|
||||
ASSDrawShapeLibrary *shapelib;
|
||||
wxCheckBox *cb;
|
||||
DECLARE_EVENT_TABLE()
|
||||
friend class ASSDrawShapeLibrary;
|
||||
};
|
||||
|
||||
class ASSDrawShapeLibrary : public wxScrolledWindow
|
||||
{
|
||||
public:
|
||||
ASSDrawShapeLibrary( wxWindow *parent, ASSDrawFrame *frame );
|
||||
virtual ASSDrawShapePreview* AddShapePreview(wxString cmds, bool addtotop = false);
|
||||
virtual void OnSize(wxSizeEvent& event);
|
||||
virtual void OnMouseLeftDClick(wxMouseEvent &event);
|
||||
virtual void OnMouseRightClick(wxMouseEvent &event);
|
||||
virtual void OnPopupMenuClicked(wxCommandEvent &event);
|
||||
virtual void SaveShapeFromCanvas(wxCommandEvent& WXUNUSED(event));
|
||||
virtual void CheckUncheckAllPreviews(wxCommandEvent &event);
|
||||
virtual void DeleteChecked(wxCommandEvent& WXUNUSED(event));
|
||||
virtual void UpdatePreviewDisplays();
|
||||
virtual std::vector< ASSDrawShapePreview *> GetShapePreviews();
|
||||
virtual void LoadToCanvas(ASSDrawShapePreview *preview);
|
||||
|
||||
wxScrolledWindow* libarea;
|
||||
wxFlexGridSizer *libsizer;
|
||||
wxSizer* sizer;
|
||||
LIBLAYOUT layout;
|
||||
protected:
|
||||
ASSDrawFrame *m_frame;
|
||||
ASSDrawShapePreview *activepreview;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
@ -1,15 +0,0 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by assdraw.rc
|
||||
//
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 105
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1000
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
@ -1,223 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: settings.cpp
|
||||
// Purpose: settings property grid
|
||||
// Author: ai-chan
|
||||
// Created: 08/26/06
|
||||
// Copyright: (c) ai-chan
|
||||
// Licence: 3-clause BSD
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "assdraw.hpp"
|
||||
#include "settings.hpp"
|
||||
|
||||
DEFINE_EVENT_TYPE(wxEVT_SETTINGS_CHANGED)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ASSDrawSettingsDialog
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
ASSDrawSettingsDialog::ASSDrawSettingsDialog(wxWindow *parent, ASSDrawFrame *frame, int id)
|
||||
: wxPanel(parent, id)
|
||||
{
|
||||
m_frame = frame;
|
||||
propgrid = NULL;
|
||||
}
|
||||
|
||||
void ASSDrawSettingsDialog::Init()
|
||||
{
|
||||
propgrid = new wxPropertyGrid(this,
|
||||
wxID_ANY,
|
||||
wxDefaultPosition,
|
||||
wxDefaultSize,
|
||||
//wxPG_BOLD_MODIFIED |
|
||||
//wxPG_SPLITTER_AUTO_CENTER |
|
||||
//wxPG_AUTO_SORT |
|
||||
//wxPG_HIDE_MARGIN | wxPG_STATIC_SPLITTER |
|
||||
wxPG_TOOLTIPS |
|
||||
//wxPG_NOCATEGORIES |
|
||||
wxTAB_TRAVERSAL //|
|
||||
//wxSUNKEN_BORDER
|
||||
);
|
||||
|
||||
#define APPENDCOLOURPROP(pgid, label, color) pgid = propgrid->Append(new wxColourProperty(label, wxPG_LABEL, color));
|
||||
#define APPENDUINTPROP(pgid, label, uint) \
|
||||
pgid = propgrid->Append(new wxUIntProperty(label, wxPG_LABEL, uint) ); \
|
||||
propgrid->SetPropertyValidator( pgid, validator );
|
||||
#define APPENDBOOLPROP(pgid, label, boolvar) \
|
||||
pgid = propgrid->Append(new wxBoolProperty (label, wxPG_LABEL, boolvar ) ); \
|
||||
propgrid->SetPropertyAttribute( pgid, wxPG_BOOL_USE_CHECKBOX, (long)1 );
|
||||
wxLongPropertyValidator validator(0x0,0xFF);
|
||||
|
||||
propgrid->Append(new wxPropertyCategory(_T("Appearance"),wxPG_LABEL) );
|
||||
APPENDCOLOURPROP(colors_canvas_bg_pgid, _T("Canvas"), m_frame->colors.canvas_bg)
|
||||
APPENDCOLOURPROP(colors_canvas_shape_normal_pgid, _T("Drawing"), m_frame->colors.canvas_shape_normal)
|
||||
APPENDUINTPROP(alphas_canvas_shape_normal_pgid, _T("Drawing @"), m_frame->alphas.canvas_shape_normal)
|
||||
APPENDCOLOURPROP(colors_canvas_shape_preview_pgid, _T("Preview"), m_frame->colors.canvas_shape_preview)
|
||||
APPENDUINTPROP(alphas_canvas_shape_preview_pgid, _T("Preview @"), m_frame->alphas.canvas_shape_preview)
|
||||
APPENDCOLOURPROP(colors_canvas_shape_outline_pgid, _T("Outline"), m_frame->colors.canvas_shape_outline)
|
||||
APPENDUINTPROP(alphas_canvas_shape_outline_pgid, _T("Outline @"), m_frame->alphas.canvas_shape_outline)
|
||||
APPENDCOLOURPROP(colors_canvas_shape_guideline_pgid, _T("Control lines"), m_frame->colors.canvas_shape_guideline)
|
||||
APPENDUINTPROP(alphas_canvas_shape_guideline_pgid, _T("Control lines @"), m_frame->alphas.canvas_shape_guideline)
|
||||
APPENDCOLOURPROP(colors_canvas_shape_mainpoint_pgid, _T("Points"), m_frame->colors.canvas_shape_mainpoint)
|
||||
APPENDUINTPROP(alphas_canvas_shape_mainpoint_pgid, _T("Points @"), m_frame->alphas.canvas_shape_mainpoint)
|
||||
APPENDCOLOURPROP(colors_canvas_shape_controlpoint_pgid, _T("Control points"), m_frame->colors.canvas_shape_controlpoint)
|
||||
APPENDUINTPROP(alphas_canvas_shape_controlpoint_pgid, _T("Control points @"), m_frame->alphas.canvas_shape_controlpoint)
|
||||
APPENDCOLOURPROP(colors_canvas_shape_selectpoint_pgid, _T("Selected points"), m_frame->colors.canvas_shape_selectpoint)
|
||||
APPENDUINTPROP(alphas_canvas_shape_selectpoint_pgid, _T("Selected points @"), m_frame->alphas.canvas_shape_selectpoint)
|
||||
APPENDCOLOURPROP(colors_library_libarea_pgid, _T("Library"), m_frame->colors.library_libarea)
|
||||
APPENDCOLOURPROP(colors_library_shape_pgid, _T("Library shapes"), m_frame->colors.library_shape)
|
||||
APPENDCOLOURPROP(colors_origin_pgid, _T("Origin"), m_frame->colors.origin)
|
||||
APPENDUINTPROP(sizes_origincross_pgid, _T("Origin cross size"), m_frame->sizes.origincross)
|
||||
APPENDCOLOURPROP(colors_ruler_h_pgid, _T("H ruler"), m_frame->colors.ruler_h)
|
||||
APPENDCOLOURPROP(colors_ruler_v_pgid, _T("V ruler"), m_frame->colors.ruler_v)
|
||||
|
||||
propgrid->Append(new wxPropertyCategory(_T("Behaviors"),wxPG_LABEL) );
|
||||
APPENDBOOLPROP(behaviors_capitalizecmds_pgid, _T("Capitalize commands"), m_frame->behaviors.capitalizecmds);
|
||||
APPENDBOOLPROP(behaviors_autoaskimgopac_pgid, _T("Ask for image opacity"), m_frame->behaviors.autoaskimgopac);
|
||||
APPENDBOOLPROP(behaviors_parse_spc_pgid, _T("Parse S/P/C"), m_frame->behaviors.parse_spc);
|
||||
APPENDBOOLPROP(behaviors_nosplashscreen_pgid, _T("No splash screen"), m_frame->behaviors.nosplashscreen);
|
||||
APPENDBOOLPROP(behaviors_confirmquit_pgid, _T("Confirm quit"), m_frame->behaviors.confirmquit);
|
||||
|
||||
wxFlexGridSizer *sizer = new wxFlexGridSizer(2, 1, 0, 0);
|
||||
sizer->AddGrowableCol(0);
|
||||
sizer->AddGrowableRow(0);
|
||||
sizer->Add(propgrid, 1, wxEXPAND);
|
||||
|
||||
wxBoxSizer *bsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxButton *abutton = new wxButton(this, wxID_ANY, _T("Apply"));
|
||||
abutton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(ASSDrawSettingsDialog::OnSettingsApplyButtonClicked), NULL, this);
|
||||
bsizer->Add(abutton, 2, wxEXPAND);
|
||||
wxButton *rbutton = new wxButton(this, wxID_ANY, _T("Revert"));
|
||||
rbutton->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(ASSDrawSettingsDialog::OnSettingsRevertButtonClicked), NULL, this);
|
||||
bsizer->Add(rbutton, 1, wxEXPAND);
|
||||
bsizer->Layout();
|
||||
|
||||
sizer->Add(bsizer, 1, wxEXPAND);
|
||||
sizer->Layout();
|
||||
SetSizer(sizer);
|
||||
}
|
||||
|
||||
ASSDrawSettingsDialog::~ASSDrawSettingsDialog()
|
||||
{
|
||||
if (propgrid) propgrid->Clear();
|
||||
}
|
||||
|
||||
void ASSDrawSettingsDialog::OnSettingsApplyButtonClicked(wxCommandEvent &event)
|
||||
{
|
||||
|
||||
wxButton *button = (wxButton *) event.GetEventObject();
|
||||
//wxPropertyGrid *propgrid = (wxPropertyGrid *) button->GetClientData();
|
||||
if (propgrid == NULL) return;
|
||||
|
||||
#define PARSECOLOR(color, pgid) \
|
||||
{ \
|
||||
wxVariant variant = propgrid->GetPropertyValue(pgid); \
|
||||
color = *wxGetVariantCast(variant,wxColour); \
|
||||
}
|
||||
|
||||
#define PARSE(ptr, pgid) propgrid->GetPropertyValue(pgid).Convert(ptr);
|
||||
|
||||
PARSECOLOR(m_frame->colors.canvas_bg, colors_canvas_bg_pgid)
|
||||
PARSECOLOR(m_frame->colors.canvas_shape_controlpoint, colors_canvas_shape_controlpoint_pgid)
|
||||
PARSECOLOR(m_frame->colors.canvas_shape_guideline, colors_canvas_shape_guideline_pgid)
|
||||
PARSECOLOR(m_frame->colors.canvas_shape_mainpoint, colors_canvas_shape_mainpoint_pgid)
|
||||
PARSECOLOR(m_frame->colors.canvas_shape_normal, colors_canvas_shape_normal_pgid)
|
||||
PARSECOLOR(m_frame->colors.canvas_shape_outline, colors_canvas_shape_outline_pgid)
|
||||
PARSECOLOR(m_frame->colors.canvas_shape_preview, colors_canvas_shape_preview_pgid)
|
||||
PARSECOLOR(m_frame->colors.canvas_shape_selectpoint, colors_canvas_shape_selectpoint_pgid)
|
||||
PARSECOLOR(m_frame->colors.library_libarea, colors_library_libarea_pgid)
|
||||
PARSECOLOR(m_frame->colors.library_shape, colors_library_shape_pgid)
|
||||
PARSECOLOR(m_frame->colors.origin, colors_origin_pgid)
|
||||
PARSECOLOR(m_frame->colors.ruler_h, colors_ruler_h_pgid)
|
||||
PARSECOLOR(m_frame->colors.ruler_v, colors_ruler_v_pgid)
|
||||
|
||||
PARSE(&m_frame->alphas.canvas_shape_controlpoint, alphas_canvas_shape_controlpoint_pgid)
|
||||
PARSE(&m_frame->alphas.canvas_shape_guideline, alphas_canvas_shape_guideline_pgid)
|
||||
PARSE(&m_frame->alphas.canvas_shape_mainpoint, alphas_canvas_shape_mainpoint_pgid)
|
||||
PARSE(&m_frame->alphas.canvas_shape_normal, alphas_canvas_shape_normal_pgid)
|
||||
PARSE(&m_frame->alphas.canvas_shape_outline, alphas_canvas_shape_outline_pgid)
|
||||
PARSE(&m_frame->alphas.canvas_shape_preview, alphas_canvas_shape_preview_pgid)
|
||||
PARSE(&m_frame->alphas.canvas_shape_selectpoint, alphas_canvas_shape_selectpoint_pgid)
|
||||
|
||||
PARSE(&m_frame->sizes.origincross, sizes_origincross_pgid)
|
||||
|
||||
PARSE(&m_frame->behaviors.autoaskimgopac, behaviors_autoaskimgopac_pgid)
|
||||
PARSE(&m_frame->behaviors.capitalizecmds, behaviors_capitalizecmds_pgid)
|
||||
PARSE(&m_frame->behaviors.parse_spc, behaviors_parse_spc_pgid)
|
||||
PARSE(&m_frame->behaviors.nosplashscreen, behaviors_nosplashscreen_pgid)
|
||||
PARSE(&m_frame->behaviors.confirmquit, behaviors_confirmquit_pgid)
|
||||
|
||||
wxCommandEvent evento( wxEVT_SETTINGS_CHANGED, event.GetId() );
|
||||
evento.SetEventObject( button );
|
||||
m_frame->GetEventHandler()->ProcessEvent( evento );
|
||||
|
||||
}
|
||||
|
||||
void ASSDrawSettingsDialog::OnSettingsRevertButtonClicked(wxCommandEvent &event)
|
||||
{
|
||||
RefreshSettingsDisplay();
|
||||
}
|
||||
|
||||
void ASSDrawSettingsDialog::RefreshSettingsDisplay()
|
||||
{
|
||||
if (propgrid == NULL) return;
|
||||
|
||||
#define UPDATESETTING(value, pgid) propgrid->SetPropertyValue(pgid, value);
|
||||
|
||||
UPDATESETTING(m_frame->colors.canvas_bg, colors_canvas_bg_pgid)
|
||||
UPDATESETTING(m_frame->colors.canvas_shape_controlpoint, colors_canvas_shape_controlpoint_pgid)
|
||||
UPDATESETTING(m_frame->colors.canvas_shape_guideline, colors_canvas_shape_guideline_pgid)
|
||||
UPDATESETTING(m_frame->colors.canvas_shape_mainpoint, colors_canvas_shape_mainpoint_pgid)
|
||||
UPDATESETTING(m_frame->colors.canvas_shape_normal, colors_canvas_shape_normal_pgid)
|
||||
UPDATESETTING(m_frame->colors.canvas_shape_outline, colors_canvas_shape_outline_pgid)
|
||||
UPDATESETTING(m_frame->colors.canvas_shape_preview, colors_canvas_shape_preview_pgid)
|
||||
UPDATESETTING(m_frame->colors.canvas_shape_selectpoint, colors_canvas_shape_selectpoint_pgid)
|
||||
UPDATESETTING(m_frame->colors.library_libarea, colors_library_libarea_pgid)
|
||||
UPDATESETTING(m_frame->colors.library_shape, colors_library_shape_pgid)
|
||||
UPDATESETTING(m_frame->colors.origin, colors_origin_pgid)
|
||||
UPDATESETTING(m_frame->colors.ruler_h, colors_ruler_h_pgid)
|
||||
UPDATESETTING(m_frame->colors.ruler_v, colors_ruler_v_pgid)
|
||||
|
||||
UPDATESETTING(m_frame->alphas.canvas_shape_controlpoint, alphas_canvas_shape_controlpoint_pgid)
|
||||
UPDATESETTING(m_frame->alphas.canvas_shape_guideline, alphas_canvas_shape_guideline_pgid)
|
||||
UPDATESETTING(m_frame->alphas.canvas_shape_mainpoint, alphas_canvas_shape_mainpoint_pgid)
|
||||
UPDATESETTING(m_frame->alphas.canvas_shape_normal, alphas_canvas_shape_normal_pgid)
|
||||
UPDATESETTING(m_frame->alphas.canvas_shape_outline, alphas_canvas_shape_outline_pgid)
|
||||
UPDATESETTING(m_frame->alphas.canvas_shape_preview, alphas_canvas_shape_preview_pgid)
|
||||
UPDATESETTING(m_frame->alphas.canvas_shape_selectpoint, alphas_canvas_shape_selectpoint_pgid)
|
||||
|
||||
UPDATESETTING(m_frame->sizes.origincross, sizes_origincross_pgid)
|
||||
|
||||
UPDATESETTING(m_frame->behaviors.capitalizecmds, behaviors_capitalizecmds_pgid)
|
||||
UPDATESETTING(m_frame->behaviors.autoaskimgopac, behaviors_autoaskimgopac_pgid)
|
||||
UPDATESETTING(m_frame->behaviors.parse_spc, behaviors_parse_spc_pgid)
|
||||
UPDATESETTING(m_frame->behaviors.nosplashscreen, behaviors_nosplashscreen_pgid)
|
||||
UPDATESETTING(m_frame->behaviors.confirmquit, behaviors_confirmquit_pgid)
|
||||
|
||||
}
|
@ -1,121 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "_common.hpp"
|
||||
#include <wx/propgrid/propgrid.h>
|
||||
#include <wx/propgrid/advprops.h>
|
||||
|
||||
class ASSDrawFrame;
|
||||
|
||||
DECLARE_EVENT_TYPE(wxEVT_SETTINGS_CHANGED, -1)
|
||||
|
||||
typedef wxPGProperty* wxPGId;
|
||||
|
||||
class ASSDrawSettingsDialog : public wxPanel
|
||||
{
|
||||
public:
|
||||
|
||||
ASSDrawFrame* m_frame;
|
||||
|
||||
ASSDrawSettingsDialog( wxWindow *parent, ASSDrawFrame *frame, int id = wxID_ANY );
|
||||
virtual ~ASSDrawSettingsDialog();
|
||||
|
||||
virtual void Init();
|
||||
virtual void OnSettingsApplyButtonClicked(wxCommandEvent &event);
|
||||
virtual void OnSettingsRevertButtonClicked(wxCommandEvent &event);
|
||||
virtual void RefreshSettingsDisplay();
|
||||
|
||||
wxPGId colors_canvas_bg_pgid;
|
||||
wxPGId colors_canvas_shape_normal_pgid;
|
||||
wxPGId colors_canvas_shape_preview_pgid;
|
||||
wxPGId colors_canvas_shape_outline_pgid;
|
||||
wxPGId colors_canvas_shape_guideline_pgid;
|
||||
wxPGId colors_canvas_shape_mainpoint_pgid;
|
||||
wxPGId colors_canvas_shape_controlpoint_pgid;
|
||||
wxPGId colors_canvas_shape_selectpoint_pgid;
|
||||
wxPGId colors_library_shape_pgid;
|
||||
wxPGId colors_library_libarea_pgid;
|
||||
wxPGId colors_origin_pgid;
|
||||
wxPGId colors_ruler_h_pgid;
|
||||
wxPGId colors_ruler_v_pgid;
|
||||
wxPGId alphas_canvas_shape_normal_pgid;
|
||||
wxPGId alphas_canvas_shape_preview_pgid;
|
||||
wxPGId alphas_canvas_shape_outline_pgid;
|
||||
wxPGId alphas_canvas_shape_guideline_pgid;
|
||||
wxPGId alphas_canvas_shape_mainpoint_pgid;
|
||||
wxPGId alphas_canvas_shape_controlpoint_pgid;
|
||||
wxPGId alphas_canvas_shape_selectpoint_pgid;
|
||||
wxPGId sizes_origincross_pgid;
|
||||
wxPGId behaviors_capitalizecmds_pgid;
|
||||
wxPGId behaviors_autoaskimgopac_pgid;
|
||||
wxPGId behaviors_parse_spc_pgid;
|
||||
wxPGId behaviors_nosplashscreen_pgid;
|
||||
wxPGId behaviors_confirmquit_pgid;
|
||||
|
||||
wxPropertyGrid *propgrid;
|
||||
//DECLARE_EVENT_TABLE()
|
||||
|
||||
};
|
||||
|
||||
class wxLongPropertyValidator : public wxValidator
|
||||
{
|
||||
public:
|
||||
|
||||
wxLongPropertyValidator( const int min, const int max )
|
||||
: wxValidator()
|
||||
{
|
||||
m_min = min, m_max = max;
|
||||
}
|
||||
|
||||
virtual wxObject* Clone() const
|
||||
{
|
||||
return new wxLongPropertyValidator( m_min, m_max );
|
||||
}
|
||||
|
||||
virtual bool Validate(wxWindow* WXUNUSED(parent))
|
||||
{
|
||||
wxTextCtrl* tc = wxDynamicCast(GetWindow(), wxTextCtrl);
|
||||
wxCHECK_MSG(tc, true, wxT("validator window must be wxTextCtrl"));
|
||||
|
||||
wxString val = tc->GetValue();
|
||||
|
||||
long valint = 0;
|
||||
val.ToLong(&valint);
|
||||
|
||||
if (valint < m_min) valint = m_min;
|
||||
if (valint > m_max) valint = m_max;
|
||||
|
||||
tc->SetValue(wxString::Format(_T("%d"), valint));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
int m_min, m_max;
|
||||
};
|
@ -1,58 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
###########################
|
||||
# t-stringifier.pl - replaces "strings" with _T("strings")
|
||||
#
|
||||
# Usage: t-stringifier.pl file1 [file2 [file...]]
|
||||
# NOTE: changes existing files in place so backup stuff or rewrite the script
|
||||
# (more specifically comment out the rename() call at the end of the main loop)
|
||||
# if you're paranoid.
|
||||
#
|
||||
# Written by Karl Blomster 2008
|
||||
# This script is in the public domain.
|
||||
###########################
|
||||
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
my @infiles = @ARGV;
|
||||
|
||||
foreach my $infile (@infiles) {
|
||||
my $outfile = $infile . ".out";
|
||||
open(INFILE, "<", $infile) or die("Couldn't open $infile for reading: $!");
|
||||
open(OUTFILE, ">", $outfile) or die("Couldn't open $outfile for writing: $!");
|
||||
|
||||
print("Processing: $infile \n");
|
||||
|
||||
while (<INFILE>) {
|
||||
print OUTFILE $_ and next() if (m!^#\s*include!);
|
||||
|
||||
my $line = $_;
|
||||
|
||||
$line =~ s/(_T\(|_\(|wxT\()?"(.*?)(?<!\\)"(\))?/replacementstring($1,$2,$3)/eg;
|
||||
|
||||
print OUTFILE $line;
|
||||
}
|
||||
|
||||
close(OUTFILE);
|
||||
close(INFILE);
|
||||
|
||||
|
||||
rename($outfile,$infile) or die("Couldn't overwrite ${infile}: $!");
|
||||
}
|
||||
|
||||
sub replacementstring {
|
||||
my ($pre, $string, $post) = @_;
|
||||
|
||||
if ($pre) {
|
||||
if ($pre eq "_(") { return( qq!_("${string}")! ); }
|
||||
else { return( qq!_T("${string}")! ); }
|
||||
}
|
||||
elsif ($post) {
|
||||
return( qq!_T("${string}"))! );
|
||||
}
|
||||
else {
|
||||
return( qq!_T("${string}")! );
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 17 KiB |
@ -1,127 +0,0 @@
|
||||
#include "AGGWindow.h"
|
||||
|
||||
#include "agg_rendering_buffer.h"
|
||||
#include "agg_pixfmt_rgb.h"
|
||||
|
||||
#include <wx/dcclient.h>
|
||||
|
||||
namespace GUI {
|
||||
|
||||
BEGIN_EVENT_TABLE(AGGWindow, wxWindow)
|
||||
EVT_PAINT(AGGWindow::onPaint)
|
||||
EVT_SIZE(AGGWindow::onSize)
|
||||
EVT_ERASE_BACKGROUND(AGGWindow::onEraseBackground)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
AGGWindow::AGGWindow(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size, long style):
|
||||
wxWindow(parent, id, pos, size, style, wxT("AGGWindow")),
|
||||
bitmap(NULL) {
|
||||
}
|
||||
|
||||
void AGGWindow::init(const int width, const int height) {
|
||||
memDC.SelectObject(wxNullBitmap);
|
||||
delete bitmap;
|
||||
|
||||
int ncheight = height, ncwidth = width;
|
||||
if (ncwidth < 1) ncwidth = 1;
|
||||
if (ncheight < 1) ncheight = 1;
|
||||
|
||||
bitmap = new wxBitmap(ncwidth, ncheight, PixelFormat::wxWidgetsType::BitsPerPixel);
|
||||
|
||||
// Draw the bitmap
|
||||
attachAndDraw();
|
||||
|
||||
memDC.SelectObject(*bitmap);
|
||||
|
||||
// Request a full redraw of the window
|
||||
Refresh(false);
|
||||
}
|
||||
|
||||
AGGWindow::~AGGWindow() {
|
||||
memDC.SelectObject(wxNullBitmap);
|
||||
delete bitmap;
|
||||
}
|
||||
|
||||
void AGGWindow::attachAndDraw() {
|
||||
// Get raw access to the wxWidgets bitmap -- this locks the pixels and
|
||||
// unlocks on destruction.
|
||||
PixelData data(*bitmap);
|
||||
assert(data);
|
||||
|
||||
#if 1
|
||||
// This cast looks like it is ignoring byte-ordering, but the
|
||||
// pixel format already explicitly handles that.
|
||||
assert(data.GetPixels().IsOk());
|
||||
wxAlphaPixelFormat::ChannelType* pd = (wxAlphaPixelFormat::ChannelType*) &data.GetPixels().Data();
|
||||
|
||||
// wxWidgets always returns a pointer to the first row of pixels, whether
|
||||
// that is stored at the beginning of the buffer (stride > 0) or at the
|
||||
// end of the buffer (stride < 0). AGG always wants a pointer to the
|
||||
// beginning of the buffer, no matter what the stride. (AGG does handle
|
||||
// negative strides correctly.)
|
||||
// Upshot: if the stride is negative, rewind the pointer from the end of
|
||||
// the buffer to the beginning.
|
||||
const int stride = data.GetRowStride();
|
||||
if (stride < 0)
|
||||
pd += (data.GetHeight() - 1) * stride;
|
||||
|
||||
rBuf.attach(pd, data.GetWidth(), data.GetHeight(), stride);
|
||||
|
||||
// Call the user code to actually draw.
|
||||
draw();
|
||||
#else
|
||||
PixelData::Iterator p(data);
|
||||
|
||||
// we draw a (10, 10)-(20, 20) rect manually using the given r, g, b
|
||||
p.Offset(data, 10, 10);
|
||||
|
||||
for ( int y = 0; y < 10; ++y )
|
||||
{
|
||||
PixelData::Iterator rowStart = p;
|
||||
|
||||
for ( int x = 0; x < 10; ++x, ++p )
|
||||
{
|
||||
p.Red() = 255;
|
||||
p.Green() = 0;
|
||||
p.Blue() = 255;
|
||||
}
|
||||
|
||||
p = rowStart;
|
||||
p.OffsetY(data, 1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void AGGWindow::onSize(wxSizeEvent& event) {
|
||||
const wxSize size = GetClientSize();
|
||||
if (bitmap && size.GetWidth() == bitmap->GetWidth() && size.GetHeight() == bitmap->GetHeight())
|
||||
return;
|
||||
|
||||
init(size.GetWidth(), size.GetHeight());
|
||||
}
|
||||
|
||||
void AGGWindow::onPaint(wxPaintEvent& event) {
|
||||
wxPaintDC dc(this);
|
||||
|
||||
wxCoord width, height;
|
||||
dc.GetSize(&width, &height);
|
||||
if (!bitmap || bitmap->GetWidth() != width || bitmap->GetHeight() != height)
|
||||
init(width, height);
|
||||
|
||||
// Iterate over regions needing repainting
|
||||
wxRegionIterator regions(GetUpdateRegion());
|
||||
wxRect rect;
|
||||
while (regions) {
|
||||
rect = regions.GetRect();
|
||||
dc.Blit(rect.x, rect.y, rect.width, rect.height, &memDC, rect.x, rect.y);
|
||||
++regions;
|
||||
}
|
||||
}
|
||||
|
||||
void AGGWindow::onEraseBackground(wxEraseEvent& WXUNUSED(event)) {
|
||||
// Do nothing to "avoid flashing in MSW" Grr.
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,68 +0,0 @@
|
||||
#ifndef WX_AGG_WINDOW_H
|
||||
#define WX_AGG_WINDOW_H
|
||||
|
||||
#include "PixelFormatConvertor.h"
|
||||
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/rawbmp.h>
|
||||
#include <wx/window.h>
|
||||
#include <wx/dcmemory.h>
|
||||
|
||||
#include "agg_rendering_buffer.h"
|
||||
|
||||
namespace GUI {
|
||||
|
||||
/// A simple widget that displays a bitmap that AGG can draw on.
|
||||
/// It reallocates the bitmap so that it always is the current size of the
|
||||
/// entire panel and calls the virtual method draw() to draw to the bitmap.
|
||||
/// This should be useable anywhere a wxWindow can be, e.g. in actual windows,
|
||||
/// buttons, etc.
|
||||
class AGGWindow: public wxWindow {
|
||||
public:
|
||||
/// Create an AGGWindow. Defaults are taken from wxWindow::wxWindow(), see
|
||||
/// that documentation for more information.
|
||||
AGGWindow(wxWindow* parent, wxWindowID id = wxID_ANY,
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = wxTAB_TRAVERSAL);
|
||||
|
||||
/// Clean up resources held
|
||||
virtual ~AGGWindow();
|
||||
|
||||
protected:
|
||||
|
||||
/// The conversion between wxWidgets' pixel format and AGG's pixel format
|
||||
typedef PixelFormatConvertor<wxNativePixelFormat> PixelFormat;
|
||||
|
||||
/// The wxWidgets "pixel data" type, an accessor to the raw pixels
|
||||
typedef wxPixelData<wxBitmap, PixelFormat::wxWidgetsType> PixelData;
|
||||
|
||||
|
||||
/// Create the bitmap given the current size.
|
||||
void init(const int width, const int height);
|
||||
|
||||
/// Attach the AGG rendering buffer to the bitmap and call the user draw() code.
|
||||
void attachAndDraw();
|
||||
|
||||
/// Paint the bitmap onto the panel.
|
||||
void onPaint(wxPaintEvent& event);
|
||||
|
||||
/// Resize the bitmap to match the window.
|
||||
void onSize(wxSizeEvent& event);
|
||||
|
||||
/// Handle the erase-background event.
|
||||
void onEraseBackground(wxEraseEvent& event);
|
||||
|
||||
/// Draw into the bitmap using AGG.
|
||||
virtual void draw() = 0;
|
||||
|
||||
|
||||
wxBitmap* bitmap; ///< wxWidgets bitmap for AGG to draw into
|
||||
wxMemoryDC memDC; ///< Memory "device context" for drawing the bitmap
|
||||
|
||||
agg::rendering_buffer rBuf; ///< AGG's rendering buffer, pointing into the bitmap
|
||||
|
||||
DECLARE_EVENT_TABLE() /// Allocate wxWidgets storage for event handlers
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
@ -1,8 +0,0 @@
|
||||
AM_CXXFLAGS = @WX_CPPFLAGS@ @LIBAGG_CFLAGS@
|
||||
|
||||
noinst_LIBRARIES = libaggwindow.a
|
||||
|
||||
libaggwindow_a_SOURCES = \
|
||||
AGGWindow.cpp \
|
||||
AGGWindow.h \
|
||||
PixelFormatConvertor.h
|
@ -1,117 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2007, ai-chan
|
||||
* 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 ASSDraw3 Team 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 AI-CHAN ``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 AI-CHAN 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.
|
||||
*/
|
||||
|
||||
#ifndef WX_AGG_PIXEL_FORMAT_CONVERTOR_H
|
||||
#define WX_AGG_PIXEL_FORMAT_CONVERTOR_H
|
||||
|
||||
#include "agg_pixfmt_rgb.h"
|
||||
#include "agg_pixfmt_rgba.h"
|
||||
|
||||
namespace {
|
||||
|
||||
/// Given a particular combination of channel type, bits per pixel and
|
||||
/// channel indices, return the AGG format that matches.
|
||||
/// The actual template specializations that follow give the actual types,
|
||||
/// and using a combination of parameters that are not listed will give
|
||||
/// a compile-time error.
|
||||
template <typename Channel, int bitsPerPixel, int r, int g, int b, int a>
|
||||
struct wxWidgetsToAGGHelper {
|
||||
//empty
|
||||
};
|
||||
|
||||
/// 24-bit RGB
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 24, 0, 1, 2, -1> {
|
||||
typedef agg::pixfmt_rgb24 format;
|
||||
};
|
||||
|
||||
/// 24-bit BGR
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 24, 2, 1, 0, -1> {
|
||||
typedef agg::pixfmt_bgr24 format;
|
||||
};
|
||||
|
||||
/// 32-bit RGB, alpha unused but stored as ARGB.
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 32, 1, 2, 3, -1> {
|
||||
typedef agg::pixfmt_argb32 format;
|
||||
};
|
||||
|
||||
/// 32-bit RGB, alpha unused but stored as RGBA.
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 32, 0, 1, 2, -1> {
|
||||
typedef agg::pixfmt_rgba32 format;
|
||||
};
|
||||
|
||||
/// 32-bit BGR, alpha unused but stored as ABGR.
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 32, 3, 2, 1, -1> {
|
||||
typedef agg::pixfmt_abgr32 format;
|
||||
};
|
||||
|
||||
/// 32-bit BGR, alpha unused but stored as BGRA.
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 32, 2, 1, 0, -1> {
|
||||
typedef agg::pixfmt_bgra32 format;
|
||||
};
|
||||
|
||||
/// 32-bit RGBA
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 32, 0, 1, 2, 3> {
|
||||
typedef agg::pixfmt_rgba32 format;
|
||||
};
|
||||
|
||||
/// 32-bit BGRA
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 32, 2, 1, 0, 3> {
|
||||
typedef agg::pixfmt_bgra32 format;
|
||||
};
|
||||
|
||||
/// 32-bit ARGB
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 32, 1, 2, 3, 0> {
|
||||
typedef agg::pixfmt_argb32 format;
|
||||
};
|
||||
|
||||
/// 32-bit ABGR
|
||||
template <> struct wxWidgetsToAGGHelper<unsigned char, 32, 3, 2, 1, 0> {
|
||||
typedef agg::pixfmt_abgr32 format;
|
||||
};
|
||||
}
|
||||
|
||||
namespace GUI {
|
||||
/// Convert between a wxWidgets pixel format class and an AGG pixel format class.
|
||||
/// Usage examples:
|
||||
/// PixelFormatConvertor<wxNativePixelFormat>::AGGType or
|
||||
/// PixelFormatConvertor<wxAlphaPixelFormat>::AGGType.
|
||||
template <typename wxWidgetsPixelFormat>
|
||||
class PixelFormatConvertor {
|
||||
public:
|
||||
typedef wxWidgetsPixelFormat wxWidgetsType;
|
||||
|
||||
// Break out the wxWidgets parameters and feed to the helper class.
|
||||
typedef typename wxWidgetsToAGGHelper<typename wxWidgetsPixelFormat::ChannelType,
|
||||
wxWidgetsPixelFormat::BitsPerPixel,
|
||||
wxWidgetsPixelFormat::RED,
|
||||
wxWidgetsPixelFormat::GREEN,
|
||||
wxWidgetsPixelFormat::BLUE,
|
||||
wxWidgetsPixelFormat::ALPHA>::format AGGType;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
@ -1,4 +0,0 @@
|
||||
noinst_LIBRARIES = libres.a
|
||||
|
||||
libres_a_SOURCES = res.cpp res.h
|
||||
|
@ -1,24 +0,0 @@
|
||||
/* XPM */
|
||||
const char *add_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 3 1",
|
||||
" c black",
|
||||
". c #99999999FFFF",
|
||||
"X c None",
|
||||
/* pixels */
|
||||
"XXXXX XXXXX",
|
||||
"XXXXX .... XXXXX",
|
||||
"XXXXX .... XXXXX",
|
||||
"XXXXX .... XXXXX",
|
||||
"X .... X",
|
||||
"X ............ X",
|
||||
"X ............ X",
|
||||
"X ............ X",
|
||||
"X ............ X",
|
||||
"X .... X",
|
||||
"XXXXX .... XXXXX",
|
||||
"XXXXX .... XXXXX",
|
||||
"XXXXX .... XXXXX",
|
||||
"XXXXX XXXXX",
|
||||
"XXXXXXXXXXXXXXXX"
|
||||
};
|
@ -1,292 +0,0 @@
|
||||
/* XPM */
|
||||
const char *appico_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 254 2",
|
||||
" c black",
|
||||
". c #121508",
|
||||
"X c #1E1913",
|
||||
"o c #222200",
|
||||
"O c #252817",
|
||||
"+ c #313117",
|
||||
"@ c #15152A",
|
||||
"# c #2A002A",
|
||||
"$ c #3F003F",
|
||||
"% c #3F1F3F",
|
||||
"& c #332023",
|
||||
"* c #26392C",
|
||||
"= c #333223",
|
||||
"- c #322E36",
|
||||
"; c #2C3939",
|
||||
": c #4D313F",
|
||||
"> c #55383E",
|
||||
", c #555500",
|
||||
"< c #464F2B",
|
||||
"1 c #54542A",
|
||||
"2 c #4D4E3F",
|
||||
"3 c #575937",
|
||||
"4 c #5E672D",
|
||||
"5 c #6D7029",
|
||||
"6 c #362B56",
|
||||
"7 c #363571",
|
||||
"8 c #4C355F",
|
||||
"9 c #583B55",
|
||||
"0 c #443579",
|
||||
"q c #3C4575",
|
||||
"w c #4A4757",
|
||||
"e c #644D5D",
|
||||
"r c #6A5D5A",
|
||||
"t c #50624A",
|
||||
"y c #626448",
|
||||
"u c #626D51",
|
||||
"i c #787A55",
|
||||
"p c #554875",
|
||||
"a c #67537A",
|
||||
"s c #70517F",
|
||||
"d c #756C60",
|
||||
"f c #7F7C65",
|
||||
"g c #626D75",
|
||||
"h c #637479",
|
||||
"j c #AB713F",
|
||||
"k c #AF7D4C",
|
||||
"l c #8F7662",
|
||||
"z c #9C7277",
|
||||
"x c #E76F5B",
|
||||
"c c #81992A",
|
||||
"v c #D3B80F",
|
||||
"b c #EFBE0F",
|
||||
"n c #C1A821",
|
||||
"m c #F5CE11",
|
||||
"M c #DDCC22",
|
||||
"N c #90805C",
|
||||
"B c #97A447",
|
||||
"V c #8BBB4C",
|
||||
"C c #91B648",
|
||||
"Z c #99AA55",
|
||||
"A c #91BB5D",
|
||||
"S c #A5B859",
|
||||
"D c #8B8F65",
|
||||
"F c #959469",
|
||||
"G c #878B7D",
|
||||
"H c #989970",
|
||||
"J c #AB956B",
|
||||
"K c #BABC6D",
|
||||
"L c #ACA977",
|
||||
"P c #B8B376",
|
||||
"I c #C7814B",
|
||||
"U c #EB8D50",
|
||||
"Y c #DB8A69",
|
||||
"T c #DAA87A",
|
||||
"R c #A0C64B",
|
||||
"E c #BEC254",
|
||||
"W c #A9D058",
|
||||
"Q c #AEC96B",
|
||||
"! c #AAD071",
|
||||
"~ c #D1D647",
|
||||
"^ c #DBDF5C",
|
||||
"/ c #CCE252",
|
||||
"( c #D8ED5F",
|
||||
") c #E5EC56",
|
||||
"_ c #E2F35A",
|
||||
"` c #FEFE59",
|
||||
"' c #CECF6F",
|
||||
"] c #C6D460",
|
||||
"[ c #D7DC65",
|
||||
"{ c #CFD47E",
|
||||
"} c #D5D879",
|
||||
"| c #CAE365",
|
||||
" . c #D3EB6C",
|
||||
".. c #D0EA72",
|
||||
"X. c #E3E864",
|
||||
"o. c #EBF268",
|
||||
"O. c #FDFD66",
|
||||
"+. c #E3E976",
|
||||
"@. c #E8F376",
|
||||
"#. c #FDFD74",
|
||||
"$. c #3B3D8E",
|
||||
"%. c #3B3CA8",
|
||||
"&. c #413DB3",
|
||||
"*. c #554887",
|
||||
"=. c #405587",
|
||||
"-. c #494197",
|
||||
";. c #544894",
|
||||
":. c #5E5896",
|
||||
">. c #654F9C",
|
||||
",. c #655A9B",
|
||||
"<. c #785E98",
|
||||
"1. c #577494",
|
||||
"2. c #67718D",
|
||||
"3. c #78778A",
|
||||
"4. c #65639A",
|
||||
"5. c #756499",
|
||||
"6. c #667F99",
|
||||
"7. c #73769E",
|
||||
"8. c #4C4BB1",
|
||||
"9. c #6E5CA1",
|
||||
"0. c #745DA2",
|
||||
"q. c #615AB9",
|
||||
"w. c #6B66A8",
|
||||
"e. c #7B65A7",
|
||||
"r. c #797BA3",
|
||||
"t. c #6B66B7",
|
||||
"y. c #7565B2",
|
||||
"u. c #7A7BB5",
|
||||
"i. c #4443C6",
|
||||
"p. c #6E63CC",
|
||||
"a. c #796BC6",
|
||||
"s. c #7673C2",
|
||||
"d. c #6B64D8",
|
||||
"f. c #766DD7",
|
||||
"g. c #7C74D6",
|
||||
"h. c #7C74E0",
|
||||
"j. c #816CAF",
|
||||
"k. c #8964B8",
|
||||
"l. c #867AB6",
|
||||
"z. c #8479D8",
|
||||
"x. c #917BD3",
|
||||
"c. c #887BE7",
|
||||
"v. c #917BE8",
|
||||
"b. c #8D79F4",
|
||||
"n. c #987CF9",
|
||||
"m. c #6481A1",
|
||||
"M. c #7B83B8",
|
||||
"N. c #868289",
|
||||
"B. c #979D80",
|
||||
"V. c #888695",
|
||||
"C. c #8C929A",
|
||||
"Z. c #9A9898",
|
||||
"A. c #A69898",
|
||||
"S. c #98BF95",
|
||||
"D. c #B3AE8E",
|
||||
"F. c #B7B98C",
|
||||
"G. c #ACAB96",
|
||||
"H. c #B6B792",
|
||||
"J. c #8A88A8",
|
||||
"K. c #9285AA",
|
||||
"L. c #9996A3",
|
||||
"P. c #8480BE",
|
||||
"I. c #978EBC",
|
||||
"U. c #9E9DBA",
|
||||
"Y. c #A39BB6",
|
||||
"T. c #93B8B1",
|
||||
"R. c #A8A0A6",
|
||||
"E. c #B3A9AF",
|
||||
"W. c #B4B0A4",
|
||||
"Q. c #A8A6B6",
|
||||
"!. c #B3AFBF",
|
||||
"~. c #B9B6B6",
|
||||
"^. c #D3AC80",
|
||||
"/. c #DABC98",
|
||||
"(. c #E1AC82",
|
||||
"). c #FFBB89",
|
||||
"_. c #E9BD91",
|
||||
"`. c #C5B7A7",
|
||||
"'. c #BEC18C",
|
||||
"]. c #A6C19D",
|
||||
"[. c #98C6B1",
|
||||
"{. c #A4C7AA",
|
||||
"}. c #C8C385",
|
||||
"|. c #D1D28E",
|
||||
" X c #C7C998",
|
||||
".X c #CCD59C",
|
||||
"XX c #FFC18C",
|
||||
"oX c #E9C994",
|
||||
"OX c #F4C890",
|
||||
"+X c #E9D198",
|
||||
"@X c #FFD698",
|
||||
"#X c #DAE082",
|
||||
"$X c #D8ED9A",
|
||||
"%X c #FFE19F",
|
||||
"&X c #F0F09E",
|
||||
"*X c #D5CEA3",
|
||||
"=X c #D9D9A5",
|
||||
"-X c #C7C3B8",
|
||||
";X c #D4C8BB",
|
||||
":X c #DCD8B8",
|
||||
">X c #EBCAA2",
|
||||
",X c #FADBA1",
|
||||
"<X c #DDE1A9",
|
||||
"1X c #E6E5AC",
|
||||
"2X c #FCE6A8",
|
||||
"3X c #FFF3AE",
|
||||
"4X c #E8E7B6",
|
||||
"5X c #F5EAB2",
|
||||
"6X c #FDFAB9",
|
||||
"7X c #9789CB",
|
||||
"8X c #9D96CC",
|
||||
"9X c #8D85D7",
|
||||
"0X c #9889D4",
|
||||
"qX c #9790DB",
|
||||
"wX c #AA9BC8",
|
||||
"eX c #A496D7",
|
||||
"rX c #ABA5C4",
|
||||
"tX c #B4A5C8",
|
||||
"yX c #B2B5C7",
|
||||
"uX c #B4ABD7",
|
||||
"iX c #8D83EB",
|
||||
"pX c #9686E9",
|
||||
"aX c #9B92E9",
|
||||
"sX c #8B82F2",
|
||||
"dX c #9886F4",
|
||||
"fX c #9C90F8",
|
||||
"gX c #A38FE7",
|
||||
"hX c #A899E9",
|
||||
"jX c #A38CFE",
|
||||
"kX c #A593FE",
|
||||
"lX c #B19BFF",
|
||||
"zX c #AFBBE0",
|
||||
"xX c #ACA6F7",
|
||||
"cX c #B5ABFE",
|
||||
"vX c #BAB2FE",
|
||||
"bX c #A9D8C4",
|
||||
"nX c #D3CFC5",
|
||||
"mX c #CED9CB",
|
||||
"MX c #DAD7C6",
|
||||
"NX c #CCC6D5",
|
||||
"BX c #EAECC5",
|
||||
"VX c #F0ECC4",
|
||||
"CX c #ECF1CD",
|
||||
"ZX c #FEFEC6",
|
||||
"AX c #FFFED0",
|
||||
"SX c #C4C7EF",
|
||||
"DX c #C9C1FF",
|
||||
"FX c #D0CCFE",
|
||||
"GX c #D8D8FE",
|
||||
"HX c #CEE0E3",
|
||||
"JX c #DCF1E9",
|
||||
"KX c #E0E0E7",
|
||||
"LX c #E5E3FF",
|
||||
"PX c #F9FBFB",
|
||||
/* pixels */
|
||||
" | @.#.o.S w.a.s.u.Z ( | ",
|
||||
" Q .#.#.#.#.' 7Xn.dX9X} O.o.W ",
|
||||
" ..+.#.#.#.#.#.#.K tX7X} #.O.O.[ C.M.6. ",
|
||||
" .@.#.#.#.#.#.#.#.) #.[ O.O.O.O.O.W.aXz.2. ",
|
||||
" R o.#.#.#.O.O.#.O.X.[ ^ o.O.O.` ` ` [ kXkXpXu. ",
|
||||
" _ O.O.O.O.O.O.O.O.A.7Xr D.O.` ` ` ` O.I.kXkXpXM. ",
|
||||
" / O.O.O.O.O.O.} A.l.n.k.z v.L O.` ` ` ` F.kXjXkXdXu. ",
|
||||
" ~ O.O.O.O.[ R.0Xb.n.pXA.;XpX5.}.` ` ` ` } aXkXkXkXl. ",
|
||||
" 5 O.O.o.} V.hXlXkXa.dXwX4X:XpXJ.0X} ` ` ` [ eXcXvXxXGXf ",
|
||||
" 1 E ` @.CXKXzXDXkXaXa.v.MX4X4XeXL.eXeX#X` ` ) rXvXLXHXPXmX, ",
|
||||
" {.$XBXPXGXxXdXjXdXU.c.tX4X6XZXwXQ.~.jXgX{ ` ` G.kXkXaXGXNXd ",
|
||||
" JXPXFXcXkXc.jXdXeXR.g.nX=XZXZXE.Q.*Xx.kXeX}.` K kXkXpXkXqX5.",
|
||||
" h SXaXdXdXjXb.jXv.;XV.8XZX=XZXZX:XL.ZXZ.pXjXkXG.] 0XkXz.kXkXe.",
|
||||
"@ qXiXpXc.kXdXdXb.l.5XY.!.ZX=XZXZXZXG 6X:XP.dXkXpX8XpXkXz.kXkXe.",
|
||||
"*.z.g.fXc.kXdXdXpXMXZXN.ZX6X1XZXZXZX X=XZX-XpXdXsXkXkXkXz.kXkX<.",
|
||||
"e.pX;.kXz.kXdXdXhXBXZXB.ZX6X4XZXZXZX1X4XZXZXrXkXc.kXkXkXz.kXkX5.",
|
||||
"5.9.0.kXc.kXiXpXyXZXZX4XZXZX6X6XZXZXZX6XZXZXBXrXz.kXkXkXz.kXkX<.",
|
||||
"4.,.y.kXc.kXc.z.MXZXZX5X6XZXZX6XZXZXZX6X6XZXZX4Xz.kXkXkXg.kXkX<.",
|
||||
"5.# z.kXiXkXh.t.ZX=XF D F.ZX6X6X6X6X6X}.P |.ZX=XkXjXkXjXf.kXpX0.",
|
||||
"w pXkXdXdXd.r.H = 3 2X2X@X@X2X}.+ . O i G.kXkXkXdXf.kXx.s ",
|
||||
" $ dXkXs.pXq.G O 2 XZX6X%XXX).).).OXoXL y X kXkXkXc.f.kXx.: ",
|
||||
" $ dXkX3.uXP. X X5X6XZX6X2X@X@X@X,X,X3XZXZX'.w kXkXkXg.h.kXe. ",
|
||||
" pXj.3.~.Q.=X6X6X6X6XZX6X6X6X6X6X6XZX6X6X5XwXkXkXdXp.c.kX8 ",
|
||||
" z.<.0.7.Z. X5X2X2X6XZXZX,XT (.^.ZXZX6X3X+XeXkXkXiXq.sXz.% ",
|
||||
" ,.5.>.i.%.7 ,X,X,X6XZXZXoXx x Y ZXZX6X@X_.eXkXkXg.q.h.w. ",
|
||||
" p 9 ;.i.&.0 l >X2X6XZXZX6XoX_.5XZXZX6X2X/.0XkXc.t.q.t.9X ",
|
||||
" & *.i.&.0 6 6 K.-XVXAXZXZXZXZXZXZX4X`.:.z.kX8.8.p e 5. ",
|
||||
" -.i.%.9 6 6 &.8.w.V. XZXZX2XG.J.w.8.8.c.iX8.-.a > 9 ",
|
||||
" 7 %.7 X X 7 %.=.T.N I I j 1.1.$.7 8.c.t.%.6 - ",
|
||||
" ; $.B v c c t m.[.[.J U U k [.T.u H.Z.7Xg q t o ",
|
||||
" * v m m +.! [.bX[.k U U J ].4X<XZXAX X4 < ",
|
||||
" C V v m m &X$XA [.bXk U J {.S..X5X1XZXZXn b M "
|
||||
};
|
@ -1,64 +0,0 @@
|
||||
/* XPM */
|
||||
const char *arr___xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 43 1",
|
||||
" c black",
|
||||
". c gray1",
|
||||
"X c gray2",
|
||||
"o c gray9",
|
||||
"O c #282828282828",
|
||||
"+ c #2A2A2A2A2A2A",
|
||||
"@ c #3A3A3A3A3A3A",
|
||||
"# c #3C3C3C3C3C3C",
|
||||
"$ c #494949494949",
|
||||
"% c gray35",
|
||||
"& c #747473737373",
|
||||
"* c #777777777777",
|
||||
"= c #888887878787",
|
||||
"- c #8F8F8E8E8E8E",
|
||||
"; c gray60",
|
||||
": c #9D9D9D9D9D9D",
|
||||
"> c #A2A29F9F9F9F",
|
||||
", c #B6B6B6B6B6B6",
|
||||
"< c gray74",
|
||||
"1 c #C5C5C5C5C5C5",
|
||||
"2 c #C9C9C9C9CACA",
|
||||
"3 c gray80",
|
||||
"4 c #CDCDCDCDCDCD",
|
||||
"5 c #CECECECECECE",
|
||||
"6 c #D0D0D0D0D0D0",
|
||||
"7 c #D1D1D1D1D0D0",
|
||||
"8 c gray82",
|
||||
"9 c gray83",
|
||||
"0 c #D7D7D7D7D6D6",
|
||||
"q c #D7D7D7D7D7D7",
|
||||
"w c gainsboro",
|
||||
"e c #DFDFDFDFDFDF",
|
||||
"r c #E2E2E2E2E2E2",
|
||||
"t c gray90",
|
||||
"y c #E6E6E6E6E6E6",
|
||||
"u c #EAEAEAEAEAEA",
|
||||
"i c #ECECECECECEC",
|
||||
"p c gray93",
|
||||
"a c #F2F2F3F3F2F2",
|
||||
"s c #F9F9F9F9F9F9",
|
||||
"d c gray99",
|
||||
"f c gray100",
|
||||
"g c None",
|
||||
/* pixels */
|
||||
"ggggyggggggggggg",
|
||||
"gggg-9gggggggggg",
|
||||
"gggg- 8ggggggggg",
|
||||
"gggg-0 5gggggggg",
|
||||
"gggg-f,#5ggggggg",
|
||||
"gggg-fs* 5gggggg",
|
||||
"gggg-dp,* 4ggggg",
|
||||
"gggg-ae2>* 5gggg",
|
||||
"gggg-t7X uggg",
|
||||
"gggg-0% X193gggg",
|
||||
"gggg-$<@ &gggggg",
|
||||
"gggg-6w: oqggggg",
|
||||
"ggggiggrO =ggggg",
|
||||
"gggggggw;.+pgggg",
|
||||
"ggggggggt +ugggg"
|
||||
};
|
@ -1,64 +0,0 @@
|
||||
/* XPM */
|
||||
const char *arr__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 43 1",
|
||||
" c black",
|
||||
". c gray1",
|
||||
"X c gray2",
|
||||
"o c gray9",
|
||||
"O c #282828282828",
|
||||
"+ c #2A2A2A2A2A2A",
|
||||
"@ c #3A3A3A3A3A3A",
|
||||
"# c #3C3C3C3C3C3C",
|
||||
"$ c #494949494949",
|
||||
"% c gray35",
|
||||
"& c #747473737373",
|
||||
"* c #777777777777",
|
||||
"= c #888887878787",
|
||||
"- c #8F8F8E8E8E8E",
|
||||
"; c gray60",
|
||||
": c #9D9D9D9D9D9D",
|
||||
"> c #A2A29F9F9F9F",
|
||||
", c #B6B6B6B6B6B6",
|
||||
"< c gray74",
|
||||
"1 c #C5C5C5C5C5C5",
|
||||
"2 c #C9C9C9C9CACA",
|
||||
"3 c gray80",
|
||||
"4 c #CDCDCDCDCDCD",
|
||||
"5 c #CECECECECECE",
|
||||
"6 c #D0D0D0D0D0D0",
|
||||
"7 c #D1D1D1D1D0D0",
|
||||
"8 c gray82",
|
||||
"9 c gray83",
|
||||
"0 c #D7D7D7D7D6D6",
|
||||
"q c #D7D7D7D7D7D7",
|
||||
"w c gainsboro",
|
||||
"e c #DFDFDFDFDFDF",
|
||||
"r c #E2E2E2E2E2E2",
|
||||
"t c gray90",
|
||||
"y c #E6E6E6E6E6E6",
|
||||
"u c #EAEAEAEAEAEA",
|
||||
"i c #ECECECECECEC",
|
||||
"p c gray93",
|
||||
"a c #F2F2F3F3F2F2",
|
||||
"s c #F9F9F9F9F9F9",
|
||||
"d c gray99",
|
||||
"f c gray100",
|
||||
"g c None",
|
||||
/* pixels */
|
||||
"ggggyggggggggggg",
|
||||
"gggg-9gggggggggg",
|
||||
"gggg- 8ggggggggg",
|
||||
"gggg-0 5gggggggg",
|
||||
"gggg-f,#5ggggggg",
|
||||
"gggg-fs* 5gggggg",
|
||||
"gggg-dp,* 4ggggg",
|
||||
"gggg-ae2>* 5gggg",
|
||||
"gggg-t7X uggg",
|
||||
"gggg-0% X193gggg",
|
||||
"gggg-$<@ &gggggg",
|
||||
"gggg-6w: oqggggg",
|
||||
"ggggiggrO =ggggg",
|
||||
"gggggggw;.+pgggg",
|
||||
"ggggggggt +ugggg"
|
||||
};
|
@ -1,362 +0,0 @@
|
||||
/* XPM */
|
||||
const char *assdraw3__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"400 100 256 2",
|
||||
" c #28AB0BFA0F09",
|
||||
". c #28960E0E13CB",
|
||||
"X c #765D23C626EF",
|
||||
"o c #5590382452C9",
|
||||
"O c #7143583C597E",
|
||||
"+ c #72C050027049",
|
||||
"@ c #83F81A0E1A0E",
|
||||
"# c #8C6430583368",
|
||||
"$ c #87FC3C8E4395",
|
||||
"% c #917749A94FF5",
|
||||
"& c #910059486920",
|
||||
"* c #90BF6D3E70D5",
|
||||
"= c #A1096E346C0F",
|
||||
"- c #AF2F96FE721A",
|
||||
"; c #E654B694684E",
|
||||
": c #F2CAC2D668DF",
|
||||
"> c #36C239BEABF3",
|
||||
", c #37064141AE58",
|
||||
"< c #3A9D4229AE8E",
|
||||
"1 c #3AC846E1B34F",
|
||||
"2 c #3C664C47B584",
|
||||
"3 c #3BF750FEB66D",
|
||||
"4 c #3D4E5802BC51",
|
||||
"5 c #3DC96161BF79",
|
||||
"6 c #7636552590B8",
|
||||
"7 c #42114D5DB551",
|
||||
"8 c #40404F4FB8B8",
|
||||
"9 c #43FB5266B639",
|
||||
"0 c #48C55424B730",
|
||||
"q c #431255BABB08",
|
||||
"w c #43E45BA1BCB2",
|
||||
"e c #4DB45926BA20",
|
||||
"r c #4AD25C1DBC76",
|
||||
"t c #49CD6262BE4E",
|
||||
"y c #52676459BEE3",
|
||||
"u c #3DDF6E97C9D7",
|
||||
"i c #4CA86B87C7C7",
|
||||
"p c #497E78D9CCD2",
|
||||
"a c #568C78CFCC0E",
|
||||
"s c #49297A84D662",
|
||||
"d c #55427C03D410",
|
||||
"f c #5C9C7BFCD1E1",
|
||||
"g c #933A70B08E99",
|
||||
"h c #9CB272409D38",
|
||||
"j c #93B971DCAEBB",
|
||||
"k c #C4C47F7F8181",
|
||||
"l c #994977CACA20",
|
||||
"z c #993C778ED200",
|
||||
"x c #A3097D4AC62C",
|
||||
"c c #3EBF8808D757",
|
||||
"v c #062B96DFFFFF",
|
||||
"b c #18349E22FFFF",
|
||||
"n c #343E8F05FFFF",
|
||||
"m c #3A3A8F8FFFFF",
|
||||
"M c #341392F7FFFF",
|
||||
"N c #3BD4949CFFFF",
|
||||
"B c #32339C25FFFF",
|
||||
"V c #3C0D9BCEFFFF",
|
||||
"C c #2222A2A2FFFF",
|
||||
"Z c #2CFFA676FFFF",
|
||||
"A c #2E92AC92FFFF",
|
||||
"S c #313FA3C1FFFF",
|
||||
"D c #3C29A42BFFF8",
|
||||
"F c #340BAB35FFFF",
|
||||
"G c #3C4AACD6FFE6",
|
||||
"H c #2CE2B584FFFF",
|
||||
"J c #2C41B8DBFFFF",
|
||||
"K c #33D1B5BCFFFF",
|
||||
"L c #3C20B48CFF30",
|
||||
"P c #3450B985FFFF",
|
||||
"I c #3C65BACAFF95",
|
||||
"U c #56F68383CEA6",
|
||||
"Y c #487F87FED841",
|
||||
"T c #4C358CDFD71A",
|
||||
"R c #582F8856D760",
|
||||
"E c #5852979FDC15",
|
||||
"W c #66CD8807D103",
|
||||
"Q c #65B489C4D61F",
|
||||
"! c #66D796E9DB25",
|
||||
"~ c #74009813DB2B",
|
||||
"^ c #5D38A1EADF83",
|
||||
"/ c #6E44A421DE0C",
|
||||
"( c #4F5F8B86E567",
|
||||
") c #48969863E8D8",
|
||||
"_ c #587D97F7E9E9",
|
||||
"` c #496A97B0F5EB",
|
||||
"' c #43A49648FE2B",
|
||||
"] c #43689BE0FF5B",
|
||||
"[ c #4B189CEBFF90",
|
||||
"{ c #55CC9C62F711",
|
||||
"} c #66E799F6E703",
|
||||
"| c #726B9C5AE460",
|
||||
" . c #488DA8B4ECBC",
|
||||
".. c #586DA881E935",
|
||||
"X. c #4E4EB0B0EFEF",
|
||||
"o. c #5A4DB224EDFF",
|
||||
"O. c #46F4A98AF404",
|
||||
"+. c #4321A3AFFF1B",
|
||||
"@. c #4D27A393FF7A",
|
||||
"#. c #4354ABEDFEE4",
|
||||
"$. c #4BD7AC56FEFA",
|
||||
"%. c #55A2A7C4F48D",
|
||||
"&. c #53DDA385FE94",
|
||||
"*. c #5BE8A589FF9D",
|
||||
"=. c #5363AC12FEB9",
|
||||
"-. c #5C99AB49FFB8",
|
||||
";. c #4807B49BF5C3",
|
||||
":. c #4317B372FF10",
|
||||
">. c #4C03B446FECA",
|
||||
",. c #43A1BD08FF53",
|
||||
"<. c #4B12BCE2FE59",
|
||||
"1. c #56B2B52EF88E",
|
||||
"2. c #5296B4E1FF39",
|
||||
"3. c #5480BAE7FF1E",
|
||||
"4. c #5C2ABBB4FF9F",
|
||||
"5. c #678AA81EE7FD",
|
||||
"6. c #775EA85EE91D",
|
||||
"7. c #66F9B3C5EC19",
|
||||
"8. c #7987B6D6EB12",
|
||||
"9. c #63F0AB70FF9C",
|
||||
"0. c #67F1AA89FB42",
|
||||
"q. c #7568ACF4F599",
|
||||
"w. c #65CEB620FA05",
|
||||
"e. c #6BE7B352FFDB",
|
||||
"r. c #62D6BCE6FFC1",
|
||||
"t. c #69D7BDA0FFC7",
|
||||
"y. c #7445B41AFFB0",
|
||||
"u. c #7771B90BFB58",
|
||||
"i. c #7CFBBBB9FFDA",
|
||||
"p. c #465DC0C0FFFF",
|
||||
"a. c #4B39C159FFF4",
|
||||
"s. c #5402C363FFEE",
|
||||
"d. c #5C08C549FFC7",
|
||||
"f. c #5E4AC8C8FFD7",
|
||||
"g. c #7D27C0C0EFEF",
|
||||
"h. c #6BC1C26CF6EA",
|
||||
"j. c #637AC51CFF58",
|
||||
"k. c #6C8BC406FF82",
|
||||
"l. c #6459C983FFF2",
|
||||
"z. c #6BF1CB67FFDA",
|
||||
"x. c #78EFC45FF587",
|
||||
"c. c #73ACC4B8FF4E",
|
||||
"v. c #7AE0C563FFC1",
|
||||
"b. c #73FECDDAFFD6",
|
||||
"n. c #7D0ACC39FFD0",
|
||||
"m. c #7676D100FFFF",
|
||||
"M. c #7CECD1F1FFFD",
|
||||
"N. c #AD418EA89292",
|
||||
"B. c #A8A196DE9560",
|
||||
"V. c #AE7D90C8B02F",
|
||||
"C. c #B1EEA9E1B4A9",
|
||||
"Z. c #D93B929299E1",
|
||||
"A. c #CC5EB10F930F",
|
||||
"S. c #E9BAA4369224",
|
||||
"D. c #CF39B2CFAFCF",
|
||||
"F. c #F80AB8E3B4B4",
|
||||
"G. c #BE3EC7C7BCBC",
|
||||
"H. c #DF84CDC89EFE",
|
||||
"J. c #FA24EA148F39",
|
||||
"K. c #FB99E9B995EB",
|
||||
"L. c #FA72E78F983D",
|
||||
"P. c #FC13E9B69A64",
|
||||
"I. c #FACEC494BCA2",
|
||||
"U. c #E9F1D33EB055",
|
||||
"Y. c #FADAEAF3A8DA",
|
||||
"T. c #AD4398F3D9D9",
|
||||
"R. c #B4BE9084D060",
|
||||
"E. c #B21DB290CB18",
|
||||
"W. c #8974B187EC76",
|
||||
"Q. c #8633B972EC03",
|
||||
"!. c #8A5CBB6CF842",
|
||||
"~. c #8432BCD8FFAD",
|
||||
"^. c #94D6BD38F488",
|
||||
"/. c #C7AAA02ED27C",
|
||||
"(. c #C9D8AC35D1A5",
|
||||
"). c #C5459E61E9D8",
|
||||
"_. c #C88A9F32F3A5",
|
||||
"`. c #CAE6A742E767",
|
||||
"'. c #C6D7A24FEDA6",
|
||||
"]. c #CADFA3EEEDB2",
|
||||
"[. c #D42DB04CED0D",
|
||||
"{. c #C72AA224F318",
|
||||
"}. c #CA9BA2E3F33B",
|
||||
"|. c #CC28A631F61E",
|
||||
" X c #BB02C666DB8D",
|
||||
".X c #899BC340EECB",
|
||||
"XX c #9309C49CEF02",
|
||||
"oX c #8CCCCB08F4F2",
|
||||
"OX c #86BDC4C7F8A3",
|
||||
"+X c #8C8AC3A3FFB1",
|
||||
"@X c #84A6CC40FFA5",
|
||||
"#X c #8B89CD17FF99",
|
||||
"$X c #9A4EC6C5F75E",
|
||||
"%X c #9372CCE5F4BA",
|
||||
"&X c #9414C4D3FE9F",
|
||||
"*X c #942ECC3DFF0A",
|
||||
"=X c #9CA4CB6BFEA6",
|
||||
"-X c #844ED403FFF3",
|
||||
";X c #8BE4D56DFFC1",
|
||||
":X c #8E73D8EAFFFF",
|
||||
">X c #99B5D2B3F720",
|
||||
",X c #93F0D3D0FEA2",
|
||||
"<X c #9C25D53CFD2B",
|
||||
"1X c #94F5DA0DFFEB",
|
||||
"2X c #9CC3DBE4FF4F",
|
||||
"3X c #B8B3C925E909",
|
||||
"4X c #B90BD45AEC3E",
|
||||
"5X c #A40ACD18FDBD",
|
||||
"6X c #A8BBCC8EF96F",
|
||||
"7X c #B35CCD61F2CE",
|
||||
"8X c #A9F9D684F617",
|
||||
"9X c #A41ED505FDF8",
|
||||
"0X c #AC7FD40EFEED",
|
||||
"qX c #A452DC6FFEB8",
|
||||
"wX c #AC1FDCD4FEA3",
|
||||
"eX c #B801D868F76E",
|
||||
"rX c #B3BAD5F5FF87",
|
||||
"tX c #B4ABDCCBFF96",
|
||||
"yX c #BC86DC74FFB1",
|
||||
"uX c #A777E110FFCF",
|
||||
"iX c #AC95E221FFC4",
|
||||
"pX c #BCBCE0E0F6F6",
|
||||
"aX c #B4E6E461FFAF",
|
||||
"sX c #BC4AE4F3FFCF",
|
||||
"dX c #BF52E8FBFFFF",
|
||||
"fX c #D0AAC90BD064",
|
||||
"gX c #E9DBCF5DCC4B",
|
||||
"hX c #FBBFCC35C3F0",
|
||||
"jX c #FAA7D605CAA2",
|
||||
"kX c #FBF4DC36CE44",
|
||||
"lX c #FC54DDA0D251",
|
||||
"zX c #F8ABDBA4D829",
|
||||
"xX c #CACAE1E1DEDE",
|
||||
"cX c #F63AEB43CF94",
|
||||
"vX c #FB6EE2B6D7C3",
|
||||
"bX c #C518CB51E5A5",
|
||||
"nX c #C325D58FEB1C",
|
||||
"mX c #C5B8DBB1F576",
|
||||
"MX c #C43CDED2FF14",
|
||||
"NX c #EE7BD62EF2CF",
|
||||
"BX c #C3DEE259F6D0",
|
||||
"VX c #C48CE46AFF1D",
|
||||
"CX c #CBC8E45EFFBF",
|
||||
"ZX c #C4ADEA88FFC0",
|
||||
"AX c #CC9CEC48FFDF",
|
||||
"SX c #D2D2E791F49E",
|
||||
"DX c #D2B0E72FFFF0",
|
||||
"FX c #D464ECD8FFFA",
|
||||
"GX c #DBC4ECF2FFFF",
|
||||
"HX c #D68CF137FFFD",
|
||||
"JX c #DCD8F2D5FFFF",
|
||||
"KX c #E81AEAEAF258",
|
||||
"LX c #E195EF78FFFF",
|
||||
"PX c #F6B3EDB0F7A5",
|
||||
"IX c #E2AAF363FFFF",
|
||||
"UX c #EC2DF656FFFF",
|
||||
/* pixels */
|
||||
"H H H H H H H H H H H H H H H H S n n M M B B M n B H J J H H H H H H H H J H H M H H S n n n n n n n n n n M M M H H H B n S J H S M M n n M M M M M M M M M H H Z M H H H H H H H H H H H H H S n n M M B B M n B H J J H H H H H H H H J H H M H H S n n n n n n n n n n M M M H H H B n S J H S M M n n M M M M M M M M M H H Z M H H H H H H H H H H H H H S n n M M B B M n B H J J H H H H H H H H J H H M H H S n n n n n n n n n n M M M H H H B n S J H S M M n n M M M M M M M M M H H Z M H H H H H H H H H H H H H S n n M M B B M n B H J J H H H H H H H H J H H M H H S n n n n n n n n n n M M M H H H B n S J H S M M n n M M M M M M M M M H H Z M H H H H H H H H H H H H H S n n M M B B M n B H J J H H H H H H H H J H H M H H S n n n n n n n n n n M M M H H H B n S J H S M M n n M M M M M M M M M H ",
|
||||
"H H H H H H H H H H H H H H H A M M S A H H H A B M S H H J H H H H H H H H H H M H H S n n n n n M M B B A A B M A J H Z B A J H B M A A S B M M n n M M M M H H S M H H H H H H H H H H H H A M M S A H H H A B M S H H J H H H H H H H H H H M H H S n n n n n M M B B A A B M A J H Z B A J H B M A A S B M M n n M M M M H H S M H H H H H H H H H H H H A M M S A H H H A B M S H H J H H H H H H H H H H M H H S n n n n n M M B B A A B M A J H Z B A J H B M A A S B M M n n M M M M H H S M H H H H H H H H H H H H A M M S A H H H A B M S H H J H H H H H H H H H H M H H S n n n n n M M B B A A B M A J H Z B A J H B M A A S B M M n n M M M M H H S M H H H H H H H H H H H H A M M S A H H H A B M S H H J H H H H H H H H H H M H H S n n n n n M M B B A A B M A J H Z B A J H B M A A S B M M n n M M M M H ",
|
||||
"H H H H H H H H H H H H H H H B M A H H H H H J H S M A J H H H J H J J H H H H M A H H B M M B B Z A H H A B M n S H H J H J J A M n B Z H H H A Z B M n M A H J B M H H H H H H H H H H H H B M A H H H H H J H S M A J H H H J H J J H H H H M A H H B M M B B Z A H H A B M n S H H J H J J A M n B Z H H H A Z B M n M A H J B M H H H H H H H H H H H H B M A H H H H H J H S M A J H H H J H J J H H H H M A H H B M M B B Z A H H A B M n S H H J H J J A M n B Z H H H A Z B M n M A H J B M H H H H H H H H H H H H B M A H H H H H J H S M A J H H H J H J J H H H H M A H H B M M B B Z A H H A B M n S H H J H J J A M n B Z H H H A Z B M n M A H J B M H H H H H H H H H H H H B M A H H H H H J H S M A J H H H J H J J H H H H M A H H B M M B B Z A H H A B M n S H H J H J J A M n B Z H H H A Z B M n M A H ",
|
||||
"H H H H H H H H A A Z Z A H H M A H H H Z S Z H H H B B J H A A A A H H H J H H M B H H H A H H H H H Z B M B S B M Z H H J J A B M S B M B S A J J J H H H J H A M M H H H H H A A Z Z A H H M A H H H Z S Z H H H B B J H A A A A H H H J H H M B H H H A H H H H H Z B M B S B M Z H H J J A B M S B M B S A J J J H H H J H A M M H H H H H A A Z Z A H H M A H H H Z S Z H H H B B J H A A A A H H H J H H M B H H H A H H H H H Z B M B S B M Z H H J J A B M S B M B S A J J J H H H J H A M M H H H H H A A Z Z A H H M A H H H Z S Z H H H B B J H A A A A H H H J H H M B H H H A H H H H H Z B M B S B M Z H H J J A B M S B M B S A J J J H H H J H A M M H H H H H A A Z Z A H H M A H H H Z S Z H H H B B J H A A A A H H H J H H M B H H H A H H H H H Z B M B S B M Z H H J J A B M S B M B S A J J J H H H J H ",
|
||||
"H H H H H H H S M M M M M S A M H H A B n M M S H H S B H B M n M M B A H H H H S M S H J H J H A S M M B A H A B M M B S Z S M M M Z H A S B M B A H H H H H A B M B H H H H S M M M M M S A M H H A B n M M S H H S B H B M n M M B A H H H H S M S H J H J H A S M M B A H A B M M B S Z S M M M Z H A S B M B A H H H H H A B M B H H H H S M M M M M S A M H H A B n M M S H H S B H B M n M M B A H H H H S M S H J H J H A S M M B A H A B M M B S Z S M M M Z H A S B M B A H H H H H A B M B H H H H S M M M M M S A M H H A B n M M S H H S B H B M n M M B A H H H H S M S H J H J H A S M M B A H A B M M B S Z S M M M Z H A S B M B A H H H H H A B M B H H H H S M M M M M S A M H H A B n M M S H H S B H B M n M M B A H H H H S M S H J H J H A S M M B A H A B M M B S Z S M M M Z H A S B M B A H H H H H A ",
|
||||
"H H H H J H B M B Z A A S M B M H H Z n n n M M H H S B B B S A A Z B M Z H H H H B n B Z A S B M M B A H H S M M Z M M M n M n B B M B A H H A B M M S Z Z B M M A H H J H B M B Z A A S M B M H H Z n n n M M H H S B B B S A A Z B M Z H H H H B n B Z A S B M M B A H H S M M Z M M M n M n B B M B A H H A B M M S Z Z B M M A A H J H B M B Z A A S M B M H H Z n n n M M H H S B B B S A A Z B M Z H H H H B n B Z A S B M M B A H H S M M Z M M M n M n B B M B A H H A B M M S Z Z B M M A H H J H B M B Z A A S M B M H H Z n n n M M H H S B B B S A A Z B M Z H H H H B n B Z A S B M M B A H H S M M Z M M M n M n B B M B A H H A B M M S Z Z B M M A A H J H B M B Z A A S M B M H H Z n n n M M H H S B B B S A A Z B M Z H H H H B n B Z A S B M M B A H H S M M Z M M M n M n B B M B A H H A B M M S Z Z B M ",
|
||||
"H H H J H B M Z H H H H H A M n H H A n n M n M H J B n B H H H H H H B M S H H J H S B B B n M S A J H F B n M S A M S B B F B S A M n M S H J H A B M n B B S A J H J H B M Z H H H H H A M n H H A n n M n M H J B n B H H H H H H B M S H H J H S B B B n M S A J H A B n M S A M S B B A B S A M n M S H J H A B M n B B S A J H J H B M Z H H H H H A M n H H A n n M n M H J B n B H H H H H H B M S H H J H S B B B n M S A J H A B n M S A M S B B A B S A M n M S H J H A B M n B B S A J H J H B M Z H H H H H A M n H H A n n M n M H J B n B H H H H H H B M S H H J H S B B B n M S A J H A B n M S A M S B B A B S A M n M S H J H A B M n B B S A J H J H B M Z H H H H H A M n H H A n n M n M H J B n B H H H H H H B M S H H J H S B B B n M S A J H A B n M S A M S B B A B S A M n M S H J H A B M n B B S ",
|
||||
"H H H H S M S H H H A H H H S M A H A n n M n B H H B M A H H A A H J H B M A J H H J J A B B H H H F B M M n B K S M K B B K S B H S M M n M S H J J A B S H J H H H H S M S H H H A H H H S M A H A n n M n B H H B M A H H A A H J H B M A J H H J J A B B H H H A B M M n B H S M H B B H S B H S n M n M S H J J A B S H J H H H H S M S H H H A H H H S M A H A n n M n B H H B M A H H A A H J H B M A J H H J J A B B H H H A B M M n B H S M H B B H S B H S n M n M S H J J A B S H J H H H H S M S H H H A H H H S M A H A n n M n B H H B M A H H A A H J H B M A J H H J J A B B H H H A B M M n B H S M H B B H S B H S n M n M S H J J A B S H J H H H H S M S H H H A H H H S M A H A n n M n B H H B M A H H A A H J H B M A J H H J J A B B H H H A B M M n B H S M H B B H S B H S n M n M S H J J A B S H J ",
|
||||
"H H H A M B H J A B M M S H H M B H H M n n n S H A M S H H B M M B H J A M S H J H H H B M F H K S M M M M N F K M S K B M F K M F K B M M M M B F K H F M F J J H J A M B H J A B M M S H H M B H H M n n n S H A M S H H B M M B H J A M S H J H H H B M A H H S M n n M M A H M S H B n A A M A H B n M n n B A H H A M Z J J H J A M B H J A B M M S H H M B H H M n n n S H A M S H H B M M B H J A M S H J H H H B M A H H S M n n M M A H M S H B n A A M A H B n M n n B A H H A M Z J J H J A M B H J A B M M S H H M B H H M n n n S H A M S H H B M M B H J A M S H J H H H B M A H H S M n n M M A H M S H B n A A M A H B n M n n B A H H A M Z J J H J A M B H J A B M M S H H M B H H M n n n S H A M S H H B M M B H J A M S H J H H H B M A H H S M n n M M A H M S H B n A A M A H B n M n n B A H H A M Z J ",
|
||||
"H H H Z M A J H M n n n M A J Z M A H B n n M A H S M A J S M n n n S H H B M H J H H F M F K K S M N N N N D K F N K K N N D P D B K F N N N N M M F K K B B K H H J F M A J H M n n n M A J Z M A H B n n M A H S M A J S M n n n S H H B M H J H H A M Z H H B M n n n n S H S M A A M n S H B B H A M n M n n M A H H B B H H H J Z M A J H M n n n M A J Z M A H B n n M A H S M A J S M n n n S H H B M H J H H A M Z H H B M n n n n S H S M A A M n S H B B H A M n M n n M A H H B B H H H J Z M A J H M n n n M A J Z M A H B n n M A H S M A J S M n n n S H H B M H J H H A M Z H H B M n n n n S H S M A A M n S H B B H A M n M n n M A H H B B H H H J Z M A J H M n n n M A J Z M A H B n n M A H S M A J S M n n n S H H B M H J H H A M Z H H B M n n n n S H S M A A M n S H B B H A M n M n n M A H H B B H ",
|
||||
"H H H S M H H F M M n M M B H H M S H S M M M K H M B J F M M M M M B J J S N K P K K F N K P F N N N N N V L K V D K G N N V K G V L P D N N N N N D P K F V K P K K F N K K F M M n M M B H H M S H S M M M K H M B J F M M M M M B J J S M H J H H S M H H F M M M M M M K H B B H F M M B H F M F H B n M M M M B H H S M H H J J S M H H F M M n M M B H H M S H S M M M K H M B J F M M M M M B J J S M H J H H S M H H F M M M M M M K H B B H F M M B H F M F H B n M M M M B H H S M H J H H S M H H F M M n M M B H H M S H S M M M K H M B J F M M M M M B J J S M H J H H S M H H F M M M M M M K H B B H F M M B H F M F H B n M M M M B H H S M H H J J S M H H F M M n M M B H H M S H S M M M K H M B J F M M M M M B J J S M H J H H S M H H F M M M M M M K H B B H F M M B H F M F H B n M M M M B H H S M H ",
|
||||
"P K P F M K K F M M M M M M F K S N K F M n B K F M F K B M M M M M B P K S V K P P P F N K P G N N ' ' ' G I G ' G I +.] ' ] L L ] +.I L ] ' ' ' N D I I D V P P P P F N K P F N M N M M M F K S N K F M n B K F M F K B M M M M M B P K S B K P K P F M K P F M M M M M S P F M F K B M M M K K B S P K M M M M M B K K S M K P K P F M K K F M M M M M M F K S N K F M n B K F M F K B M M M M M B P K S B K P K P F M K P F M M M M M S P F M F K B M M M K K B S P K M M M M M B K K S M K P K P F M K K F M M M M M M F K S N K F M n B K F M F K B M M M M M B P K S B K P K P F M K P F M M M M M S P F M F K B M M M K K B S P K M M M M M B K K S M K P K P F M K K F M M M M M M F K S N K F M n B K F M F K B M M M M M B P K S B K P K P F M K P F M M M M M S P F M F K B M M M K K B S P K M M M M M B K K S M K ",
|
||||
"P P P F N F K P S N N N N N V K K N F K V m F K V V K F N N N N N V K P K V D P P P I G ' G I I +.' ' ' +.,.,.+.+.,.,.+.] [ ] :.,.#.+.:.,.#.] ' ' ] :.I I ] +.I I I P L V G P P D N N N N N V K K N F K V m F K V V K F N N N N N B K P K N D P P K P F N F P K V N N N V K K V V K K V N N N F K S V K K F N N N N F P K V V K P P P F N F K P S N N N N N V K K N F K V m F K V V K F N N N N N B K P K N D P P K P F N F P K V N N N V K K V V K K V N N N F K S V K K F N N N N F P K V V K P P P F N F K P S N N N N N V K K N F K V m F K V V K F N N N N N B K P K N D P P K P F N F P K V N N N V K K V V K K V N N N F K S V K K F N N N N F P K V V K P P P F N F K P S N N N N N V K K N F K V m F K V V K F N N N N N B K P K N D P P K P F N F P K V N N N V K K V V K K V N N N F K S V K K F N N N N F P K V V K ",
|
||||
"P P K K D V K P P F V N N N N D P D V P V N F K N F K V N N N V F P P P D V L I I I I I ] +.,.I :.+.+.#.,.,.:.[ $.,.>.@.[ [ [ $.,.,.[ $.,.,.$.@.@.:.,.,.#.] #.I I I I I D ] L P P G V N N N N D P D V P V N F K N F K V N N N V F P P K V N K P P P P K V V K P K D V D K P F N D P F N N N N D K K N D P K D V V F P P F N F P P P K K D V K P P F V N N N N D P D V P V N F K N F K V N N N V F P P K V N K P P P P K V V K P K D V D K P F N D P F N N N N D K K N D P K D V V F P P F N F P P P K K D V K P P F V N N N N D P D V P V N F K N F K V N N N V F P P K V N K P P P P K V V K P K D V D K P F N D P F N N N N D K K N D P K D V V F P P F N F P P P K K D V K P P F V N N N N D P D V P V N F K N F K V N N N V F P P K V N K P P P P K V V K P K D V D K P F N D P F N N N N D K K N D P K D V V F P P F N F P ",
|
||||
"P P P K G V V L P P K G N N N N G L N L D V P D V K D N N N D L I I L D ] L L I I ,.,.,.#.[ #.,.,.,.<.<.<.<.$.[ <.a.>.[ &.[ &.=.<.a.=.&.>.a.<.<.<.,.,.<.@.@.,.,.,.,.,.:.:.] +.L I I L G ' ' ' N G L N L D V P D V K D N N N D K P P L D V G K K P P P P G N D P P K P P P K V N L P G N N N N V K P V N L P P P P P P L V V L P P P P K G V V L P P K G N N N N G L N L D V P D V K D N N N D K P P L D V G K K P P P P G N D P P K P P P K V N L P G N N N N V K P V N L P P P P P P L V V L P P P P K G V V L P P K G N N N N G L N L D V P D V K D N N N D K P P L D V G K K P P P P G N D P P K P P P K V N L P G N N N N V K P V N L P P P P P P L V V L P P P P K G V V L P P K G N N N N G L N L D V P D V K D N N N D K P P L D V G K K P P P P G N D P P K P P P K V N L P G N N N N V K P V N L P P P P P P L V V L P ",
|
||||
"P L D V V V N V D G L P L D N N V L V D D V D V D G V N D L I I L D ] ' ] ] ] ] :.,.,.,.,.$.[ $.<.<.a.a.3.=.&.&.3.s.2.&.&.&.&.=.s.s.2.&.=.3.s.a.a.a.>.&.&.>.<.,.,.:.$.[ [ [ [ ] +.:.I I L +.' ' +.L V D D V D V D G V N D L P I L D V N V V V V L P I I L D N D L I P P L V V V L P G N N N N V I I D N V G I P P P G V V L P P P L D V V V N V D G L P L D N N V L V D D V D V D G V N D L P I L D V N V V V V L P I I L D N D L I P P L V V V L P G N N N N V I I D N V G I P P P G V V L P P P L D V V V N V D G L P L D N N V L V D D V D V D G V N D L P I L D V N V V V V L P I I L D N D L I P P L V V V L P G N N N N V I I D N V G I P P P G V V L P P P L D V V V N V D G L P L D N N V L V D D V D V D G V N D L P I L D V N V V V V L P I I L D N D L I P P L V V V L P G N N N N V I I D N V G I P P P G V V L P P ",
|
||||
"L ] ] G L L L G D ' +.G I I L +.' D ] ' ] ] ] ' D ] ] G I I G +.] ] +.:.,.,.:.$.[ $.<.<.<.a.2.&.&.=.2.2.*.-.4.-.s.s.4.*.*.*.*.-.d.s.4.-.-.*.-.3.2.=.*.&.3.a.a.<.<.@.@.$.>.<.:.:.@.[ +.#.,.I L +.' +.] ' ] ] ] ' D ] ] G I I G +.] ] D L I I L D ' D I I I I G ' ] D D D ] ] G ] I I G ' ' ' ' ] I I G ] D ' D G G +.] ] L I I I L ] ] G L L L G D ' +.G I I L +.' D ] ' ] ] ] ' D ] ] G I I G +.] ] D L I I L D ' D I I I I G ' ] D D D ] ] G ] I I G ' ' ' ' ] I I G ] D ' D G G +.] ] L I I I L ] ] G L L L G D ' +.G I I L +.' D ] ' ] ] ] ' D ] ] G I I G +.] ] D L I I L D ' D I I I I G ' ] D D D ] ] G ] I I G ' ' ' ' ] I I G ] D ' D G G +.] ] L I I I L ] ] G L L L G D ' +.G I I L +.' D ] ' ] ] ] ' D ] ] G I I G +.] ] D L I I L D ' D I I I I G ' ] D D D ] ] G ] I I G ' ' ' ' ] I I G ] D ' D G G +.] ] L I I I ",
|
||||
"+.] L I I I I I I L +.] ] +.L I +.' ] G L I L +.' ] L I #.+.] ] #.:.,.,.,.,.,.<.$.&.=.<.a.s.s.3.-.-.-.-.-.4.4.9.d.d.d.w.9.9.9.r.d.f.w.9.d.-.-.-.-.-.4.s.s.s.s.s.=.&.2.a.a.a.<.<.,.:.$.[ [ #.:.,.+.' ] #.L I L +.' ] L I G +.] ] #.L I I I I I I +.' #.I I I I L +.] ] +.+.L L ] L I L +.] ' ] G I I +.+.I +.] ] ] ] #.I I I I I +.] L I I I I I I L +.] ' +.L L +.' ' G L L L +.' ] L I G ] ] ] G L I I I I I I +.' D L I I I G +.] ] ] +.L L ] L L L +.] ' ] G I I +.+.I +.] ] ] ] #.I I I I I +.] L I I I I I I L +.] ] +.L I +.' ] G L I L +.' ] L I G +.] ] #.L I I I I I I +.' #.I I I I L +.] ] +.+.L L ] L I I +.] ' ] L I I +.+.I +.] ] ] ] #.I I I I I +.] L I I I I I I L +.] ] +.L I +.' ] G L I L +.' ] L I G +.] ] #.L I I I I I I +.' #.I I I I L +.] ] +.+.L L ] L I I +.] ' ] L I I +.+.I +.] ] ] ] #.I I I I I ",
|
||||
"] #.I I :.:.:.:.I I I :.#.+.] +.] ] :.I I I I I #.' +.] ] +.:.,.,.,.,.>.>.>.<.a.<.&.&.s.s.s.d.d.d.d.d.j.f.l.j.9.r.l.l.j.j.j.j.l.l.j.e.r.l.l.j.j.j.f.f.d.d.d.d.s.-.2.s.s.3.2.>.<.<.<.<.<.>.@.[ @.[ +.:.,.,.,.,.I #.' +.] ] +.:.I I I :.:.#.#.I I I ] ] I I I I I I I :.:.I I I ] #.I I L L L L I I L ] #.I I I :.:.I I I I I I I ] #.I I L G G L I I I L G ] ] ] ' ] L I L I I I +.' +.] ] +.G I I L L G G G L I L ] ] L I I I I I L L L I I L ] D I I L L L L I I L ] #.I I I L L I I I I I I I ] #.I I :.:.:.:.I I I :.#.+.] +.] ] :.I I I I I #.' +.] ] +.:.I I I :.:.#.#.I I I ] ] I I I I I I I :.:.I I I ] #.I I I I :.I I I :.] #.I I I :.:.I I I I I I I ] #.I I :.:.:.:.I I I :.#.+.] +.] ] :.I I I I I #.' +.] ] +.:.I I I :.:.#.#.I I I ] ] I I I I I I I :.:.I I I ] #.I I I I :.I I I :.] #.I I I :.:.I I I I I I I ",
|
||||
"[ :.,.:.+.] ] [ +.+.#.:.,.,.:.+.' :.,.,.,.,.,.,.,.+.[ #.:.,.,.:.$.@.@.&.[ &.=.s.s.2.*.d.d.d.f.f.j.l.l.l.l.l.l.t.e.k.z.z.z.z.z.z.k.e.y.k.z.z.l.l.l.l.l.l.j.f.d.d.9.d.d.4.-.*.*.&.&.=.2.<.<.<.>.@.[ >.,.,.,.,.,.,.,.+.] #.:.,.,.:.#.+.[ ] ] ] #.,.,.#.[ ,.,.,.,.,.,.,.,.I I ,.I +.] #.L I I I I I :.] ] :.I ,.I I ,.,.,.,.,.,.,.,.] :.I :.] ' ' ] ] +.#.:.L L #.] ' #.I I I :.I I :.+.] #.:.I I :.#.] ] ' ' ' +.I L +.' L L L I I L I I I L L I +.' #.L L L L L I #.] ] :.I I I I I I I I I I ,.,.[ :.,.:.+.] ] [ +.+.#.:.,.,.:.+.' :.,.,.,.,.,.,.,.+.] #.:.,.,.:.#.+.[ ] ] ] #.,.,.#.[ ,.,.,.,.,.,.,.,.,.,.,.,.#.[ #.,.,.,.,.,.,.:.+.[ :.,.,.,.,.,.,.,.,.,.,.,.,.[ :.,.:.+.] ] [ +.+.#.:.,.,.:.+.' :.,.,.,.,.,.,.,.+.] #.:.,.,.:.#.+.[ ] ] ] #.,.,.#.[ ,.,.,.,.,.,.,.,.,.,.,.,.#.[ #.,.,.,.,.,.,.:.+.[ :.,.,.,.,.,.,.,.,.,.,.,.,.",
|
||||
"[ ,.,.#.[ [ [ [ [ [ [ [ @.#.:.+.[ ,.,.,.+.+.:.,.,.#.[ #.$.@.@.[ [ [ [ &.&.&.*.s.d.4.9.d.f.l.l.l.l.l.z.z.z.z.z.b.u.y.u.c.c.c.c.u.y.y.c.b.b.z.z.z.z.z.z.z.l.l.l.j.9.j.f.4.9.*.*.*.*.&.&.&.&.=.>.@.[ <.<.,.$.@.:.,.,.#.[ #.#.+.[ [ [ [ [ [ [ [ [ ,.,.:.[ ,.,.,.,.,.,.,.,.,.,.,.,.,.+.' +.+.#.#.#.+.] ] #.,.,.,.,.,.,.,.,.,.,.,.,.,.[ ,.,.#.' ' ' ' ' ' ' ' ] +.#.] ' :.:.:.+.] #.,.,.+.] #.+.+.] ' ' ' ' ' ' ' ' :.:.#.' :.L L :.L L L L L L L L :.] ' ] +.#.#.#.+.] ' #.:.:.,.,.,.,.,.,.,.,.,.,.,.[ ,.,.#.[ [ [ [ [ [ [ [ @.#.:.+.[ ,.,.,.+.+.:.,.,.#.[ #.#.+.[ [ [ [ [ [ [ [ [ ,.,.:.[ ,.,.,.,.,.,.,.,.,.,.,.,.,.+.[ +.#.:.:.:.#.[ [ #.,.,.,.,.,.,.,.,.,.,.,.,.,.[ ,.,.#.[ [ [ [ [ [ [ [ @.#.:.+.[ ,.,.,.+.+.:.,.,.#.[ #.#.+.[ [ [ [ [ [ [ [ [ ,.,.:.[ ,.,.,.,.,.,.,.,.,.,.,.,.,.+.[ +.#.:.:.:.#.[ [ #.,.,.,.,.,.,.,.,.,.,.,.,.,.",
|
||||
"[ ,.,.$.[ [ [ [ [ [ [ [ [ [ [ [ [ ,.,.,.@.[ $.,.,.$.[ [ [ [ &.&.&.&.&.*.*.*.-.d.d.r.9.j.l.l.z.z.z.z.b.b.b.b.m.m.b.v.i.i.i.v.i.i.i.i.v.b.b.b.b.b.b.b.b.z.z.z.z.z.e.l.l.r.9.9.9.9.*.*.*.*.*.{ &.&.&.<.<.<.@.[ $.,.,.$.[ [ [ [ [ [ [ [ [ [ [ [ [ ,.,.#.[ ,.,.,.,.,.,.,.,.,.,.,.,.,.:.+.` ` [ +.` ` ` ` #.:.,.,.,.,.,.,.,.,.,.,.,.,.[ ,.,.#.` ` ` ` ` ` ` ` ` ` ` ` ` :.:.:.[ ` +.,.:.#.` ` ` ` ` ` ` ` ` ` ` ` ` ;.;.O.` ;.:.:.:.:.:.:.:.:.:.;.:.:.;.+.` ` ` +.` ` ` ` O.:.:.:.,.,.,.,.,.,.,.,.,.,.[ ,.,.$.[ [ [ [ [ [ [ [ [ [ [ [ [ ,.,.,.@.[ $.,.,.$.[ [ [ [ [ [ [ [ [ [ [ [ [ ,.,.#.[ ,.,.,.,.,.,.,.,.,.,.,.,.,.,.$.[ [ @.$.@.@.[ [ $.,.,.,.,.,.,.,.,.,.,.,.,.,.[ ,.,.$.[ [ [ [ [ [ [ [ [ [ [ [ [ ,.,.,.@.[ $.,.,.$.[ [ [ [ [ [ [ [ [ [ [ [ [ ,.,.#.[ ,.,.,.,.,.,.,.,.,.,.,.,.,.,.$.[ [ @.$.@.@.[ [ $.,.,.,.,.,.,.,.,.,.,.,.,.,.",
|
||||
"@.,.,.>.[ [ [ [ [ [ [ @.$.>.<.$.[ <.p.,.>.$.<.p.<.$.@.>.>.>.=.&.&.*.*.*.*.*.9.f.j.t.e.z.z.z.z.b.b.b.m.m.M.M.M.n.@X~.~.~.~.@X+X~.~.@X-XM.M.M.M.M.M.m.m.b.b.b.b.b.y.z.z.t.0.0.9.9.9.9.-.-.-.3.3.2.&.3.a.a.>.$.<.p.<.$.@.>.>.$.$.@.[ [ [ [ [ [ @.,.,.>.@.,.,.,.,.,.,.,.,.,.,.,.,.:.O.` ` ` ` +.` ` ` +.:.,.,.,.,.,.,.,.,.,.,.,.,.,.[ ,.,.#.` ` ` ` ` ` ` ` O.O.O.O.` ;.;.;.O.+.;.,.;.+.` #.#.O.+.` ` ` ` ` ` ` ` ;.;.O.` ;.;.;.;.;.;.;.;.;.;.;.;.;.O.` ` ` ` +.` ` ` +.;.;.;.;.;.:.,.,.,.,.,.,.,.,.[ ,.,.>.[ [ [ [ [ [ [ @.$.>.<.$.[ <.p.,.>.$.<.p.,.$.@.>.>.$.$.@.[ [ [ [ [ [ @.,.,.>.@.,.,.,.,.,.,.,.,.,.,.,.,.,.$.[ [ @.@.$.@.@.[ $.,.p.p.,.,.,.,.,.,.,.,.,.,.,.[ ,.,.$.[ [ [ [ [ [ [ @.$.>.<.$.[ <.p.,.>.$.<.p.,.$.@.>.>.$.$.@.[ [ [ [ [ [ @.,.,.>.@.,.,.,.,.,.,.,.,.,.,.,.,.,.$.[ [ @.@.$.@.@.[ $.,.p.p.,.,.,.,.,.,.,.,.p.,.,.",
|
||||
"@.<.p.<.$.@.@.@.$.>.<.<.<.>.$.@.[ $.<.p.p.<.a.a.>.&.&.=.2.3.s.s.3.4.-.9.9.9.r.l.l.t.y.z.b.b.b.m.M.M.M.M.-X-X-X@X+X+X#X;X;X;X;X;X#X+X#X-X-X-X-X-X-X-XM.M.M.M.b.b.u.b.b.z.t.e.e.e.e.r.j.d.d.4.-.-.*.2.s.a.a.a.a.a.>.&.[ @.>.<.<.<.<.>.$.@.[ @.>.p.p.$.@.<.<.p.<.p.,.<.<.<.<.<.,.$.` ` O.O.;.;.;.O.O.` $.,.,.,.,.<.<.<.<.<.<.<.,.<.[ ;.,.;.@.` ` ` O.O.O.;.;.O.` ` ` O.;.;.;.;.;.;.O.` ` ` O.;.;.;.O.O.` ` ` ` O.;.;.` ` O.O.O.O.O.O.O.O.O.O.O.;.O.` ` O.O.;.O.O.O.` ` O.;.;.;.;.;.;.;.,.,.,.,.,.<.[ >.<.<.$.@.@.@.$.>.<.<.<.>.$.@.[ $.<.p.p.<.p.p.>.@.[ @.>.<.<.<.<.>.$.@.[ @.>.,.,.$.[ <.,.,.<.<.<.<.,.,.<.<.p.>.@.@.$.<.<.<.<.>.$.@.>.<.<.,.,.,.,.,.<.<.<.<.<.<.[ >.<.<.@.[ [ @.$.>.>.<.<.>.$.@.[ $.<.p.p.<.p.p.>.@.[ @.>.<.<.<.<.>.$.@.[ @.>.p.p.$.@.<.<.p.<.p.p.<.<.<.<.<.p.>.@.@.$.<.<.<.<.>.$.@.>.<.<.p.p.p.p.p.p.p.p.p.<.<.",
|
||||
"&.$.<.<.<.<.<.<.<.<.<.>.$.&.@.>.@.&.>.<.<.a.a.<.=.&.2.=.&.=.2.3.d.d.f.f.j.l.l.z.k.y.y.b.b.m.M.M.-X-X-X-X;X;X;X*X&X,X1X1X1X1X1X1X1X*X&X,X:X:X;X;X;X;X-X-X-X-XM.M.i.v.b.b.b.c.z.z.z.l.j.r.w.9.9.4.-.*.3.s.s.s.a.3.=.&.=.=.&.@.$.<.a.a.a.<.<.<.a.a.>.&.&.<.<.a.<.a.<.<.<.<.<.<.;.[ ` O.;.;.;.;.;.;.;.O.` $.<.<.<.<.<.<.<.<.<.<.<.<.[ @.;.;.;.O.O.O.;.;.O.O.` ` ` O.` ` O.;.;.;.;.O.` ` O.O.` ` O.O.;.;.;.O.O.O.O.O.O.` ` O.O.O. .O. . .O.O.O.O.O.` ` O.O.O.O.O.O.O.O.` ` O.;.;.;.;.;.;.;.;.;.<.<.<.[ $.<.<.<.<.<.<.<.<.<.>.$.&.@.>.@.&.>.<.<.a.a.<.@.[ $.$.@.@.$.<.<.a.<.<.<.<.<.<.>.[ @.<.<.<.<.<.<.<.<.<.<.<.<.@.@.>.a.<.a.<.<.a.<.$.[ >.<.<.<.<.<.<.<.<.<.<.<.<.[ @.<.<.<.>.>.<.<.<.<.>.@.@.@.>.@.&.>.<.<.a.a.<.$.&.$.$.&.@.$.<.a.a.a.<.<.<.a.a.>.&.&.<.<.a.<.a.a.a.a.a.a.a.<.@.&.>.a.<.a.<.a.a.<.$.&.>.a.<.<.a.a.a.a.a.<.a.<.<.",
|
||||
"$.&.>.a.a.a.a.a.<.$.&.&.=.>.<.<.=.&.&.=.2.>.=.&.&.&.2.s.3.2.-.-.9.r.j.l.l.z.z.z.y.i.i.n.M.-X-X-X;X#X#X,X3X XH.U.H. X2X2X<X<X<X2X2X2X=X=X1X1X1X,X,X,X:X:X;X;X-X-X@X~.@XM.m.b.b.b.k.t.e.e.e.r.j.4.9.-.*.-.2.3.2.&.&.&.2.<.<.2.&.&.=.>.<.a.a.a.a.<.&.&.=.<.a.a.a.<.<.>.>.>.>.;.;.` O.;. .) Y Y ) .;.;.` @.<.<.>.>.>.>.<.<.<.<.<.<.O.` O.;.;.;.;.O.O.` ` ` ` .O. .` ` ` ` .O.` ` ` ` O.O.O.O.` ` ` O.O.O.O.O. . .) ) ) . . . . . .) ) ) . . .) . . . .) ` .O.O.O.` ` O.O.O.O.O.O.;.;.;.;.;.<.$.[ $.<.<.<.a.<.<.$.&.&.$.>.<.<.=.&.[ $.>.>.$.&.[ [ $.<.<.$.@.&.@.>.<.<.<.<.<.<.&.&.$.<.<.<.<.<.>.>.>.>.>.<.<.[ >.a.<.<.>.$.>.<.<.<.&.$.<.<.>.>.>.>.<.<.<.<.<.<.$.[ $.<.<.<.<.<.>.$.@.[ $.>.<.>.&.&.&.=.>.>.$.&.&.&.>.<.<.>.&.&.=.>.<.a.a.a.a.<.&.&.=.<.a.a.a.<.<.>.>.>.<.<.<.&.>.a.a.<.>.=.>.<.a.<.=.=.a.a.<.>.>.>.<.a.a.a.a.<.",
|
||||
"<.=.&.=.2.2.2.=.&.&.=.3.<.<.2.&.&.2.&.&.&.&.&.*.=.=.*.-.4.d.d.r.9.9.e.t.k.c.u.y.i.n.n.-X-X-X;X#X&X&XG.A.H.L.L.P.P.H.- 4X5X5X5X9XqXqX9X9X2X9X5X=X=XC.C.C.G.1X:X;X;X+X~.+X@Xn.v.i.y.y.t.k.z.l.t.e.9.r.9.9.-.*.*.*.=.=.&.=.3.s.3.2.=.&.&.=.2.2.=.&.&.3.3.a.a.a.<.=.&.&.{ { { $.O.` ;. .Y 4 2 2 4 s .;.O.@.;.@.{ { { { &.>.<.<.<.;.;.@.` ` O. . .) s s Y Y Y Y Y ( ) ) Y s s ( ) ` ` ` ` ` .O. . .) Y s Y Y Y s s ( ) ) Y c Y ) ) ( ( ( s s s Y s ) ) Y s s s s Y Y Y Y ) .` ` ` ` ` ` O.;.;.;.;.>.@.{ &.>.>.=.&.&.&.=.>.<.<.2.&.&.2.&.&.&.{ &.{ =.=.{ &.>.<.<.>.&.&.&.=.>.>.=.{ &.>.>.<.<.<.>.$.&.{ { { { =.2.&.<.<.<.&.{ &.&.=.<.<.=.=.<.&.{ { { { &.>.<.<.;.;.;.@.{ @.$.$.$.@.{ { $.>.<.<.=.&.&.2.&.&.&.{ &.&.=.=.&.=.3.a.<.2.=.&.&.=.2.2.=.&.&.3.3.a.a.a.<.2.&.&.&.&.&.2.2.&.<.a.3.=.&.&.&.2.a.a.2.=.<.=.&.&.&.&.=.2.a.a.a.a.",
|
||||
"s.3.2.=.=.=.&.&.2.3.s.s.2.=.&.&.2.3.&.2.=.=.3.-.3.4.-.9.9.r.j.l.l.k.e.y.y.u.i.v.M.-X-X-X;X;X*X&XH.A.H.P.K.L.P.K.J.K.L.- B.V.V.R.R.R.R.V.V.V.C.B.A.P.P.P.L.A.1X1X1X:X#X+X+X+X~.~.v.n.b.b.c.y.e.e.r.j.9.r.-.-.4.-.4.3.*.*.*.2.3.s.s.3.=.&.&.=.=.2.s.s.s.s.s.3.=.&.=.2.2.>.=.{ { ` X.) 5 , 1 1 , 3 Y .O.{ @.&.=.>.>.2.&.{ $.<.;.;.;.;.O.` ) Y s p 4 3 3 3 2 2 4 i Y p 4 2 4 s ) ) ) .) ( ( ) Y Y s 4 2 2 1 2 2 4 p c u 4 3 4 u Y ( Y p 4 2 1 2 4 u p 4 1 1 2 2 2 3 3 4 p s s Y ) ) .` ` O.;.;.;.;.;.$.&.&.&.{ { =.2.<.<.2.&.{ &.=.2.&.2.=.=.2.&.=.>.&.{ { =.>.<.<.>.&.{ { &.&.=.<.<.<.<.<.>.&.{ &.>.>.>.=.&.&.&.3.<.2.{ { &.&.&.<.<.=.&.&.&.=.>.>.$.&.{ O.;.;.;.;.;.O.%.&.{ { { %.>.<.<.2.&.{ &.2.3.&.2.=.=.3.=.2.3.&.&.&.2.3.s.s.3.=.&.&.=.=.2.s.s.s.s.s.3.=.&.=.2.3.3.2.&.=.&.3.s.2.&.&.&.&.&.3.s.2.=.=.=.2.3.3.2.=.&.2.s.s.s.",
|
||||
"s.s.s.s.3.=.=.3.s.s.3.=.*.*.*.=.s.2.*.s.=.-.3.4.-.d.4.9.9.9.e.t.z.z.z.c.i.v.M.M.-X-X;X:X,X=X6X- H.Y.P.P.P.P.P.P.K.K.K.P.N./.`.]._.}.{.].'.(.N.Y.L.K.K.K.P.L.C.2X2X1X1X:X;X+X+X-X-XM.n.v.u.y.y.e.z.t.e.j.w.9.d.4.-.d.4.*.*.*.-.2.s.s.s.3.=.2.s.s.s.s.s.s.3.=.&.2.3.3.<.<.<.X.{ ` X.T 3 1 JXJX3 , 5 ) %.{ %.;.<.<.3.3.3.=.{ %.;.;.X.;.X. .Y 4 2 3 3 3 2 2 2 2 2 2 3 2 2 1 , 3 s ) ) .) ( ( s 4 2 3 3 3 2 2 2 3 3 3 3 3 3 1 > 2 u s u 3 , 1 2 1 2 2 2 2 2 2 2 1 2 2 3 2 2 2 3 3 5 s ) .` ` %.;.;.;.;.;.<.1.&.&.>.<.3.2.=.&.&.{ &.3.=.&.3.=.&.3.=.&.<.=.{ { { &.=.<.<.<.2.&.=.<.<.<.<.<.<.1.&.{ =.1.;.<.<.3.2.&.{ 3.3.2.{ { &.{ &.3.<.=.{ &.>.<.<.;.;.;.%.{ %.;.;.X.;.;.;.X.{ { ;.;.;.1.=.&.&.{ &.3.2.*.3.=.=.3.2.=.s.2.*.*.*.=.2.s.s.s.3.=.2.s.s.s.s.s.s.3.=.*.3.s.s.s.s.s.3.*.*.3.s.3.*.*.*.*.*.3.s.2.*.=.s.s.s.s.s.s.=.*.2.s.s.",
|
||||
"s.s.s.s.-.*.3.s.s.2.-.*.*.*.*.3.s.*.2.s.-.*.4.d.9.4.d.9.9.0.e.e.y.c.b.b.n.~.@X-X;X:X1X1X<XD.A.P.L.L.P.P.P.L.P.P.K.P.P.L.Y.A.(._.].].}.]./.B.Y.L.P.P.P.K.K.P.H.C.2X2X2X1X*X&X;X;X-X@X~.~.i.i.y.c.z.y.t.l.e.9.r.d.9.4.d.-.*.*.*.*.-.3.s.s.3.*.3.s.s.s.s.s.2.*.2.s.3.3.1.1.1.X.%.{ ) s 3 4 FXFXFX1 3 T { { X.1.1.1.1.3.3.3.%.{ X.;.X. .) s 4 , 1 4 FXFXFXFXFXFXFX4 2 4 FXFX3 > 4 Y ( ) ) s i 3 > 1 4 FXFXFXFXFXFXFX4 2 4 FXFX2 > 1 2 1 , 3 FXFXFXFX4 4 FXFXFXFXFXFXFXFXFX4 2 3 3 2 2 5 Y ) ) ` X.X.X.;.;.X.%.{ 1.<.1.%.&.{ { { { 1.3.&.=.3.&.{ 1.1.{ 1.1.%.{ { { { %.1.1.1.1.{ =.<.1.1.1.1.%.{ %.;.1.1.1.1.1.3.=.&.1.3.1.{ { { { &.3.3.%.{ 1.1.1.X.X.X.;.X.%.{ X.X.X.X.X.X.{ { X.X.X.%.{ { { &.&.3.3.*.2.s.-.*.3.3.*.3.s.-.*.*.*.*.-.3.s.s.3.*.3.s.s.s.s.s.2.*.3.s.s.3.3.3.s.s.3.*.3.s.3.*.*.*.*.-.s.s.-.-.3.s.s.3.3.s.s.s.-.-.3.s.",
|
||||
"s.s.s.4.-.4.s.s.-.*.*.*.*.*.4.s.4.-.4.4.-.9.4.d.w.w.l.t.e.e.e.y.y.u.v.M.M.+X+X;X:X1X1X2XA.H.Y.P.P.P.K.K.P.P.L.P.P.L.P.K.K.Y.- V.C./.`./.A.Y.P.P.K.K.K.K.K.K.P.- V.C.qX2X=X<X1X1X*X+X~.~.~.~.v.b.c.y.k.k.e.e.r.l.w.w.d.4.-.9.*.*.*.-.4.s.s.-.-.s.s.s.s.4.-.-.s.s.1.*.&.%.%.1.X.{ Y 5 3 FXFXFXFX2 3 Y _ %.1.1.%.{ %.%.1.1.1.{ %.X. .Y 5 3 2 4 FXFXFXFXFXFXFXFXFXFXFXFXFXFXFX1 2 Y ( Y s 4 2 2 4 FXFXFXFXFXFXFXFXFXFXFXFXFXFXFX1 > > > 2 FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX4 2 3 5 Y ( ) X.X.X.X.X.{ %.1.1.%.{ { { { { %.1.1.&.1.1.&.{ %.1.%.%.1.%.{ { { { { { %.1.1.%.%.1.1.1.1.X.{ %.X.X.%.{ { { %.1.1.%.%.3.3.&.{ { { %.1.1.{ %.1.X.%.{ { %.X.X.X._ %.X.X.X.X. ._ .X.X.%.{ { { { { =.3.1.*.3.3.-.*.4.s.-.-.s.4.-.*.*.*.*.-.4.s.s.-.-.s.s.s.s.4.-.-.s.s.4.-.*.-.4.s.s.-.-.s.s.-.*.*.*.4.s.4.*.4.s.s.-.*.-.-.s.s.4.-.4.s.",
|
||||
"d.d.d.4.-.d.d.4.-.*.*.*.*.-.d.d.-.-.d.4.9.9.9.j.r.9.j.l.t.e.y.y.y.i.v.-X-X#X+X1X1X1X2X- Y.P.P.K.P.P.K.K.P.P.K.P.P.P.K.K.L.Y.- Y.Y.A.V.N.Y.P.K.P.K.L.K.P.P.K.L.Y.N.`.V.B.7X2X2X<X&X&X+X~.~.~.n.n.i.u.b.c.y.e.e.l.r.9.j.d.w.9.9.*.*.*.-.d.d.4.-.d.d.d.d.4.*.4.s.3.*.{ { { { X.X.%.s 3 3 AXAXAXAX2 3 Y _ X.1.%.{ { { { %.1.1.%.{ .Y 4 , 4 AXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAX1 1 Y Y i 3 , 3 AXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAX2 > > > AXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAX3 , 4 p Y .X.X.X.%.{ X.X.X.{ { { { { { 1.1.%.%.1.%.{ { %.1.%.{ X.X.%._ _ { { { %.X.X.%.{ X.X.X.X.%.{ .) T ( _ { { { 1.1.1.%.1.1.%.{ { { 1.1.%.{ X.X.%.{ _ _ _ %.X.X.) ( T Y Y Y Y s Y T ( ( _ { { { %.1.3.*.-.s.4.*.*.-.d.4.-.4.d.-.*.*.*.*.*.-.d.d.4.-.d.d.d.d.4.*.4.d.d.-.*.*.*.-.4.d.4.-.4.d.-.*.*.-.4.d.4.-.4.d.4.-.*.*.*.4.d.d.-.-.d.",
|
||||
"d.d.d.4.-.d.d.4.-.9.*.9.9.4.d.4.9.4.d.9.9.9.9.j.j.e.t.z.k.y.y.i.i.~.OX-X;X#X*X1X2XqXA.Y.P.K.P.P.P.P.P.P.K.K.K.P.P.L.P.K.K.P.; P.J.P.= Y.L.K.K.K.P.K.K.K.K.K.L.K.A.`.{.`.V.C. X<X=X=X&X&X+X#X-X@Xi.v.b.u.y.y.e.k.l.e.w.l.j.9.9.9.9.9.-.d.d.4.-.d.d.d.d.4.*.d.d.4.*.*.{ { { %.X. .p 2 4 VXVXVXVX4 3 p _ X.%.{ { { { { %.1.1.%.{ ) 5 < 4 VXVXVXVXVXVX4 2 2 2 4 VXVXVXVXVXVXVX1 1 p Y 4 > 3 VXVXVXVXVXVX4 3 3 2 4 VXVXVXVXVXVXVX2 > > > 3 VXVXVXVXVXVXVX4 2 2 2 2 3 3 2 4 VXVXVXVXVXVXVXVX4 3 2 4 Y . .X. ._ X.X.%.{ _ _ { { %.1.%.{ %.X.%.{ { { X.X.{ %.X.X._ _ _ _ _ { X.X.%._ X.X.X.X.%.( Y 5 3 w s ( _ { %.1.1.%.%.1.%.{ { { 1.1.{ _ ) T s ( ( _ _ _ X. .) s 4 3 3 3 2 2 3 3 4 p ( ( { { %.3.1.*.4.d.-.-.9.-.d.d.-.4.d.d.-.9.9.*.9.-.d.d.4.-.d.d.d.d.4.9.d.d.4.-.9.9.9.9.-.d.d.-.4.d.4.9.9.-.d.d.-.-.d.4.-.9.-.-.-.-.d.d.4.-.d.",
|
||||
"f.d.f.4.9.4.f.d.9.9.9.9.9.d.d.9.9.d.d.9.9.9.0.j.l.t.e.z.b.c.i.i.~.~.#X;X:X*X=X2XqX- Y.P.P.K.P.P.L.P.P.P.K.K.K.P.P.P.P.P.K.; L.L.P.L.L.P.K.P.K.K.P.K.K.K.K.K.L.K.U./.}.].].}.V.V.9X=X=X&X*X;X;X+X+Xn.n.i.y.y.y.k.z.t.e.j.l.r.9.9.9.9.r.d.d.9.9.d.f.d.f.4.9.d.d.4.*.*.{ { { _ ..) 4 2 sXsXsXsXsXsX2 q ( X.%.{ { { { { %.1.1.%._ Y 3 4 sXsXsXsXsX4 2 2 2 2 2 2 2 4 sXsXsXsXsX1 , 5 u 2 3 sXsXsXsXsX4 2 2 3 3 2 2 2 4 sXsXsXsXsX2 > > > 1 sXsXsXsXsX5 1 2 2 2 2 2 3 2 2 2 3 2 4 sXsXsXsXsXsXsX4 , 4 T . ..._ ..X.X._ _ _ _ { X.X.{ { X.X.{ _ _ _ ..X._ Y T T Y s s s s Y ) ._ _ X.X.X.X.) s 4 < , , 3 s _ _ { %.1.%.{ 1.o.{ { %.1.%._ Y 5 2 2 w s ( ( _ .) s 3 , 1 2 2 2 2 2 3 3 2 w s _ %.1.1.-.-.4.4.-.9.9.9.4.d.4.9.d.d.4.9.9.9.9.4.d.d.9.9.d.f.d.f.4.9.d.d.4.9.9.9.9.9.9.4.d.4.9.d.4.9.9.9.d.4.9.4.d.9.9.9.9.9.9.w.f.d.4.9.d.",
|
||||
"f.f.f.d.9.9.d.f.d.w.9.w.d.f.4.9.r.l.j.9.9.0.e.t.z.z.y.c.b.b.v.~.+X#X;X:X,X=X<XqX- Y.P.L.P.P.P.P.P.K.P.P.K.K.K.P.P.K.K.K.P.- P.P.L.J.P.P.K.P.K.K.P.K.K.K.K.K.P.K.Y.N.}.|.}._.].`.h 6X5X<X1X1X;X+X@X-Xn.i.i.y.y.u.z.z.e.t.l.l.r.9.w.r.j.f.r.9.r.f.f.f.d.4.9.4.d.4.1.*.{ { _ _ _ p 1 2 sXsXsXsXsXsX2 2 T .._ { { { { %.1.o.o._ s 4 3 sXsXsXsXsX4 3 4 p s s Y p 3 > 4 sXsXsXsX1 > 1 1 2 sXsXsXsXsX4 2 4 p Y Y s p 4 , 4 sXsXsXsX2 > , , 1 sXsXsXsXsX2 3 p Y s s Y Y s s p 4 2 2 2 q sXsXsXsXsXsX4 3 p ) . .( Y Y T T _ _ _ ..X..._ ..X..._ _ _ _ _ ..Y q 2 3 3 2 2 2 2 3 5 s ( ..........T w , 4 sX4 > q R _ _ { o.o.{ %.o.{ _ %.X._ ( t , 1 1 > 3 s ( . .T 4 > 1 sXsXsXsXsXsXsXsX4 < w ( o.1.1.*.1.d.4.9.9.9.9.w.f.d.9.r.f.f.r.9.9.r.f.f.r.9.r.f.f.f.f.d.9.r.f.f.r.9.9.9.9.9.9.d.d.9.r.f.9.9.r.f.9.9.f.r.9.9.9.9.9.w.d.f.d.9.r.f.",
|
||||
"l.l.l.l.r.9.r.j.l.j.j.l.j.j.w.9.j.l.t.e.e.e.e.e.z.z.u.i.n.M.M.-X;X;X1X1X=X5XqXA.Y.P.P.P.K.P.P.P.K.K.K.K.K.P.P.P.P.K.K.P.Y.A.P.P.P.; P.P.P.K.P.P.K.K.K.P.K.K.K.K.K.A.[.].}.}.}.}.`.V.3X2X2X1X*X&X;X-X@X~.~.i.i.u.b.z.y.e.k.l.l.l.l.l.l.j.9.9.j.f.f.f.d.d.w.9.4.4.1.1.%.{ _ _ R w , w tXtXtXtXtXtXq 2 s _ _ _ { %.o.o.o.o.%.R t < 5 tXtXtXtXq w p T ) ......) p 3 2 tXtXtXtX1 > > > 4 tXtXtXtX4 4 p T ...._ _ ) Y 4 2 tXtXtXtX2 1 u i 1 3 tXtXtX4 2 i ( .._ _ ...._ ....R s i q 2 2 4 tXtXtXtXtX2 4 Y ) ) p q 2 3 5 Y ......T Y s T T T ( _ _ _ ( Y 4 , 1 2 2 2 2 3 3 1 , 3 p T .......Y 2 1 tXtXtX1 2 s _ _ _ ..o..._ o._ _ ...._ T 3 1 tXtX3 , w T ....s 2 > 1 tXtXtXtXtXtXtXtXtX4 3 Y ..1.%.0.4.d.w.9.9.9.9.9.j.l.w.9.j.l.l.l.j.l.l.j.9.9.j.l.l.l.j.j.r.9.j.l.j.r.e.9.9.9.9.r.l.w.w.j.e.9.j.j.9.r.j.9.9.9.9.9.r.l.l.j.w.9.j.l.",
|
||||
"l.l.l.l.j.w.9.r.j.l.l.l.j.e.9.9.j.l.t.e.e.e.y.y.b.b.v.i.~.@X-X-X;X1X,X=X5XqX8XH.P.L.P.L.P.K.P.P.K.K.K.K.K.K.K.P.P.P.K.Y.A.A.U.U.H.= Y.P.K.K.P.K.K.K.K.K.K.L.K.K.K.Y./.'.}.}.}.}._.{.V.8XqX=X=X&X,X;X#X~.~.~.i.i.b.b.t.y.e.k.z.l.l.l.r.e.e.j.j.j.j.j.j.j.r.0.0.1.1.1.o.%._ _ i 1 1 wXwXwXwXwXwXwXwX3 w R _ _ %.o.o.o.o.%._ T 3 1 wXwXwXwX4 2 i _ .........._ ( i 2 4 wXwXwX1 > > 1 wXwXwXwX3 2 p ) ...._ _ ....) p 2 4 wXwXwX2 2 p p 2 2 wXwXwX2 2 Y ( .._ _ ...._ o..._ _ ( T p 4 , 4 wXwXwXwX4 , 4 Y Y 4 , 1 1 , 4 p T p w 2 2 3 3 w i d ( _ Y 4 , 3 wXwXwXwXwXwXwXwXq 2 2 i T ....) p 2 q wXwXwX3 3 Y _ _ _ _ ..E d E _ _ ...._ T 2 2 wXwXwX4 2 p E ( s 4 > > 1 2 2 2 4 wXwXwXwXwX3 t _ %.%.0.4.d.w.0.9.9.9.e.l.l.r.9.e.j.l.l.l.l.r.9.e.j.l.l.l.l.l.j.j.e.e.j.l.l.j.r.9.9.9.9.j.j.9.j.r.e.l.r.e.j.r.9.9.9.w.j.l.l.j.e.9.j.j.j.",
|
||||
"l.l.l.l.l.l.t.e.e.t.t.t.e.e.t.e.l.z.t.e.y.y.y.u.b.b.v.~.OX~.+X#X*X=X=X5XqXuX- P.J.K.P.L.P.P.K.K.K.K.K.K.P.K.K.P.P.P.Y.A.R./.V.V.o V.D.Y.K.P.P.K.K.K.P.P.P.P.K.K.K.Y.* `._.}.}.|.|.}.'.V.0X9X<X=X1X:X#X~.~.~.~.i.b.b.c.y.y.y.e.t.t.e.e.e.j.l.l.j.j.r.w.0.0.0.0.0.0.o.o.o.o.R w > q qXqXqXqXqXqXqXqX3 2 d _ o.o.o.o..._ _ _ R 2 2 qXqXqXw , t T _ _ _ _ _ _ _ _ s 2 1 qXqXqX1 > > 2 qXqXqX4 > q T _ _ _ _ ........T 3 1 qXqXqX2 4 s p 2 2 qXqXqX2 2 Y _ _ _ _ .._ ..o._ _ ....o...Y 4 , q qXqXqXqX1 1 i i 1 1 qXqX3 , 1 2 2 2 2 2 3 3 2 2 w d ( s 2 1 qXqXqXqXqXqXqXqXqXqXqX4 2 p E _ Y q 2 qXqXqXqX2 4 T .._ _ ( s t 2 w s _ _ _ _ Y 2 2 qXqXqXqX2 w s ( R p 4 2 2 2 2 1 , 4 qXqXqXqX2 2 R 5.0.0.r.j.w.0.0.0.e.e.l.l.t.e.e.e.e.t.t.e.e.e.j.l.l.l.l.j.t.e.e.e.e.e.e.j.l.l.j.t.e.0.e.j.e.e.e.e.t.e.t.j.e.e.e.j.l.l.j.t.e.e.e.e.e.e.",
|
||||
"l.l.l.l.l.l.l.k.t.e.e.e.t.k.k.e.k.z.z.t.y.y.u.c.m.M.@XOX-X+X+X&X=X=X<XqXuXA.Y.K.K.L.K.P.P.P.L.K.K.K.K.K.L.P.P.P.P.H.N./.].'.}.V.N.R.`.D.Y.K.L.K.K.K.P.P.P.P.L.K.K.L.A.(.|.}.}._.}.{.{.|.V.eXqX=X2X1X,X#X+X~.~.n.M.m.i.u.b.u.y.y.e.e.t.j.l.l.l.j.j.0.0.w.w.w.w.w.0._ ......p 3 q 9X9X9X9X9X9X9X9X9Xw 2 p ..o....._ _ ......s 3 w 9X9X9X3 1 p ...._ _ _ _ _ ....R w , 1 2 1 > > > 4 9X9X9X2 1 i ( _ _ ....o.o.....T w > 1 2 1 2 i T p 2 2 9X9X9X2 2 s _ _ _ _ _ } %.5.{ o.o.o..._ _ s 4 2 9X9X9X9X4 , 1 1 > 2 9X9X9Xq 2 2 w 9X9X9X9X9X9X4 2 i R Y 2 1 9X9X9X9X4 4 9X9X9X9X9X9X2 4 p R p 2 2 9X9X9Xq 2 i _ ...._ s 9 , , > q s ( _ _ R q 2 9X9X9X9X2 2 s E E T Y p p p p p 3 , 4 9X9X9X2 2 R o.o.0.w.j.j.w.0.0.e.k.l.l.t.e.l.t.e.e.e.e.t.l.l.l.l.l.k.e.e.t.k.k.k.t.e.e.e.t.l.l.k.e.e.t.e.e.e.e.e.e.e.e.e.t.l.l.k.e.e.e.t.k.l.l.k.e.",
|
||||
"z.z.z.z.z.z.z.z.z.z.k.z.z.z.z.e.t.z.z.b.b.c.b.b.M.n.~.@X;X;X,X1X2X2XqXuXxXA.L.K.P.K.K.P.K.P.P.K.K.P.K.K.P.K.P.A.N.V.`.]._.|./.* D.V.}.`.D.Y.L.L.L.P.P.P.P.P.P.P.K.K.Y.V.}.}.}._._.}.}.}.}.V.qX5X<X1X1X,X;X-X-X-XM.n.i.v.b.b.b.k.k.z.z.z.l.l.l.j.w.0.w.j.r.r.w.o.o.o..._ d q 3 <X<X<X<Xw 2 w <X<X<X<X3 t E _ _ _ ..o.o.o.E t 3 <X<X<X<X3 t T ......o...o.o.....( s w 2 2 2 1 > 1 <X<X<X<X2 w T ......o.o.o.o.o.o._ d w 3 3 3 i T E Y 4 2 <X<X<X2 2 d _ ..o.o.o.0.} 0.7.o.7.5.} _ ....p 3 w <X<X<X<X1 > , > 1 <X<X<X<X<X<X<X<X<X<X<X<X<X<X1 w T T 4 , 1 2 2 2 2 2 2 4 <X<X<X<X4 , 4 s p 2 2 <X<X<X2 2 s _ _ _ T w , q <X4 , w T _ _ ( p 2 w <X<X<X2 2 Y E E E E T s p p p t , 2 <X<X<X3 3 T o.w.0.w.j.j.j.j.k.z.z.z.k.e.t.z.z.z.k.k.z.z.z.z.z.z.z.t.e.k.z.z.z.z.z.z.k.t.e.e.t.k.z.t.e.e.t.k.z.k.t.e.e.k.z.k.e.e.e.t.k.z.z.z.z.z.z.",
|
||||
"z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.t.y.c.b.b.b.b.m.M.n.+X+X;X;X1X1X2X2XqXuXiXA.Y.P.P.P.K.K.P.K.K.L.K.K.K.P.P.Y.A.N.(.j ].].).}.].V.= Z.R.'.}.R.A.Y.K.K.L.K.P.P.P.P.P.K.K.P.N.].}.}.}._.}.}.}._.).D.9X5X<X1X1X1X;X-X-X@X~.i.n.m.b.b.b.z.z.z.z.z.l.l.k.0.w.h.h.w.w.7.7.o.o.o.E w < q ,X,X,Xw > > > 4 ,X,X,X2 1 p _ ..o.o.o.o...R 3 3 ,X,X,Xq 3 p ......o.o.o.o.o.o.o._ _ T T T Y i 1 2 ,X,X,Xw 2 p E ....o.o.o.o.o.o.o.} _ E T T T T E ..E p 2 w ,X,X2 2 d ..o.o.7.w.w.w.0.0.0.0.0.7.o.o.o.E w 2 ,X,X,X,X1 1 t 3 , 4 ,X,X,X,X,X,X,X,X,X,X,X,X4 > 2 Y E p q 2 2 2 4 p p 4 , 3 ,X,X,X,X1 1 p Y 2 2 ,X,X,X2 2 Y _ _ _ d 2 1 ,X,X,X1 3 T .._ _ d 2 2 ,X,X,X2 2 Y E E E E p 4 2 1 2 1 , 4 ,X,X,X3 3 E o.w.0.0.w.h.k.z.z.z.z.k.e.e.k.z.z.z.z.z.z.z.z.z.z.z.z.e.t.z.z.k.k.k.k.z.z.z.k.k.e.e.e.e.e.k.z.z.z.z.z.t.y.e.e.e.t.k.z.z.z.z.k.k.k.z.z.",
|
||||
"z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.b.u.y.i.v.v.v.n.@X~.~.#X;X,X1X2X2XqXqXiX4X; L.K.P.P.K.K.K.K.K.P.K.P.P.U.A.N./.|.}.R.}.].'.}.V.Z.hXjXV.].'.V./.D.Y.P.P.K.K.P.L.P.K.K.K.P.A.`.}.{.}.|.}.{.}._.{.R.C.0X5X=X<X,X,X#X#X+X~.@XM.n.b.b.b.b.b.z.z.z.z.z.h.0.t.h.w.0.0.5.5.5.5._ p 3 q ,X,X,X,X1 > , > 2 ,X,X,Xq < w E ....5.} } } d 2 2 ,X,X,Xq 3 p ......o.o.o.o.o.o.o.o._ _ _ _ _ U 2 2 ,X,X,Xw 2 p E ....o.o.o.o.o.o.7.} o.o...} } _ _ _ _ U 2 2 ,X,X2 2 R o.o.7.7.w.w.w.0.0.w.w.w.7.7.5.} _ i 2 q ,X,X,X2 1 p p 1 2 ,X,X,X,X,X,Xw 2 2 2 2 1 > > w T E R d p Y p Y T T p 1 > 4 ,X,X,X2 1 p Y 2 2 ,X,X,X2 2 d _ ....Y 2 2 ,X,X,X3 2 T ...._ d 2 2 ,X,X,X2 2 p R R R p 4 , 1 2 2 2 w ,X,X,X,X3 t E 7.7.w.0.0.e.t.t.k.k.t.y.y.k.z.z.z.z.z.z.z.z.z.z.z.z.z.y.z.z.k.y.y.y.y.y.t.k.k.z.z.k.y.y.k.z.z.z.z.z.z.z.y.y.t.k.z.z.k.t.y.y.y.y.y.t.z.",
|
||||
"z.z.z.z.z.z.z.z.z.z.z.b.b.b.b.b.b.i.i.i.i.OX~.+X~.!.#X,X1X1X2XqXuXiXiX- P.K.P.L.K.K.K.K.P.K.P.Y.A.N.V.`.].].|.R.).{.|.}.`.D.B.lXlXV.'.}.V.h /.D.Y.J.K.K.L.P.P.K.K.K.K.H./.{.}.}.}.{.{.{.{.{.}.h iX9X5X=X=X*X&X+X~.~.@XM.M.n.m.b.b.b.b.z.z.z.k.h.0.h.h.w.5.5.} } } } d q 2 #X#X#X#Xw , 4 i 9 2 #X#X#X#X1 2 R } } } } } } d 2 2 #X#X#X#X3 w E ....o.o.7.7.7.7.7.o.o.} } _ _ d 2 2 #X#X#X#X2 w T ......o.7.7.7.7.7.5.7.7.5.} } } } } _ d 2 2 #X#Xw 2 p ..7.5.0.w.h.h.w.0.w.w.0.0.5.} } } d 2 2 #X#X#X2 2 p Y w 2 #X#X#X#X#Xw , 1 3 2 2 2 2 q p R E R R U p U U U U i 1 > 2 #X#X#X2 1 p p 2 1 #X#X#X2 2 a R _ _ U 2 2 #X#X#X2 2 U ...._ d 2 2 #X#X#X2 2 a R R d q , 4 #X#X#X#X#X#X#X#Xw 3 U ..7.w.w.t.w.q.e.y.u.y.y.y.y.c.z.z.z.z.z.z.z.z.z.z.z.z.z.y.z.z.c.y.y.y.y.y.y.y.y.y.u.c.y.y.b.z.z.u.y.c.z.z.t.y.c.t.y.y.y.y.y.y.y.y.y.y.z.",
|
||||
"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.v.i.i.i.~.@X+X+X!.#X1X1X1X2XqXqXuXiXaXH.P.K.L.K.P.P.K.J.P.Y.- N./.`.{.}._.{.).x }.}.|.].g zXU.kXlXV.].].V.h [.R.H.L.K.K.K.K.P.K.K.K.K.Y.V.{.{.}.{.{.{.{.}.{.{.NXg 0X5X5X=X=X*X&X+X+X-X-XM.M.M.b.b.b.b.b.z.z.k.h.q.h.w.5.Q R R R R a q < q @X@X@X@X2 4 p R i 2 w @X@X@Xw 7 a } } } } } } R w 2 @X@X@X@X3 1 p ......o.7.7.7.7.7.7.5.} } } _ R q 2 @X@X@X@X2 1 p ^ ....o.7.7.7.7.7.5.7.7.5.} } } } } } d 2 2 @X@X@X2 t E 7.5.5.w.h.h.w.q.q.q.q.0.5.5.} } d 2 2 @X@X@X2 2 U E p 2 w @X@X@X@X2 1 p T U d d d d E E E R p w 2 2 2 2 2 1 > > 4 @X@X@X4 1 i p 2 1 @X@X@X2 2 a R R R d 2 2 @X@X@X2 2 U ...._ d 2 2 @X@X@X2 2 d R R d 2 < @X@X@X@X@X@X@X@X@X3 3 T 7.7.7.w.w.q.q.y.y.u.u.y.y.u.b.b.b.b.b.b.b.b.b.b.b.b.b.b.y.b.b.c.y.y.y.y.y.y.y.y.y.y.y.y.y.b.b.b.y.y.u.b.b.c.y.y.y.y.y.y.y.y.y.y.y.y.y.b.",
|
||||
"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.v.i.i.v.n.-X-X-X;X#X&X,X1X2XqXqXuXiXeX% Y.K.P.K.P.K.K.P.L.A.- R.]._.|.}.'.}.'./.R.}.).].R.zXU.kXlXkXN.`.}.h zX/.{.V.H.L.K.K.P.K.K.K.K.P.P.N.{.{.'.'.'.'.'.'.{.'.NXV.0XwXqX2X2X1X,X*X+X#X-X-XM.M.M.M.b.b.b.b.c.h.h.q.w.7.R r 7 7 7 7 1 < q n.n.n.n.9 2 p E E d 2 2 n.n.n.n.3 w R } } } } } } i 2 w n.n.n.w < q U ....5.7.7.7.7.7.5.} } 5.5...E p 2 q n.n.n.w < q U ....5.7.7.7.7.7.5.7.7.7.} } } } } } d 8 2 n.n.n.7 3 E 7.7.q.w.h.h.y.q.t.t.w.q.q.5.} } d 2 2 n.n.n.2 2 U E U 2 2 n.n.n.n.3 w E ..} } _ ......^ E p 8 < 1 2 2 2 2 2 2 w n.n.n.n.n.1 3 w 1 1 n.n.n.2 2 a E E _ U 2 2 n.n.n.2 2 U ...._ d w 2 n.n.n.2 2 d E E d q < q n.n.n.n.n.n.n.n.3 2 U 5.7.7.w.q.q.u.c.c.b.b.c.i.y.c.b.b.b.b.b.b.b.b.b.b.b.b.b.y.b.b.c.y.y.y.y.y.y.y.u.i.c.b.i.y.b.b.b.c.i.b.b.b.i.y.c.c.c.i.u.y.y.y.y.y.y.y.b.",
|
||||
"b.b.b.b.b.b.b.b.b.b.b.b.b.m.n.i.i.n.M.-X-X-X;X;X,X*X=X<X2XqXuXiXaXN.H.P.K.L.K.P.P.H.- V.).j `.'.`.`.[.[.[.[.h `.}.}.`.C.lXA.vXkXzXD.`.].h PXg }.].C.U.L.K.P.K.J.K.K.K.K.- [.|.`.`.`.`.`.[.[.[.PXPXE.iXqXqX2X1X1X1X#X+X#X-X-X-XM.M.n.b.b.c.c.h.h.q.w...t < 1 7 7 8 9 w v.v.v.v.w > w R E E R w 2 v.v.v.v.2 2 d ..5.5.} } } d 2 3 v.v.v.v.q < q p R E ..7.7.7.7.5.} 5.7.5.5...R 3 2 v.v.v.v.q < q p R E ..7.7.7.7.5.7.7.7.5.5.5.5.5.5.R 3 3 v.v.v.7 9 E 7.7.w.h.h.c.q.q.y.u.h.h.w.7.7.5.R 7 2 v.v.v.2 2 U E U 2 2 v.v.v.w 3 p ^ } } 5.........E U q < 8 v.v.v.v.v.v.v.v.v.v.v.v.v.1 > , > 2 v.v.v.2 2 U ^ ^ _ R w 2 v.v.v.3 3 R ..E E R i 2 w v.v.2 2 d E ! R a q < 1 2 w v.v.v.v.v.t < t E 7.7.q.q.t.h.c.b.b.b.b.b.v.i.c.b.b.b.b.b.b.b.b.b.b.b.b.u.b.b.b.i.i.i.i.i.c.b.b.b.c.v.i.y.v.b.b.b.b.b.b.c.u.y.i.c.b.b.b.b.c.i.i.y.i.c.b.",
|
||||
"b.b.b.b.b.b.b.b.b.v.v.v.n.n.n.~.n.M.-X-X@X#X#X:X1X1X=X9XqXuXwXtX X& Y.J.K.K.P.L.N.D.[.NXNXV.NXPXPXPXNX[.`.h h `.}.{.R.zXvXD.lXkXlXgX[.'.h vXN.`.{.].V.U.K.J.K.K.K.P.P.K.A.[.[.NXNXPXPXPXfXPXPXPXPX* iXwXqX9X<X1X1X1X+X#X-X-X@X@Xn.v.n.b.c.c.h.h.q.q.E 9 2 c.c.c.c.c.c.c.c.c.c.2 < i R E E E p 2 q c.c.c.w < w E 5.5.5.5.5.R w 3 c.c.c.c.c.w 3 3 3 w a R E 5.7.} 5.7.7.5.5.} R w 3 c.c.c.c.c.w 2 2 2 w d E E 5.7.5.5.7.7.7.7.7.7.7.7.R 9 8 c.c.c.8 7 R 7.7.t.h.u.u.q.u.u.y.q.u.w.7.7.7.R 9 3 c.c.c.2 2 U E U 2 2 c.c.c.2 2 R 5.} 5.5.5.5.5.E d q < q c.c.c.c.c.c.c.c.c.c.c.c.c.c.2 > < > 2 c.c.c.2 2 U E E ! E p 2 q c.c.3 3 R ^ E ! E d 2 2 c.c.3 3 U ^ ^ ^ E U w 2 2 2 3 w c.c.c.c.q 9 d 5.7.q.u.h.c.c.c.u.v.b.b.b.i.v.m.b.b.v.v.v.b.b.b.m.b.b.i.i.b.b.b.b.b.b.b.b.b.v.i.i.i.v.i.i.v.b.b.m.m.b.i.i.v.v.i.i.v.b.m.m.m.b.b.b.m.b.",
|
||||
"n.n.n.n.b.n.n.v.i.i.i.i.~.v.n.~.-X-X@X+X+X&X&X*X1X2X<X9XqX0XrXeX& A.P.K.K.L.A.fXPXPXPXPXNXNXNXbX`.`.'._.R.NXh ].|.`.C.vXgXkXlXkXlXzXV.}.j vXgXR.}._.}.V.Y.K.P.P.K.L.P.K.H.(.|.'.`.[.NXPXC.PXPXPXPXgXaX0X0X5X5X<X1X1X*X#X;X+X~.~.~.~.i.v.c.x.h.u.q.q.! t 9 k.k.k.k.k.k.k.k.k.k.w < 9 i d d U i 1 7 k.k.k.k.1 1 a } 5.5.5.5.E p 2 9 k.k.k.k.k.k.w 7 7 7 7 r d E } 7.7.5.} } } ! a 3 q k.k.k.k.k.k.q 7 7 2 9 t U E 5.5.7.7.7.7.7.7.5.5.R 7 8 k.k.k.8 7 R 5.7.7.q.q.q.q.u.c.x.u.q.q.q.7.7.E 9 3 k.k.k.2 2 U E R w 2 k.k.k.7 7 R 5.} 5.5.5.} } R w < q k.k.k.k.k.q 2 q k.k.k.k.k.k.k.2 1 w 3 2 k.k.k.w 2 i R ! ! ^ U 7 7 k.k.2 2 U ! ! ! E U 2 2 k.k.2 2 U ^ ^ ^ ..E R d d p q < q k.k.k.k.7 r ! 7.q.u.x.x.u.u.i.i.v.n.b.v.v.n.v.i.i.i.i.i.v.m.m.b.n.v.i.v.b.m.m.m.b.n.v.i.i.v.v.n.n.i.i.i.v.v.v.v.i.i.i.v.n.n.v.i.i.i.v.n.m.m.m.m.n.",
|
||||
"n.n.n.M.M.n.i.i.v.n.n.n.@X~.OX~.-X-X#X!.&X&X&X=X2X2X9X9X0XrXtXC.D.H.L.L.A.U.PXPXPXPXPXNXg [.'.'.}.{.{.}.V.D.(.}.].V.vXlXN.lXlXkXkXvXg '.j vXkXV.`.{.|.}.V.U.P.K.P.K.P.J.Y.V.].}.{.{.'.[.V.NXPXPXPXPX& rX0X0X5X5X2X1X*X&X+X+X#X@X@Xv.i.u.u.x.x.u.7.5.} d 9 t t.t.t.t.t.t.t.t.t.t.w 2 7 7 7 7 1 > 2 t.t.t.t.t < q a U R ! } ! R q < q t.t.t.t.t.t.t.t.w 1 < 1 r d 5.7.5.} } } } R w < q t.t.t.t.t.t.t.t.w 1 < 2 t R 5.6.5.7.7.5.5.| } R 9 9 t.t.t.7 9 R 6.6.q.q.q.u.u.q.u.u.x.u.8.q.6.5.R 9 7 t.t.t.2 2 U E E i 2 w t.t.2 7 d } } 5.7.5.} } d 7 1 t.t.t.t.w 2 2 2 2 2 q t.t.t.t.t.2 2 i i 2 w t.t.t.2 q R ^ ^ ! a 7 w t.t.7 7 d ! ! ! ! d 2 2 t.t.2 2 d ! ! ! } } } 5.5.^ U q < w t.t.t.9 9 Q q.q.u.x.u.u.u.i.i.i.n.M.v.i.i.i.v.n.n.v.i.i.v.M.M.M.n.v.i.i.v.n.v.i.i.i.v.n.n.n.v.i.i.n.i.i.i.i.i.i.v.v.i.i.n.M.n.n.i.i.i.v.v.n.v.i.",
|
||||
"M.M.M.M.n.~.~.n.M.M.M.M.-X@X+X~.-X;X#X&X&X&X=X=X2XqX9X6X0XaXaX* fXU.; A.PXPXPXPXPX[.`.].j ].}.}.}._.}.V.vXg [.'.].V.lXlXN.lXlXvXkXkXg ].V.vXlXD.`.{.}.}.].V.H.Y.K.K.L.K.P.* _.{.{.{.{.`.x ].[.NXPXPXN.rXrX0X5X5X2X2X*X&X*X;X;X-X-X@Xn.u.q.u.x.8.7.7.5.R 9 7 r.r.r.r.r.r.r.r.r.r.r.r.w 7 7 1 > > w r.r.r.r.r.w 9 9 9 w a Q ! R a w 2 2 w r.r.r.r.r.r.r.r.t 2 < 0 U E 5.} } } } ! U w 7 7 q r.r.r.r.r.r.r.r.w 2 < w U ! 5.6.6.6.6.5.5.E 9 9 r.r.r.9 9 R 7.6.q.u.q.u.x.q.q.q.u.u.8.7.7.5.R 7 7 r.r.r.3 2 U ! ! a 7 3 r.r.9 9 R } | 5.7.5.| } a 7 r r.r.r.q < q a U p q < q r.r.r.r.2 2 a a 2 2 r.r.r.2 1 a ! ! R w 8 r.r.r.w 7 a Q ! ! Q i 7 w r.r.2 2 d ! ! ! ! } 5.5.5.5.! a 1 7 r.r.r.9 9 E q.q.u.x.x.u.i.i.~.~.n.M.@X~.OXn.M.M.M.M.M.OX~.v.M.M.M.n.n.OXOX~.~.~.v.n.M.M.n.~.~.~.v.n.~.n.OXOXn.~.n.n.~.~.~.@Xn.M.M.n.OX~.~.~.OXv.",
|
||||
"M.M.M.M.@X~.@XM.-X@X@X@X-X-X@X+X#X;X;X&X&X&X=X=X2XqX0X0XaXaXo KXPXC.zXPXPXPXNX[./.'.'.).|.'.}.{.{.}.].(.vXh '.}.x PXkXkXgXlXlXlXkXkXD.[.V.vXkXvXh |.}.}.|.].R.D.K.K.L.K.K.- [.}.{.}.}.`.x ].].'.`.NXNXrXrX0X0X9X2X2X=X*X,X;X;X#X@X@Xn.x.u.q.8.8.8.7.5.U 2 7 4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.w w 4.4.4.4.4.4.4.4.t 2 < q a ! ! E R i 1 > 1 q 4.4.4.4.4.4.4.4.r 7 9 i ! } } } } } ! R i 1 > 1 w 4.4.4.4.4.4.4.4.t 9 9 i ! 7.6.6.7.7.7.R 9 7 4.4.4.9 9 Q 7.6.q.8.u.q.x.u.q.q.q.q.q.8.7.5.d 7 r 4.4.4.9 9 U ! Q a 9 w 4.4.9 9 R 5.| 5.7.7.| Q r 7 4.4.4.4.7 q U E ! E a q 2 4.4.4.4.2 2 U U 2 7 4.4.4.w < w R ! d 7 9 4.4.4.4.7 w R ! ^ R q 2 4.4.4.2 2 U ! ! ! ^ 5.5.5.5.5.} d 7 9 4.4.4.9 9 ! q.q.u.x.x.u.i.~.~.OXM.M.OX~.n.M.M.n.n.M.M.M.OX~.n.M.M.M.M.M.n.OXOXn.M.M.n.@X~.~.~.OXM.@X~.M.OX~.n.@X~.M.@X~.~.~.~.@XM.M.M.n.OX@XM.M.",
|
||||
"-X-X-X@X~.OX-X-X@X+X~.+X@X-X-X+X+X;X:X&X&X=X=X9XqXqX0XtXaXeX+ PXPXPXPXPXNX[.'.{.}.}.'.x ].].}.{.'.}.j vXzXV.].).V.lXkXD.vXlXlXkXkXlXzXR.R.zXlXU.N.[._.}.{.'.}./.A.Y.K.K.K.Y./.].].{.}.].j ].}.{.{.'.[.h rXrX0X9XqX2X=X,X1X,X#X!.!.OX@Xn.x.q.8.8.8.5.R w < r 3.3.3.3.3.r r 3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.3.q < w d ! ! E i 1 > > > 1 w 3.3.3.3.3.3.3.3.q 9 U } | } } } ^ ! i 1 > > > 1 q 3.3.3.3.3.3.3.3.w 9 U 5.6.7.7.7.5.R 7 7 3.3.3.9 7 Q 7.6.6.8.u.q.u.x.q.q.q.q.6.6.7.! t 9 3.3.3.3.9 9 U ! R w 9 3.3.3.7 9 E 7.6.6.7.7.6.Q 7 7 3.3.3.r 7 a ! ! ! ! ! a 9 w 3.3.3.9 w R U 7 1 3.3.3.3.9 7 i d i 9 r 3.3.3.3.7 7 U ! ! U 2 7 3.3.3.2 2 U ^ ! ! ! 5.5.5.5.5.} U 9 9 3.3.3.7 9 ! 8.q.u.x.x.~.~.~.~.@X-X@X~.@X-X-X@X~.~.@X-X-X@X~.@X-X-X-X-X-XOX~.@X-X-X@X~.~.~.~.~.@X-X~.@X-X+X~.@X@X~.@X-X+X~.~.~.~.OX@X-X-X@X~.@X-X",
|
||||
"-X-X-X@X~.@X-X-X~.~.~.~.+X;X;X#X&X,X1X*X=X=X5XqXqXwX0XaXaXB.gXPXPXPXNX`.).'.}.{.{.}.}.R.].'.{.'.}.T.gXkXgX(.R.R.zXkXlXN.lXkXlXlXlXlXlXh /.zXlXlXN.j ].}._.|._.}.R.A.P.K.K.Y.h ].}.'.{.'.j ].|.}.{.}.`.h rXrX0XwXqX9X=X<X1X*X&X!.!.!.OXx.x.8.q.7.! U w < 0 2.2.2.2.r 7 7 7 7 9 9 t 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1 9 a ! E a 9 > > > 1 2 2 7 7 q 2.2.2.2.2.2.9 t Q | | | / ! a 9 > > > 1 7 7 7 7 w 2.2.2.2.2.2.9 t Q 6.7.7.6.| Q 7 7 2.2.2.9 7 ! 8.6.6.q.8.8.q.8.8.q.6.6.6.6.| d 2 9 2.2.2.2.9 t R ! R 9 9 2.2.2.7 7 Q 7.6.6.8.8.6.Q 7 7 2.2.2.7 9 R ! ! ! ! ! U 9 9 2.2.w 9 a ! R r < r 2.2.2.2.r 7 7 1 9 2.2.2.2.2.r 7 a ! ! a 2 q 2.2.2.7 1 i U U R ! / 5.5.5.5.| R 9 9 2.2.2.7 9 ! 8.8.q.x.n.~.~.~.~.@X-X@X+X@X-X@X~.~.~.~.@X-X-X@X+X-X-X-X-X@X~.@X-X-X@X~.~.~.~.~.@X-X@X~.@X@X+X~.@X-X@X+X-X@X~.~.~.~.~.~.@X-X-X+X+X-X",
|
||||
"-X-X-X@X~.-X-X@X~.~.~.~.!.+X;X;X&X*X1X,X=X5X5XqXqX0XtXaXsXo PXPXNXj '.|.R.'._.{.}.}.).T.'.}.}._.].V.zXkXB.V.|.N.vXlXlXA.lXvXvXlXlXlXlXV.[.D.kXlXjX+ [.'.).}.].}.|.`.N.Y.L.K.- `.}.{.}.'.j ].}.}.}.}.'.g yXrXrXwXqX5X9X2X<X&X&X&X!.!.!.OXx.8.6.Q t 9 9 t >.>.>.>.q < 0 a a r 9 9 9 9 9 9 r >.>.>.>.>.>.>.>.>.>.>.>.>.>.9 w U Q a 9 < < > > t a i q 1 > 1 r >.>.>.>.r 9 a ! | | ! U 9 < < > < r a i q 1 < 1 w >.>.>.>.t 9 a 5.7.6.6.| Q 7 7 >.>.>.7 r ! 6.6.6.6.8.8.q.8.8.8.6.6.6.| d q < t >.>.>.t 9 a ! | R 9 9 >.>.>.7 7 Q 8.8.6.8.8.6.Q 7 9 >.>.>.r 9 a ! ! ! ! Q a 9 r >.>.9 9 R / ! a 1 2 >.>.>.>.>.r 7 9 i >.>.>.>.>.>.7 q a a q 7 >.>.>.>.1 > 1 7 9 w a E ^ / / 5.! a 2 9 >.>.>.7 7 Q 8.u.u.i.n.OX~.~.~.-X-X+X+X-X@X~.~.~.~.~.+X-X-X@X+X-X-X-X-X@X~.-X-X@X~.~.~.~.~.+X-X-X+X+X-X@X~.~.+X-X@X+X@X-X+X~.~.~.~.~.+X-X-X@X+X-X",
|
||||
"-X-X-X#X~.-X-X-X+X~.+X+X&X&X#X1X*X=X1X<X=X5X9XqXwXrXaXaXE.C.NX[.R.`.'.'.x ].}.}.}.].R.).'.{.{.{.R.fXjXD.N.`.`.(.zXlXlXU.lXlXlXlXlXlXkXgX/.V.kXlXkXgXV.).}._.}.}.}.}.].V.A.Y.H.C.'.}.}.'.j ].}.}.}.}.}.h yXrXtXiXwX5XqX2X=X=X&X&X!.!.!.OXg.8.| t < r :.:.:.:.:.w < 0 W | | ! ! ! a t 9 9 9 7 9 9 9 9 r :.:.:.:.:.:.:.r 7 a Q a w < 9 :.9 > w U ! a i r 1 < r :.:.:.:.9 r Q | | Q r < q :.9 < q a Q a a r 1 < r :.:.:.:.9 r ! 8.6.6.| Q 7 7 :.:.t 7 a 5.6.6.6.6.8.8.6.8.8.8.6.6.| f 0 < w :.:.:.:.9 t ! 5.| R 9 9 :.:.:.7 7 Q 8.8.8.6.8.8.Q 7 9 :.:.:.:.9 q a ! ! Q a q 9 :.:.:.9 9 R 5.5.Q t < r :.:.:.:.:.:.:.:.:.:.:.:.:.:.r < 1 1 < r :.:.:.q > > > > 1 7 7 r a R R R a q < t :.:.:.7 9 Q 8.x.!.!.@X@X~.!.+X-X#X+X#X-X+X~.~.~.~.~.+X-X-X#X+X-X-X-X-X#X+X-X-X#X+X~.~.~.~.#X-X#X~.#X-X+X+X~.+X-X-X+X#X-X-X+X~.~.~.~.+X-X-X#X+X-X",
|
||||
";X;X;X;X+X#X;X;X#X+X+X&X&X&X&X,X1X=X<X2X5X5X9XwX0X7XaXsXo NX`.`.j `._.].j ].|.}.].].R.].}.{.}._.g D.D.lXB.`.x vXkXkXgXgXlXlXlXlXlXlXkXzXV.g vXkXkXzXg R.|.'.}.|.'.].].R.R.N.U.N.'.}.].'.g ].}.].}.}.'.V.yXyXtXiX0X0XqX9X=X=X&X&X&X+XOXOXOX6.W 9 r G G G G G r < r W | 6.6.8.8.6.6./ ! Q d r 9 9 9 9 9 9 t G G G G G 7 7 U Q a 7 1 G G G 1 7 U ! ! Q f i 1 7 G G G G 9 9 W | 5.R 7 1 G G G 1 7 a Q ! ! R i 1 7 G G G G 9 7 Q 8.8.6.| a 7 r G G 7 7 Q 6.6.6.6.6.8.8.8.6.8.8.6.! a 0 < r G G G G w 9 U / 5.| Q 9 9 G G G 9 r ! 6.8.8.6.8.8.~ r 9 G G G G r < 0 a f a 0 < t G G G 9 9 Q 5.6.| U w 9 G G G G G G G G G G G G G G G r 9 7 r G G G G 1 > > > q G G r 9 9 9 9 9 7 9 t G G G G 9 y | 8.g.OX!.OX@X!.!.#X;X+X+X;X#X+X+X+X!.+X+X;X;X;X+X#X;X;X;X;X#X+X#X;X;X+X+X+X!.+X;X;X+X+X;X;X+X+X!.+X#X;X#X+X;X;X#X+X!.+X+X#X;X;X+X+X;X",
|
||||
";X;X;X;X#X+X;X;X;X;X*X&X&X&X&X*X1X=X=X2X9X5XwXwXrXaXaX3X+ `.'.].j ].{.].j }.}.}.].].j ].}.'.].x D.kXlXlXN.`.g vXkXkXU.jXkXlXlXlXlXlXlXzXN.+ vXkXlXlXzXV.j '.}.}.}.}.}.R.).`.R.`.{.}.}.'.6 `.}.].].{.}.R.yXyXaXaX0XwXqX9X5X=X=X&X*X#XoXOX!.| i 7 G G G G G r < r Q 6.6.8.8.g.8.q.8.g.8.6.6.~ Q Q ! ! a r < t G G G G 7 7 a Q a 7 7 G G G 7 7 U ! ! ! ! f 7 7 G G G G 7 9 W | 5.R 7 7 G G G 7 7 a ! / / / U 7 9 G G G G 9 9 Q 8.8.8.! r 7 G G G 7 1 U / 6.6.6.6.6.8.8.| ! ! U t 9 9 t G G G G r < t ! 6.6.6.Q 9 7 G G r 9 f 6.6.8.8.8.8.8.6.f 9 t G G G G r 7 7 7 9 9 t G G G G 9 9 Q 8.6.6.| U 9 r G G G G G G G G t 9 r G G G G G G G G G G q > > > 1 G G G G G t 9 9 9 r G G G G G r 9 f 6.W.!.OXOXOX-X+X!.;X;X+X;X;X+X+X+X+X+X#X;X:X;X#X+X;X;X;X;X;X;X+X+X;X;X;X#X+X#X;X;X;X+X#X;X;X+X+X+X+X#X;X;X+X#X;X;X#X+X+X#X;X;X#X+X#X:X",
|
||||
";X;X:X;X;X&X&X;X:X:X,X*X&X&X&X=X<X<X5XqX9X0XiXwXrXaXsXC.(.{.{.[.T.'.{.'.R.].}.}.}.).j ].).R.R.6 vXkXlXkXN.`.gXlXkXkXD.lXlXlXlXlXlXlXlXlXU.g vXlXlXlXlXV.[.R.R.).].}.|.R.].{.].}.}.}.}.{.g `.{.}.].].].R.E.yXaXtXrXwX9X5X5X=X=X,X,X;XoX!.!.~ 0 > r F F F r < r Q 8.8.8.g.g.g.Q.W..Xg.Q.W.W.W.W.8.8.8.6.f 7 2 F F F F 7 1 i W a 7 7 F F F w 7 i ! / / ! a 1 7 F F F F 7 9 W | 6.W 7 9 F F F e 7 a ! / ! ! a 2 9 F F F F 9 9 Q 6.8.8.! 9 9 F F F r < w a W Q Q Q Q ! ! a r 9 9 9 t F F F F F r < r Q 6.8.8.8.Q 9 > 7 7 < y ~ 6.W.W.Q.8.W.8.8.| y 9 F F F F F F r 9 t F F F F F F 9 9 ! 8.8.6.6.! i 9 9 t F F F F F r < < < 0 F F F F F F F F q < 2 9 2 9 F F F F F F F F F F F F F F r < y | W.W.!.OXOX!.#X#X+X;X#X&X;X#X&X&X&X#X;X:X:X;X#X&X;X;X;X:X:X:X:X#X&X#X;X:X;X;X;X;X;X#X&X;X:X#X&X&X&X&X&X;X:X*X&X;X:X:X;X;X:X:X;X&X&X;X:X",
|
||||
":X,X*X&X&X&X&X&X*X,X1X1X1X*X=X=X=X2X5X9X9X0XwXrXtXaXyX+ `.|.}.R.[.{.}.].R.].}.}.}.|.R.'.).}.`.(.kXlXlXvXg g vXlXkXkXA.vXlXlXlXlXlXlXlXlXvXO zXkXkXlXkXvXg }.}.R.x ).|.R.}.|.}.|.|.}.}.}.j `.{._.}.].].R.E.yXyXrXtXwX0X0X9X<X2X1X,X&X^.!.!.| i > > 7 0 0 0 y Q 6.8..X.X.XOX!.!.!.OXOX!.W.W.W.W.W.8.8.8.~ r < t Z Z Z r < 0 U U 7 7 Z Z Z Z 7 9 a a U a 0 < r Z Z Z Z 7 9 Q | 6.W 7 9 Z Z Z Z 7 q a U f a 0 < r Z Z Z Z 7 9 Q 6.6.8.! 9 9 Z Z Z Z r < 7 7 7 9 9 9 9 9 9 9 9 y Z Z Z Z Z Z r < r Q 6.8.6.6.6.~ r > > > r ! 8.Q.W.W.Q..XQ.Q.Q.6.W 0 r Z Z Z Z Z Z Z Z Z Z Z Z Z Z 9 y / 8.8.8.8.6.~ W r < 7 0 9 9 9 9 y a e < 0 Z Z Z Z Z Z 0 < 0 a Q a 9 0 Z Z Z Z Z Z Z Z Z Z Z r 9 0 y ! 8.!.!.!.OX#X+X+X#X&X*X&X*X,X&X&X*X,X:X:X,X*X&X&X&X&X&X&X;X:X:X:X:X*X&X*X:X:X:X:X,X*X&X&X,X:X*X&X&X&X&X&X:X:X*X&X&X,X:X:X:X:X,X&X&X,X:X:X",
|
||||
",X*X&X*X,X,X,X,X*X&X*X,X1X1X<X=X5X9X5X5X0X0XrXrXtXyXyXg }._.].+ ].}.].).T.]._._.}.|.R.'.{.|.V.vXkXlXkXlXg g zXvXlXlXA.vXkXlXlXlXlXlXlXkXlXD.D.zXlXlXlXkXzXV.`.{.}.}.'.x ].}.}.}.}.}.}.|.g `.{._._.}.].).E.yXyXrXtXrX0XwXqX2X<X=X$X&X&XoXoXQ.! i 0 0 0 y W / 8.W.W.Q.!.!.!.!.OX!.oXoXOX!.!.!.W.Q..X.XQ.6.f 7 7 Z Z Z Z 1 1 a a 7 7 Z Z Z Z t 7 7 7 7 7 9 t Z Z Z Z r < r Q 6.| W 7 7 Z Z Z Z y 7 7 7 7 9 9 t Z Z Z Z y < y ~ 8.6.6.Q 9 9 Z Z Z Z Z t 9 7 7 9 9 9 9 9 y Z Z Z Z Z Z Z Z r < r Q 8.8.W.W.Q.8.8.Q y 0 y Q 8..X.X.X!.!.!.!.!.W.W.| i 0 0 y Z Z Z Z Z Z Z Z Z Z Z r 9 f 6.8.8.8.8.Q.W.6.Q y 0 0 0 9 y W / 6.W y 9 9 9 9 9 9 7 < 0 W / 6.Q i 7 9 9 t Z Z Z Z Z Z y 7 < r W | 8.OXOXOX!.!.+X&X&X&X&X&X&X*X*X&X*X1X1X,X*X&X&X*X,X1X,X,X*X&X*X1X1X1X1X*X&X*X*X*X*X&X*X*X*X,X1X,X&X&X&X&X*X1X1X*X*X*X&X*X,X*X*X&X&X,X1X1X1X",
|
||||
"*X&X,X1X1X1X1X1X1X,X*X=X=X<X<X2X9X5X5XwXwXwXtXtXyXyXC.R.'.}.R.g ].{.].T.'.'._.}.}.}.R.}.{.|.V.vXkXlXkXvXg (.lXlXlXlXA.vXlXlXlXlXlXlXlXkXkXvXO vXlXkXkXkXkXD./.}.].}.'.x '.{.}.}.}.}.}.{.j '.|.}.}.}.].).E.dXsXtXrXrXwXwXqX9X5X=X=X,X,XoXoXoX.X6.~ ~ ~ 6.8..X.X!.!.!.!.!.OXoXoX!.oXoXoXOX!.!.!.OXOX.XQ.W./ y < r C C C r < 9 t 1 7 C C C C C C r 9 9 r C C C C C C 9 e W 6.6.6.Q 7 7 C C C C C C r 9 9 t C C C C C C 9 r Q 8.8.8.6.Q 9 9 C C C C C C C C C C C C C C C C C C C C C y 0 0 y ! 8.Q.Q.W.Q..X.X.X8.6.~ 6.W.Q.!.!.OXoXOX!.!.OXOX.XQ.| W r < 7 9 9 0 9 9 y C C C r < y ~ W.Q..X.X.X.XQ.Q.W.| ~ ~ ~ ~ ~ 8.Q.8.6.~ f y 0 0 0 9 9 y W | 6.6.| ! U t 9 9 0 9 0 0 0 0 0 0 y ! 8.Q.Q.!.OXoXoX&X^.&X*X,X,X,X*X&X&X,X1X,X*X&X*X,X,X1X1X1X1X1X1X*X&X*X1X1X1X1X,X*X*X*X*X*X,X,X&X,X1X1X*X&X&X*X,X1X1X*X*X1X*X*X&X*X*X*X,X1X1X1X1X",
|
||||
"=X,X1X1X1X,X,X1X1X1X1X<X<X=X5X9X5X9XqXuXiXiXaXaXyXyXg `.{.`.o R.}.}.].R.].'.{.{.'.|.R.{.|.).(.lXlXzXkXlX* zXlXlXkXkXA.vXlXkXkXkXlXlXlXlXkXkXD.lXlXlXlXlXlXlXN.[._.{.].R.{.{.{.{.{.}.}.|.j '.{.}.}.}.'.).E.ZXdXsXtXrXrX0X0X9X9X2X<X>X>X%X%XoXoXoX.X!.!..X.XoXoXoXoXoXoXoXoX;X#X&X&X;X;XoXoXoXoXoXoX.XW.Q.8.Q r 9 b b b b < > < > 7 b b b b b b b b b b b b b b b r 0 W 6.8.8.8.! 9 7 b b b b b b b b b b b b b b b r 9 W 8.Q.Q.Q.8.! 0 0 b b b b b b b b b b b b b b b b b b b y 7 < r W / 8..X.XW.Q..X.X.X.X.X.XoXoXoXoXoX!.!.^.!.^.oXoXoXoXoX.XW.Q y 0 0 0 0 0 0 0 0 0 7 < r ! Q.W.Q..X.X.XoXoXoX.X.X.X.X.X.XW.Q..X.XQ.Q.8./ ~ ~ ~ ~ ~ / 8.8.8.8.8.8.8.~ ! W y 0 0 0 0 y W ~ 6.Q..X.XoXoX^.^.&X&X&X,X1X1X1X1X1X*X=X=X=X=X*X,X1X1X1X1X,X,X,X1X1X1X=X=X1X1X1X1X1X1X1X1X1X1X1X1X=X,X1X1X1X1X,X1X1X1X1X=X,X1X1X1X1X1X1X1X1X1X1X1X1X",
|
||||
"=X1X1X1X=X=X=X=X=X<X<X<X2X2X2X9X5XqXuXiXiXaXaXaXsXyX+ |.}.R.o [.}.}.].R.`.].'.{.'.).).}.}.V.vXvXlXlXlXvX* vXkXlXkXkXD.lXkXkXkXkXkXlXlXlXlXkXkXkXlXlXkXkXkXkXvXg [.}.`.T.{.{.{.{.}.|._.|.j }.}.{.'.'.'.).E.ZXdXsXaXtXrXwXwXqXqX9X<X=X$X$X^.^.XXoXoX.X^.oXoXoXoXoXoXoX;X,X,X,X,X*X&X*X,X,X,X;XoXoXoX!.!..X.X8.W 0 r b b 0 > > > > 7 b b b b b b b b b b b b b b r < y ~ 8.8.8.8.! 9 9 b b b b b b b b b b b b b b r < y / Q.Q.Q.Q.Q.~ 0 0 b b b b b b b b b b b b b b b y 0 0 0 0 0 y ! Q..X.X.X.X!..XoXoX!.^.!.^.^.XXoXoXoXoXoX&X^.%X,XoXoXoXoXoX.XW.| ~ ~ ~ ~ ~ ~ W y 0 0 y ~ Q..X!.!.oXoXoXoXoXoXoXoXoXoXoXoX!.!.!..X.X.X.X.X.XQ.W.W.Q..XQ.Q.Q.Q.Q.Q.Q.Q.Q.8./ ~ ~ ~ ~ ~ W.W.W.!.!.oXoXoX%X%X&X&X,X1X1X1X1X1X1X1X=X=X,X1X1X1X,X,X=X=X=X=X=X<X1X1X,X=X1X1X1X1X1X1X1X1X1X1X1X1X,X=X<X1X1X1X1X1X1X,X=X=X1X1X1X1X1X1X1X1X1X1X1X1X1X",
|
||||
"=X2X2X<X=X=X=X=X=X=X5X5X5X9XqX9X5XwXiXiXrXrXaXsXdXyXg |.|.o + `.|.}.].R.`.'.}.}.{.'.).'.].V.zXlXlXlXkXlXU.kXkXkXkXlXjXkXkXkXkXkXkXkXlXlXkXkXkXkXlXlXlXkXlXlXzXzXV.'.R.|.'.{.}.}.}.|.}.|.R.].{.}.'.'.}./.E.VXdXsXaXtXrXwXwX0X9X5X5X=X=X$X$X$X^.%X%XoX^.%X%X%X%X%X,X,X,X,X,X,X,X,X*X&X=X*X*X*X*X$X&X^.oXoX.X.X/ i 0 9 7 > > 7 7 > 7 b b b b r r b b b b b y 0 0 0 y Q 8.Q.W.W.Q.~ 0 9 b b b b r r b b b b b y 0 0 0 y Q Q..X.X.X.X.X~ 0 7 b b b b y 0 0 0 0 0 0 0 0 0 0 0 0 0 y W ~ 6.Q..X.XoXoXoX^.oXoXoX^.^.^.^.^.^.^.&X&X&X*X&X&X,X,X,X$X&X%XoXoXXX!.!.Q.Q.W.W.W.W.| ~ ~ | W.oXoXoX^.%X%X%X%X%X%X%X%X%XoXoXoXoX^.^.^.XX.X.X.X!.!.W.!..X.X.X.X.X.X.X.X.X.X.X.X.XW..X.X!.W.W.^.^.^.^.^.^.&X$X*X*X$X<X1X1X=X=X<X2X2X<X=X<X<X=X=X=X=X=X=X=X=X=X=X2X2X<X=X2X2X2X2X2X2X2X2X2X2X2X2X2X=X=X=X<X<X<X<X<X=X=X<X2X2X2X2X2X2X2X2X2X2X2X2X2X",
|
||||
"=X2X2X<X=X=X=X=X=X5X5X5X5X5X5X5X0XwXiXiXrXrXtXsXdXE.V.].R.B.o `.{.}.}.R.`.].}.].{.).).}.`.gXkXkXlXlXkXkXkXkXlXlXlXlXlXkXkXkXkXkXkXkXlXlXkXkXkXkXkXkXkXkXlXlXlXlXgXV.j |.}.}.}.}.}.|.}.}.R.].'.}.{.{.{.R.E.MXVXsXsXtXrXrX0X0X0X5X5X5X=X=X$X$X$X>X>X%X$X>X,X,X,X,X,X,X1X1X1X2X1X1X<X=X=X=X=X=X$X$X$X^.XXoXoX.XQ./ W y 9 9 t a a 7 7 v v v 0 < 7 7 7 0 0 0 0 0 y W ~ Q.Q.Q.W.W.W.~ 0 0 v v v e < 7 9 0 0 0 0 0 0 y W 6.W..X.X.X.X.X.X6.y < 7 0 0 0 0 0 0 0 0 0 0 0 0 0 y W ~ ~ 6.Q..X.XoXoXoXoXoX%X^.%X%X%X^.$X$X$X$X$X$X$X$X$X$X$X$X,X,X,X$X$X%X%X%XXX^.^.^.^.^.^.^.^.^.^.^.^.^.%X%X%X$X%X,X,X,X,X,X,X,X%X%X%X%X%X%X$X^.^.XXXX^.^.^.^.XXoXoXoXoXoXoXoXoXoXoXoXoXoX^.oXoXXX^.^.^.^.^.^.^.$X$X$X$X$X=X<X2X2X=X=X<X2X2X<X=X=X=X=X=X=X=X=X=X=X=X=X=X2X2X<X=X2X2X2X2X2X2X2X2X2X2X2X2X2X2X<X=X=X=X<X=X=X=X=X<X2X2X2X2X2X2X2X2X2X2X2X2X2X",
|
||||
"5X2X2X<X5X5X5X5X5X5X5X9X9XqXqX0X0XwXiXiXtXtXsXsXdXO `.[.o SXo ].}.}.}.R.].'.}.}.}.R.).{.h PXkXkXlXlXlXlXlXkXkXkXlXkXkXkXkXkXkXkXkXlXlXlXkXkXkXkXkXkXkXlXlXkXkXlXkXgX+ |.{.}.}.|.}.}.}.].T.}.{.{.{.}.{.x BXVXVXdXsXtXrXtXwXwX0X0X5X5X5X5X=X=X$X<X>X=X$X>X<X<X<X<X<X2X2X2X2X2X2X2X<X5X5X=X=X=X=X=X$X$X%X%X%XoX.X.XQ./ ~ ! ~ / W 9 7 v v y < e i y 0 0 0 y W ~ 6.W.W..X.X.XQ.Q.Q.~ 0 0 v v y < r a y 0 0 0 y W ~ 6.Q.^.^.oXoXoXoXoXoXQ.~ y 0 0 0 y W ~ ~ ~ ~ ~ ~ ~ ~ ~ 6.Q..X.X.XoXoX%X%X%X%X%X%X>X$X>X>X=X$X$X$X$X$X$X$X$X=X<X<X=X=X<X<X<X=X=X>X>X>X$X$X%X%XXXXX^.^.^.^.^.^.^.$X%X%X$X$X>X>X<X<X<X>X>X>X>X>X>X>X>X$X$X$X$X$X$X$X$X^.$X%X%X%X%X%X%X%X%X%X%X%X%X%X%X^.%X%X$X^.^.^.^.$X$X$X$X$X>X<X=X=X<X2X2X<X<X2X2X2X<X5X2X2X<X<X5X5X5X5X5X5X5X5X2X2X<X5X2X2X2X2X2X2X2X2X2X2X2X2X2X<X5X5X5X5X<X5X5X5X<X2X2X2X2X2X2X2X2X2X2X2X2X2X2X",
|
||||
"5X2X2X2X9X5X5X9X9X9XqXqXqXqX0X0X0XwXiXaXaXaXsXdXVXo [.R.+ nX+ ].{.}.}.T.].'.'.'.}.x T.].N.zXkXlXlXlXlXlXjXjXkXkXlXlXkXkXkXkXkXlXkXkXkXkXkXlXlXkXkXkXlXlXlXkXkXlXkXvXh '.{.{.}.].}.}.].`.).}.{.{.{.|.{.h AXZXZXdXsXyXrXtXtXiXiXwXqX9X9X5X5X=X<X<X<X=X=X<X<X<X<X2X2X2X2X2X2X2X2XqX5X5X9X2X2X2X2X<X=X$X=X>X%X%X%XXX.XQ.Q.Q.Q.Q.! 0 7 v v 7 7 f ~ ~ ~ ~ ~ 6.Q..X^.^.^.XXXXXX.X.X.X~ 0 7 v v 7 7 W 6.~ ~ ~ ~ ~ W.XX%X%X^.^.%X%X%X%X%X%X%XQ.6./ / / 6.W.W.Q..X.X.X.X.X^.^.^.XX%X%X%X%X%X%X%X>X>X>X>X>X$X<X<X<X=X=X=X=X=X<X<X<X<X<X=X5X5X<X<X2X2X<X<X<X>X$X$X$X%X%X%X%X%X$X$X$X^.$X$X>X>X$X$X<X<X<X<X<X<X<X>X>X>X>X<X=X$X$X=X>X>X>X>X>X$X$X$X>X>X>X>X>X>X>X>X>X>X>X>X>X$X%X>X%X$X$X$X$X$X=X>X>X>X>X5X5X5X<X2X2X2X2X2X2X2X5X5X9X9X2X2X2X2X9X9X5X5X5X9X2X2X9X5X2X2X2X2X2X2X2X2X2X2X2X2XqX5X5X9X2X2X2X2X2X9X5X9X2X2X2X2X2X2X2X2X2X2X2X2X2X",
|
||||
"5X9XqXqXqXqXqXqXqXqXqX9X9X0X0XwX0XrXtXaXaXaXsXsXVXo [.+ mXnXg ].}.'.'.'.T.].}.}.{.l R.`.fXkXkXkXlXD.A.D.D.D.D.U.kXkXkXkXkXkXkXlXkXkXkXkXlXlXgXD.D.U.jXlXjXkXlXlXkXzXR.{.{.'.|.}.|.}.}.R.`.'.'.{.{.{.{.g AXZXZXdXyXyXtXtXrXrXwXwXqXuXqXqXqXqX2X2X<X5X5X2X2X2X2X2X2X2X2X2XqXqXqX9X5XqXqXqXqXqX2X2X2X=X=X>X>X%X%X%XXXXX.XQ.Q.Q.~ y < 7 7 < y ~ Q.Q.Q..XXX^.^.^.^.XX^.^.XX%X%XXXXX6.y 7 7 7 < y ~ Q..X.X.XXXXX%X%X%X%X^.$X%X%X%X%X%X%X%X%X%X%X%X%X^.^.XX%XXX%XXX%X%X%XXX^.XX%X%X%X%X>X>X>X>X>X<X<X<X=X=X<X2X2X<X<X2X2X2X2X9X9X5X5X9X5X5X9X2X2X2X2X<X=X$X=X=X$X$X$X>X>X>X>X>X>X>X>X>X>X$X=X<X<X<X<X<X<X<X<X<X<X<X<X=X=X<X<X<X<X>X>X>X>X$X$X>X>X>X>X>X>X<X>X>X>X>X>X>X$X$X<X<X<X<X<X>X<X<X<X5X5X^.5X9X5X5X9XqXqXqXqXqX9X5X9X9X5X5X9XqXqXqXqXqXqXqXqXqXqX5X5XqXqXqXqXqXqXqXqXqXqXqXqX9X5XqXqXqXqXqXqXqXqX9X5XqXqXqXqXqXqXqXqXqXqXqXqXqX",
|
||||
"9X5X9XqXqXqXqXqXqX9X0X0X0XwXiXwX0XrXrXtXtXsXsXMXMXo `.g FXmXg }.}.{.{.'.R.].'.{.|.l R.R.vXkXlXvXlXlXvXkXU.D.gXvXkXkXkXkXkXkXjXjXjXjXjXkXlXlXlXlXvXvXgXD.U.vXlXvXkXD.`.{.{.].|.}.}.}.}.R.R.{.'.'.{.{.}.h AXZXVXMXyXyXtXaXaXtX0X0X0XwXqXqXqXqXqXqX5X5X9XqXqXqXqXqXqXqXqXqXqXqXqX5XqXqXqXqXqX9X9XqXqXqX5X5X<X>X>X$XXXXXXXXX.XQ.Q.~ r > > r ~ Q..XXXXX^.^.^.$X$X%X%X$X$X^.$XXXXXXXW.~ e > > y ~ W.W.^.XXXX%X%X%X%X>X$X$X$X>X>X>X>X>X>X>X$X$X%X%X%X^.$X%X%X%XXX$X$X%X%X%X$X$X>X>X>X>X>X>X<X<X<X2X2XqX9X5X9XqXqXqXqXqXqX9X5X5X9XqXqXqX9X5X5X9X9X9X9X5X5X5X<X<X<X=X=X5X$X>X>X>X>X<X<X9X5X5X5X9X9XqX9XqX9X9X9X9X9X9X9X5X9XqX<X9X9X5X9X9X9X9X5X5X9X9X9X9X9X9X<X<X<X<X<X<X=X5X<X<X<X2X<X<X9X5X6X6Xg E.9X9X5X5X5X9X9XqX9X5X5X6X9XqX9X9X5X6X9X9XqXqXqXqXqXqX9X9X9XqXqXqXqXqXqXqXqXqXqXqXqX5XqXqXqXqXqX9XqXqXqXqX9X9XqXqXqXqXqXqXqXqXqXqXqXqX",
|
||||
"qX9X5X9XqXqXqX0X0X0X0XwXwXiXwX0XrXtXrXrXyXyXyXMXVX* h CXFX Xg }.].'.'.].j ].}.{.|.l R.h vXkXlXlXD.O . C.zXkXjXjXjXjXhXhXhXhXjXjXjXjXjXD.N.N.N.D.jXD.lXkXkXV.`.|.}.}.}.].}.}.}.x R.{.}.{.{.{.].g CXCXVXMXsXyXyXtXaXaXiXwX0X0X0X0XwXqX9X5X9XqXqXqXqXqXqX9X9X5X9X9X5X9XqX9XqXqXqX9X5X5X5X9XqXqX9X5X9X=X$X$X$X^.^.XXXXXXXXQ.~ y y ~ W.XX^.^.^.^.$X%X>X>X$X$X$X$X$X$X$X^.^.^.W.~ i y ~ Q.XXXX^.^.^.$X$X$X$X$X$X>X>X<X<X<X<X=X$X$X$X$X$X$X>X$X>X>X>X$X$X$X$X$X>X>X$X$X>X$X$X5X5X5X5X9XqXqXqXqXqX9X5X9XqXqX9X9X5X9X9XqXqXqX9X9X9XqX5X5X5X5X5X5X9X9X5X5X9XqX9X9X5X6X6X6X6X6X5X6X6X9X9XqXqX8X8X8X6X6X6X$X6X9X9X5XqXqX9X5X6X6X6X6X8X8X6X6Xg E.6X6X6X6X6X9X9X9X9X9X9X5X5X5X9X9X9X6X6X6X6X8XX C.8X6X6X9X5X5X5X5X5X6X9X9X6X6X8X8X8X8X6X6X6X9X9X9X9X5X9XqXqXqXqXqXqX9X9X5X9X9X5X9XqX9XqXqXqX9X5X5X5X9XqXqXqX9XqX9X9X5X5X5X9XqXqXqXqXqX",
|
||||
"uXqXwX0X0X0X0X0XwXwXuXiXwX0XrXrXtXaXtXaXyXyXsXMXVXN.o CXDX Xh '.}.}.}.'.R.].|.}.{.l j V.vXvXB.. . . * lXjXjXhXhXI.I.F.I.I.hXhXhXjXN. . * gXvXkXN.].].}.}.}.}.}.{.].j T.{.}.{.'.}.`.E.CXCXZXVXsXsXyXyXrXtXaXiXiXwX0X0X0X0X0X0XuXuXuXuXuXqX0X0X0XwXwXwX0X0X0X0XqXuXwX0X0X0X0X0XqXqX9X5X5X5X9X9X>X$X$X^.$X%XXXXXQ.W.W.W.^.^.^.^.$X>X>X>X>X5X5X5X5X9X6X>X$X$X>X$X$XXXW.W.W.$X%X%X%X$X$X$X5X5X5X5XqX9X9X9XqX9X5X5X5X9X9X9X5X6X5X6X>X>X>X5X5X6X6X6X<X<X9X5X5X5X9X9X9X9X5X5X9XqXqXqXuXqXwX0X0X0X0X0XwXwXuXuXwX0X0X0XwXwX0XwX0X0XqX9X9XqX5X5X5X9XqXqX9X8X6X6X& E.6X6X8X8X8X8X8X8X6X6X6X8X8XX E.6X0X6XqXqX9X6X6X6X6X6X8X8X8XB.X B.8X8X8X8X6X6X8X8X8X8XqX9X9X9X9X9X6X6X8X8X8X8XX g 7X6X8X8X6XwX0X0XwX6X8X8X6X7X7X6X8X8X8X8X6X6X6X0X0X0XqXqXuXuXuXqX0X0X0XwXwXwX0X0X0X0XqXuXwX0X0X0X0X0XqXuXwX0X0X0XwXwXwXwX0X0XwXuXuXuX",
|
||||
"uXuXuXuXwX0X0XwXuXiXwXwX0XrXrXrXaXtXtXsXyXyXdXVXVXD. XCXDXE.V.'.{.|.{.}.R.`.|.}._.l 6 C.vXo . . O B.D.D.jXhXI.I.F.F.F.F.F.F.F.F.I.jX. . . . O zXN.].}.}.|.}.}.}.}.}.j T.{.}.'.}.].V.AXCXCXZXVXMXdXsXyXyXrXrXtXiXiXiXwX0XwXuXuXuXuXuXuXwX0X0XwXuXuXuXuXuXwX0X0XwXuXwX0X0X0X0X0XwXuX0X6X0XqXqXqX9X9X>X$X$X$X>X%X%X%X%X%X$X$X$X>X>X>X9X5X6X5X6X5X9X9X5X9X5X5X>X5X$X>X$X$X$X$X$X$X>X>X>X9X5X5X9XqXqXqXqXqXqX5X5X9XqXqXqXqX9X9X5X6X9X9X9X6X6X6X6X5X9XqX9X6X6XqXqXqXqXqXqX0X0XwXuXuXuXuXuXuXwX0X0XwXuXuXwX0X0X0X0X0XuXwX0XwX0X0XwXwX0XwX9X0X0X6X0X8X8X8X8X8XX C.8X8X8X8X8X8Xg & 7X8X8X8XE.X 8X8X6X6XwXwXwX6X7X7X7X7X X8X7XE.B.8X8XwXwXwX8X8X6X8X8X8XwXwXwXwXwX6X6X8X8X8X8X7XX g 7X7X8X8X6XwX0X0X8X8X6X8X7X7XE.7X7X7X8X8X8X8X6X8XwXwXwXwXwXuXwX0X0XwXuXuXuXuXuXwX0X0XwXuXwX0X0X0X0X0XwXuX0X0X0XwXuXuXuXuXuX0X0XwXuXuX",
|
||||
"iXiXiXiX0X0XwXiXiXwX0XrXrXrXrXaXaXyXyXsXyXMXVXZXVXO nXCXDXC.R.}.{.{._.).).R.).}._.j + (.A. . * gXvXlXlXkXjXI.I.I.F.F.F.F.F.F.F.F.F.F.I.D.gXgXD.* . . . h ).}.}.|.}.].}.{.{.6 R.}.{.}._.].+ FXCXCXZXZXMXsXsXyXyXyXrXrXrXtXiXiXwX0XwXiXiXiXiXiXwX0XwXiXiXiXwXwXiXiXwX0XwXiXwX0X0X0X0X0XiXiX0X0XwXwXwX9X9XqX9X9X6X6X9X>X>X>X>X>X6X6X9X9X9X6X6X6X6X6X6X9XqX6X8X9X6X6X9X9X6X5X9X6X6X6X6X6X6X9X9X9X9X6X9XqXqXwXwXwX0X0X0XwXwXwXwXqXqXqX8X6X9XqX9X6X6X6X6X0XqXqX0X0XwXwXwXwXwXwXuXiX0X0XwXiXiXiXiXiX0X0XwXiXiXwX0X0X0X0X0XwXiX0XwXiX0X0XwXwX0XwXiX0X0X0X0X0X0X8X8X8X$ E.7X8X8X8X8X8XE.X 7X8X8X7X* & 8XwX0X0XwXwX8X7X7X7XV.% X & 7X7X7X8X8X8X8X8X8X8X7X7X8XwXwXwXwXwX0X7X8X8X8X7X7X3X$ g 7X7X8X7X8X8X7X7X8X8X7X7XB.$ X g 3X3X3X7X7X7X7X7X8XwXwXwXiXiXwX0XwXiXiXiXwXwXiXiXwX0XwXiXwX0X0X0X0X0XiXiX0X0XwXiXiXwXwXiXiXiX0X0XwXiX",
|
||||
"iXiXiXwX0XwXiXiXwXrXrXrXrXrXtXaXtXyXsXsXyXMXVXZXVX* AXAXDXC.R._.{.}.].j V.V.].{._.6 O gXvX . B.zXvXlXlXlXlXkXhXI.I.F.F.F.F.F.F.F.F.F.F.F.I.F.hXjXlXlXvXD.O . . . |.].}.|.}.}.}.{.{.6 R.}.}.'.{.[.& FXCXCXCXZXVXVXdXsXyXyXrXrXrXrXtXiXiXwXwXiXiXiXiXwX0XwXiXiXwX0X0X0XwXiXiX0XwXiXiX0X0XrX0XwXiXwX0XwXiXwX0X0X0X0XwXqX9X6X6X8X8X8X8X9X6X6X8X8X8X6X6X6X6X6X0XwXwX0XwXwX6X6X9XqX6X6X8X6X6X6X6X6X6X6X8XqXwX0X0XwXiXwXiXwX0X0XiXiXwX0X0X0XwXwXwX0X0XwXwX0X6X0X6X0XwXwX0X0XwXwX0X0X0XwXiXiXwX0XwXiXiXiXiXwX0XwXiXiXwX0XrXrXrXrXwXiXwX0XwXwX0XrXwXiXwXwXiXwX0XrX0XrX7X7X7X4X$ V.3X4X4X4X4X7XE.X C.4X7X7X$ N.8XwXwXrXrXwX8X7X7X& # g B.X E.3X4X8X7XE.V.g g % X X X X % wXwX8X7X8X8X8X7X7XE.3X$ g 3X4X7X7X7X8X7X7X7X4X7X$ $ N.* # E.# V.3X3X4XE.7X7X8XwXwXiXwX0XwXiXiXwX0X0X0XwXiXiX0XwXiXiX0X0XrX0XwXiXwX0XwXiXiXwX0X0XwXiXiXwX0XwXiX",
|
||||
"iXiXiXwXrXiXiXwXrXrXrXrXrXrXaXaXyXyXsXsXyXMXVXZXD. XAXAXFXE.R.{.{.{.}.6 V.V.`.{.'.6 o vXlXO zXzXlXlXlXlXkXkXjXI.hXhXF.F.F.F.F.F.F.F.F.F.F.F.hXhXhXkXkXlXlXlXgXo g ).].}.|.}.}.}.{.}.6 R.{.'.}.{./.FXFXCXCXCXZXVXMXsXsXyXyXyXrXrXrXtXaXiXtXrXiXiXiXiXwXrXwXiXiXrXrXrXrXrXwXiXwXrXiXiXrXrXrXrXwXiXtXrXiXiXwXrX0X0X0X0XwXwX0X6X8XqX8X8X8X6X8XqX8X6X0X0X0X0X0XwXwX0X0XwXwX0X0X0XwX8X6X8X8X8X6X6X6X6X6X0XwXwXwX0XiXiXiXiXwXrXwXiXiX0X0X0X0X0XwXiXwX0XwXwX0X0X0X0XwXiXwX0XwXiXwXrXrXrXrXtXiXiXrXrXiXiXiXiXwXrXiXiXwXrXrXrXrXrXrXiXiXrXrXiXwXrXrXrXiXwXrXwXiXtXrXrXrX7X7X7X4X$ * 3X4X4X4X4X3X3X# C.3X3X3X# 7X7XeXwXeXrXeXeX7X% $ E.3X3X% C.3X4X7XV.g g g g g C.E.E.E.eXeXeXeX7XeXeXE.& # # 3X$ g 3X4X3XE.E.7X7X7X7XC.$ & 3X X X# V.@ g E. X* X V.3XeXeXwXiXwXrXwXiXiXrXrXrXrXrXwXiXwXrXiXiXrXrXrXrXwXiXtXrXiXiXtXrXrXrXrXtXiXiXrXrXiX",
|
||||
"aXaXaXtXrXaXaXaXrXrXrXrXrXtXaXaXyXsXsXyXMXMXMXZXZXCXCXAXFXE.R.}.}.}.[.6 D.zX/.{.].(.N.vXkXvXkXkXjXjXgXkXjXkXhXjXjXjXI.F.I.I.F.hXF.I.hXhXF.hXhXI.kXkXkXlXkXlXlXvXO V.|.}.}.}.}.}.}.{.].6 R.{.'.}.}.g FXDXCXCXCXZXZXVXVXdXsXyXyXyXrXrXtXaXaXtXrXaXaXaXaXtXrXaXaXtXrXrXrXrXrXtXaXaXrXtXaXtXrXrXrXaXaXrXtXaXaXrXrXrXrXrXrXiXiXwX0XwXwXwXwX0X0XwXwXwX0XrXrXrXrXtXaXtXrXtXiXrXrXrX0XwXwX0X0XwXwX0X0X0X0XrXrXiXiXtXrXaXaXaXaXtXrXaXaXtXrXrXrXrXrXtXaXaXrXtXaXtXrXrXrXaXaXrXtXaXaXrXrXrXrXrXtXaXaXtXrXaXaXaXaXtXrXaXaXaXrXrXrXrXrXtXaXtXrXtXaXtXrXrXrXaXaXrXtXaXaXrXrXrX7X7X7X4X$ @ & V.3X3X3X3X3X% % 3X3XV.$ 3X7XeXeXeX7XeXeX& & 3X X X X% C.& * 3X7X7X7X7XeXtXeXeX7XeXeXeXeXeX7X3X& X % g g 3X$ g 3X3XE.# % 3X3X3X3X$ N.3X X X X# E.# V.E.V.@ @ % 3X4XeXeXaXtXrXaXaXtXrXrXrXrXrXtXaXaXrXtXaXtXrXrXrXaXaXrXtXaXaXrXrXrXrXrXtXaXaXtXrXaX",
|
||||
"aXaXaXtXrXtXaXaXtXrXrXrXtXaXaXyXyXsXsXMXMXMXMXZXAXCXCXAXFXE.R.|.}.]./.g D.vXN.|.R.PXD.gXkXlXkXjXD.jXD.kXkXjXjXkXjXjXI.hXhXhXhXhXI.hXjXhXhXjXjXjXkXkXjXkXkXkXjXkXC./.|.}.}.}.}.}.}.}.].6 R.{.}.}.|.g FXDXCXCXCXZXZXVXMXdXdXsXyXyXyXyXaXaXaXtXtXaXaXaXaXtXrXaXaXaXrXrXrXrXrXrXtXaXtXrXaXaXrXrXtXaXtXrXaXaXtXrXrXrXrXrXtXaXaXtXrXtXiXwXiXtXrXtXiXaXrXrXrXrXtXaXaXtXtXaXaXrXrXrXrXtXaXtXrXwXaXtXrXrXrXrXtXaXaXrXtXaXaXaXaXtXrXaXaXaXrXrXrXrXrXrXtXaXtXrXaXaXrXrXtXaXtXrXaXaXtXrXrXrXrXrXtXaXaXtXtXaXaXaXaXtXrXtXaXaXtXrXrXrXtXaXaXtXtXaXaXtXrXrXrXaXaXtXtXaXaXtXrXrX7X7X4X4X% # # @ # % N.3X3XC.# E.3X& * 3X7X7XeXeXeX7Xg g 3XE.E. X= # E.% * 3X7X7X7X7XeXaXtXeXeXeXeXeXeX4XE.X % C.3X3X3X3X% g 3X3X& @ @ V.3X3X& V. X XE.E.= # (.# = E.% @ # # 3X4XeXeXaXtXrXaXaXaXrXrXrXrXrXrXtXaXtXrXaXaXrXrXtXaXtXrXaXaXtXrXrXrXrXrXtXaXaXtXtXaX",
|
||||
"aXaXaXaXtXtXaXaXaXyXyXyXsXsXsXyXsXdXdXMXMXMXVXCXAXAXCXFXFXE.R.}.{.].g h N.vXgX`.h vXgXU.jXjXjXjXjXjXjXjXkXjXkXkXjXjXjXjXjXjXjXjXjXjXkXjXkXkXkXkXkXkXkXjXjXjXjXkXV.].{.{.}.|.}.}.}.).|.j T.}.}.}.R.Z.FXDXDXCXCXCXZXZXMXVXdXsXsXyXyXsXaXaXaXyXaXaXaXaXaXaXtXtXaXaXtXrXrXrXrXrXtXaXaXtXaXaXtXrXtXaXtXtXaXtXrXrXrXrXrXtXaXaXaXrXtXaXaXaXaXaXrXtXaXaXaXtXtXtXaXaXaXyXtXaXaXrXrXrXrXtXaXaXrXtXaXaXtXrXtXtXaXaXaXyXaXaXaXaXaXaXtXtXaXaXtXrXrXrXrXrXtXaXaXtXaXaXtXrXtXaXtXtXaXtXrXrXrXrXrXtXaXaXaXtXtXaXaXaXaXaXtXtXaXaXaXtXtXtXaXaXaXyXtXaXaXtXrXrXyXtXaXaXrXtXaXaXtXeXeXeX4X4X% % XV.& # @ & 3X X% % 3X# V.3X7X7XeXeXeXeX4X4X3XV.% # @ # X% g 3X7X7XeXeXtXaXtXeXeXeXeXeXeXE.X g 4X4X4X3X3X3Xg % 3XE.# g # & 3X3X3X X XN.% # # & (.# = V.@ & C.@ N.4X4XeXpXtXrXtXaXaXtXrXrXrXrXrXtXaXaXtXaXaXtXrXtXaXtXtXaXtXrXrXrXrXrXtXaXaXaXtXtXaX",
|
||||
"aXaXaXaXaXyXyXaXaXaXsXsXsXsXyXyXsXdXVXMXMXMXVXCXAXAXCXDXFXE.V.{.{.`.= V.V.vXlXV.h zXjXD.jXjXhXjXlXkXjXjXjXkXkXkXkXkXkXkXjXkXlXlXlXlXlXkXkXkXkXlXkXkXjXjXjXjXhXjXV.].{.}.}.}.}.}.].R.}.j ).|.|.{.h HXFXDXDXCXCXCXZXZXVXMXdXdXdXsXsXsXsXsXyXyXaXaXaXaXaXaXyXyXaXaXaXaXyXyXyXyXyXyXaXyXyXaXyXyXaXaXyXaXaXyXyXyXyXyXaXaXaXaXtXyXaXaXaXaXaXaXtXyXtXaXaXaXaXaXaXaXyXyXaXaXaXyXyXrXyXyXaXaXyXyXaXaXaXaXaXaXaXaXyXyXaXaXaXaXaXaXyXyXaXaXaXaXyXyXyXyXyXyXaXyXyXaXyXyXaXaXyXaXaXyXyXyXyXyXaXaXaXaXyXyXaXaXaXaXaXaXaXyXyXaXaXaXaXaXaXaXyXyXaXaXaXyXyXyXyXyXaXaXyXyXaXaXaXaXeXeX4X4Xg # X X XC.# # 3X XN.@ % # 3X3X4XeXeXeXeXeX4X4X= @ # % # % X% g 3X4XeXeXpXaXaXeXeXtXeXeXeXE.X B.3X4X4X4X4X4X4XN.# X& % X= # 3X3X3XbX% @ # % # = (.# % # % XbX# % 4XeXeXeXaXyXyXaXaXaXaXyXyXyXyXyXyXaXyXyXaXyXyXaXaXyXaXaXyXyXyXyXyXaXaXaXaXyXyXaXaX",
|
||||
"sXsXsXsXsXyXyXsXsXsXsXsXsXyXyXyXdXdXVXMXMXVXCXCXAXAXDXDXFX Xh }.{.V.fXV.'.h zXV.V.zXlXB.jXhXhXI.hXhXhXhXjXkXkXkXkXlXlXlXF.jXlXlXlXlXjXkXlXkXkXlXkXjXjXjXjXjXhXjXh '.}.}.}.}.}.'.R.[.).j {.{.{.}.g HXFXDXDXDXCXCXZXZXVXMXVXVXdXdXdXsXsXyXyXsXsXsXsXsXsXsXsXyXyXsXsXsXsXsXyXyXyXyXsXsXyXsXsXyXsXsXyXsXsXyXyXyXyXsXsXsXsXyXyXsXsXsXsXsXsXsXsXyXyXsXsXsXsXsXsXyXyXyXsXsXsXyXyXyXyXyXsXsXsXyXyXsXsXsXsXsXsXyXyXsXsXsXsXsXsXsXsXyXyXsXsXsXsXsXyXyXyXyXsXsXyXsXsXyXsXsXyXsXsXyXyXyXyXsXsXsXsXyXyXsXsXsXsXsXsXsXsXyXyXsXsXsXsXsXsXyXyXyXsXsXsXyXyXyXyXyXsXsXsXyXyXsXsXsXpXeX4X3Xh # C.bXbXC.# % bXbXbX% @ # % 4X4XeXeXeXeXeX4XC.@ % E.V.# % bX% g 3X4XeXpXpXsXyXyXpXpXyXeXeX% & 4X4X4X4X4X4X4X4XC.@ & @ C.3XE.@ E.bXbXg @ = (.k # = fX% @ # C.bXbX& X V.eXeXpXsXsXyXyXsXsXsXsXsXyXyXyXyXsXsXyXsXsXyXsXsXyXsXsXyXyXyXyXsXsXsXsXyXyXsXsXsX",
|
||||
"sXsXsXsXsXsXsXyXyXsXsXsXyXyXsXMXZXZXVXMXMXCXCXCXAXAXFXDXFXE.g |.{.g IXh ).l g V.V.vXvXN.jXhXI.I.I.I.hXhXjXjXkXkXlXlXkXlXN.Z.Z.Z.Z.Z.Z.N.lXkXkXlXkXjXjXhXhXI.I.hXh }.}.}.}.].}.}.j ].R.j |.'.'.'.g HXFXDXDXDXCXCXAXZXVXVXVXMXVXVXsXyXyXyXsXdXsXsXsXsXyXyXyXyXyXyXyXsXsXsXsXsXyXyXyXsXyXyXyXyXsXyXsXsXyXyXyXsXsXsXsXsXyXyXyXyXyXyXsXsXsXsXsXsXsXyXyXsXsXsXyXyXsXyXsXsXsXyXyXyXyXyXsXsXsXyXyXyXyXsXsXyXyXyXsXdXsXsXsXsXyXyXyXyXyXyXyXsXsXsXsXsXyXyXyXsXyXyXyXyXsXyXsXsXyXyXyXsXsXsXsXsXyXyXyXyXyXyXsXsXsXsXsXsXsXyXyXsXsXsXyXyXsXyXsXsXsXyXyXyXyXyXsXsXsXyXyXyXyXsXyXeX4XnXC.@ # & % # % E.bXbXbXE.# X g 4XeXeXeXeXeXeXnXg @ % & @ @ # bX% % 4XeXpXpXyXyXyXyXyXyXeXeXeXX % 4X4X4XnXE.g * E.bX# X & bXbXbX# & bXbX% @ = % @ @ & bX% @ N.bXbXbXC.X X E.eXeXyXyXyXyXyXyXsXsXsXsXsXyXyXyXsXyXyXyXyXsXyXsXsXyXyXyXsXsXsXsXsXyXyXyXyXyXyX",
|
||||
"dXdXdXdXdXdXdXsXsXyXyXyXsXdXVXMXVXZXZXVXCXCXCXAXAXAXDXDXFXFXg ).].N.IXh T.l l j 6 g V.+ zXhXI.I.I.I.I.hXjXjXkXlXlXlXlXjXZ.S.S.Z.Z.Z.Z.N.lXvXlXlXkXjXhXhXI.I.I.hXV.{.}.}.}.].'.|.T.'.R.j |.R.|.R.D.HXFXFXDXDXCXAXAXZXVXVXZXVXVXMXMXMXsXdXdXdXdXdXsXyXyXsXsXsXsXsXyXyXyXsXsXdXsXyXyXsXyXyXyXyXyXyXyXyXyXsXdXdXsXyXyXyXsXsXdXsXsXyXyXsXdXdXdXdXdXsXsXyXyXyXsXsXsXyXsXdXsXsXyXyXyXsXdXdXsXyXdXsXyXyXyXyXsXsXdXdXdXdXsXyXyXsXsXsXsXsXyXyXyXsXsXdXsXyXyXsXyXyXyXyXyXyXyXyXyXsXdXdXsXyXyXyXsXsXdXsXsXyXyXsXdXdXdXdXdXsXsXyXyXyXsXsXsXyXsXdXsXsXyXyXyXsXdXdXsXyXdXsXyXyXyXeXeXeX4X# X # % N.bXbXnXnXnXbX$ $ nXnXeXyXpXyXmXeXnXE.# # # # % V.bX& X E.eXeXyXyXyXsXdXsXsXyXmXeXB.X $ $ X X $ N.nXnXnX$ # XnXnXnX% # E.bXN.# # # # & E.bXV.h bXbXnX4X4X* B.eXeXyXyXsXsXsXsXyXyXyXsXsXdXsXyXyXsXyXyXyXyXyXyXyXyXyXsXdXdXsXyXyXyXsXsXdXsXsXyX",
|
||||
"dXdXdXdXdXdXdXdXdXdXZXZXZXZXZXMXVXZXZXZXZXAXAXAXAXAXDXFXHXSX+ ]./.(.IX& T.l z l l l l 6 zXhXI.I.I.I.I.hXhXjXkXlXlXkXkXlX= Z.S.S.S.Z.S.N.lXlXlXlXjXhXhXhXI.I.F.hXR.{.'.{.'._.'.V.].}.x l |.j '.6 GXJXHXFXFXFXAXAXAXAXCXVXZXZXZXZXZXZXZXZXdXdXdXdXVXMXVXdXdXdXdXdXdXdXVXMXMXVXdXdXVXMXMXVXdXdXdXVXMXMXVXdXVXMXMXMXVXdXdXdXdXdXdXdXVXMXVXdXdXdXdXdXdXdXdXdXdXdXdXMXVXdXdXdXdXdXdXdXdXdXMXVXdXdXdXdXdXdXdXdXdXdXdXdXVXMXVXdXdXdXdXdXdXdXVXMXMXVXdXdXVXMXMXVXdXdXdXVXMXMXVXdXVXMXMXMXVXdXdXdXdXdXdXdXVXMXVXdXdXdXdXdXdXdXdXdXdXdXdXMXVXdXdXdXdXdXdXdXdXdXMXVXdXdXdXdXsXpXBXmXmXE.C. XnXnXnXnXnXnXnXnX# C.nXnXmXmXpXsXMXmXmXnXnXnXbXbXbXbXnXV.& mXmXmXVXsXdXdXdXdXdXsXmXmXmXmXE.E.E. XmXmXmXmXmXB. XnXnXnXnXN.X C.nXnXnXbXbXbXnXnXnXnXnXnXnXmXmXmXmXBXmXmXVXdXdXdXdXdXdXdXVXMXMXVXdXdXVXMXMXVXdXdXdXVXMXMXVXdXVXMXMXMXVXdXdXdXdXdXdXdX",
|
||||
"ZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXVXVXZXZXZXAXAXAXAXAXDXDXFXHXSX+ `.g JXIX& T.z z z z l l g = jXhXI.I.I.I.hXjXjXkXlXlXlXkXlXZ.Z.Z.Z.Z.Z.k jXlXlXkXkXjXjXhXhXI.I.I.hXR.|.'.}.}.}.}.j '.}.j j '.T.|.& GXGXHXHXFXFXAXAXAXCXCXZXZXZXZXZXZXZXZXZXZXZXZXZXMXVXZXZXZXVXVXZXZXZXZXZXVXVXMXVXMXVXVXZXZXZXZXZXVXMXVXMXMXVXVXZXZXZXZXVXVXVXZXZXZXMXMXZXZXZXZXZXZXZXZXZXZXZXZXVXMXVXZXZXZXZXZXZXVXVXMXZXZXZXZXZXZXZXZXZXZXZXZXZXMXVXZXZXZXVXVXZXZXZXZXZXVXVXMXVXMXVXVXZXZXZXZXZXVXMXVXMXMXVXVXZXZXZXZXVXVXVXZXZXZXMXMXZXZXZXZXZXZXZXZXZXZXZXZXVXMXVXZXZXZXZXZXZXVXVXMXZXZXZXZXZXZXVXBXBXBXmXmXmXnXmXmXmXmXnXnXnX# E.mXmXmXmXMXMXMXmXmXmXmXnXnXnXnXnXnXnXmXmXBXVXVXVXZXVXVXVXVXVXVXmXmXBXBXBXBXBXBXBXBXBXBXmXmXmXmXmXmXmXE.mXmXnXnXnXnXnXnXnXmXmXmXmXBXBXBXBXBXBXMXVXVXZXVXVXVXZXZXZXZXZXVXVXMXVXMXVXVXZXZXZXZXZXVXMXVXMXMXVXVXZXZXZXZXVXVXVXZXZX",
|
||||
"ZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXVXCXCXCXAXAXAXAXDXDXFXHXHXHX+ [.+ IXIX& T.z l l z l l E.KXZ.jXI.I.I.hXhXjXkXlXlXlXlXlXlXlXF.Z.N.Z.Z.lXlXlXkXkXkXjXjXhXhXI.I.I.F.`.{.{.'.'.|.T.j `._.j l j |.`.N.GXGXGXFXFXFXFXAXCXCXAXAXAXZXZXZXZXZXZXZXZXZXZXZXVXZXZXZXVXMXMXVXVXVXVXZXZXZXZXVXMXVXZXZXZXZXZXZXZXVXMXVXZXZXZXZXVXVXVXMXMXMXVXZXZXVXVXZXZXZXZXZXZXZXZXZXZXZXZXZXVXVXVXVXVXVXVXVXVXVXVXZXZXZXZXZXZXZXZXZXZXZXZXZXVXZXZXZXVXMXMXVXVXVXVXZXZXZXZXVXMXVXZXZXZXZXZXZXZXVXMXVXZXZXZXZXVXVXVXMXMXMXVXZXZXVXVXZXZXZXZXZXZXZXZXZXZXZXZXZXVXVXVXVXVXVXVXVXVXVXVXZXZXZXZXZXZXZXVXVXBXBXBXBXmXBXBXmXmXmXnX X# XmXmXBXBXVXVXMXVXBXBXBXmXmXmXmXmXmXmXBXBXVXVXVXVXVXMXMXMXVXZXZXBXmXBXBXBXBXBXBXBXBXBXBXBXBXBXmXmXmXmXmXmXmXmXmXmXmXmXmXBXBXBXBXBXBXBXBXVXVXVXMXVXZXVXVXMXMXVXVXVXVXZXZXZXZXVXMXVXZXZXZXZXZXZXZXVXMXVXZXZXZXZXVXVXVXMXMXMXVXZX",
|
||||
"ZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXAXCXCXCXCXCXCXDXDXDXFXFXHXHX+ (.JXIXIX+ R.z z l l z j UXUXg V.gXI.I.hXhXjXkXkXlXlXlXlXlXlXkXlXlXkXlXlXlXlXkXkXkXkXjXhXhXhXI.hXN.`.{.{.}.}.'.j 6 `.}.j R.+ '.x JXJXGXGXGXFXFXDXDXDXCXAXAXAXAXAXZXZXZXZXZXZXZXZXZXVXZXZXVXMXMXVXVXVXMXVXVXVXVXZXVXVXZXZXZXVXVXZXZXZXVXVXVXVXVXVXVXMXMXVXVXVXVXVXZXZXVXVXZXZXZXZXZXZXZXZXZXZXZXZXZXZXVXVXVXVXVXVXVXVXVXVXZXZXZXZXZXZXZXZXZXZXZXZXZXVXZXZXVXMXMXVXVXVXMXVXVXVXVXZXVXVXZXZXZXVXVXZXZXZXVXVXVXVXVXVXVXMXMXVXVXVXVXVXZXZXVXVXZXZXZXZXZXZXZXZXZXZXZXZXZXZXVXVXVXVXVXVXVXVXVXVXZXZXZXZXZXZXZXZXZXVXBXBXBXmXVXBXBXmXmXmXE.X mXmXmXmXBXVXVXMXZXZXVXmXmXBXBXBXmXmXBXBXMXMXMXMXMXVXVXVXVXMXZXZXVXMXVXVXVXVXVXVXVXVXVXVXVXVXVXVXMXmXmXmXmXmXmXmXmXmXBXBXBXBXVXVXZXZXZXZXZXZXZXMXZXZXVXMXMXVXVXVXMXVXVXVXVXZXVXVXZXZXZXVXVXZXZXZXVXVXVXVXVXVXVXMXMXVXVXVXVXVXZX",
|
||||
"ZXZXZXZXZXZXZXZXZXZXZXZXAXAXAXAXAXCXCXCXCXAXDXDXDXFXFXHXHXJXB.g JXIXIX& R.z z z l l g UXUXh l o N.gXzXkXkXkXkXkXlXlXkXlXlXlXkXkXkXkXlXlXlXlXkXkXkXkXjXhXjXzXV.+ |.{.}.}.}.|.6 6 [.|.g + & `.g JXJXGXGXGXFXFXFXDXDXAXAXAXAXAXAXAXAXAXZXZXZXZXZXZXCXZXZXCXCXCXCXCXCXCXCXCXCXCXCXCXCXAXZXAXCXCXCXZXZXCXCXCXCXCXCXCXCXCXCXCXCXCXCXZXZXCXCXZXZXZXZXZXZXZXZXZXZXZXZXZXCXCXCXCXCXCXCXCXCXCXZXZXZXZXZXZXZXZXZXZXZXZXZXZXCXZXZXCXCXCXCXCXCXCXCXCXCXCXCXCXCXAXZXAXCXCXCXZXZXCXCXCXCXCXCXCXCXCXCXCXCXCXCXZXZXCXCXZXZXZXZXZXZXZXZXZXZXZXZXZXCXCXCXCXCXCXCXCXCXCXZXZXZXZXZXZXZXZXZXZXZXZXZXZXMXZXZXCXmXmXmXE.X E.mXmXmXMXMXCXCXZXZXZXCXMXCXZXZXCXMXMXMXMXCXCXCXCXCXCXCXCXCXZXZXCXCXZXZXZXZXZXZXZXZXZXZXZXZXZXCXMXMXCXMXCXCXMXMXCXZXZXZXZXZXZXZXZXZXZXZXZXZXZXCXZXZXCXCXCXCXCXCXCXCXCXCXCXCXCXCXAXZXAXCXCXCXZXZXCXCXCXCXCXCXCXCXCXCXCXCXCXCXZX",
|
||||
"AXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXFXFXFXDXFXHXHXJXh & JXIXIX= R.z z z z l V.UXUX& l + h j g (.zXzXkXlXlXlXkXlXlXlXlXlXkXkXlXlXkXkXkXkXkXjXjXlXgXg j 6 |.{.}.{.}.j l j [.].+ N.& [.* IXGXGXGXHXHXFXFXFXDXDXAXAXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXCXCXCXCXCXCXCXCXCXAXAXCXCXAXAXAXAXCXAXAXAXCXCXAXAXCXCXCXCXCXCXCXCXCXCXAXAXAXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXCXCXAXAXAXAXAXCXCXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXCXCXCXCXCXCXCXCXCXAXAXCXCXAXAXAXAXCXAXAXAXCXCXAXAXCXCXCXCXCXCXCXCXCXCXAXAXAXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXCXCXAXAXAXAXAXCXCXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXCXmXmXmXmXX B.mXmXCXCXAXCXCXAXAXAXCXCXAXAXAXCXCXAXAXCXCXCXCXCXCXCXCXCXCXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXCXCXAXAXAXAXAXCXCXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXCXCXCXCXCXCXCXCXCXAXAXCXCXAXAXAXAXCXAXAXAXCXCXAXAXCXCXCXCXCXCXCXCXCXCXAX",
|
||||
"AXAXAXAXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXFXFXFXFXFXFXFXFXHXJXJXSXJXIXIXxXR.l l z z j UXUXUX& V.g & j l j g V.gXzXzXlXlXlXlXlXlXlXvXkXlXlXkXkXlXlXzXgXD.g j l l 6 |.}.{.}.|.6 l l R.).+ KXfX(.(.LXGXJXJXJXHXHXFXHXFXFXDXAXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXCXCXCXCXCXAXAXAXAXAXCXCXCXAXAXAXAXAXAXAXAXCXCXCXAXAXAXAXAXAXCXCXCXCXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXCXCXCXCXCXAXAXAXAXAXCXCXCXAXAXAXAXAXAXAXAXCXCXCXAXAXAXAXAXAXCXCXCXCXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXCXMXCXCXbXnXCXAXAXAXCXCXCXAXAXAXAXAXAXAXAXCXCXCXAXAXAXAXAXAXCXCXCXCXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXCXCXCXCXCXAXAXAXAXAXCXCXCXAXAXAXAXAXAXAXAXCXCXCXAXAXAXAXAXAXCXCXCXCXAXAX",
|
||||
"AXAXAXAXAXAXAXAXAXAXAXAXAXAXAXDXAXAXFXFXFXFXFXFXHXHXGXGXJXJXJXJXIXIXIXxXh l l l l + UXUXUX(.x KX& x l l l l j j h (.zXzXlXlXlXlXkXkXlXkXlXzXgXV.h j j l l l l 6 |.}.}.}.R.l z l 6 R.Z.UXfXh N.LXJXJXJXJXGXGXFXFXFXFXDXDXFXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXCXCXCXAXCXCXAXAXAXAXAXAXCXCXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXCXCXCXAXCXCXAXAXAXAXAXAXCXCXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXCXCXCXCXAXCXCXAXAXAXAXAXAXCXCXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXCXAXAXAXAXAXAXAXAXAXAXAXAXAXCXCXAXAXAXAXAXAXAXAXAXAXCXCXCXAXCXCXAXAXAXAXAXAXCXCXAXAXCXCXAXAXAXAXAXAXAXAXAXAX",
|
||||
"AXAXAXAXAXAXAXAXDXDXDXDXDXAXAXDXFXFXFXDXDXDXDXFXHXHXGXGXJXGXGXLXLXLXIXIXg l l l l NXUXUXUXfXh KXD.j z z z l l l j 6 + & A.jXlXlXjXD.A.N.* g j l z l l l l l z 6 }.'._.|.j l z l 6 V.D.UXKX& fXLXJXJXJXGXGXGXGXFXHXFXFXDXFXDXDXDXDXDXDXAXAXAXAXAXAXDXAXAXAXAXAXAXAXAXDXDXDXAXAXAXDXDXDXDXAXAXAXDXDXDXAXAXAXAXDXDXDXAXAXAXAXAXAXAXDXDXDXAXAXAXAXAXDXDXDXDXDXAXAXDXAXAXAXDXDXDXDXAXAXAXAXDXAXDXDXDXDXDXDXAXAXAXAXAXAXDXAXAXAXAXAXAXAXAXDXDXDXAXAXAXDXDXDXDXAXAXAXDXDXDXAXAXAXAXDXDXDXAXAXAXAXAXAXAXDXDXDXAXAXAXAXAXDXDXDXDXDXAXAXDXAXAXAXDXDXDXDXAXAXAXAXDXAXDXDXDXDXDXDXAXAXAXAXAXAXDXAXAXAXAXAXAXAXCXDXDXDXAXAXAXDXDXDXDXAXAXAXDXDXDXAXAXAXAXDXDXDXAXAXAXAXAXAXAXDXDXDXAXAXAXAXAXDXDXDXDXDXAXAXDXAXAXAXDXDXDXDXAXAXAXAXDXAXDXDXDXDXDXDXAXAXAXAXAXAXDXAXAXAXAXAXAXAXAXDXDXDXAXAXAXDXDXDXDXAXAXAXDXDXDXAXAXAXAXDXDXDXAXAXAXAXAXAXAX",
|
||||
"FXFXFXFXFXFXDXDXDXFXFXFXFXDXDXDXFXFXFXDXDXFXGXGXHXJXGXGXGXGXJXIXIXIXIXIX* l l l 6 UXUXUXUXUX* KXUXg l l l z j j V.fXfX* S.- - = N.Z.S.Z.g j j j l z l + R.l l 6 |.'.}.R.j l z l o g gXUXUX* IXIXIXJXJXGXGXGXGXGXHXHXFXFXFXFXFXFXFXFXDXDXFXFXFXFXFXDXDXDXFXFXFXDXDXDXFXFXFXFXFXDXDXFXDXDXDXDXDXDXFXDXDXDXFXFXFXFXDXDXDXFXFXFXDXDXDXFXFXFXFXFXDXDXDXFXFXFXFXDXDXDXFXFXFXDXDXDXDXDXFXFXFXDXDXDXFXFXFXFXDXDXFXFXFXFXFXDXDXDXFXFXFXDXDXDXFXFXFXFXFXDXDXFXDXDXDXDXDXDXFXDXDXDXFXFXFXFXDXDXDXFXFXFXDXDXDXFXFXFXFXFXDXDXDXFXFXFXFXDXDXDXFXFXFXDXDXDXDXDXFXFXFXDXDXDXFXFXFXFXDXDXFXFXFXFXFXDXDXDXFXFXFXDXDXDXDXFXFXFXFXDXDXFXDXDXDXDXDXDXFXDXDXDXFXFXFXFXDXDXDXFXFXFXDXDXDXFXFXFXFXFXDXDXDXFXFXFXFXDXDXDXFXFXFXDXDXDXDXDXFXFXFXDXDXDXFXFXFXFXDXDXFXFXFXFXFXDXDXDXFXFXFXDXDXDXFXFXFXFXFXDXDXFXDXDXDXDXDXDXFXDXDXDXFXFXFXFXDXDXDXFXFXFXDXDX",
|
||||
"FXFXFXHXFXFXDXFXFXFXFXFXFXFXDXDXFXFXFXDXFXGXGXGXHXJXGXGXGXJXJXIXIXIXIXUXB.j l l + UXUXUXUXUXO KXUX% j z l R.o C.fXfXfXN.S.S.S.S.S.S.S.- fXfXfXC.j l g * R.l l + |.|.].g j z l 6 O * UXUXUXN.IXLXIXJXJXGXGXGXGXGXHXHXFXDXFXFXFXFXFXFXFXFXDXFXFXFXHXFXFXFXFXFXDXDXFXFXHXFXFXFXDXDXFXFXDXFXFXFXFXFXFXFXDXDXDXFXFXHXFXFXFXDXDXFXFXFXFXHXFXHXFXFXDXFXFXFXFXFXFXFXDXDXFXFXFXDXDXDXDXDXFXHXFXDXFXFXFXFXFXFXFXFXDXFXFXFXHXFXFXFXFXFXDXDXFXFXHXFXFXFXDXDXFXFXDXFXFXFXFXFXFXFXDXDXDXFXFXHXFXFXFXDXDXFXFXFXFXHXFXHXFXFXDXFXFXFXFXFXFXFXDXDXFXFXFXDXDXDXDXDXFXHXFXDXFXFXFXFXFXFXFXFXDXFXFXFXHXFXFXFXFXDXDXDXFXFXFXFXFXFXDXDXFXFXDXFXFXFXFXFXFXFXDXDXDXFXFXHXFXFXFXDXDXFXFXFXFXHXFXHXFXFXDXFXFXFXFXFXFXFXDXDXFXFXFXDXDXDXDXDXFXHXFXDXFXFXFXFXFXFXFXFXDXFXFXFXHXFXFXFXFXFXDXDXFXFXHXFXFXFXDXDXFXFXDXFXFXFXFXFXFXFXDXDXDXFXFXHXFXFXFXDXDXFXFXFX",
|
||||
"HXHXHXHXFXFXFXHXHXFXFXFXHXFXFXFXFXHXFXGXGXGXGXGXJXJXGXGXJXJXIXIXKXcXcXcXKXg l j (.UXUXUXUXUXO KXUXgXh z j g E.fXfXfXfXB.S.S.S.S.S.S.S.= fXC.fXfXV.h N.U.+ j 6 + `.{.`.V.g z j C.- - KXUXUXIXIXIXIXIXIXLXGXGXGXfXJXHXGXGXGXHXFXFXFXHXHXHXFXFXFXHXHXHXHXHXFXFXFXFXHXHXFXFXFXFXFXFXHXFXFXFXFXFXFXFXFXHXFXFXFXFXFXFXHXHXHXFXFXFXHXHXHXHXHXHXFXFXFXHXHXFXFXFXHXFXFXFXFXHXFXFXFXFXFXFXHXHXFXFXFXHXFXFXFXHXHXHXFXFXFXHXHXHXHXHXFXFXFXFXHXHXFXFXFXFXFXFXHXFXFXFXFXFXFXFXFXHXFXFXFXFXFXFXHXHXHXFXFXFXHXHXHXHXHXHXFXFXFXHXHXFXFXFXHXFXFXFXFXHXFXFXFXFXFXFXHXHXFXFXFXHXFXFXFXHXHXHXFXFXFXHXHXHXHXHXFXFXFXFXHXHXFXFXFXFXFXFXHXFXFXFXFXFXFXFXFXHXFXFXFXFXFXFXHXHXHXFXFXFXHXHXHXHXHXHXFXFXFXHXHXFXFXFXHXFXFXFXFXHXFXFXFXFXFXFXHXHXFXFXFXHXFXFXFXHXHXHXFXFXFXHXHXHXHXHXFXFXFXFXHXHXFXFXFXFXFXFXHXFXFXFXFXFXFXFXFXHXFXFXFXFXFXFXHXHXHXFXFXFXHXHX",
|
||||
"HXHXHXFXGXGXHXHXFXGXGXGXGXHXHXGXGXHXHXGXGXGXGXGXJXJXGXJXJXIXIXIXIXIXUXUXUXO z g Y.H.; J.PXUXB.PXUXUXO 6 C.fXfXfXfXfXD.N.S.S.S.S.S.S.S.= B.fXfXfXNX. D.A.zXvXgXg /._.g vXg l g UXH.UXUXUXUXUXIXIXIXIXIXLXGXGXGXGXJXJXGXGXHXHXGXGXGXGXHXHXFXGXGXHXHXHXHXHXGXGXFXHXHXGXGXGXGXGXGXFXHXGXGXHXGXGXFXFXGXFXHXGXGXGXGXGXGXFXHXHXFXGXFXHXHXHXHXFXGXGXHXHXFXGXGXGXGXHXHXGXGXHXHXGXGXGXGXGXHXFXGXGXHXHXGXGXGXGXHXHXFXGXGXHXHXHXHXHXGXGXFXHXHXGXGXGXGXGXGXFXHXGXGXHXGXGXFXFXGXFXHXGXGXGXGXGXGXFXHXHXFXGXFXHXHXHXHXFXGXGXHXHXFXGXGXGXGXHXHXGXGXHXHXGXGXGXGXGXHXFXGXGXHXHXGXGXGXGXHXHXFXGXGXHXHXHXHXHXGXGXFXHXHXGXGXGXGXGXGXFXHXGXGXHXGXGXFXFXGXFXHXGXGXGXGXGXGXFXHXHXFXGXFXHXHXHXHXFXGXGXHXHXFXGXGXGXGXHXHXGXGXHXHXGXGXGXGXGXHXFXGXGXHXHXGXGXGXGXHXHXFXGXGXHXHXHXHXHXGXGXFXHXHXGXGXGXGXGXGXFXHXGXGXHXGXGXFXFXGXFXHXGXGXGXGXGXGXFXHXHXFXGXFXHX",
|
||||
"JXJXJXGXGXHXHXHXGXGXGXGXGXHXHXGXGXJXJXGXGXGXGXJXJXJXLXIXIXIXIXIXIXIXUXUXUXA.j g ; ; : ; ; ; A.H.H.H.O fXfXfXfXfXfXfXB.= S.S.S.S.S.S.S.& fXfXB.D.D.= kXkXkXkXlXlX(.V.D.cXg 6 UXUXU.UXUXUXUXUXUXIXIXIXIXLXLXGXGXJXJXGXGXJXJXGXGXGXGXGXGXJXJXGXGXJXHXHXHXGXGXGXJXJXGXGXGXGXGXGXGXJXGXGXHXHXGXGXGXJXGXGXJXGXGXGXGXGXGXGXGXJXJXGXGXJXHXHXHXGXGXHXHXHXGXGXGXGXGXHXHXGXGXHXJXGXGXGXGXGXHXGXGXHXHXGXGXGXGXGXGXJXJXGXGXJXHXHXHXGXGXGXJXJXGXGXGXGXGXGXGXJXGXGXHXHXGXGXGXJXGXGXJXGXGXGXGXGXGXGXGXJXJXGXGXJXHXHXHXGXGXHXHXHXGXGXGXGXGXHXHXGXGXHXJXGXGXGXGXGXHXGXGXHXHXGXGXGXGXGXGXJXJXGXGXJXHXHXHXGXGXGXJXJXGXGXGXGXGXGXGXJXGXGXHXHXGXGXGXJXGXGXJXGXGXGXGXGXGXGXGXJXJXGXGXJXHXHXHXGXGXHXHXHXGXGXGXGXGXHXHXGXGXHXJXGXGXGXGXGXHXGXGXHXHXGXGXGXGXGXGXJXJXGXGXJXHXHXHXGXGXGXJXJXGXGXGXGXGXGXGXJXGXGXHXHXGXGXGXJXGXGXJXGXGXGXGXGXGXGXGXJXJXGXGXJX",
|
||||
"JXJXJXGXGXJXJXJXGXGXGXGXGXGXJXJXGXGXJXGXGXGXGXJXJXLXIXIXIXIXIXIXIXUXUXUXUXUX+ N.; : : : : : - cXcXcXO fXfXfXfXfXfXfX+ N.S.S.S.S.S.S.Z.D.fX+ vXlXzXgXlXkXkXkXlXkXzX* UXgX+ vXUXUXUXUXUXUXUXUXUXIXIXIXIXIXLXLXLXJXJXGXGXJXJXGXGXGXGXGXGXJXJXGXGXJXJXJXJXGXGXJXJXJXGXGXGXGXGXGXJXJXGXGXJXJXGXGXGXJXJXGXJXJXGXGXGXGXGXGXGXJXJXGXGXJXJXJXJXGXGXJXJXJXGXGXGXGXGXGXJXJXGXGXJXGXGXGXGXJXJXGXGXJXJXGXGXGXGXGXGXJXJXGXGXJXJXJXJXGXGXJXJXJXGXGXGXGXGXGXJXJXGXGXJXJXGXGXGXJXJXGXJXJXGXGXGXGXGXGXGXJXJXGXGXJXJXJXJXGXGXJXJXJXGXGXGXGXGXGXJXJXGXGXJXGXGXGXGXJXJXGXGXJXJXGXGXGXGXGXGXJXJXGXGXJXJXJXJXGXGXJXJXJXGXGXGXGXGXGXJXJXGXGXJXJXGXGXGXJXJXGXJXJXGXGXGXGXGXGXGXJXJXGXGXJXJXJXJXGXGXJXJXJXGXGXGXGXGXGXJXJXGXGXJXGXGXGXGXJXJXGXGXJXJXGXGXGXGXGXGXJXJXGXGXJXJXJXJXGXGXJXJXJXGXGXGXGXGXGXJXJXGXGXJXJXGXGXGXJXJXGXJXJXGXGXGXGXGXGXGXJXJXGXGXJX",
|
||||
"JXJXJXJXGXJXJXJXGXGXGXGXGXGXJXJXJXGXJXJXLXLXLXIXIXLXIXIXIXIXIXIXUXUXUXUXUXUXO - ; : : : : : - cXcXcXH.* fXfXfXfXfXfXN.S.S.S.S.S.S.S.B.fXfXC.kXcXN.PXlXlXlXlXlXzXzXkXPXfXC.UXUXUXUXUXUXUXUXUXUXUXIXIXIXIXLXLXIXIXJXLXJXJXGXGXGXGXGXGXGXJXJXGXGXJXJXJXJXJXGXJXJXJXGXGXGXGXGXJXJXJXGXJXJXGXGXGXGXJXJXGXGXJXJXGXGXGXGXGXGXJXJXJXGXJXJXJXJXJXGXJXJXJXGXGXGXGXGXGXJXJXJXGXJXJXGXGXGXJXJXGXJXJXGXGXGXGXGXGXGXJXJXGXGXJXJXJXJXJXGXJXJXJXGXGXGXGXGXJXJXJXGXJXJXGXGXGXGXJXJXGXGXJXJXGXGXGXGXGXGXJXJXJXGXJXJXJXJXJXGXJXJXJXGXGXGXGXGXGXJXJXJXGXJXJXGXGXGXJXJXGXJXJXGXGXGXGXGXGXGXJXJXGXGXJXJXJXJXJXGXJXJXJXGXGXGXGXGXJXJXJXGXJXJXGXGXGXGXJXJXGXGXJXJXGXGXGXGXGXGXJXJXJXGXJXJXJXJXJXGXJXJXJXGXGXGXGXGXGXJXJXJXGXJXJXGXGXGXJXJXGXJXJXGXGXGXGXGXGXGXJXJXGXGXJXJXJXJXJXGXJXJXJXGXGXGXGXGXJXJXJXGXJXJXGXGXGXGXJXJXGXGXJXJXGXGXGXGXGXGXJXJXJXGXJX",
|
||||
"JXJXJXJXLXIXJXJXIXLXLXLXLXLXLXJXJXLXIXIXLXLXIXIXIXIXIXIXIXIXIXUXUXUXUXUXUXUXA.- ; : : : : : - cXcXcXY.- - - C.fXfXfXB.Z.S.S.S.S.S.N.fXfXfX* jXN.N.D.D.gXlXlXlXlXkXlX* A.H.gXUXUXUXUXUXUXUXUXUXUXUXIXIXIXIXLXIXIXIXIXIXIXLXLXLXLXLXIXJXJXJXLXIXJXJXJXJXIXLXIXJXJXLXLXLXLXLXJXJXLXLXJXJXLXLXLXLXIXJXIXLXJXJXIXLXLXLXLXIXJXJXLXLXJXJXJXJXJXLXIXJXJXIXLXLXLXLXLXLXJXJXLXIXJXLXLXIXJXLXIXJXIXLXLXLXLXLXIXJXJXJXLXIXJXJXJXJXIXLXIXJXJXLXLXLXLXLXJXJXLXLXJXJXLXLXLXLXIXJXIXLXJXJXIXLXLXLXLXIXJXJXLXLXJXJXJXJXJXLXIXJXJXIXLXLXLXLXLXLXJXJXLXIXJXLXLXIXJXLXIXJXIXLXLXLXLXLXIXJXJXJXLXIXJXJXJXJXIXLXIXJXJXLXLXLXLXLXJXJXLXLXJXJXLXLXLXLXIXJXIXLXJXJXIXLXLXLXLXIXJXJXLXLXJXJXJXJXJXLXIXJXJXIXLXLXLXLXLXLXJXJXLXIXJXLXLXIXJXLXIXJXIXLXLXLXLXLXIXJXJXJXLXIXJXJXJXJXIXLXIXJXJXLXLXLXLXLXJXJXLXLXJXJXLXLXLXLXIXJXIXLXJXJXIXLXLXLXLXIXJXJXLXLXJX",
|
||||
"IXIXIXIXIXIXIXIXIXIXIXLXLXLXLXIXIXIXIXIXIXIXIXIXIXIXIXIXIXUXUXUXUXUXUXUXUXU.A.H.; : : : : : - cXcXcXcX- U.- fXfXfXfXD.A.S.S.S.S.- fXfXfXfXC.* vXvXkXjXI.B.U.lXkXkXkXA.: : : ; gXUXUXUXUXUXUXUXUXUXUXUXIXIXIXIXIXIXIXIXIXLXLXLXIXIXIXIXIXIXLXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXLXIXIXIXLXLXLXLXIXIXIXLXIXIXIXIXIXIXIXIXIXIXLXIXIXIXIXIXIXIXIXIXIXIXIXIXLXLXLXLXIXIXIXIXIXIXLXIXIXLXIXIXIXLXLXLXIXIXIXIXIXIXLXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXLXIXIXIXLXLXLXLXIXIXIXLXIXIXIXIXIXIXIXIXIXIXLXIXIXIXIXIXIXIXIXIXIXIXIXIXLXLXLXLXIXIXIXIXIXIXLXIXIXLXIXIXIXLXLXLXIXIXIXIXIXIXLXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXLXIXIXIXLXLXLXLXIXIXIXLXIXIXIXIXIXIXIXIXIXIXLXIXIXIXIXIXIXIXIXIXIXIXIXIXLXLXLXLXIXIXIXIXIXIXLXIXIXLXIXIXIXLXLXLXIXIXIXIXIXIXLXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXLXIXIXIXLXLXLXLXIXIXIXLXIXIXIXIXIXIXIXIXIXIXLXIXIX"
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
/* XPM */
|
||||
const char *b__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 3 1",
|
||||
" c gray20",
|
||||
". c #12120000FFFF",
|
||||
"X c None",
|
||||
/* pixels */
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
".....XXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XX XXXX",
|
||||
"XXXXX XXX",
|
||||
"XXXXX XXXX XXX",
|
||||
"XXXXX XXXX XXX",
|
||||
"XXXXX XXXX",
|
||||
"XXXXX XXX",
|
||||
"XXXXX XXXX XXX",
|
||||
"XXXXX XXXX XXX",
|
||||
"XXXXX XXX",
|
||||
"XXXXX XXXX",
|
||||
"XXXXXXXXXXXXXXXX"
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
/* XPM */
|
||||
const char *c__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 3 1",
|
||||
" c gray20",
|
||||
". c #12120000FFFF",
|
||||
"X c None",
|
||||
/* pixels */
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
".....XXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XXXX XXXXX",
|
||||
"XXXXXX XXXX",
|
||||
"XXXXX XX XXX",
|
||||
"XXXXX XXXX XXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXX XXXX",
|
||||
"XXXXX XX XXX",
|
||||
"XXXXXX XXXX",
|
||||
"XXXXXXX XXXXX",
|
||||
"XXXXXXXXXXXXXXXX"
|
||||
};
|
@ -1,27 +0,0 @@
|
||||
/* XPM */
|
||||
const char *check_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 6 1",
|
||||
" c black",
|
||||
". c gray25",
|
||||
"X c #808080808080",
|
||||
"o c #D4D4D0D0C8C8",
|
||||
"O c gray100",
|
||||
"+ c None",
|
||||
/* pixels */
|
||||
"++++++++++++++++",
|
||||
"++XXXXXXXXXXXX++",
|
||||
"++X..........o++",
|
||||
"++X.OOOOOOOOOo++",
|
||||
"++X.OOOOOOO Oo++",
|
||||
"++X.OOOOOO Oo++",
|
||||
"++X.O OOO Oo++",
|
||||
"++X.O O OOo++",
|
||||
"++X.O OOOo++",
|
||||
"++X.OO OOOOo++",
|
||||
"++X.OOO OOOOOo++",
|
||||
"++X.OOOOOOOOOo++",
|
||||
"++Xooooooooooo++",
|
||||
"++++++++++++++++",
|
||||
"++++++++++++++++"
|
||||
};
|
@ -1,90 +0,0 @@
|
||||
/* XPM */
|
||||
const char *del__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 69 1",
|
||||
" c black",
|
||||
". c #0C0C0C0C0C0C",
|
||||
"X c gray5",
|
||||
"o c gray9",
|
||||
"O c #191919191919",
|
||||
"+ c gray11",
|
||||
"@ c #262625252424",
|
||||
"# c #313131313131",
|
||||
"$ c #323232323232",
|
||||
"% c #353534343232",
|
||||
"& c #373735353333",
|
||||
"* c #373737373737",
|
||||
"= c #383838383737",
|
||||
"- c #3E3E3E3E3E3E",
|
||||
"; c #414141414141",
|
||||
": c #575755555252",
|
||||
"> c #555555555555",
|
||||
", c #5D5D5A5A5757",
|
||||
"< c gray35",
|
||||
"1 c gray36",
|
||||
"2 c #646464646464",
|
||||
"3 c gray42",
|
||||
"4 c #70706E6E6A6A",
|
||||
"5 c #71716F6F6B6B",
|
||||
"6 c #818181818181",
|
||||
"7 c #868686868686",
|
||||
"8 c #878787878686",
|
||||
"9 c #888888888787",
|
||||
"0 c #8F8F8C8C8787",
|
||||
"q c gray55",
|
||||
"w c #8F8F8E8E8D8D",
|
||||
"e c #979793938D8D",
|
||||
"r c gray57",
|
||||
"t c #969695959292",
|
||||
"y c gray59",
|
||||
"u c #9F9F9F9F9F9F",
|
||||
"i c #A3A39F9F9999",
|
||||
"p c #A0A0A0A0A0A0",
|
||||
"a c gray64",
|
||||
"s c #AAAAA6A6A0A0",
|
||||
"d c #AEAEACACA7A7",
|
||||
"f c #A9A9A9A9A9A9",
|
||||
"g c #B1B1AEAEA7A7",
|
||||
"h c #B3B3B0B0A9A9",
|
||||
"j c #B7B7B4B4ADAD",
|
||||
"k c #B9B9B7B7B1B1",
|
||||
"l c #BEBEBBBBB5B5",
|
||||
"z c #BCBCBCBCBCBC",
|
||||
"x c #C2C2BFBFB8B8",
|
||||
"c c #C3C3C0C0B8B8",
|
||||
"v c #C3C3C0C0B9B9",
|
||||
"b c #C7C7C3C3BBBB",
|
||||
"n c #C6C6C3C3BCBC",
|
||||
"m c gray78",
|
||||
"M c #CBCBC8C8C0C0",
|
||||
"N c #CFCFCBCBC4C4",
|
||||
"B c #C8C8C8C8C8C8",
|
||||
"V c gray80",
|
||||
"C c #D2D2CECEC6C6",
|
||||
"Z c #D3D3CFCFC7C7",
|
||||
"A c #D0D0D0D0D0D0",
|
||||
"S c LightGray",
|
||||
"D c gray86",
|
||||
"F c #DDDDDDDDDDDD",
|
||||
"G c gray90",
|
||||
"H c gray93",
|
||||
"J c #F4F4F4F4F4F4",
|
||||
"K c #F6F6F6F6F6F6",
|
||||
"L c None",
|
||||
/* pixels */
|
||||
"LLLLN*LLLLLLLLLL",
|
||||
"LLLLk=0LLLLLLLLL",
|
||||
"LLLZt &LLLLLLLLL",
|
||||
"LLLv9<-iLLLLLLLL",
|
||||
"LLZtB1p%LL L",
|
||||
"LLlyH1F$eLLLLLLL",
|
||||
"LCwAH1Ff@cLLLLLL",
|
||||
"LdaJHuFS>5LLLLLL",
|
||||
"n8KJH FSm+sLLLLL",
|
||||
"LrqJHDFS3:xLLLLL",
|
||||
"Lb#DHGFzohLLLLLL",
|
||||
"LL46HGF2,LLLLLLL",
|
||||
"LLgOHGF LLLLLLLL",
|
||||
"LLX..X...LLLLLLL",
|
||||
"LLM;V7.XjLLLLLLL"
|
||||
};
|
@ -1,106 +0,0 @@
|
||||
/* XPM */
|
||||
const char *delcross_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 85 1",
|
||||
" c #3F3F14141818",
|
||||
". c #4C4C19192121",
|
||||
"X c #656522222626",
|
||||
"o c #797927272C2C",
|
||||
"O c #6E6E24243333",
|
||||
"+ c #82822A2A2D2D",
|
||||
"@ c #919130303434",
|
||||
"# c #949431313535",
|
||||
"$ c #979732323434",
|
||||
"% c #979732323B3B",
|
||||
"& c #9E9E35353D3D",
|
||||
"* c #9E9E34343F3F",
|
||||
"= c #A0A036363939",
|
||||
"- c #A5A538383C3C",
|
||||
"; c #A7A73A3A3E3E",
|
||||
": c #ACAC3B3B3E3E",
|
||||
"> c #B5B53D3D3D3D",
|
||||
", c #9E9E34344848",
|
||||
"< c #A5A539394242",
|
||||
"1 c #AEAE3D3D4040",
|
||||
"2 c #A3A337374D4D",
|
||||
"3 c #B7B73F3F4343",
|
||||
"4 c #B3B33F3F4747",
|
||||
"5 c #B5B53F3F4545",
|
||||
"6 c #B3B33C3C5353",
|
||||
"7 c #B1B13D3D5454",
|
||||
"8 c #B3B33C3C5656",
|
||||
"9 c #B5B53D3D5959",
|
||||
"0 c #B7B740404141",
|
||||
"q c #BDBD42424545",
|
||||
"w c #B7B741414848",
|
||||
"e c #B3B340405C5C",
|
||||
"r c #BFBF45455E5E",
|
||||
"t c #C3C345454C4C",
|
||||
"y c #D0D04B4B5252",
|
||||
"u c #C9C948486666",
|
||||
"i c #CFCF4B4B6868",
|
||||
"p c #D0D04C4C6A6A",
|
||||
"a c #D2D24C4C6C6C",
|
||||
"s c #E4E457577575",
|
||||
"d c #E2E258587676",
|
||||
"f c #E7E75B5B7979",
|
||||
"g c #EAEA5B5B7A7A",
|
||||
"h c #E8E85C5C7979",
|
||||
"j c #EAEA5C5C7A7A",
|
||||
"k c #F1F160607B7B",
|
||||
"l c #F1F162627F7F",
|
||||
"z c #F4F464648080",
|
||||
"x c #F6F666668080",
|
||||
"c c #F5F564648282",
|
||||
"v c #F7F766668585",
|
||||
"b c #FAFA69698484",
|
||||
"n c #FFFF6D6D8686",
|
||||
"m c #FCFC6B6B8888",
|
||||
"M c #FFFF6D6D8989",
|
||||
"N c #FFFF6F6F8B8B",
|
||||
"B c #FFFF71718989",
|
||||
"V c #FFFF74748F8F",
|
||||
"C c #FFFF83839B9B",
|
||||
"Z c #FFFF89899B9B",
|
||||
"A c #FFFF89899D9D",
|
||||
"S c #FFFF8D8DA2A2",
|
||||
"D c #FFFF9393A5A5",
|
||||
"F c #FFFF9595A6A6",
|
||||
"G c #FFFF9E9EA7A7",
|
||||
"H c #FFFFA6A6ABAB",
|
||||
"J c #FFFFA5A5B1B1",
|
||||
"K c #FFFFAFAFB1B1",
|
||||
"L c #FFFFADADB4B4",
|
||||
"P c #FFFFB0B0B2B2",
|
||||
"I c #FFFFB0B0B9B9",
|
||||
"U c #FFFFB5B5B8B8",
|
||||
"Y c #FFFFB4B4BCBC",
|
||||
"T c #FFFFBBBBBBBB",
|
||||
"R c #FFFFBCBCBBBB",
|
||||
"E c #FFFFB8B8BDBD",
|
||||
"W c #FFFFC0C0BEBE",
|
||||
"Q c #FFFFC0C0C2C2",
|
||||
"! c #FFFFC4C4C2C2",
|
||||
"~ c #FFFFC3C3C4C4",
|
||||
"^ c #FFFFC4C4C7C7",
|
||||
"/ c #FFFFC7C7C6C6",
|
||||
"( c #FFFFC7C7C7C7",
|
||||
") c #FFFFCCCCC9C9",
|
||||
"_ c None",
|
||||
/* pixels */
|
||||
"_^jY____________",
|
||||
"_DqtJ________S__",
|
||||
"_Fh;5C_____Iym__",
|
||||
"__Eg10l___c4V___",
|
||||
"____Aw3vQN>M____",
|
||||
"_____~p-&<d_____",
|
||||
"______L%:7______",
|
||||
"_____(9@#=6_____",
|
||||
"____/8+sUa$Z____",
|
||||
"___)eXi___z*/___",
|
||||
"___fO2T____rx___",
|
||||
"__G.oB_____W,!__",
|
||||
"__n uR______bK__",
|
||||
"__PkH___________",
|
||||
"________________"
|
||||
};
|
@ -1,32 +0,0 @@
|
||||
/* XPM */
|
||||
const char *help__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 11 1",
|
||||
" c #46464B4B5C5C",
|
||||
". c #FFFFCCCC0000",
|
||||
"X c #FAFAF3F30000",
|
||||
"o c #FBFBE2E24949",
|
||||
"O c #4C4C2D2D9B9B",
|
||||
"+ c #7A7A7E7E8D8D",
|
||||
"@ c #59594F4FBFBF",
|
||||
"# c #65655B5BEFEF",
|
||||
"$ c #FFFFFFFFABAB",
|
||||
"% c #82829494F7F7",
|
||||
"& c None",
|
||||
/* pixels */
|
||||
"&&&&++++++++&&&&",
|
||||
"&&++XXXXXXXo &&",
|
||||
"&+XX$$@@@@$$X. &",
|
||||
"&+X$$@@%#@@$$X +",
|
||||
"+X$$$@#$$@@$$$o ",
|
||||
"+X$$$$$$%@O$$$X ",
|
||||
"+X$$$$$%@O$$$$X ",
|
||||
"+X$$$$$@O$$$$$o ",
|
||||
"+X$$$$$$$$$$$Xo ",
|
||||
"+oX$$$$@@$$$$X. ",
|
||||
"&+XX$$$@@$$XX. &",
|
||||
"&& oXX$$$$Xo. &&",
|
||||
"&&& oXXXo &&&",
|
||||
"&&&&&& &&&&&",
|
||||
"&&&&&&&&&&&&&&&&"
|
||||
};
|
@ -1,71 +0,0 @@
|
||||
/* XPM */
|
||||
const char *help_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 50 1",
|
||||
" c #25254A4A8787",
|
||||
". c #27274D4D8D8D",
|
||||
"X c #282850509292",
|
||||
"o c #2A2A53539898",
|
||||
"O c #2A2A54549A9A",
|
||||
"+ c #2B2B55559B9B",
|
||||
"@ c #2D2D5959A3A3",
|
||||
"# c #2D2D5A5AA5A5",
|
||||
"$ c #2E2E5C5CA8A8",
|
||||
"% c #33336666BBBB",
|
||||
"& c #35356A6AC1C1",
|
||||
"* c #36366B6BC2C2",
|
||||
"= c #37376E6EC9C9",
|
||||
"- c #43437777CDCD",
|
||||
"; c #48487B7BCECE",
|
||||
": c #4E4E7F7FD0D0",
|
||||
"> c #52528282D0D0",
|
||||
", c #63638E8ED5D5",
|
||||
"< c #69699292D7D7",
|
||||
"1 c #71719898D9D9",
|
||||
"2 c #79799E9EDBDB",
|
||||
"3 c #7C7CA0A0DCDC",
|
||||
"4 c #8989A9A9DFDF",
|
||||
"5 c #8C8CACACE0E0",
|
||||
"6 c #9595B2B2E3E3",
|
||||
"7 c #9A9AB6B6E4E4",
|
||||
"8 c #9B9BB7B7E5E5",
|
||||
"9 c #A6A6BFBFE8E8",
|
||||
"0 c #A8A8C0C0E8E8",
|
||||
"q c #ADADC4C4E9E9",
|
||||
"w c #B1B1C7C7EBEB",
|
||||
"e c #B8B8CCCCECEC",
|
||||
"r c #BEBED0D0EEEE",
|
||||
"t c #C4C4D5D5F0F0",
|
||||
"y c #CBCBD9D9F1F1",
|
||||
"u c #CCCCDADAF2F2",
|
||||
"i c #D2D2DFDFF4F4",
|
||||
"p c #D9D9E4E4F5F5",
|
||||
"a c #DCDCE6E6F6F6",
|
||||
"s c #DFDFE8E8F7F7",
|
||||
"d c #E2E2EAEAF8F8",
|
||||
"f c #EAEAF0F0FAFA",
|
||||
"g c #EDEDF2F2FBFB",
|
||||
"h c #F0F0F5F5FCFC",
|
||||
"j c #F5F5F8F8FDFD",
|
||||
"k c #F7F7F9F9FDFD",
|
||||
"l c #FAFAFCFCFEFE",
|
||||
"z c #FDFDFEFEFFFF",
|
||||
"x c gray100",
|
||||
"c c None",
|
||||
/* pixels */
|
||||
"ccc%%%%%%%o-cccc",
|
||||
"ccc%urw073%4-ccc",
|
||||
"ccc%iurw07%k4>cc",
|
||||
"cc9$$$<0w0%kk4$c",
|
||||
"c1 @2,O <w%%%%$c",
|
||||
"6 o8yg8+ 4e074%c",
|
||||
"#++..a9+o&te07%c",
|
||||
" ++o4x*++Xute0%c",
|
||||
" ++.x;+++ pute%c",
|
||||
" ++o *++o=sput%c",
|
||||
"1.+ x9++ qfdpu%c",
|
||||
"c: o oo 5jhfdp%c",
|
||||
"cc6$$$:ylkjhfd%c",
|
||||
"ccc%xxxzzlkjhf%c",
|
||||
"ccc%%%%%%%%%%%%c"
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
/* XPM */
|
||||
const char *l__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 3 1",
|
||||
" c gray20",
|
||||
". c #12120000FFFF",
|
||||
"X c None",
|
||||
/* pixels */
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
".....XXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXX",
|
||||
"XXXXX XXXX",
|
||||
"XXXXXXXXXXXXXXXX"
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
/* XPM */
|
||||
const char *m__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 3 1",
|
||||
" c gray20",
|
||||
". c #12120000FFFF",
|
||||
"X c None",
|
||||
/* pixels */
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
".....XXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XXXXX XXX XX",
|
||||
"XXXXX XXX XX",
|
||||
"XXXXX X XX",
|
||||
"XXXXX X XX",
|
||||
"XXXXX X X X XX",
|
||||
"XXXXX X X X XX",
|
||||
"XXXXX X X XX",
|
||||
"XXXXX X X XX",
|
||||
"XXXXX XX XX XX",
|
||||
"XXXXXXXXXXXXXXXX"
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
/* XPM */
|
||||
const char *n__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 3 1",
|
||||
" c gray20",
|
||||
". c #12120000FFFF",
|
||||
"X c None",
|
||||
/* pixels */
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
".....XXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XX XXXX XXX",
|
||||
"XXXXX XXX XXX",
|
||||
"XXXXX XX XXX",
|
||||
"XXXXX XX XXX",
|
||||
"XXXXX X X XXX",
|
||||
"XXXXX X X XXX",
|
||||
"XXXXX XX XXX",
|
||||
"XXXXX XX XXX",
|
||||
"XXXXX XXX XXX",
|
||||
"XXXXX XXXX XXX",
|
||||
"XXXXXXXXXXXXXXXX"
|
||||
};
|
@ -1,85 +0,0 @@
|
||||
/* XPM */
|
||||
const char *new__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 64 1",
|
||||
" c black",
|
||||
". c gray10",
|
||||
"X c #373737373737",
|
||||
"o c #434343434343",
|
||||
"O c #464646464646",
|
||||
"+ c #484848484848",
|
||||
"@ c #525251515050",
|
||||
"# c #565656565656",
|
||||
"$ c #595958585353",
|
||||
"% c #5F5F5F5F5F5F",
|
||||
"& c #606060606060",
|
||||
"* c gray38",
|
||||
"= c #676767676767",
|
||||
"- c DimGray",
|
||||
"; c #6A6A6A6A6A6A",
|
||||
": c #6E6E6D6D6A6A",
|
||||
"> c gray43",
|
||||
", c #6F6F6F6F6F6F",
|
||||
"< c gray44",
|
||||
"1 c #767676767676",
|
||||
"2 c #797979797979",
|
||||
"3 c #7C7C7C7C7C7C",
|
||||
"4 c #7F7F7F7F7F7F",
|
||||
"5 c #818181818181",
|
||||
"6 c #8D8D8D8D8D8D",
|
||||
"7 c #8E8E8E8E8E8E",
|
||||
"8 c #939393939393",
|
||||
"9 c gray58",
|
||||
"0 c #959595959595",
|
||||
"q c gray59",
|
||||
"w c gray60",
|
||||
"e c #9A9A9A9A9A9A",
|
||||
"r c #A4A4A1A19696",
|
||||
"t c #A8A8A6A69C9C",
|
||||
"y c #A7A7A7A7A7A7",
|
||||
"u c gray66",
|
||||
"i c #B1B1AFAFA5A5",
|
||||
"p c #B3B3B1B1A8A8",
|
||||
"a c #BDBDBBBBAFAF",
|
||||
"s c gray70",
|
||||
"d c #CDCDCACABCBC",
|
||||
"f c #C8C8C8C8C8C8",
|
||||
"g c #CACACACACACA",
|
||||
"h c #CDCDCDCDCDCD",
|
||||
"j c gray81",
|
||||
"k c gray83",
|
||||
"l c #D5D5D5D5D5D5",
|
||||
"z c #D7D7D7D7D7D7",
|
||||
"x c #D8D8D8D8D8D8",
|
||||
"c c gray86",
|
||||
"v c #DFDFDFDFDFDF",
|
||||
"b c #E7E7E4E4D3D3",
|
||||
"n c #E4E4E4E4E4E4",
|
||||
"m c #E7E7E7E7E7E7",
|
||||
"M c gray91",
|
||||
"N c gray92",
|
||||
"B c #EEEEEEEEEEEE",
|
||||
"V c #EFEFEFEFEFEF",
|
||||
"C c #F1F1F1F1F1F1",
|
||||
"Z c gray95",
|
||||
"A c #F3F3F3F3F3F3",
|
||||
"S c #F6F6F6F6F6F6",
|
||||
"D c gray100",
|
||||
"F c None",
|
||||
/* pixels */
|
||||
"FFFFFFFFFFFFFFFF",
|
||||
"FFFFFFFFFFFFFFFF",
|
||||
"FFFFFFFa@-------",
|
||||
"FFFFFFaOZBnzhf,;",
|
||||
"FFFFFaOZCmcjf<0$",
|
||||
"FFFFaOZANvkf<y=t",
|
||||
"FFFaOZABnzg<e3:d",
|
||||
"FFaOZACmch#ewXiF",
|
||||
"Fa>9755>%+2q.rFF",
|
||||
"b;sxxxklf*6.rFFF",
|
||||
"p8SSSSSSu4.rFFFF",
|
||||
"1MDDDDDV&.rFFFFF",
|
||||
"ooooooo+ rFFFFFF",
|
||||
"FFFFFFFFFFFFFFFF",
|
||||
"FFFFFFFFFFFFFFFF"
|
||||
};
|
@ -1,76 +0,0 @@
|
||||
/* XPM */
|
||||
const char *nut__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 55 1",
|
||||
" c #7F7F00000000",
|
||||
". c #000013137F7F",
|
||||
"X c #030315157F7F",
|
||||
"o c #6C6C41416060",
|
||||
"O c #808007070707",
|
||||
"+ c #808009090909",
|
||||
"@ c #838313131313",
|
||||
"# c #848412121212",
|
||||
"$ c #868618181818",
|
||||
"% c #88881D1D1D1D",
|
||||
"& c #88881E1E1E1E",
|
||||
"* c #8A8A24242424",
|
||||
"= c #8E8E30303030",
|
||||
"- c #92923C3C3C3C",
|
||||
"; c #949442424242",
|
||||
": c #969648484848",
|
||||
"> c #98984E4E4E4E",
|
||||
", c #9A9A54545454",
|
||||
"< c #9D9D5A5A5A5A",
|
||||
"1 c #A1A165656565",
|
||||
"2 c #A3A36B6B6B6B",
|
||||
"3 c #A5A56F6F6F6F",
|
||||
"4 c #A5A571717171",
|
||||
"5 c #A7A777777777",
|
||||
"6 c #A9A97D7D7D7D",
|
||||
"7 c #0A0A1C1C8181",
|
||||
"8 c #0C0C1C1C8080",
|
||||
"9 c #0D0D1F1F8282",
|
||||
"0 c #151525258484",
|
||||
"q c #151525258585",
|
||||
"w c #171728288686",
|
||||
"e c #1F1F2F2F8888",
|
||||
"r c #242432328A8A",
|
||||
"t c #2A2A38388C8C",
|
||||
"y c #2D2D3B3B8D8D",
|
||||
"u c #61616A6A9F9F",
|
||||
"i c #64646C6CA0A0",
|
||||
"p c #74747C7CA6A6",
|
||||
"a c #77777E7EA7A7",
|
||||
"s c #AFAF8F8F8F8F",
|
||||
"d c #B3B39B9B9B9B",
|
||||
"f c #83838989ABAB",
|
||||
"g c #89898E8EADAD",
|
||||
"h c #8D8D9292AEAE",
|
||||
"j c #8F8F9494AFAF",
|
||||
"k c #9B9B9F9FB3B3",
|
||||
"l c #B5B5A1A1A1A1",
|
||||
"z c #B7B7A7A7A7A7",
|
||||
"x c #B9B9ADADADAD",
|
||||
"c c #A7A7A9A9B7B7",
|
||||
"v c #BBBBB3B3B3B3",
|
||||
"b c #B3B3B4B4BBBB",
|
||||
"n c #BDBDB9B9B9B9",
|
||||
"m c #B9B9BABABDBD",
|
||||
"M c None",
|
||||
/* pixels */
|
||||
"# @nMMMM",
|
||||
" MMMMebMMM:5MMMM",
|
||||
" MMMc9.MMMs=MMMM",
|
||||
" ......pMMM#xMMM",
|
||||
" h........0<1MMM",
|
||||
" Mc......tkd*MMM",
|
||||
" MMuX....bMM&lMM",
|
||||
" MMy.....jMM1<MM",
|
||||
" MM......rMMx#MM",
|
||||
"+>d7.MM...fMM=sM",
|
||||
"z4*$,dMMa.wmM5:M",
|
||||
"MMMz2*$,dgqiMv#n",
|
||||
"MMMMMMz2*$o8MM;6",
|
||||
"MMMMMMMMMz2*$,3-",
|
||||
"MMMMMMMMMMMMz2%O"
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
/* XPM */
|
||||
const char *p__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 3 1",
|
||||
" c gray20",
|
||||
". c #12120000FFFF",
|
||||
"X c None",
|
||||
/* pixels */
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
".....XXXXXXXXXXX",
|
||||
"XX.XXXXXXXXXXXXX",
|
||||
"XX.XX XXXXX",
|
||||
"XXXXX XXXX",
|
||||
"XXXXX XXX XXXX",
|
||||
"XXXXX XXX XXXX",
|
||||
"XXXXX XXXX",
|
||||
"XXXXX XXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXX XXXXXXXXX",
|
||||
"XXXXXXXXXXXXXXXX"
|
||||
};
|
@ -1,87 +0,0 @@
|
||||
/* XPM */
|
||||
const char *pan_bg_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"24 15 66 1",
|
||||
" c #2A2A35354D4D",
|
||||
". c #2C2C38384B4B",
|
||||
"X c #36364A4A6464",
|
||||
"o c #474757576E6E",
|
||||
"O c #4D4D5C5C7272",
|
||||
"+ c #5E5E66667171",
|
||||
"@ c #606060606060",
|
||||
"# c #C1C14B4B2B2B",
|
||||
"$ c #CFCF55553636",
|
||||
"% c #CBCB75752424",
|
||||
"& c #BABA6D6D6666",
|
||||
"* c #CCCC69695656",
|
||||
"= c #C9C973736666",
|
||||
"- c #FFFF7F7F7F7F",
|
||||
"; c #EDEDA0A04C4C",
|
||||
": c #EFEFA5A54F4F",
|
||||
"> c #585866668585",
|
||||
", c #646475759696",
|
||||
"< c #7D7D89899E9E",
|
||||
"1 c #72728383A7A7",
|
||||
"2 c #80808A8A9D9D",
|
||||
"3 c #86868E8E9D9D",
|
||||
"4 c #89899999AFAF",
|
||||
"5 c #8A8A9A9AAEAE",
|
||||
"6 c #81819292BABA",
|
||||
"7 c #9696A3A3B4B4",
|
||||
"8 c #9D9DA7A7BBBB",
|
||||
"9 c #A3A3ABABBABA",
|
||||
"0 c #D3D396968D8D",
|
||||
"q c #D2D297978D8D",
|
||||
"w c #DDDDA5A59B9B",
|
||||
"e c #E8E8C3C39393",
|
||||
"r c #83839999C7C7",
|
||||
"t c #9090A5A5C3C3",
|
||||
"y c #9191A5A5C3C3",
|
||||
"u c #9191A5A5C4C4",
|
||||
"i c #9292A6A6C5C5",
|
||||
"p c #9292A7A7C5C5",
|
||||
"a c #9191A5A5C6C6",
|
||||
"s c #9393A7A7C6C6",
|
||||
"d c #9393A7A7C7C7",
|
||||
"f c #9898A8A8C5C5",
|
||||
"g c #9898AAAAC5C5",
|
||||
"h c #9797A7A7C9C9",
|
||||
"j c #9595A8A8CFCF",
|
||||
"k c #9B9BB1B1DFDF",
|
||||
"l c #AAAAB4B4C7C7",
|
||||
"z c #D4D4C3C3D0D0",
|
||||
"x c #CDCDDADAE9E9",
|
||||
"c c #D2D2D8D8E2E2",
|
||||
"v c #D6D6DCDCE6E6",
|
||||
"b c #C8C8DADAFDFD",
|
||||
"n c #D2D2DDDDF0F0",
|
||||
"m c #D5D5DFDFF1F1",
|
||||
"M c #E1E1E5E5ECEC",
|
||||
"N c #F2F2E2E2E2E2",
|
||||
"B c #F5F5E5E5E2E2",
|
||||
"V c #F1F1E9E9ECEC",
|
||||
"C c #EBEBEFEFFBFB",
|
||||
"Z c #EFEFF5F5F9F9",
|
||||
"A c #F1F1F4F4FAFA",
|
||||
"S c #F2F2F5F5FCFC",
|
||||
"D c #FAFAFBFBFEFE",
|
||||
"F c #FDFDFEFEFEFE",
|
||||
"G c gray100",
|
||||
"H c None",
|
||||
/* pixels */
|
||||
"HHHHH@HHHHHHHHHHHHHHHHHH",
|
||||
"HHHHH@HHHHHHHHHHHHHHHHHH",
|
||||
"HHHHH@HHHHHHHHHHHHHHHHHH",
|
||||
"HHHHH@HHHHHHassdssyyygHH",
|
||||
"H@@@@@@@@@HHsGFGABw0VXHH",
|
||||
"H@HHH@---@HHiGGAAqe:&XHH",
|
||||
"H@HHH@---@HHsGGZZ=;%#XHH",
|
||||
"H@HHH@---@HHpGGvxN*$zXHH",
|
||||
"H@HHH@---@HHiGc4<f98bXHH",
|
||||
"H@@@@@@@@@HHuM5Sno23 XHH",
|
||||
"H@HHHHHHH@HHu7DmkhOl+XHH",
|
||||
"H@HHHHHHH@HHtCjr61,>.XHH",
|
||||
"H@HHHHHHH@HHyXXXXXXXXXHH",
|
||||
"H@HHHHHHH@HHHHHHHHHHHHHH",
|
||||
"H@@@@@@@@@HHHHHHHHHHHHHH"
|
||||
};
|
@ -1,97 +0,0 @@
|
||||
/* XPM */
|
||||
const char *pan_both_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"24 15 76 1",
|
||||
" c #1B1B22225353",
|
||||
". c #0D0D0D0D6767",
|
||||
"X c #0F0F14146161",
|
||||
"o c #111115156464",
|
||||
"O c #121219196262",
|
||||
"+ c #131313136969",
|
||||
"@ c #131314146C6C",
|
||||
"# c #111115156F6F",
|
||||
"$ c #19191A1A6E6E",
|
||||
"% c #1E1E1E1E6F6F",
|
||||
"& c #1D1D21217878",
|
||||
"* c #232330306262",
|
||||
"= c #282837376262",
|
||||
"- c #2A2A2A2A7575",
|
||||
"; c #3C3C3C3C7E7E",
|
||||
": c #36364A4A6464",
|
||||
"> c #606060606060",
|
||||
", c #C1C14B4B2B2B",
|
||||
"< c #CFCF55553636",
|
||||
"1 c #CBCB75752424",
|
||||
"2 c #BABA6D6D6666",
|
||||
"3 c #CCCC69695656",
|
||||
"4 c #C9C973736666",
|
||||
"5 c #FFFF7F7F7F7F",
|
||||
"6 c #EDEDA0A04C4C",
|
||||
"7 c #EFEFA5A54F4F",
|
||||
"8 c #484848488484",
|
||||
"9 c #5A5A5A5A8E8E",
|
||||
"0 c #45454B4B9696",
|
||||
"q c #5F5F5F5F9090",
|
||||
"w c #656565659292",
|
||||
"e c #777777779B9B",
|
||||
"r c #7E7E7E7E9F9F",
|
||||
"t c #B2B20000FFFF",
|
||||
"y c #7D7D89899E9E",
|
||||
"u c #7B7B8888B1B1",
|
||||
"i c #83838383A1A1",
|
||||
"p c #89899999AFAF",
|
||||
"a c #8A8A9A9AAEAE",
|
||||
"s c #9B9B9B9BADAD",
|
||||
"d c #9696A3A3B4B4",
|
||||
"f c #A1A1A1A1B0B0",
|
||||
"g c #A7A7A7A7B3B3",
|
||||
"h c #B9B9B9B9BCBC",
|
||||
"j c #D3D396968D8D",
|
||||
"k c #D2D297978D8D",
|
||||
"l c #DDDDA5A59B9B",
|
||||
"z c #E8E8C3C39393",
|
||||
"x c #9090A5A5C3C3",
|
||||
"c c #9191A5A5C3C3",
|
||||
"v c #9191A5A5C4C4",
|
||||
"b c #9292A6A6C5C5",
|
||||
"n c #9292A7A7C5C5",
|
||||
"m c #9191A5A5C6C6",
|
||||
"M c #9393A7A7C6C6",
|
||||
"N c #9393A7A7C7C7",
|
||||
"B c #9898AAAAC5C5",
|
||||
"V c #9595A8A8CFCF",
|
||||
"C c #AAAAB3B3D4D4",
|
||||
"Z c #D4D4C3C3D0D0",
|
||||
"A c #C0C0CACAE3E3",
|
||||
"S c #CDCDDADAE9E9",
|
||||
"D c #D2D2D8D8E2E2",
|
||||
"F c #D6D6DCDCE6E6",
|
||||
"G c #E1E1E5E5ECEC",
|
||||
"H c #F2F2E2E2E2E2",
|
||||
"J c #F5F5E5E5E2E2",
|
||||
"K c #F1F1E9E9ECEC",
|
||||
"L c #EBEBEFEFFBFB",
|
||||
"P c #EFEFF5F5F9F9",
|
||||
"I c #F1F1F4F4FAFA",
|
||||
"U c #F2F2F5F5FCFC",
|
||||
"Y c #FAFAFBFBFEFE",
|
||||
"T c #FDFDFEFEFEFE",
|
||||
"R c gray100",
|
||||
"E c None",
|
||||
/* pixels */
|
||||
"EEEEE>EEEEEmMMNMMcccBEEE",
|
||||
"EEEEE>EEEEEMRTRIJljK:EEE",
|
||||
"EEEEE>EEEEEbRRIIkz72:EEE",
|
||||
"EEEEE>EEEEEMRRPP461,:EEE",
|
||||
"E>>>>>>>>>EnRRFSH3<Z:EEE",
|
||||
"E>EEE>555>EbRDpyu$@0*EEE",
|
||||
"E>EEE>555>EvGaUCott O%sE",
|
||||
"E>EEE>555>EvdYA&tttttt-f",
|
||||
"E>EEE>555>ExLV#tttttttt+",
|
||||
"E>>>>>>>>>Ec::=Xttttttw9",
|
||||
"E>EEEEEEE>EEEEEe8ttttt-h",
|
||||
"E>EEEEEEE>EEEEEE9wttt-sE",
|
||||
"E>EEEEEEE>EEEEEEE;itqqEE",
|
||||
"E>EEEEEEE>EEEEEEEh-r-hEE",
|
||||
"E>>>>>>>>>EEEEEEEEg.fEEE"
|
||||
};
|
@ -1,63 +0,0 @@
|
||||
/* XPM */
|
||||
const char *pan_shape_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"30 15 42 1",
|
||||
" c black",
|
||||
". c #010101010101",
|
||||
"X c #070707070707",
|
||||
"o c #0C0C0C0C0C0C",
|
||||
"O c #484848484848",
|
||||
"+ c #FFFF00006E6E",
|
||||
"@ c #121223238585",
|
||||
"# c #141424248585",
|
||||
"$ c #181829298787",
|
||||
"% c #1D1D2E2E8989",
|
||||
"& c #1E1E2E2E8989",
|
||||
"* c #2A2A39398D8D",
|
||||
"= c #30303E3E8F8F",
|
||||
"- c #363644449191",
|
||||
"; c #3A3A48489292",
|
||||
": c #3C3C49499393",
|
||||
"> c #42424E4E9595",
|
||||
", c #484854549797",
|
||||
"< c #4E4E59599999",
|
||||
"1 c #5A5A64649D9D",
|
||||
"2 c #66666F6FA2A2",
|
||||
"3 c #78787F7FA8A8",
|
||||
"4 c #39395050D3D3",
|
||||
"5 c #3C3C5252D4D4",
|
||||
"6 c #3F3F5555D5D5",
|
||||
"7 c #42425858D6D6",
|
||||
"8 c #45455A5AD7D7",
|
||||
"9 c #47475C5CD7D7",
|
||||
"0 c #4B4B6060D9D9",
|
||||
"q c #54546868DCDC",
|
||||
"w c #5A5A6D6DDEDE",
|
||||
"e c #5D5D7070DFDF",
|
||||
"r c #60607373E0E0",
|
||||
"t c #84848A8AACAC",
|
||||
"y c #8A8A8F8FAEAE",
|
||||
"u c #90909595B0B0",
|
||||
"i c #A2A2A5A5B6B6",
|
||||
"p c #A8A8AAAAB8B8",
|
||||
"a c #AEAEB0B0BABA",
|
||||
"s c #B4B4B5B5BCBC",
|
||||
"d c #BABABBBBBEBE",
|
||||
"f c None",
|
||||
/* pixels */
|
||||
"ffffOfffffffffffffffffffffffff",
|
||||
"ffff fffffffffffffffffffffffff",
|
||||
"ffff fffffffffffffffu%3fffffff",
|
||||
"ffff fffffffffffffi:=9,$3fffff",
|
||||
"X .fffffffa<&7rrrq,$3fff",
|
||||
" fff +++ fffffd2&4rrrrrrrq,$3f",
|
||||
" fff +++ fffft&1wrrrrrrrrrrq,=",
|
||||
" fff +++ fff#;qrrrrrrrrrrrrr5,",
|
||||
" fff +++ fff>6rrrrrrrrrrrq1@,p",
|
||||
" fffy-rrrrrrrrr8:$2aff",
|
||||
" fffffff fffd@wrrrrre4&-tfffff",
|
||||
" fffffff ffff,5rrrq1@<ifffffff",
|
||||
" fffffff ffffy-r0:$2sfffffffff",
|
||||
" fffffff ffffd&=*tffffffffffff",
|
||||
"o offfffffffffffffffffff"
|
||||
};
|
@ -1,57 +0,0 @@
|
||||
/* XPM */
|
||||
const char *pan_shp_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"24 15 36 1",
|
||||
" c #0D0D0D0D6767",
|
||||
". c #131313136969",
|
||||
"X c #181818186C6C",
|
||||
"o c #1A1A1A1A6E6E",
|
||||
"O c #1E1E1E1E6F6F",
|
||||
"+ c #242424247272",
|
||||
"@ c #2A2A2A2A7575",
|
||||
"# c #303030307878",
|
||||
"$ c #363636367B7B",
|
||||
"% c #3C3C3C3C7E7E",
|
||||
"& c #606060606060",
|
||||
"* c #FFFF7F7F7F7F",
|
||||
"= c #424242428181",
|
||||
"- c #484848488484",
|
||||
"; c #5A5A5A5A8E8E",
|
||||
": c #5F5F5F5F9090",
|
||||
"> c #656565659292",
|
||||
", c #777777779B9B",
|
||||
"< c #7D7D7D7D9E9E",
|
||||
"1 c #7E7E7E7E9F9F",
|
||||
"2 c #A1A14949D3D3",
|
||||
"3 c #A6A64D4DD6D6",
|
||||
"4 c #A9A95050D7D7",
|
||||
"5 c #AAAA5151D8D8",
|
||||
"6 c #ACAC5353D9D9",
|
||||
"7 c #AFAF5656DADA",
|
||||
"8 c #B5B55C5CDDDD",
|
||||
"9 c #B8B85F5FDFDF",
|
||||
"0 c #83838383A1A1",
|
||||
"q c #8F8F8F8FA7A7",
|
||||
"w c #9B9B9B9BADAD",
|
||||
"e c #A1A1A1A1B0B0",
|
||||
"r c #A7A7A7A7B3B3",
|
||||
"t c #ADADADADB6B6",
|
||||
"y c #B9B9B9B9BCBC",
|
||||
"u c None",
|
||||
/* pixels */
|
||||
"uuuuu&uuuuuuuuuuuuuuuuuu",
|
||||
"uuuuu&uuuuuuuuuuuuuuuuuu",
|
||||
"uuuuu&uuuuuuuuuuuuuuuuuu",
|
||||
"uuuuu&uuuuuuuuwOX=<uuuuu",
|
||||
"u&&&&&&&&&uuuw#46<=Owuuu",
|
||||
"u&uuu&***&uut+799994@euu",
|
||||
"u&uuu&***&uuo29999995.uu",
|
||||
"u&uuu&***&uuq$899999>;uu",
|
||||
"u&uuu&***&uuu,-99993@yuu",
|
||||
"u&&&&&&&&&uuuu;>998@wuuu",
|
||||
"u&uuuuuuu&uuuuu%09::uuuu",
|
||||
"u&uuuuuuu&uuuuuy@1@yuuuu",
|
||||
"u&uuuuuuu&uuuuuur euuuuu",
|
||||
"u&uuuuuuu&uuuuuuuuuuuuuu",
|
||||
"u&&&&&&&&&uuuuuuuuuuuuuu"
|
||||
};
|
@ -1,100 +0,0 @@
|
||||
/* XPM */
|
||||
const char *preview__xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 15 79 1",
|
||||
" c gray20",
|
||||
". c #353535353535",
|
||||
"X c gray21",
|
||||
"o c gray22",
|
||||
"O c gray23",
|
||||
"+ c #3C3C3C3C3C3C",
|
||||
"@ c #3E3E3E3E3E3E",
|
||||
"# c #3F3F3F3F3F3F",
|
||||
"$ c gray25",
|
||||
"% c #414141414141",
|
||||
"& c gray26",
|
||||
"* c #434343434343",
|
||||
"= c gray27",
|
||||
"- c #464646464646",
|
||||
"; c #484848484848",
|
||||
": c #494949494949",
|
||||
"> c gray29",
|
||||
", c #4B4B4B4B4B4B",
|
||||
"< c #4C4C4C4C4C4C",
|
||||
"1 c gray30",
|
||||
"2 c #505050505050",
|
||||
"3 c gray32",
|
||||
"4 c gray33",
|
||||
"5 c #555555555555",
|
||||
"6 c #565656565656",
|
||||
"7 c gray34",
|
||||
"8 c gray35",
|
||||
"9 c #5A5A5A5A5A5A",
|
||||
"0 c #5B5B5B5B5B5B",
|
||||
"q c #5D5D5D5D5D5D",
|
||||
"w c #676767676767",
|
||||
"e c #6D6D6D6D6D6D",
|
||||
"r c gray43",
|
||||
"t c #6F6F6F6F6F6F",
|
||||
"y c gray44",
|
||||
"u c #727272727272",
|
||||
"i c gray46",
|
||||
"p c #777777777777",
|
||||
"a c gray47",
|
||||
"s c #7B7B7B7B7B7B",
|
||||
"d c gray49",
|
||||
"f c #7E7E7E7E7E7E",
|
||||
"g c #808080808080",
|
||||
"h c #848484848484",
|
||||
"j c #898989898989",
|
||||
"k c gray54",
|
||||
"l c #8B8B8B8B8B8B",
|
||||
"z c gray55",
|
||||
"x c #8D8D8D8D8D8D",
|
||||
"c c #909090909090",
|
||||
"v c gray57",
|
||||
"b c gray58",
|
||||
"n c gray59",
|
||||
"m c #979797979797",
|
||||
"M c #9A9A9A9A9A9A",
|
||||
"N c #9B9B9B9B9B9B",
|
||||
"B c #9D9D9D9D9D9D",
|
||||
"V c #9F9F9F9F9F9F",
|
||||
"C c #A0A0A0A0A0A0",
|
||||
"Z c gray63",
|
||||
"A c gray64",
|
||||
"S c #A4A4A4A4A4A4",
|
||||
"D c #A5A5A5A5A5A5",
|
||||
"F c gray65",
|
||||
"G c #A7A7A7A7A7A7",
|
||||
"H c #A9A9A9A9A9A9",
|
||||
"J c gray67",
|
||||
"K c #ACACACACACAC",
|
||||
"L c gray68",
|
||||
"P c #AEAEAEAEAEAE",
|
||||
"I c #B4B4B4B4B4B4",
|
||||
"U c gray71",
|
||||
"Y c #B9B9B9B9B9B9",
|
||||
"T c gray73",
|
||||
"R c #BBBBBBBBBBBB",
|
||||
"E c gray74",
|
||||
"W c gray",
|
||||
"Q c gray75",
|
||||
"! c None",
|
||||
/* pixels */
|
||||
"!!!!!!!!d.6Q!!!!",
|
||||
"!!!!!!!coI4j!!!!",
|
||||
"!!!r,51%P!zq!E!!",
|
||||
"!!B*DCAW!!F@a$&S",
|
||||
"!!V:!!!!!!QguJk6",
|
||||
"!!!-m!!!!!!!!!k0",
|
||||
"!!!st!!!!!!!!sXG",
|
||||
"!!Y+n!!!!!!l*5K!",
|
||||
"!R=f!!!!!!x#N!!!",
|
||||
"!5t!!!!!!!wp!!!!",
|
||||
"N+!!!!!!!!HoM!!!",
|
||||
"8l!!!y5t!!!ZO!!!",
|
||||
"3n!!99G2h!!b<!!!",
|
||||
"vOAe>!!L RU.B!!!",
|
||||
"!h>7T!!!i;=f!!!!"
|
||||
};
|
@ -1,30 +0,0 @@
|
||||
#define static
|
||||
#include "appico_xpm.xpm"
|
||||
#include "add__xpm.xpm"
|
||||
#include "arr_1_xpm.xpm"
|
||||
#include "arr__xpm.xpm"
|
||||
#include "assdraw3_xpm.xpm"
|
||||
#include "b__xpm.xpm"
|
||||
#include "c__xpm.xpm"
|
||||
#include "check__xpm.xpm"
|
||||
#include "del__xpm.xpm"
|
||||
#include "del_cross_xpm.xpm"
|
||||
#include "help__xpm.xpm"
|
||||
#include "help_xpm.xpm"
|
||||
#include "l__xpm.xpm"
|
||||
#include "m__xpm.xpm"
|
||||
#include "n__xpm.xpm"
|
||||
#include "new__xpm.xpm"
|
||||
#include "nut__xpm.xpm"
|
||||
#include "p__xpm.xpm"
|
||||
#include "pan_bg_xpm.xpm"
|
||||
#include "pan_both_xpm.xpm"
|
||||
#include "pan_shape_xpm.xpm"
|
||||
#include "pan_shp_xpm.xpm"
|
||||
#include "preview__xpm.xpm"
|
||||
#include "rot__xpm.xpm"
|
||||
#include "s__xpm.xpm"
|
||||
#include "sc_rot__xpm.xpm"
|
||||
#include "src__xpm.xpm"
|
||||
#include "transform_xpm.xpm"
|
||||
#include "uncheck__xpm.xpm"
|