Fully rewritten for Lazarus. Has no backward compatibility with Delphi XE4 now. Now it can be compiled for Windows/Linux/MacOSX.
This commit is contained in:
BIN
PROGRAMICON.ico
BIN
PROGRAMICON.ico
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB |
1164
l2sq_table.inc
Normal file
1164
l2sq_table.inc
Normal file
File diff suppressed because it is too large
Load Diff
68
tim2view.dpr
68
tim2view.dpr
@@ -1,68 +0,0 @@
|
|||||||
program tim2view;
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows,
|
|
||||||
Vcl.Forms,
|
|
||||||
Vcl.Themes,
|
|
||||||
Vcl.Styles,
|
|
||||||
ecc in 'units\ecc.pas',
|
|
||||||
edc in 'units\edc.pas',
|
|
||||||
umain in 'Units\umain.pas' {frmMain},
|
|
||||||
ucdimage in 'units\ucdimage.pas',
|
|
||||||
ucommon in 'units\ucommon.pas',
|
|
||||||
udrawtim in 'units\udrawtim.pas',
|
|
||||||
uscanresult in 'units\uscanresult.pas',
|
|
||||||
uscanthread in 'units\uscanthread.pas',
|
|
||||||
usettings in 'units\usettings.pas',
|
|
||||||
utim in 'units\utim.pas',
|
|
||||||
ueventwaitthread in 'units\ueventwaitthread.pas',
|
|
||||||
udirselect in 'units\udirselect.pas';
|
|
||||||
|
|
||||||
{$R *.res}
|
|
||||||
|
|
||||||
const
|
|
||||||
cMailslot = '\\.\mailslot\t2v_slot';
|
|
||||||
cEventNname = 't2v_open_event';
|
|
||||||
|
|
||||||
var
|
|
||||||
ClientMailSlot: THandle;
|
|
||||||
path: string;
|
|
||||||
BytesWritten: DWORD;
|
|
||||||
|
|
||||||
begin
|
|
||||||
ServerMailSlot := CreateMailslot(cMailslot, 0, MAILSLOT_WAIT_FOREVER, nil);
|
|
||||||
|
|
||||||
if ServerMailSlot = INVALID_HANDLE_VALUE then
|
|
||||||
begin
|
|
||||||
if GetLastError = ERROR_ALREADY_EXISTS then
|
|
||||||
begin
|
|
||||||
ClientMailSlot := CreateFile(cMailslot, GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
|
|
||||||
|
|
||||||
if ParamCount > 0 then
|
|
||||||
path := ParamStr(1)
|
|
||||||
else
|
|
||||||
path := '';
|
|
||||||
|
|
||||||
if path <> '' then
|
|
||||||
WriteFile(ClientMailSlot, path[1], Length(path) * SizeOf(Char), BytesWritten, nil);
|
|
||||||
|
|
||||||
CommandEvent := OpenEvent(EVENT_MODIFY_STATE, False, cEventNname);
|
|
||||||
SetEvent(CommandEvent);
|
|
||||||
|
|
||||||
CloseHandle(CommandEvent);
|
|
||||||
CloseHandle(ClientMailSlot);
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
CommandEvent := CreateEvent(nil, False, False, cEventNname);
|
|
||||||
|
|
||||||
Application.Initialize;
|
|
||||||
Application.MainFormOnTaskbar := True;
|
|
||||||
Application.CreateForm(TfrmMain, frmMain);
|
|
||||||
Application.Run;
|
|
||||||
|
|
||||||
CloseHandle(ServerMailSlot);
|
|
||||||
CloseHandle(CommandEvent);
|
|
||||||
end;
|
|
||||||
end.
|
|
||||||
222
tim2view.dproj
222
tim2view.dproj
@@ -1,222 +0,0 @@
|
|||||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<ProjectGuid>{20D93FC8-189B-40E7-8CB2-DBD3BD57B0B5}</ProjectGuid>
|
|
||||||
<ProjectVersion>15.1</ProjectVersion>
|
|
||||||
<FrameworkType>VCL</FrameworkType>
|
|
||||||
<MainSource>tim2view.dpr</MainSource>
|
|
||||||
<Base>True</Base>
|
|
||||||
<Config Condition="'$(Config)'==''">Release</Config>
|
|
||||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
|
||||||
<TargetedPlatforms>3</TargetedPlatforms>
|
|
||||||
<AppType>Application</AppType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
|
||||||
<Base_Win32>true</Base_Win32>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
|
||||||
<Base_Win64>true</Base_Win64>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
|
|
||||||
<Cfg_1>true</Cfg_1>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
|
||||||
<Cfg_1_Win32>true</Cfg_1_Win32>
|
|
||||||
<CfgParent>Cfg_1</CfgParent>
|
|
||||||
<Cfg_1>true</Cfg_1>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
|
|
||||||
<Cfg_1_Win64>true</Cfg_1_Win64>
|
|
||||||
<CfgParent>Cfg_1</CfgParent>
|
|
||||||
<Cfg_1>true</Cfg_1>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
|
|
||||||
<Cfg_2>true</Cfg_2>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
|
|
||||||
<Cfg_2_Win32>true</Cfg_2_Win32>
|
|
||||||
<CfgParent>Cfg_2</CfgParent>
|
|
||||||
<Cfg_2>true</Cfg_2>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
|
|
||||||
<Cfg_2_Win64>true</Cfg_2_Win64>
|
|
||||||
<CfgParent>Cfg_2</CfgParent>
|
|
||||||
<Cfg_2>true</Cfg_2>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Base)'!=''">
|
|
||||||
<DCC_UsePackage>bindcompfmx;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;bindcomp;inetdb;DataSnapClient;DataSnapServer;DataSnapCommon;DBXInterBaseDriver;DataSnapProviderClient;xmlrtl;DbxCommonDriver;IndyProtocols;dbxcds;DBXMySQLDriver;bindengine;soaprtl;DBXOracleDriver;CustomIPTransport;dsnap;DBXInformixDriver;IndyCore;fmxase;DBXFirebirdDriver;inet;fmxobj;inetdbxpress;DBXSybaseASADriver;fmxdae;IPIndyImpl;dbexpress;DataSnapIndy10ServerTransport;$(DCC_UsePackage)</DCC_UsePackage>
|
|
||||||
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
|
|
||||||
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
|
|
||||||
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
|
|
||||||
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
|
||||||
<DCC_E>false</DCC_E>
|
|
||||||
<DCC_N>false</DCC_N>
|
|
||||||
<DCC_S>false</DCC_S>
|
|
||||||
<DCC_F>false</DCC_F>
|
|
||||||
<DCC_K>false</DCC_K>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
|
||||||
<DCC_UnitSearchPath>.\units;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
|
|
||||||
<DCC_UsePackage>vcldbx;TeeDB;inetdbbde;vclib;DBXOdbcDriver;Tee;DBXSybaseASEDriver;ibxpress;svnui;vclimg;fmi;intrawebdb_120_160;vclactnband;vcldb;FMXTee;vcldsnap;bindcompvcl;TeeUI;vclie;DBXDb2Driver;Intraweb_120_160;vcltouch;websnap;vclribbon;VclSmp;vcl;DataSnapConnectors;CloudService;DBXMSSQLDriver;FmxTeeUI;dsnapcon;vclx;webdsnap;svn;bdertl;adortl;PBFolderDialogPackRun;$(DCC_UsePackage)</DCC_UsePackage>
|
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
|
||||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
|
||||||
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
|
||||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
|
||||||
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
|
||||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
|
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
|
||||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
|
||||||
<DCC_UsePackage>DBXOdbcDriver;DBXSybaseASEDriver;vclimg;vclactnband;vcldb;vcldsnap;bindcompvcl;vclie;DBXDb2Driver;vcltouch;websnap;VclSmp;vcl;DBXMSSQLDriver;dsnapcon;vclx;webdsnap;adortl;$(DCC_UsePackage)</DCC_UsePackage>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
|
||||||
<Manifest_File>None</Manifest_File>
|
|
||||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
|
||||||
<VerInfo_Locale>1049</VerInfo_Locale>
|
|
||||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
|
||||||
<DCC_Optimize>false</DCC_Optimize>
|
|
||||||
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
|
|
||||||
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
|
||||||
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
|
||||||
<DCC_IMPLICIT_STRING_CAST>false</DCC_IMPLICIT_STRING_CAST>
|
|
||||||
<DCC_SUSPICIOUS_TYPECAST>false</DCC_SUSPICIOUS_TYPECAST>
|
|
||||||
<DCC_MapFile>3</DCC_MapFile>
|
|
||||||
<DCC_Optimize>true</DCC_Optimize>
|
|
||||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.523;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
|
||||||
<VerInfo_Build>523</VerInfo_Build>
|
|
||||||
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
|
||||||
<DCC_IOChecking>false</DCC_IOChecking>
|
|
||||||
<DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
|
|
||||||
<VerInfo_AutoIncVersion>true</VerInfo_AutoIncVersion>
|
|
||||||
<DCC_RangeChecking>true</DCC_RangeChecking>
|
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
|
||||||
<Icon_MainIcon>PROGRAMICON.ico</Icon_MainIcon>
|
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
|
||||||
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
|
|
||||||
<DCC_MapFile>3</DCC_MapFile>
|
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
|
||||||
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
|
||||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
|
||||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
|
||||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
|
||||||
<DCC_DebugInformation>0</DCC_DebugInformation>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
|
|
||||||
<DCC_IMPLICIT_STRING_CAST>false</DCC_IMPLICIT_STRING_CAST>
|
|
||||||
<VerInfo_Keys>CompanyName=Lab 313;FileDescription=The best TIMs tool ever!:);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
|
||||||
<DCC_DebugInformation>false</DCC_DebugInformation>
|
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
|
||||||
<DCC_IOChecking>false</DCC_IOChecking>
|
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
|
|
||||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
|
||||||
<DCC_IMPLICIT_STRING_CAST>false</DCC_IMPLICIT_STRING_CAST>
|
|
||||||
<DCC_DebugInformation>false</DCC_DebugInformation>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<DelphiCompile Include="$(MainSource)">
|
|
||||||
<MainSource>MainSource</MainSource>
|
|
||||||
</DelphiCompile>
|
|
||||||
<DCCReference Include="units\ecc.pas"/>
|
|
||||||
<DCCReference Include="units\edc.pas"/>
|
|
||||||
<DCCReference Include="Units\umain.pas">
|
|
||||||
<Form>frmMain</Form>
|
|
||||||
</DCCReference>
|
|
||||||
<DCCReference Include="units\ucdimage.pas"/>
|
|
||||||
<DCCReference Include="units\ucommon.pas"/>
|
|
||||||
<DCCReference Include="units\udrawtim.pas"/>
|
|
||||||
<DCCReference Include="units\uscanresult.pas"/>
|
|
||||||
<DCCReference Include="units\uscanthread.pas"/>
|
|
||||||
<DCCReference Include="units\usettings.pas"/>
|
|
||||||
<DCCReference Include="units\utim.pas"/>
|
|
||||||
<DCCReference Include="units\ueventwaitthread.pas"/>
|
|
||||||
<DCCReference Include="units\udirselect.pas"/>
|
|
||||||
<None Include="units\l2sq_table.inc"/>
|
|
||||||
<BuildConfiguration Include="Release">
|
|
||||||
<Key>Cfg_2</Key>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
</BuildConfiguration>
|
|
||||||
<BuildConfiguration Include="Base">
|
|
||||||
<Key>Base</Key>
|
|
||||||
</BuildConfiguration>
|
|
||||||
<BuildConfiguration Include="Debug">
|
|
||||||
<Key>Cfg_1</Key>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
</BuildConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<ProjectExtensions>
|
|
||||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
|
||||||
<Borland.ProjectType/>
|
|
||||||
<BorlandProject>
|
|
||||||
<Delphi.Personality>
|
|
||||||
<VersionInfo>
|
|
||||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
|
||||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
|
||||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
|
||||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
|
||||||
<VersionInfo Name="Release">0</VersionInfo>
|
|
||||||
<VersionInfo Name="Build">0</VersionInfo>
|
|
||||||
<VersionInfo Name="Debug">False</VersionInfo>
|
|
||||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
|
||||||
<VersionInfo Name="Special">False</VersionInfo>
|
|
||||||
<VersionInfo Name="Private">False</VersionInfo>
|
|
||||||
<VersionInfo Name="DLL">False</VersionInfo>
|
|
||||||
<VersionInfo Name="Locale">1049</VersionInfo>
|
|
||||||
<VersionInfo Name="CodePage">1251</VersionInfo>
|
|
||||||
</VersionInfo>
|
|
||||||
<VersionInfoKeys>
|
|
||||||
<VersionInfoKeys Name="CompanyName"/>
|
|
||||||
<VersionInfoKeys Name="FileDescription"/>
|
|
||||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
|
||||||
<VersionInfoKeys Name="InternalName"/>
|
|
||||||
<VersionInfoKeys Name="LegalCopyright"/>
|
|
||||||
<VersionInfoKeys Name="LegalTrademarks"/>
|
|
||||||
<VersionInfoKeys Name="OriginalFilename"/>
|
|
||||||
<VersionInfoKeys Name="ProductName"/>
|
|
||||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
|
||||||
<VersionInfoKeys Name="Comments"/>
|
|
||||||
</VersionInfoKeys>
|
|
||||||
<Source>
|
|
||||||
<Source Name="MainSource">tim2view.dpr</Source>
|
|
||||||
</Source>
|
|
||||||
<Excluded_Packages>
|
|
||||||
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k180.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
|
||||||
<Excluded_Packages Name="$(BDSBIN)\dclofficexp180.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
|
||||||
</Excluded_Packages>
|
|
||||||
</Delphi.Personality>
|
|
||||||
<Deployment/>
|
|
||||||
<Platforms>
|
|
||||||
<Platform value="Win32">True</Platform>
|
|
||||||
<Platform value="Win64">True</Platform>
|
|
||||||
</Platforms>
|
|
||||||
</BorlandProject>
|
|
||||||
<ProjectFileVersion>12</ProjectFileVersion>
|
|
||||||
</ProjectExtensions>
|
|
||||||
<Import Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')" Project="$(BDS)\Bin\CodeGear.Delphi.Targets"/>
|
|
||||||
<Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>
|
|
||||||
</Project>
|
|
||||||
BIN
tim2view.ico
Normal file
BIN
tim2view.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 181 KiB |
154
tim2view.lpi
Normal file
154
tim2view.lpi
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="9"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<General>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
|
<Title Value="tim2view"/>
|
||||||
|
<ResourceType Value="res"/>
|
||||||
|
<UseXPManifest Value="True"/>
|
||||||
|
<Icon Value="0"/>
|
||||||
|
</General>
|
||||||
|
<i18n>
|
||||||
|
<EnableI18N LFM="False"/>
|
||||||
|
</i18n>
|
||||||
|
<VersionInfo>
|
||||||
|
<UseVersionInfo Value="True"/>
|
||||||
|
<AutoIncrementBuild Value="True"/>
|
||||||
|
<MajorVersionNr Value="1"/>
|
||||||
|
<RevisionNr Value="54"/>
|
||||||
|
<BuildNr Value="68"/>
|
||||||
|
<StringTable CompanyName="Lab 313" FileDescription="The best TIMs tool ever!:)" ProductVersion=""/>
|
||||||
|
</VersionInfo>
|
||||||
|
<BuildModes Count="1">
|
||||||
|
<Item1 Name="Default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<local>
|
||||||
|
<FormatVersion Value="1"/>
|
||||||
|
</local>
|
||||||
|
</RunParams>
|
||||||
|
<RequiredPackages Count="1">
|
||||||
|
<Item1>
|
||||||
|
<PackageName Value="LCL"/>
|
||||||
|
</Item1>
|
||||||
|
</RequiredPackages>
|
||||||
|
<Units Count="13">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="tim2view.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="tim2view"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="frmMain"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<UnitName Value="umain"/>
|
||||||
|
</Unit1>
|
||||||
|
<Unit2>
|
||||||
|
<Filename Value="edc.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="edc"/>
|
||||||
|
</Unit2>
|
||||||
|
<Unit3>
|
||||||
|
<Filename Value="ecc.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="ecc"/>
|
||||||
|
</Unit3>
|
||||||
|
<Unit4>
|
||||||
|
<Filename Value="ucommon.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="ucommon"/>
|
||||||
|
</Unit4>
|
||||||
|
<Unit5>
|
||||||
|
<Filename Value="utim.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="utim"/>
|
||||||
|
</Unit5>
|
||||||
|
<Unit6>
|
||||||
|
<Filename Value="ucdimage.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="ucdimage"/>
|
||||||
|
</Unit6>
|
||||||
|
<Unit7>
|
||||||
|
<Filename Value="usettings.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="usettings"/>
|
||||||
|
</Unit7>
|
||||||
|
<Unit8>
|
||||||
|
<Filename Value="uscanresult.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="uscanresult"/>
|
||||||
|
</Unit8>
|
||||||
|
<Unit9>
|
||||||
|
<Filename Value="uscanthread.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="uscanthread"/>
|
||||||
|
</Unit9>
|
||||||
|
<Unit10>
|
||||||
|
<Filename Value="ucpucount.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="ucpucount"/>
|
||||||
|
</Unit10>
|
||||||
|
<Unit11>
|
||||||
|
<Filename Value="udrawtim.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="udrawtim"/>
|
||||||
|
</Unit11>
|
||||||
|
<Unit12>
|
||||||
|
<Filename Value="bgrabitmap\bgrabitmap.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="BGRABitmap"/>
|
||||||
|
</Unit12>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="tim2view"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="$(ProjOutDir);bgrabitmap"/>
|
||||||
|
<OtherUnitFiles Value="bgrabitmap"/>
|
||||||
|
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<CodeGeneration>
|
||||||
|
<TargetCPU Value="i386"/>
|
||||||
|
<TargetOS Value="win32"/>
|
||||||
|
</CodeGeneration>
|
||||||
|
<Linking>
|
||||||
|
<Options>
|
||||||
|
<Win32>
|
||||||
|
<GraphicApplication Value="True"/>
|
||||||
|
</Win32>
|
||||||
|
</Options>
|
||||||
|
</Linking>
|
||||||
|
<Other>
|
||||||
|
<CompilerMessages>
|
||||||
|
<MsgFileName Value=""/>
|
||||||
|
</CompilerMessages>
|
||||||
|
<CompilerPath Value="$(CompPath)"/>
|
||||||
|
</Other>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions Count="3">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="EAbort"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item3>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
||||||
21
tim2view.lpr
Normal file
21
tim2view.lpr
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
program tim2view;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF UNIX}
|
||||||
|
cthreads, cmem,
|
||||||
|
{$ENDIF}
|
||||||
|
Interfaces, // this includes the LCL widgetset
|
||||||
|
Forms, umain, edc, ucommon, ecc, ucdimage, utim, usettings, uscanresult,
|
||||||
|
uscanthread, ucpucount, udrawtim, BGRABitmap;
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
|
||||||
|
begin
|
||||||
|
RequireDerivedFormResource := True;
|
||||||
|
Application.Initialize;
|
||||||
|
Application.CreateForm(TfrmMain, frmMain);
|
||||||
|
Application.Run;
|
||||||
|
end.
|
||||||
|
|
||||||
410
tim2view.lps
Normal file
410
tim2view.lps
Normal file
@@ -0,0 +1,410 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectSession>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Version Value="9"/>
|
||||||
|
<BuildModes Active="Default"/>
|
||||||
|
<Units Count="34">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="tim2view.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="tim2view"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="37" Y="11"/>
|
||||||
|
<UsageCount Value="46"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="frmMain"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<UnitName Value="umain"/>
|
||||||
|
<EditorIndex Value="0"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="862"/>
|
||||||
|
<CursorPos X="1" Y="877"/>
|
||||||
|
<UsageCount Value="46"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
<LoadedDesigner Value="True"/>
|
||||||
|
</Unit1>
|
||||||
|
<Unit2>
|
||||||
|
<Filename Value="edc.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="edc"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="42"/>
|
||||||
|
<CursorPos X="88" Y="20"/>
|
||||||
|
<UsageCount Value="46"/>
|
||||||
|
</Unit2>
|
||||||
|
<Unit3>
|
||||||
|
<Filename Value="ecc.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="ecc"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="6" Y="11"/>
|
||||||
|
<UsageCount Value="46"/>
|
||||||
|
</Unit3>
|
||||||
|
<Unit4>
|
||||||
|
<Filename Value="ucommon.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="ucommon"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="18"/>
|
||||||
|
<CursorPos X="15" Y="35"/>
|
||||||
|
<UsageCount Value="46"/>
|
||||||
|
</Unit4>
|
||||||
|
<Unit5>
|
||||||
|
<Filename Value="utim.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="utim"/>
|
||||||
|
<EditorIndex Value="1"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="165"/>
|
||||||
|
<CursorPos X="85" Y="179"/>
|
||||||
|
<UsageCount Value="46"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit5>
|
||||||
|
<Unit6>
|
||||||
|
<Filename Value="ucdimage.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="ucdimage"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="12"/>
|
||||||
|
<CursorPos X="11" Y="37"/>
|
||||||
|
<UsageCount Value="46"/>
|
||||||
|
</Unit6>
|
||||||
|
<Unit7>
|
||||||
|
<Filename Value="usettings.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="usettings"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="52"/>
|
||||||
|
<CursorPos X="87" Y="71"/>
|
||||||
|
<UsageCount Value="46"/>
|
||||||
|
</Unit7>
|
||||||
|
<Unit8>
|
||||||
|
<Filename Value="uscanresult.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="uscanresult"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="26"/>
|
||||||
|
<CursorPos X="1" Y="66"/>
|
||||||
|
<UsageCount Value="45"/>
|
||||||
|
</Unit8>
|
||||||
|
<Unit9>
|
||||||
|
<Filename Value="uscanthread.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="uscanthread"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="173"/>
|
||||||
|
<CursorPos X="22" Y="197"/>
|
||||||
|
<UsageCount Value="45"/>
|
||||||
|
</Unit9>
|
||||||
|
<Unit10>
|
||||||
|
<Filename Value="ucpucount.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="ucpucount"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="44"/>
|
||||||
|
<CursorPos X="57" Y="58"/>
|
||||||
|
<UsageCount Value="44"/>
|
||||||
|
</Unit10>
|
||||||
|
<Unit11>
|
||||||
|
<Filename Value="udrawtim.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="udrawtim"/>
|
||||||
|
<IsVisibleTab Value="True"/>
|
||||||
|
<EditorIndex Value="2"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="187"/>
|
||||||
|
<CursorPos X="35" Y="203"/>
|
||||||
|
<UsageCount Value="31"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit11>
|
||||||
|
<Unit12>
|
||||||
|
<Filename Value="bgrabitmap\bgrabitmap.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="BGRABitmap"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="55"/>
|
||||||
|
<CursorPos X="3" Y="69"/>
|
||||||
|
<UsageCount Value="21"/>
|
||||||
|
</Unit12>
|
||||||
|
<Unit13>
|
||||||
|
<Filename Value="l2sq_table.pas"/>
|
||||||
|
<UnitName Value="l2sq_table"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="70"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<UsageCount Value="19"/>
|
||||||
|
</Unit13>
|
||||||
|
<Unit14>
|
||||||
|
<Filename Value="umain.lfm"/>
|
||||||
|
<ComponentName Value="frmMain"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<ExtraEditorCount Value="4"/>
|
||||||
|
<ExtraEditor1>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
</ExtraEditor1>
|
||||||
|
<ExtraEditor2>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
</ExtraEditor2>
|
||||||
|
<ExtraEditor3>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
</ExtraEditor3>
|
||||||
|
<ExtraEditor4>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
</ExtraEditor4>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
<DefaultSyntaxHighlighter Value="LFM"/>
|
||||||
|
</Unit14>
|
||||||
|
<Unit15>
|
||||||
|
<Filename Value="C:\codetyphon\fpcsrc\rtl\unix\cthreads.pp"/>
|
||||||
|
<UnitName Value="cthreads"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="10"/>
|
||||||
|
<CursorPos X="29" Y="24"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit15>
|
||||||
|
<Unit16>
|
||||||
|
<Filename Value="C:\codetyphon\typhon\components\pl_Synapse\source\synamisc.pas"/>
|
||||||
|
<UnitName Value="synamisc"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="151"/>
|
||||||
|
<CursorPos X="25" Y="165"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit16>
|
||||||
|
<Unit17>
|
||||||
|
<Filename Value="C:\codetyphon\typhon\lcl\forms.pp"/>
|
||||||
|
<UnitName Value="Forms"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="50"/>
|
||||||
|
<CursorPos X="3" Y="64"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit17>
|
||||||
|
<Unit18>
|
||||||
|
<Filename Value="C:\codetyphon\fpcsrc\rtl\objpas\fgl.pp"/>
|
||||||
|
<UnitName Value="fgl"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="138"/>
|
||||||
|
<CursorPos X="7" Y="152"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit18>
|
||||||
|
<Unit19>
|
||||||
|
<Filename Value="C:\codetyphon\typhon\lcl\comctrls.pp"/>
|
||||||
|
<UnitName Value="ComCtrls"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1203"/>
|
||||||
|
<CursorPos X="3" Y="1217"/>
|
||||||
|
<UsageCount Value="11"/>
|
||||||
|
</Unit19>
|
||||||
|
<Unit20>
|
||||||
|
<Filename Value="Graphics32\Packages\GR32_L.pas"/>
|
||||||
|
<UnitName Value="GR32_L"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="18" Y="13"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit20>
|
||||||
|
<Unit21>
|
||||||
|
<Filename Value="Graphics32\GR32.pas"/>
|
||||||
|
<UnitName Value="GR32"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="432"/>
|
||||||
|
<CursorPos X="58" Y="447"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit21>
|
||||||
|
<Unit22>
|
||||||
|
<Filename Value="Graphics32\GR32_Png.pas"/>
|
||||||
|
<UnitName Value="GR32_PNG"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="904"/>
|
||||||
|
<CursorPos X="1" Y="918"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit22>
|
||||||
|
<Unit23>
|
||||||
|
<Filename Value="Graphics32\GR32_PortableNetworkGraphic.pas"/>
|
||||||
|
<UnitName Value="GR32_PortableNetworkGraphic"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="4696"/>
|
||||||
|
<CursorPos X="3" Y="4700"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit23>
|
||||||
|
<Unit24>
|
||||||
|
<Filename Value="C:\lazarus\fpc\2.6.2\source\rtl\inc\objpash.inc"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="178"/>
|
||||||
|
<CursorPos X="23" Y="192"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit24>
|
||||||
|
<Unit25>
|
||||||
|
<Filename Value="C:\lazarus\lcl\graphics.pp"/>
|
||||||
|
<UnitName Value="Graphics"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1369"/>
|
||||||
|
<CursorPos X="14" Y="1383"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit25>
|
||||||
|
<Unit26>
|
||||||
|
<Filename Value="C:\lazarus\lcl\graphtype.pp"/>
|
||||||
|
<UnitName Value="GraphType"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="193"/>
|
||||||
|
<CursorPos X="3" Y="195"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit26>
|
||||||
|
<Unit27>
|
||||||
|
<Filename Value="bgra-controls\bgragraphiccontrol.pas"/>
|
||||||
|
<UnitName Value="BGRAGraphicControl"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="35"/>
|
||||||
|
<CursorPos X="14" Y="49"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit27>
|
||||||
|
<Unit28>
|
||||||
|
<Filename Value="bgrabitmap\bgrawinbitmap.pas"/>
|
||||||
|
<UnitName Value="BGRAWinBitmap"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="33"/>
|
||||||
|
<CursorPos X="32" Y="47"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit28>
|
||||||
|
<Unit29>
|
||||||
|
<Filename Value="C:\lazarus\packager\registration\fcllaz.pas"/>
|
||||||
|
<UnitName Value="fcllaz"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit29>
|
||||||
|
<Unit30>
|
||||||
|
<Filename Value="AggPasMod\Examples\Simple\AlphaMask.dpr"/>
|
||||||
|
<UnitName Value="AlphaMask"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="26" Y="11"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit30>
|
||||||
|
<Unit31>
|
||||||
|
<Filename Value="bgrabitmap\bgrabitmaptypes.pas"/>
|
||||||
|
<UnitName Value="BGRABitmapTypes"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="356"/>
|
||||||
|
<CursorPos X="16" Y="370"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit31>
|
||||||
|
<Unit32>
|
||||||
|
<Filename Value="bgrabitmap\bgradefaultbitmap.pas"/>
|
||||||
|
<UnitName Value="BGRADefaultBitmap"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="895"/>
|
||||||
|
<CursorPos X="1" Y="919"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit32>
|
||||||
|
<Unit33>
|
||||||
|
<Filename Value="C:\codetyphon\typhon\packager\registration\fcllaz.pas"/>
|
||||||
|
<UnitName Value="fcllaz"/>
|
||||||
|
<WindowIndex Value="0"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit33>
|
||||||
|
</Units>
|
||||||
|
<CustomDefines Count="1">
|
||||||
|
<Define0 Value="UseCThreads"/>
|
||||||
|
</CustomDefines>
|
||||||
|
<General>
|
||||||
|
<ActiveWindowIndexAtStart Value="0"/>
|
||||||
|
</General>
|
||||||
|
<JumpHistory Count="18" HistoryIndex="17">
|
||||||
|
<Position1>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="876" Column="31" TopLine="861"/>
|
||||||
|
</Position1>
|
||||||
|
<Position2>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="888" Column="26" TopLine="879"/>
|
||||||
|
</Position2>
|
||||||
|
<Position3>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="894" Column="32" TopLine="880"/>
|
||||||
|
</Position3>
|
||||||
|
<Position4>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="897" Column="9" TopLine="883"/>
|
||||||
|
</Position4>
|
||||||
|
<Position5>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="894" Column="1" TopLine="883"/>
|
||||||
|
</Position5>
|
||||||
|
<Position6>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="894" Column="1" TopLine="883"/>
|
||||||
|
</Position6>
|
||||||
|
<Position7>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="895" Column="1" TopLine="883"/>
|
||||||
|
</Position7>
|
||||||
|
<Position8>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="894" Column="59" TopLine="883"/>
|
||||||
|
</Position8>
|
||||||
|
<Position9>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="896" Column="23" TopLine="883"/>
|
||||||
|
</Position9>
|
||||||
|
<Position10>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="883" Column="47" TopLine="871"/>
|
||||||
|
</Position10>
|
||||||
|
<Position11>
|
||||||
|
<Filename Value="udrawtim.pas"/>
|
||||||
|
<Caret Line="125" Column="24" TopLine="5"/>
|
||||||
|
</Position11>
|
||||||
|
<Position12>
|
||||||
|
<Filename Value="udrawtim.pas"/>
|
||||||
|
<Caret Line="10" Column="28" TopLine="4"/>
|
||||||
|
</Position12>
|
||||||
|
<Position13>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="204" Column="30" TopLine="192"/>
|
||||||
|
</Position13>
|
||||||
|
<Position14>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="131" Column="21" TopLine="117"/>
|
||||||
|
</Position14>
|
||||||
|
<Position15>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="518" Column="1" TopLine="504"/>
|
||||||
|
</Position15>
|
||||||
|
<Position16>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="519" Column="1" TopLine="504"/>
|
||||||
|
</Position16>
|
||||||
|
<Position17>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="892" Column="41" TopLine="875"/>
|
||||||
|
</Position17>
|
||||||
|
<Position18>
|
||||||
|
<Filename Value="umain.pas"/>
|
||||||
|
<Caret Line="519" Column="1" TopLine="504"/>
|
||||||
|
</Position18>
|
||||||
|
</JumpHistory>
|
||||||
|
</ProjectSession>
|
||||||
|
<EditorMacros Count="0"/>
|
||||||
|
</CONFIG>
|
||||||
BIN
tim2view.res
BIN
tim2view.res
Binary file not shown.
@@ -40,7 +40,7 @@ procedure ReplaceTimInFileFromMemory(const FileName: string; TIM: PTIM;
|
|||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
ucommon, ecc, edc, classes, sysutils, windows;
|
ucommon, ecc, edc, classes, FileUtil, sysutils;
|
||||||
|
|
||||||
function bin2bcd(P: Integer): byte;
|
function bin2bcd(P: Integer): byte;
|
||||||
begin
|
begin
|
||||||
@@ -73,9 +73,9 @@ var
|
|||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
Sz := FileSize(FileName);
|
Sz := FileSize(FileName);
|
||||||
tmp := nil;
|
|
||||||
|
|
||||||
if (Sz > cMaxFileSize) or (Sz = 0) then Exit;
|
if (Sz > cMaxFileSize) or (Sz = 0) then
|
||||||
|
Exit;
|
||||||
|
|
||||||
pFile := GetMemory(cSectorHeaderSize);
|
pFile := GetMemory(cSectorHeaderSize);
|
||||||
|
|
||||||
@@ -3,7 +3,8 @@ unit ucommon;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
const
|
const
|
||||||
cProgramName = 'Tim2View r55 by [Lab 313]';
|
cProgramName = 'Tim2View by [Lab 313]';
|
||||||
|
cProgramVersion = '2.0 Release';
|
||||||
cExtractedTimsDir = 'TIMS';
|
cExtractedTimsDir = 'TIMS';
|
||||||
cExtractedPngsDir = 'PNGS';
|
cExtractedPngsDir = 'PNGS';
|
||||||
cMaxFileSize = $2EAEED80;
|
cMaxFileSize = $2EAEED80;
|
||||||
@@ -25,29 +26,13 @@ type
|
|||||||
TBytesArray = array [0 .. cMaxFileSize - 1] of byte;
|
TBytesArray = array [0 .. cMaxFileSize - 1] of byte;
|
||||||
PBytesArray = ^TBytesArray;
|
PBytesArray = ^TBytesArray;
|
||||||
|
|
||||||
procedure Text2Clipboard(const S: string);
|
|
||||||
function ExtractJustName(const Path: string): string;
|
function ExtractJustName(const Path: string): string;
|
||||||
function Min(A, B: Integer): Integer;
|
function Min(A, B: Integer): Integer;
|
||||||
function Max(A, B: Integer): Integer;
|
function Max(A, B: Integer): Integer;
|
||||||
function GetCoreCount: Integer;
|
|
||||||
function FileSize(const FileName: string): Integer;
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses sysutils, windows, clipbrd;
|
uses sysutils;
|
||||||
|
|
||||||
function GetCoreCount: Integer;
|
|
||||||
var
|
|
||||||
SystemInfo: SYSTEM_INFO;
|
|
||||||
begin
|
|
||||||
GetSystemInfo(&SystemInfo);
|
|
||||||
Result := SystemInfo.dwNumberOfProcessors;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure Text2Clipboard(const S: string);
|
|
||||||
begin
|
|
||||||
Clipboard.AsText := S;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Min(A, B: Integer): Integer;
|
function Min(A, B: Integer): Integer;
|
||||||
begin
|
begin
|
||||||
@@ -71,22 +56,4 @@ begin
|
|||||||
Result := Copy(Result, 1, Length(Result) - Length(ExtractFileExt(Result)));
|
Result := Copy(Result, 1, Length(Result) - Length(ExtractFileExt(Result)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function FileSize(const FileName: string): Integer;
|
|
||||||
var
|
|
||||||
FindData: TWin32FindData;
|
|
||||||
hFind: THandle;
|
|
||||||
begin
|
|
||||||
Result := 0;
|
|
||||||
hFind := FindFirstFile(PChar(FileName), FindData);
|
|
||||||
|
|
||||||
if hFind <> INVALID_HANDLE_VALUE then
|
|
||||||
begin
|
|
||||||
|
|
||||||
Windows.FindClose(hFind);
|
|
||||||
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
|
|
||||||
Result := Integer(FindData.nFileSizeLow);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
74
ucpucount.pas
Normal file
74
ucpucount.pas
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
unit ucpucount;
|
||||||
|
interface
|
||||||
|
//returns number of cores: a computer with two hyperthreaded cores will report 4
|
||||||
|
function GetLogicalCpuCount: Integer;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$IF defined(windows)}
|
||||||
|
uses windows;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
{$IF defined(darwin)}
|
||||||
|
uses ctypes, sysctl;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
{$IFDEF Linux}
|
||||||
|
uses ctypes;
|
||||||
|
|
||||||
|
const _SC_NPROCESSORS_ONLN = 83;
|
||||||
|
function sysconf(i: cint): clong; cdecl; external name 'sysconf';
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
|
||||||
|
function GetLogicalCpuCount: integer;
|
||||||
|
// returns a good default for the number of threads on this system
|
||||||
|
{$IF defined(windows)}
|
||||||
|
//returns total number of processors available to system including logical hyperthreaded processors
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
ProcessAffinityMask, SystemAffinityMask: DWORD_PTR;
|
||||||
|
Mask: DWORD;
|
||||||
|
SystemInfo: SYSTEM_INFO;
|
||||||
|
begin
|
||||||
|
if GetProcessAffinityMask(GetCurrentProcess, ProcessAffinityMask, SystemAffinityMask)
|
||||||
|
then begin
|
||||||
|
Result := 0;
|
||||||
|
for i := 0 to 31 do begin
|
||||||
|
Mask := DWord(1) shl i;
|
||||||
|
if (ProcessAffinityMask and Mask)<>0 then
|
||||||
|
inc(Result);
|
||||||
|
end;
|
||||||
|
end else begin
|
||||||
|
//can't get the affinity mask so we just report the total number of processors
|
||||||
|
GetSystemInfo(SystemInfo);
|
||||||
|
Result := SystemInfo.dwNumberOfProcessors;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{$ELSEIF defined(UNTESTEDsolaris)}
|
||||||
|
begin
|
||||||
|
t = sysconf(_SC_NPROC_ONLN);
|
||||||
|
end;
|
||||||
|
{$ELSEIF defined(freebsd) or defined(darwin)}
|
||||||
|
var
|
||||||
|
mib: array[0..1] of cint;
|
||||||
|
len: cint;
|
||||||
|
t: cint;
|
||||||
|
begin
|
||||||
|
mib[0] := CTL_HW;
|
||||||
|
mib[1] := HW_NCPU;
|
||||||
|
len := sizeof(t);
|
||||||
|
fpsysctl(pchar(@mib), 2, @t, @len, Nil, 0);
|
||||||
|
Result:=t;
|
||||||
|
end;
|
||||||
|
{$ELSEIF defined(linux)}
|
||||||
|
begin
|
||||||
|
Result:=sysconf(_SC_NPROCESSORS_ONLN);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$ELSE}
|
||||||
|
begin
|
||||||
|
Result:=1;
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
end.
|
||||||
@@ -3,14 +3,14 @@ unit udrawtim;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
utim, Grids, Graphics, types, pngimage;
|
utim, Grids, Graphics, types, BGRABitmap;
|
||||||
|
|
||||||
type
|
type
|
||||||
PCanvas = ^TCanvas;
|
PCanvas = ^TCanvas;
|
||||||
PPNG = ^TPngImage; { TODO : Replace with another type }
|
PDrawSurf = ^TBGRABitmap;
|
||||||
PDrawGrid = ^TDrawGrid;
|
PDrawGrid = ^TDrawGrid;
|
||||||
|
|
||||||
procedure TimToPNG(TIM: PTIM; CLUT_NUM: Integer; var PNG: PPNG; TranspMode: Byte);
|
procedure TimToPNG(TIM: PTIM; CLUT_NUM: Integer; var Surf: PDrawSurf; TranspMode: Byte);
|
||||||
procedure DrawClutCell(TIM: PTIM; CLUT_NUM: Integer; Grid: PDrawGrid; X, Y: Integer);
|
procedure DrawClutCell(TIM: PTIM; CLUT_NUM: Integer; Grid: PDrawGrid; X, Y: Integer);
|
||||||
procedure DrawCLUT(TIM: PTIM; CLUT_NUM: Integer; Grid: PDrawGrid);
|
procedure DrawCLUT(TIM: PTIM; CLUT_NUM: Integer; Grid: PDrawGrid);
|
||||||
procedure ClearCanvas(ACanvas: PCanvas; Rect: TRect);
|
procedure ClearCanvas(ACanvas: PCanvas; Rect: TRect);
|
||||||
@@ -19,7 +19,7 @@ procedure ClearGrid(Grid: PDrawGrid);
|
|||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
ucommon, windows;
|
ucommon, BGRABitmapTypes;
|
||||||
|
|
||||||
function PrepareCLUT(TIM: PTIM; CLUT_NUM: Integer): PCLUT_COLORS;
|
function PrepareCLUT(TIM: PTIM; CLUT_NUM: Integer): PCLUT_COLORS;
|
||||||
var
|
var
|
||||||
@@ -107,7 +107,7 @@ begin
|
|||||||
ClearCanvas(@Grid^.Canvas, Grid^.CellRect(X - 1, Y - 1));
|
ClearCanvas(@Grid^.Canvas, Grid^.CellRect(X - 1, Y - 1));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TimToPNG(TIM: PTIM; CLUT_NUM: Integer; var PNG: PPNG; TranspMode: Byte);
|
procedure TimToPNG(TIM: PTIM; CLUT_NUM: Integer; var Surf: PDrawSurf; TranspMode: Byte);
|
||||||
var
|
var
|
||||||
RW, RH, CW: Word;
|
RW, RH, CW: Word;
|
||||||
CLUT_DATA: PCLUT_COLORS;
|
CLUT_DATA: PCLUT_COLORS;
|
||||||
@@ -116,14 +116,15 @@ var
|
|||||||
R, G, B, STP, ALPHA: Byte;
|
R, G, B, STP, ALPHA: Byte;
|
||||||
COLOR: TCLUT_COLOR;
|
COLOR: TCLUT_COLOR;
|
||||||
CL: Integer;
|
CL: Integer;
|
||||||
|
P: PBGRAPixel;
|
||||||
Transparent, SemiTransparent: boolean;
|
Transparent, SemiTransparent: boolean;
|
||||||
begin
|
begin
|
||||||
RW := GetTimRealWidth(TIM);
|
RW := GetTimRealWidth(TIM);
|
||||||
RH := GetTimHeight(TIM);
|
RH := GetTimHeight(TIM);
|
||||||
|
|
||||||
PNG^ := TPngImage.CreateBlank(COLOR_RGBALPHA, 16, RW, RH);
|
if Surf^ <> nil then Surf^.Free;
|
||||||
PNG^.CompressionLevel := 0;
|
|
||||||
PNG^.Filters := [];
|
Surf^ := TBGRABitmap.Create(RW, RH);
|
||||||
|
|
||||||
CLUT_DATA := PrepareCLUT(TIM, CLUT_NUM);
|
CLUT_DATA := PrepareCLUT(TIM, CLUT_NUM);
|
||||||
IMAGE_DATA := PrepareIMAGE(TIM);
|
IMAGE_DATA := PrepareIMAGE(TIM);
|
||||||
@@ -139,6 +140,8 @@ begin
|
|||||||
STP := 0;
|
STP := 0;
|
||||||
|
|
||||||
for Y := 1 to RH do
|
for Y := 1 to RH do
|
||||||
|
begin
|
||||||
|
P := Surf^.ScanLine[Y - 1];
|
||||||
for X := 1 to RW do
|
for X := 1 to RW do
|
||||||
begin
|
begin
|
||||||
case TIM^.HEAD^.bBPP of
|
case TIM^.HEAD^.bBPP of
|
||||||
@@ -200,14 +203,17 @@ begin
|
|||||||
R := 0;
|
R := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
PNG^.AlphaScanline[Y - 1]^[X - 1] := ALPHA;
|
P^.alpha:=ALPHA;
|
||||||
pRGBLine(PNG^.Scanline[Y - 1])^[X - 1].rgbtBlue := B;
|
P^.blue := B;
|
||||||
pRGBLine(PNG^.Scanline[Y - 1])^[X - 1].rgbtGreen := G;
|
P^.green := G;
|
||||||
pRGBLine(PNG^.Scanline[Y - 1])^[X - 1].rgbtRed := R;
|
P^.red := R;
|
||||||
|
|
||||||
|
Inc(P);
|
||||||
Inc(IMAGE_DATA_POS);
|
Inc(IMAGE_DATA_POS);
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Surf^.InvalidateBitmap;
|
||||||
Dispose(CLUT_DATA);
|
Dispose(CLUT_DATA);
|
||||||
Dispose(IMAGE_DATA);
|
Dispose(IMAGE_DATA);
|
||||||
end;
|
end;
|
||||||
@@ -231,7 +237,7 @@ begin
|
|||||||
|
|
||||||
Rect := Grid^.CellRect(X, Y);
|
Rect := Grid^.CellRect(X, Y);
|
||||||
|
|
||||||
Grid^.Canvas.Brush.COLOR := RGB(R, G, B);
|
Grid^.Canvas.Brush.COLOR := RGBToColor(R, G, B);
|
||||||
|
|
||||||
Grid^.Canvas.FillRect(Rect);
|
Grid^.Canvas.FillRect(Rect);
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
821
umain.lrs
Normal file
821
umain.lrs
Normal file
@@ -0,0 +1,821 @@
|
|||||||
|
{ This is an automatically generated lazarus resource file }
|
||||||
|
|
||||||
|
LazarusResources.Add('TfrmMain','FORMDATA',[
|
||||||
|
'TPF0'#8'TfrmMain'#7'frmMain'#4'Left'#3#207#1#6'Height'#3'N'#2#3'Top'#3#134#0
|
||||||
|
+#5'Width'#3#12#3#18'HorzScrollBar.Page'#3#12#3#18'VertScrollBar.Page'#3':'#2
|
||||||
|
+#13'ActiveControl'#7#7'pnlList'#10'AutoScroll'#9#12'ClientHeight'#3':'#2#11
|
||||||
|
+'ClientWidth'#3#12#3#5'Color'#7#9'clBtnFace'#10'Font.Color'#7#12'clWindowTex'
|
||||||
|
+'t'#11'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#9'Icon.Data'#10#242':'#0#0
|
||||||
|
+#238':'#0#0#0#0#1#0#3#0'00'#0#0#0#0#0#0#168'%'#0#0'6'#0#0#0' '#0#0#0#0#0#0
|
||||||
|
+#168#16#0#0#222'%'#0#0#16#16#0#0#0#0#0#0'h'#4#0#0#134'6'#0#0'('#0#0#0'0'#0#0
|
||||||
|
+#0'`'#0#0#0#1#0' '#0#0#0#0#0#128'%'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('
|
||||||
|
+#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252'('
|
||||||
|
+#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#230#0#255#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255
|
||||||
|
+#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255
|
||||||
|
+#255#230#0#255#255#230#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('
|
||||||
|
+#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0
|
||||||
|
+#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255
|
||||||
|
+#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#230#0#255#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
,#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252'('
|
||||||
|
+#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255#255#230
|
||||||
|
+#0#255#255#230#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255
|
||||||
|
+#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#230#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255
|
||||||
|
+#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4
|
||||||
|
+#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255
|
||||||
|
+#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252
|
||||||
|
+'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255#255
|
||||||
|
+#230#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0
|
||||||
|
+#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255
|
||||||
|
+#230#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('
|
||||||
|
+#4#255#252'('#4#255#252'('#4#255#255#255#255#0#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0
|
||||||
|
+#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('
|
||||||
|
+#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#252'('#4#255#252
|
||||||
|
+'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255#255
|
||||||
|
+#230#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255
|
||||||
|
+#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4
|
||||||
|
,#255#252'('#4#255#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255
|
||||||
|
+#230#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('
|
||||||
|
+#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255
|
||||||
|
+#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#230#0#255#255#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230
|
||||||
|
+#0#255#255#230#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255
|
||||||
|
+#230#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#252'('
|
||||||
|
+#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4
|
||||||
|
+#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#230#0#255
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4
|
||||||
|
+#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230
|
||||||
|
+#0#255#255#230#0#255#255#230#0#255#255#230#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('
|
||||||
|
+#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255
|
||||||
|
+#230#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#252'('
|
||||||
|
+#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
,'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#230#0#255
|
||||||
|
+#255#230#0#255#255#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252'('
|
||||||
|
+#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#230#0#255#255#230#0#255#255#230#0#255#255#230#0#255#255#255#255
|
||||||
|
+#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#252
|
||||||
|
+'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('
|
||||||
|
+#4#255#252'('#4#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255#255
|
||||||
|
+#230#0#255#255#230#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#252'('#4#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#230
|
||||||
|
+#0#255#255#230#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#252'('#4#255#252'('#4#255#255#255#255#0#255#255#255#0#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#0#175#231#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#252'('#4#255#252'('#4#255#252'('#4#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#230#0#255#255#230#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255
|
||||||
|
+#0#175#231#255#0#175#231#255#141#157'5'#255#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#0#175#231#255#0#175#231#255#0#175#231#255
|
||||||
|
+#0#175#231#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#0#175#231#255
|
||||||
|
+#141#157'5'#255#141#157'5'#255#141#157'5'#255#141#157'5'#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#175#231
|
||||||
|
+#255#0#175#231#255#0#175#231#255#0#175#231#255#0#175#231#255#0#175#231#255#6
|
||||||
|
+#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#141#157'5'#255
|
||||||
|
+#141#157'5'#255#141#157'5'#255#141#157'5'#255#141#157'5'#255#155'^:'#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
,#255#0#255#255#255#0#255#255#255#0#0#175#231#255#0#175#231#255#0#175#231#255
|
||||||
|
+#0#175#231#255#0#175#231#255#255#255#255#0#141#157'5'#255#6#6#255#255#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#141#157'5'#255#255#255#255#0#255#255#255#0#141
|
||||||
|
+#157'5'#255#141#157'5'#255#155'^:'#255#155'^:'#255#155'^:'#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#0#175#231#255#0#175#231#255#0#175#231#255#141#157'5'
|
||||||
|
+#255#141#157'5'#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255
|
||||||
|
+#255#141#157'5'#255#141#157'5'#255#155'^:'#255#155'^:'#255#155'^:'#255#155'^'
|
||||||
|
+':'#255#155'^:'#255#155'^:'#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#141#157'5'#255#141#157'5'#255#141#157'5'#255#141#157'5'
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#155'^:'#255#155'^:'#255
|
||||||
|
+#155'^:'#255#155'^:'#255#155'^:'#255#155'^:'#255#155'^:'#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#155'^:'#255#155'^:'#255#6#6#255#255#6#6#255#255#6#6#255
|
||||||
|
+#255#6#6#255#255#255#255#255#0#255#255#255#0#155'^:'#255#155'^:'#255#155'^:'
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255
|
||||||
|
+#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#6#6#255#255#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6
|
||||||
|
+#6#255#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255
|
||||||
|
,#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255
|
||||||
|
+#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#6#6#255#255#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6
|
||||||
|
+#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6
|
||||||
|
+#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
,#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#199#255#255#255#207#0#0#255#129#241#243#255#135#0#0
|
||||||
|
+#255#0#240#225#255#131#0#0#255#0#240#225#255#131#0#0#255#0#240#225#255#135#0
|
||||||
|
+#0#255#0#240#225#255#199#0#0#255#0#248#240#199#199#0#0#255#0#248'p'#195#195#0
|
||||||
|
+#0#255#128#248'x'#193#227#0#0#255#128#252'x'#193#227#0#0#255#128#252'x@'#227
|
||||||
|
+#0#0#255#128#252'8@c'#0#0#255#128#254'<@c'#0#0#255#192#254'<'#6'1'#0#0#255
|
||||||
|
+#192#254#28#7#17#0#0#255#192#254#28#7#1#0#0#255#192#255#30#7#129#0#0#255#192
|
||||||
|
+#255#14#7#193#0#0#255#224#255#14#7#193#0#0#255#224#255#14#15#224#0#0#255#224
|
||||||
|
+#255#14#15#224#0#0#255#224#255#6#15#240#0#0#255#224#255#134#15#240#0#0#255
|
||||||
|
+#240#127#135#15#240#0#0#255#240#127#135#152'x'#0#0#255#240#127#159#240#31#0#0
|
||||||
|
+#255#240#127#255#0#7#0#0#255#240'?'#252#0#129#0#0#255#248'?'#248' `'#0#0#255
|
||||||
|
+#248'?'#252#16#0#0#0#255#248#31#255#0#1#0#0#255#248#31#255#192#199#0#0#255
|
||||||
|
+#248#31#255#240#135#0#0#255#252#15#255#240#131#0#0#255#252#15#255#240#129#0#0
|
||||||
|
+#255#252#15#255#240#129#0#0#255#252#7#255#240#129#0#0#255#252#7#255#240#129#0
|
||||||
|
+#0#255#252#7#255#240#129#0#0#255#252#3#255#240#131#0#0#135#248#3#199#240#3#0
|
||||||
|
+#0#0#0#0#0#240#7#0#0#0#0#0#0'0?'#0#0#0#0#0#0#31#255#0#0#0#0#0#0#15#255#0#0#0
|
||||||
|
+#0#0#0#15#255#0#0#0#0#0#0#15#255#0#0#135#255#255#0#31#255#0#0'('#0#0#0' '#0#0
|
||||||
|
+#0'@'#0#0#0#1#0' '#0#0#0#0#0#128#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#220#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#220#0#255#255#220#0#255#255#220#0#255#255#255#255#255#0#255
|
||||||
|
,#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'
|
||||||
|
+#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#220#0
|
||||||
|
+#255#255#220#0#255#255#220#0#255#255#255#255#255#0#255#255#255#0#255'&'#0#255
|
||||||
|
+#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255
|
||||||
|
+'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255#255#255#255#0#255#255#255#0#220#0#255#255#220#0#255#255#220
|
||||||
|
+#0#255#255#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#220#0#255#255#220#0#255#255#255#255
|
||||||
|
+#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255
|
||||||
|
+#255#255#0#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#220#0#255#255#220#0#255#255#220#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255'&'#0
|
||||||
|
+#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255'&'#0#255#255
|
||||||
|
+'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#220#0#255#255#220#0#255#255#220#0#255#255#255#255#255#0#255#255#255#0#255'&'
|
||||||
|
+#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255'&'#0#255#255'&'#0#255#255
|
||||||
|
+'&'#0#255#255'&'#0#255#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#220#0
|
||||||
|
+#255#255#220#0#255#255#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255
|
||||||
|
+#255'&'#0#255#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#220#0#255#255#220#0#255
|
||||||
|
+#255#220#0#255#255#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255
|
||||||
|
+#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255
|
||||||
|
+#255#255#255#0#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#220#0#255#255#220#0#255#255#220#0#255#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0
|
||||||
|
+#255#255'&'#0#255#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'
|
||||||
|
+#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#220#0#255#255#220#0#255#255#220#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255
|
||||||
|
+#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#220#0#255#255#220#0#255#255#220#0#255#255#255#255#255#0#255'&'#0#255
|
||||||
|
+#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#220#0#255
|
||||||
|
+#255#220#0#255#255#220#0#255#255#255#255#255#0#255'&'#0#255#255'&'#0#255#255
|
||||||
|
,'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#220#0#255#255#220#0#255#255
|
||||||
|
+#220#0#255#255#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#220#0#255#255#220#0#255#255#220#0#255#255
|
||||||
|
+#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255'&'#0#255
|
||||||
|
+#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#220#0#255#255#220#0#255#255#220#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255'&'#0#255#255'&'#0#255#255'&'#0#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255
|
||||||
|
+#255'&'#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#220#0#255#255#220#0#255#255#220#0#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255
|
||||||
|
+#255#0#175#231#255#255#255#255#0#255#255#255#0#255'&'#0#255#255'&'#0#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#175#231#255#0#175#231#255
|
||||||
|
+#0#175#231#255#0#175#231#255#6#6#255#255#6#6#255#255#6#6#255#255#0#175#231
|
||||||
|
+#255#141#157'5'#255#141#157'5'#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#0#175#231#255#0#175#231#255#0#175#231#255#0#175#231
|
||||||
|
+#255#0#175#231#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#141#157
|
||||||
|
+'5'#255#141#157'5'#255#141#157'5'#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#0#175#231#255#0#175#231#255#141#157'5'#255#255#255
|
||||||
|
+#255#0#6#6#255#255#6#6#255#255#6#6#255#255#141#157'5'#255#255#255#255#0#155
|
||||||
|
+'^:'#255#155'^:'#255#155'^:'#255#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#141#157'5'#255#141#157'5'#255#141#157'5'#255#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#155'^:'#255#155'^:'#255#155'^:'#255#155'^:'#255
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#155'^:'#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#255#255#255#0#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#255
|
||||||
|
+#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
,#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#6#6#255#255
|
||||||
|
+#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6
|
||||||
|
+#255#255#6#6#255#255#6#6#255#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255
|
||||||
|
+#6#6#255#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#6#6#255#255#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255
|
||||||
|
+#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#255#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0
|
||||||
|
+#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'
|
||||||
|
+#0#255#255'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0'w'#0#255#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0'w'#0#255#255'w'#0#255#255'w'#0#255#255
|
||||||
|
+'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255#255'w'#0#255
|
||||||
|
+#255'w'#0#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#252'='#255#243#248#24
|
||||||
|
+#199#225#248#24#199#225#248#24#199#243#248#28#198'q'#252#28'b1'#252#28'b'#17
|
||||||
|
+#252#30'b'#25#252#30'2'#9#252#30'0A'#252#30'0`'#254#31#16'p'#254#31#16'p'#254
|
||||||
|
+#31#24#248#254#31#16#248#255#31#24#248#255#31#31#140#255#15#240#3#255#15#224
|
||||||
|
+#17#255#15#241#8#255#7#248#1#255#135#254#19#255#135#255#17#255#131#255#17#255
|
||||||
|
+#131#255#17#255#131#255#17#143#129#255#1#0#0#3#3#0#0#1#7#0#0#0#255#0#0#0#255
|
||||||
|
+#159#252#0#255'('#0#0#0#16#0#0#0' '#0#0#0#1#0' '#0#0#0#0#0'@'#4#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255
|
||||||
|
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#0
|
||||||
|
+#175#231#255#0#175#231#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#0#175#231#255#0#175#231#255#0#175#231#255#0#175#231#255
|
||||||
|
+#0#175#231#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#141#157'5'#255
|
||||||
|
+#141#157'5'#255#141#157'5'#255#141#157'5'#255#255#255#255#0#255#255#255#0#0
|
||||||
|
+#175#231#255#0#175#231#255#0#175#231#255#0#175#231#255#0#175#231#255#0#175
|
||||||
|
+#231#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#141
|
||||||
|
,#157'5'#255#141#157'5'#255#141#157'5'#255#155'^:'#255#255#255#255#0#0#175#231
|
||||||
|
+#255#0#175#231#255#0#175#231#255#0#175#231#255#141#157'5'#255#255#255#255#0#6
|
||||||
|
+#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#141#157'5'#255#255#255#255#0
|
||||||
|
+#155'^:'#255#155'^:'#255#155'^:'#255#155'^:'#255#255#255#255#0#255#255#255#0
|
||||||
|
+#141#157'5'#255#141#157'5'#255#141#157'5'#255#141#157'5'#255#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#6#6#255#255#155'^:'#255#155'^:'#255#155'^:'#255#155'^:'
|
||||||
|
+#255#155'^:'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#141#157'5'#255#155'^:'#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#255#255#255#0#155'^:'#255#155'^:'#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255
|
||||||
|
+#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#6#6
|
||||||
|
+#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#6#6#255#255#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255
|
||||||
|
+#6#6#255#255#6#6#255#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6
|
||||||
|
+#6#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6
|
||||||
|
+#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255
|
||||||
|
+#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#6#6#255#255#255#255#255
|
||||||
|
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
|
+#255#255#0#255#255#255#0#255#255#255#0#6#6#255#255#6#6#255#255#6#6#255#255#6
|
||||||
|
+#6#255#255#6#6#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||||
|
+#0#255#255#255#0#254'?'#0#0#252#15#0#0#128#3#0#0#0'!'#0#0#4#16#0#0#192#1#0#0
|
||||||
|
+#240''''#0#0#252'#'#0#0#252'!'#0#0#252'!'#0#0#252'!'#0#0#252'!'#0#0#252#1#0#0
|
||||||
|
+#252#3#0#0#252#7#0#0#252#31#0#0#4'Menu'#7#6'mmMain'#7'OnClose'#7#9'FormClose'
|
||||||
|
+#8'OnCreate'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'
|
||||||
|
+#6#3'1.3'#0#6'TPanel'#9'pnlStatus'#4'Left'#2#0#6'Height'#2#30#3'Top'#3#28#2#5
|
||||||
|
+'Width'#3#12#3#5'Align'#7#8'alBottom'#10'BevelOuter'#7#9'bvLowered'#12'Clien'
|
||||||
|
+'tHeight'#2#30#11'ClientWidth'#3#12#3#8'TabOrder'#2#2#0#6'TLabel'#9'lblStatu'
|
||||||
|
+'s'#4'Left'#2'L'#6'Height'#2#28#3'Top'#2#1#5'Width'#3#164#0#5'Align'#7#8'alC'
|
||||||
|
+'lient'#9'Alignment'#7#14'taRightJustify'#6'Layout'#7#8'tlCenter'#11'ParentC'
|
||||||
|
+'olor'#8#0#0#12'TProgressBar'#10'pbProgress'#4'Left'#3#240#0#6'Height'#2#28#3
|
||||||
|
+'Top'#2#1#5'Width'#3#27#2#5'Align'#7#7'alRight'#7'Anchors'#11#5'akTop'#6'akL'
|
||||||
|
+'eft'#7'akRight'#8'akBottom'#0#6'Smooth'#9#8'TabOrder'#2#1#0#0#7'TButton'#11
|
||||||
|
+'btnStopScan'#4'Left'#2#1#6'Height'#2#28#3'Top'#2#1#5'Width'#2'K'#5'Align'#7
|
||||||
|
+#6'alLeft'#7'Caption'#6#9'Stop Scan'#7'Enabled'#8#7'OnClick'#7#16'btnStopSca'
|
||||||
|
+'nClick'#8'TabOrder'#2#0#0#0#0#9'TComboBox'#8'cbbFiles'#4'Left'#2#0#6'Height'
|
||||||
|
+#2#21#3'Top'#2#0#5'Width'#3#12#3#5'Align'#7#5'alTop'#13'DropDownCount'#2#30#7
|
||||||
|
+'Enabled'#8#10'ItemHeight'#2#13#8'OnChange'#7#14'cbbFilesChange'#9'OnCloseUp'
|
||||||
|
+#7#21'actReturnFocusExecute'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#0#0
|
||||||
|
+#0#6'TPanel'#7'pnlMain'#4'Left'#2#0#6'Height'#3#7#2#3'Top'#2#21#5'Width'#3#12
|
||||||
|
+#3#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#7#2
|
||||||
|
+#11'ClientWidth'#3#12#3#8'TabOrder'#2#1#0#9'TSplitter'#7'splMain'#4'Left'#3
|
||||||
|
+#240#0#6'Height'#3#7#2#3'Top'#2#0#5'Width'#2#5#0#0#6'TPanel'#7'pnlList'#4'Le'
|
||||||
|
+'ft'#2#0#6'Height'#3#7#2#3'Top'#2#0#5'Width'#3#240#0#5'Align'#7#6'alLeft'#10
|
||||||
|
+'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#7#2#11'ClientWidth'#3#240#0#8'Ta'
|
||||||
|
+'bOrder'#2#0#0#9'TListView'#6'lvList'#4'Left'#2#0#6'Height'#3#230#1#3'Top'#2
|
||||||
|
+'!'#5'Width'#3#240#0#5'Align'#7#8'alClient'#7'Columns'#14#1#7'Caption'#6#5'#'
|
||||||
|
+' / 0'#5'Width'#2'<'#0#1#9'Alignment'#7#8'taCenter'#7'Caption'#6#5'W x H'#5
|
||||||
|
+'Width'#2'F'#0#1#9'Alignment'#7#8'taCenter'#7'Caption'#6#3'BPP'#5'Width'#2'#'
|
||||||
|
+#0#1#9'Alignment'#7#8'taCenter'#7'Caption'#6#5'CLUTs'#0#0#11'ColumnClick'#8#7
|
||||||
|
+'Enabled'#8#9'GridLines'#9#13'HideSelection'#8#9'OwnerData'#9#9'PopupMenu'#7
|
||||||
|
,#6'pmList'#8'ReadOnly'#9#9'RowSelect'#9#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsR'
|
||||||
|
+'eport'#0#0#6'TPanel'#13'pnlExtractAll'#4'Left'#2#0#6'Height'#2'!'#3'Top'#2#0
|
||||||
|
+#5'Width'#3#240#0#5'Align'#7#5'alTop'#10'BevelOuter'#7#9'bvLowered'#12'Clien'
|
||||||
|
+'tHeight'#2'!'#11'ClientWidth'#3#240#0#8'TabOrder'#2#1#0#7'TButton'#17'btnEx'
|
||||||
|
+'tractAllTims'#4'Left'#3#139#0#6'Height'#2#31#3'Top'#2#1#5'Width'#2'd'#6'Act'
|
||||||
|
+'ion'#7#14'actExtractPNGs'#5'Align'#7#7'alRight'#8'TabOrder'#2#0#0#0#7'TButt'
|
||||||
|
+'on'#14'btnExtractPNGs'#4'Left'#2#1#6'Height'#2#31#3'Top'#2#1#5'Width'#2'd'#6
|
||||||
|
+'Action'#7#14'actExtractTIMs'#5'Align'#7#6'alLeft'#8'TabOrder'#2#1#0#0#0#0#6
|
||||||
|
+'TPanel'#8'pnlImage'#4'Left'#3#245#0#6'Height'#3#7#2#3'Top'#2#0#5'Width'#3#23
|
||||||
|
+#2#5'Align'#7#8'alClient'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#3#7
|
||||||
|
+#2#11'ClientWidth'#3#23#2#8'TabOrder'#2#1#0#9'TSplitter'#12'splImageClut'#6
|
||||||
|
+'Cursor'#7#8'crVSplit'#4'Left'#2#1#6'Height'#2#3#3'Top'#2#1#5'Width'#3#21#2#5
|
||||||
|
+'Align'#7#5'alTop'#7'Beveled'#9#12'ResizeAnchor'#7#5'akTop'#0#0#6'TImage'#5
|
||||||
|
+'pbTim'#4'Left'#2#1#6'Height'#3'U'#1#3'Top'#2#4#5'Width'#3#21#2#5'Align'#7#8
|
||||||
|
+'alClient'#6'Center'#9#9'PopupMenu'#7#7'pmImage'#12'Proportional'#9#0#0#9'TD'
|
||||||
|
+'rawGrid'#11'grdCurrClut'#4'Left'#2#1#6'Height'#3#150#0#3'Top'#3'Y'#1#5'Widt'
|
||||||
|
+'h'#3#21#2#5'Align'#7#8'alBottom'#8'ColCount'#2#1#15'DefaultColWidth'#2#14#16
|
||||||
|
+'DefaultRowHeight'#2#14#7'Enabled'#8#14'ExtendedSelect'#8#9'FixedCols'#2#0#9
|
||||||
|
+'FixedRows'#2#0#7'Options'#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goV'
|
||||||
|
+'ertLine'#10'goHorzLine'#19'goDrawFocusSelected'#0#8'RowCount'#2#1#10'Scroll'
|
||||||
|
+'Bars'#7#6'ssNone'#8'TabOrder'#2#0#15'TitleFont.Color'#7#12'clWindowText'#16
|
||||||
|
+'TitleFont.Height'#2#245#14'TitleFont.Name'#6#6'Tahoma'#7'Visible'#8#10'OnDb'
|
||||||
|
+'lClick'#7#19'grdCurrClutDblClick'#10'OnDrawCell'#7#19'grdCurrClutDrawCell'#0
|
||||||
|
+#0#6'TPanel'#15'pnlImageOptions'#4'Left'#2#1#6'Height'#2#23#3'Top'#3#239#1#5
|
||||||
|
+'Width'#3#21#2#5'Align'#7#8'alBottom'#8'AutoSize'#9#10'BevelOuter'#7#6'bvNon'
|
||||||
|
+'e'#12'ClientHeight'#2#23#11'ClientWidth'#3#21#2#8'TabOrder'#2#1#0#7'TButton'
|
||||||
|
+#11'btnShowClut'#4'Left'#3#225#1#6'Height'#2#23#3'Top'#2#0#5'Width'#2'4'#5'A'
|
||||||
|
+'lign'#7#7'alRight'#7'Caption'#6#4'CLUT'#7'OnClick'#7#16'btnShowClutClick'#8
|
||||||
|
+'TabOrder'#2#0#0#0#9'TComboBox'#10'cbbBitMode'#4'Left'#2#0#6'Height'#2#21#3
|
||||||
|
+'Top'#2#0#5'Width'#2'J'#5'Align'#7#6'alLeft'#7'Enabled'#8#10'ItemHeight'#2#13
|
||||||
|
+#9'ItemIndex'#2#0#13'Items.Strings'#1#6#4'Real'#6#5'4 BPP'#6#5'8 BPP'#6#6'16'
|
||||||
|
+' BPP'#6#6'24 BPP'#0#8'OnChange'#7#25'actDrawSelectedTimExecute'#9'OnCloseUp'
|
||||||
|
+#7#21'actReturnFocusExecute'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#1#4
|
||||||
|
+'Text'#6#4'Real'#0#0#9'TComboBox'#13'cbbTranspMode'#4'Left'#2'J'#6'Height'#2
|
||||||
|
+#21#3'Top'#2#0#5'Width'#2'z'#5'Align'#7#6'alLeft'#7'Enabled'#8#10'ItemHeight'
|
||||||
|
+#2#13#9'ItemIndex'#2#0#13'Items.Strings'#1#6#17'Full transparence'#6#18'Blac'
|
||||||
|
+'k Transparence'#6#17'Semi Transparence'#6#15'No Transparence'#0#8'OnChange'
|
||||||
|
+#7#19'cbbTranspModeChange'#9'OnCloseUp'#7#21'actReturnFocusExecute'#5'Style'
|
||||||
|
+#7#14'csDropDownList'#8'TabOrder'#2#2#4'Text'#6#17'Full transparence'#0#0#9
|
||||||
|
+'TComboBox'#7'cbbCLUT'#4'Left'#3't'#1#6'Height'#2#21#3'Top'#2#0#5'Width'#2'm'
|
||||||
|
+#5'Align'#7#7'alRight'#13'DropDownCount'#2#16#10'ItemHeight'#2#13#8'OnChange'
|
||||||
|
+#7#13'cbbCLUTChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#3#0#0#0#0#0
|
||||||
|
+#11'TOpenDialog'#11'dlgOpenFile'#5'Title'#6#22'Please, select File...'#10'De'
|
||||||
|
+'faultExt'#6#4'.bin'#6'Filter'#6#19'All Files (*.*)|*.*'#7'Options'#11#14'of'
|
||||||
|
+'HideReadOnly'#13'ofNoChangeDir'#18'ofAllowMultiSelect'#15'ofFileMustExist'
|
||||||
|
+#17'ofNoNetworkButton'#14'ofEnableSizing'#17'ofForceShowHidden'#0#4'left'#3
|
||||||
|
+#156#2#3'top'#3#246#1#0#0#9'TMainMenu'#6'mmMain'#4'left'#3'`'#2#3'top'#3#248
|
||||||
|
+#1#0#9'TMenuItem'#6'mnFile'#7'Caption'#6#5'&File'#0#9'TMenuItem'#10'mnScanFi'
|
||||||
|
+'le'#6'Action'#7#11'actScanFile'#0#0#9'TMenuItem'#9'mnScanDir'#6'Action'#7#10
|
||||||
|
+'actScanDir'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#11'mn'
|
||||||
|
+'CloseFile'#6'Action'#7#12'actCloseFile'#0#0#9'TMenuItem'#15'mnCloseAllFiles'
|
||||||
|
+#6'Action'#7#13'actCloseFiles'#0#0#9'TMenuItem'#6'mnExit'#6'Action'#7#7'actE'
|
||||||
|
+'xit'#0#0#0#9'TMenuItem'#5'mnTIM'#7'Caption'#6#4'&TIM'#0#9'TMenuItem'#9'mnSa'
|
||||||
|
+'veTIM'#6'Action'#7#13'actExtractTim'#0#0#9'TMenuItem'#11'mnReplaceIn'#6'Act'
|
||||||
|
+'ion'#7#13'actReplaceTim'#0#0#9'TMenuItem'#11'mnSaveToPNG'#6'Action'#7#10'ac'
|
||||||
|
+'tTim2Png'#0#0#9'TMenuItem'#2'N4'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#13'mnTi'
|
||||||
|
+'mInfoMain'#6'Action'#7#10'actTimInfo'#0#0#0#9'TMenuItem'#9'mnOptions'#7'Cap'
|
||||||
|
+'tion'#6#8'&Options'#0#9'TMenuItem'#11'mnAssociate'#6'Action'#7#12'actAssocT'
|
||||||
|
+'ims'#0#0#0#9'TMenuItem'#6'mnHelp'#7'Caption'#6#5'&Help'#0#9'TMenuItem'#5'mn'
|
||||||
|
+'SVN'#6'Action'#7#11'actOpenRepo'#0#0#9'TMenuItem'#6'mnSite'#6'Action'#7#10
|
||||||
|
+'actOpenLab'#0#0#9'TMenuItem'#2'N3'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#7'mnA'
|
||||||
|
+'bout'#6'Action'#7#8'actAbout'#0#0#0#0#18'TSavePictureDialog'#10'dlgSavePNG'
|
||||||
|
+#5'Title'#6'"Please, select filename for PNG...'#10'DefaultExt'#6#4'.png'#6
|
||||||
|
+'Filter'#6'''Portable Network Graphics (*.png)|*.png'#7'Options'#11#14'ofHid'
|
||||||
|
,'eReadOnly'#13'ofNoChangeDir'#17'ofNoNetworkButton'#14'ofEnableSizing'#0#4'l'
|
||||||
|
+'eft'#3#192#2#3'top'#3#248#1#0#0#11'TSaveDialog'#10'dlgSaveTIM'#5'Title'#6'('
|
||||||
|
+'Please, select where to save TIM file...'#10'DefaultExt'#6#4'.tim'#6'Filter'
|
||||||
|
+#6'/PSX TIM Files (*.tim)|*.tim|All Files (*.*)|*.*'#7'Options'#11#17'ofOver'
|
||||||
|
+'writePrompt'#14'ofHideReadOnly'#13'ofNoChangeDir'#17'ofNoNetworkButton'#14
|
||||||
|
+'ofEnableSizing'#0#4'left'#3'@'#2#3'top'#3#248#1#0#0#12'TColorDialog'#8'dlgC'
|
||||||
|
+'olor'#5'Color'#7#7'clBlack'#20'CustomColors.Strings'#1#6#13'ColorA=000000'#6
|
||||||
|
+#13'ColorB=000080'#6#13'ColorC=008000'#6#13'ColorD=008080'#6#13'ColorE=80000'
|
||||||
|
+'0'#6#13'ColorF=800080'#6#13'ColorG=808000'#6#13'ColorH=808080'#6#13'ColorI='
|
||||||
|
+'C0C0C0'#6#13'ColorJ=0000FF'#6#13'ColorK=00FF00'#6#13'ColorL=00FFFF'#6#13'Co'
|
||||||
|
+'lorM=FF0000'#6#13'ColorN=FF00FF'#6#13'ColorO=FFFF00'#6#13'ColorP=FFFFFF'#6
|
||||||
|
+#13'ColorQ=C0DCC0'#6#13'ColorR=F0CAA6'#6#13'ColorS=F0FBFF'#6#13'ColorT=A4A0A'
|
||||||
|
+'0'#0#4'left'#3' '#2#3'top'#3#246#1#0#0#11'TActionList'#7'actList'#4'left'#3
|
||||||
|
+#0#2#3'top'#3#246#1#0#7'TAction'#11'actScanFile'#7'Caption'#6#13'Scan &File.'
|
||||||
|
+'..'#9'OnExecute'#7#18'actScanFileExecute'#8'ShortCut'#2't'#0#0#7'TAction'#10
|
||||||
|
+'actScanDir'#7'Caption'#6#18'Scan &Directory...'#9'OnExecute'#7#17'actScanDi'
|
||||||
|
+'rExecute'#8'ShortCut'#2'u'#0#0#7'TAction'#12'actCloseFile'#7'Caption'#6#16
|
||||||
|
+'Close &this File'#9'OnExecute'#7#19'actCloseFileExecute'#8'ShortCut'#2'w'#0
|
||||||
|
+#0#7'TAction'#13'actCloseFiles'#7'Caption'#6#16'Close &all Files'#9'OnExecut'
|
||||||
|
+'e'#7#20'actCloseFilesExecute'#8'ShortCut'#2'x'#0#0#7'TAction'#7'actExit'#7
|
||||||
|
+'Caption'#6#8'&Exit...'#9'OnExecute'#7#14'actExitExecute'#8'ShortCut'#2'y'#0
|
||||||
|
+#0#7'TAction'#13'actExtractTim'#7'Caption'#6#15'&Extract TIM...'#9'OnExecute'
|
||||||
|
+#7#20'actExtractTimExecute'#8'ShortCut'#2'q'#0#0#7'TAction'#13'actReplaceTim'
|
||||||
|
+#7'Caption'#6#15'&Replace TIM...'#9'OnExecute'#7#20'actReplaceTimExecute'#8
|
||||||
|
+'ShortCut'#2'r'#0#0#7'TAction'#10'actTim2Png'#7'Caption'#6#15'Save as &PNG..'
|
||||||
|
+'.'#9'OnExecute'#7#17'actTim2PngExecute'#8'ShortCut'#2's'#0#0#7'TAction'#11
|
||||||
|
+'actOpenRepo'#7'Caption'#6#17'Tim2Vew &SVN Repo'#9'OnExecute'#7#18'actOpenRe'
|
||||||
|
+'poExecute'#0#0#7'TAction'#10'actOpenLab'#7'Caption'#6#15'[&Lab313] Forum'#9
|
||||||
|
+'OnExecute'#7#17'actOpenLabExecute'#0#0#7'TAction'#8'actAbout'#7'Caption'#6#9
|
||||||
|
+'&About...'#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TAction'#10'actStretch'
|
||||||
|
+#9'AutoCheck'#9#7'Caption'#6#14'&Stretch Image'#9'OnExecute'#7#17'actStretch'
|
||||||
|
+'Execute'#0#0#7'TAction'#10'actTimInfo'#7'Caption'#6#9'&TIM Info'#7'Enabled'
|
||||||
|
+#8#9'OnExecute'#7#17'actTimInfoExecute'#0#0#7'TAction'#12'actAssocTims'#7'Ca'
|
||||||
|
+'ption'#6#19'&Open TIMs with T2V'#9'OnExecute'#7#19'actAssocTimsExecute'#0#0
|
||||||
|
+#7'TAction'#14'actExtractTIMs'#7'Caption'#6#17'Extract all &TIMs'#7'Enabled'
|
||||||
|
+#8#9'OnExecute'#7#21'actExtractTIMsExecute'#8'ShortCut'#3'q '#0#0#7'TAction'
|
||||||
|
+#14'actExtractPNGs'#7'Caption'#6#19'&Extract all PNGs'#13#10#7'Enabled'#8#9
|
||||||
|
+'OnExecute'#7#21'actExtractPNGsExecute'#8'ShortCut'#3's '#0#0#7'TAction'#16
|
||||||
|
+'actChangeClutIdx'#0#0#7'TAction'#14'actReturnFocus'#9'OnExecute'#7#21'actRe'
|
||||||
|
+'turnFocusExecute'#0#0#7'TAction'#18'actDrawSelectedTim'#9'OnExecute'#7#25'a'
|
||||||
|
+'ctDrawSelectedTimExecute'#0#0#0#10'TPopupMenu'#6'pmList'#4'left'#3#128#2#3
|
||||||
|
+'top'#3#246#1#0#9'TMenuItem'#11'ExtractTIM1'#6'Action'#7#13'actExtractTim'#0
|
||||||
|
+#0#9'TMenuItem'#11'ReplaceTIM1'#6'Action'#7#13'actReplaceTim'#0#0#9'TMenuIte'
|
||||||
|
+'m'#10'SaveasPNG1'#6'Action'#7#10'actTim2Png'#0#0#9'TMenuItem'#2'N2'#7'Capti'
|
||||||
|
+'on'#6#1'-'#0#0#9'TMenuItem'#9'mnTIMInfo'#6'Action'#7#10'actTimInfo'#0#0#0#10
|
||||||
|
+'TPopupMenu'#7'pmImage'#4'left'#3#224#1#3'top'#3#246#1#0#9'TMenuItem'#11'mnS'
|
||||||
|
+'aveAsPng'#6'Action'#7#10'actTim2Png'#0#0#9'TMenuItem'#2'N5'#7'Caption'#6#1
|
||||||
|
+'-'#0#0#9'TMenuItem'#9'mnStretch'#6'Action'#7#10'actStretch'#9'AutoCheck'#9#0
|
||||||
|
+#0#0#0
|
||||||
|
]);
|
||||||
@@ -1,129 +1,134 @@
|
|||||||
unit umain;
|
unit umain;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Winapi.Windows, Winapi.Messages, System.SysUtils,
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ActnList,
|
||||||
System.Classes, Vcl.Graphics,
|
Menus, StdCtrls, ExtCtrls, ComCtrls, Grids, ExtDlgs,
|
||||||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.ComCtrls,
|
|
||||||
Vcl.ExtCtrls, Vcl.Menus, Vcl.StdCtrls, uScanThread, uCommon,
|
|
||||||
Winapi.ShellAPI, uDrawTIM, Vcl.ExtDlgs, uTIM, System.Actions,
|
|
||||||
Vcl.ActnList, uScanResult, System.Types, uSettings, ueventwaitthread;
|
|
||||||
|
|
||||||
const
|
uscanresult, uscanthread, usettings, utim, udrawtim;
|
||||||
WM_COMMANDARRIVED = WM_USER + 1;
|
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
{ TfrmMain }
|
||||||
|
|
||||||
TfrmMain = class(TForm)
|
TfrmMain = class(TForm)
|
||||||
dlgOpenFile: TOpenDialog;
|
actAbout: TAction;
|
||||||
mmMain: TMainMenu;
|
actAssocTims: TAction;
|
||||||
mnFile: TMenuItem;
|
actChangeClutIdx: TAction;
|
||||||
mnScanFile: TMenuItem;
|
|
||||||
mnScanDir: TMenuItem;
|
|
||||||
N1: TMenuItem;
|
|
||||||
mnCloseFile: TMenuItem;
|
|
||||||
mnExit: TMenuItem;
|
|
||||||
mnTIM: TMenuItem;
|
|
||||||
mnReplaceIn: TMenuItem;
|
|
||||||
mnHelp: TMenuItem;
|
|
||||||
mnSVN: TMenuItem;
|
|
||||||
mnSite: TMenuItem;
|
|
||||||
N3: TMenuItem;
|
|
||||||
mnAbout: TMenuItem;
|
|
||||||
pbProgress: TProgressBar;
|
|
||||||
mnOptions: TMenuItem;
|
|
||||||
pnlStatus: TPanel;
|
|
||||||
lblStatus: TLabel;
|
|
||||||
btnStopScan: TButton;
|
|
||||||
mnCloseAllFiles: TMenuItem;
|
|
||||||
mnSaveToPNG: TMenuItem;
|
|
||||||
dlgSavePNG: TSavePictureDialog;
|
|
||||||
mnSaveTIM: TMenuItem;
|
|
||||||
dlgSaveTIM: TSaveDialog;
|
|
||||||
cbbFiles: TComboBox;
|
|
||||||
pnlMain: TPanel;
|
|
||||||
splMain: TSplitter;
|
|
||||||
pnlList: TPanel;
|
|
||||||
lvList: TListView;
|
|
||||||
pnlImageOptions: TPanel;
|
|
||||||
cbbTranspMode: TComboBox;
|
|
||||||
grdCurrClut: TDrawGrid;
|
|
||||||
pnlImage: TPanel;
|
|
||||||
splImageClut: TSplitter;
|
|
||||||
dlgColor: TColorDialog;
|
|
||||||
actList: TActionList;
|
|
||||||
actScanFile: TAction;
|
|
||||||
actScanDir: TAction;
|
|
||||||
actCloseFile: TAction;
|
actCloseFile: TAction;
|
||||||
actCloseFiles: TAction;
|
actCloseFiles: TAction;
|
||||||
actExit: TAction;
|
actExit: TAction;
|
||||||
N4: TMenuItem;
|
|
||||||
actExtractTim: TAction;
|
|
||||||
actReplaceTim: TAction;
|
|
||||||
actTim2Png: TAction;
|
|
||||||
actOpenRepo: TAction;
|
|
||||||
actOpenLab: TAction;
|
|
||||||
actAbout: TAction;
|
|
||||||
pmList: TPopupMenu;
|
|
||||||
ExtractTIM1: TMenuItem;
|
|
||||||
ReplaceTIM1: TMenuItem;
|
|
||||||
N2: TMenuItem;
|
|
||||||
SaveasPNG1: TMenuItem;
|
|
||||||
cbbBitMode: TComboBox;
|
|
||||||
actStretch: TAction;
|
|
||||||
actTimInfo: TAction;
|
|
||||||
mnTIMInfo: TMenuItem;
|
|
||||||
mnTimInfoMain: TMenuItem;
|
|
||||||
actAssocTims: TAction;
|
|
||||||
mnAssociate: TMenuItem;
|
|
||||||
actExtractTIMs: TAction;
|
|
||||||
pbTim: TImage;
|
|
||||||
btnShowClut: TButton;
|
|
||||||
cbbCLUT: TComboBox;
|
|
||||||
actReturnFocus: TAction;
|
|
||||||
actDrawSelectedTim: TAction;
|
|
||||||
actExtractPNGs: TAction;
|
actExtractPNGs: TAction;
|
||||||
pnlExtractAll: TPanel;
|
actExtractTim: TAction;
|
||||||
|
actExtractTIMs: TAction;
|
||||||
|
actChangeFile: TAction;
|
||||||
|
actOpenLab: TAction;
|
||||||
|
actOpenRepo: TAction;
|
||||||
|
actReplaceTim: TAction;
|
||||||
|
actReturnFocus: TAction;
|
||||||
|
actScanDir: TAction;
|
||||||
|
actScanFile: TAction;
|
||||||
|
actList: TActionList;
|
||||||
|
actStretch: TAction;
|
||||||
|
actTim2Png: TAction;
|
||||||
|
actTimInfo: TAction;
|
||||||
btnExtractAllTims: TButton;
|
btnExtractAllTims: TButton;
|
||||||
btnExtractPNGs: TButton;
|
btnExtractPNGs: TButton;
|
||||||
actChangeFile: TAction;
|
btnShowClut: TButton;
|
||||||
procedure btnStopScanClick(Sender: TObject);
|
btnStopScan: TButton;
|
||||||
procedure FormCreate(Sender: TObject);
|
cbbBitMode: TComboBox;
|
||||||
procedure lvListData(Sender: TObject; Item: TListItem);
|
cbbCLUT: TComboBox;
|
||||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
cbbFiles: TComboBox;
|
||||||
procedure grdCurrClutDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
|
cbbTranspMode: TComboBox;
|
||||||
procedure grdCurrClutDblClick(Sender: TObject);
|
dlgColor: TColorDialog;
|
||||||
procedure actScanFileExecute(Sender: TObject);
|
dlgOpenFile: TOpenDialog;
|
||||||
procedure actScanDirExecute(Sender: TObject);
|
dlgSavePNG: TSavePictureDialog;
|
||||||
|
dlgSaveTIM: TSaveDialog;
|
||||||
|
ExtractTIM1: TMenuItem;
|
||||||
|
grdCurrClut: TDrawGrid;
|
||||||
|
imgTim: TImage;
|
||||||
|
lblStatus: TLabel;
|
||||||
|
lvList: TListView;
|
||||||
|
mnSaveAsPng: TMenuItem;
|
||||||
|
mnAbout: TMenuItem;
|
||||||
|
mnAssociate: TMenuItem;
|
||||||
|
mnCloseAllFiles: TMenuItem;
|
||||||
|
mnCloseFile: TMenuItem;
|
||||||
|
mnExit: TMenuItem;
|
||||||
|
mnFile: TMenuItem;
|
||||||
|
mmMain: TMainMenu;
|
||||||
|
mnHelp: TMenuItem;
|
||||||
|
mnOptions: TMenuItem;
|
||||||
|
mnReplaceIn: TMenuItem;
|
||||||
|
mnSaveTIM: TMenuItem;
|
||||||
|
mnSaveToPNG: TMenuItem;
|
||||||
|
mnScanDir: TMenuItem;
|
||||||
|
mnScanFile: TMenuItem;
|
||||||
|
mnSite: TMenuItem;
|
||||||
|
mnStretch: TMenuItem;
|
||||||
|
mnSVN: TMenuItem;
|
||||||
|
mnTIM: TMenuItem;
|
||||||
|
mnTIMInfo: TMenuItem;
|
||||||
|
mnTimInfoMain: TMenuItem;
|
||||||
|
N1: TMenuItem;
|
||||||
|
N2: TMenuItem;
|
||||||
|
N3: TMenuItem;
|
||||||
|
N4: TMenuItem;
|
||||||
|
N5: TMenuItem;
|
||||||
|
pbProgress: TProgressBar;
|
||||||
|
pnlExtractAll: TPanel;
|
||||||
|
pnlImage: TPanel;
|
||||||
|
pnlImageOptions: TPanel;
|
||||||
|
pnlList: TPanel;
|
||||||
|
pnlStatus: TPanel;
|
||||||
|
pnlMain: TPanel;
|
||||||
|
pmImage: TPopupMenu;
|
||||||
|
pmList: TPopupMenu;
|
||||||
|
ReplaceTIM1: TMenuItem;
|
||||||
|
SaveasPNG1: TMenuItem;
|
||||||
|
dlgSelectDir: TSelectDirectoryDialog;
|
||||||
|
splImageClut: TSplitter;
|
||||||
|
splMain: TSplitter;
|
||||||
|
procedure actAboutExecute(Sender: TObject);
|
||||||
|
procedure actAssocTimsExecute(Sender: TObject);
|
||||||
|
procedure actChangeClutIdxExecute(Sender: TObject);
|
||||||
|
procedure actChangeFileExecute(Sender: TObject);
|
||||||
procedure actCloseFileExecute(Sender: TObject);
|
procedure actCloseFileExecute(Sender: TObject);
|
||||||
procedure actCloseFilesExecute(Sender: TObject);
|
procedure actCloseFilesExecute(Sender: TObject);
|
||||||
procedure actExitExecute(Sender: TObject);
|
procedure actExitExecute(Sender: TObject);
|
||||||
procedure actExtractTimExecute(Sender: TObject);
|
|
||||||
procedure actReplaceTimExecute(Sender: TObject);
|
|
||||||
procedure actTim2PngExecute(Sender: TObject);
|
|
||||||
procedure actOpenRepoExecute(Sender: TObject);
|
|
||||||
procedure actOpenLabExecute(Sender: TObject);
|
|
||||||
procedure actAboutExecute(Sender: TObject);
|
|
||||||
procedure actStretchExecute(Sender: TObject);
|
|
||||||
procedure actTimInfoExecute(Sender: TObject);
|
|
||||||
procedure actAssocTimsExecute(Sender: TObject);
|
|
||||||
procedure actExtractTIMsExecute(Sender: TObject);
|
|
||||||
procedure cbbTranspModeChange(Sender: TObject);
|
|
||||||
procedure btnShowClutClick(Sender: TObject);
|
|
||||||
procedure actReturnFocusExecute(Sender: TObject);
|
|
||||||
procedure actExtractPNGsExecute(Sender: TObject);
|
procedure actExtractPNGsExecute(Sender: TObject);
|
||||||
procedure actChangeClutIdxExecute(Sender: TObject);
|
procedure actExtractTimExecute(Sender: TObject);
|
||||||
|
procedure actExtractTIMsExecute(Sender: TObject);
|
||||||
|
procedure actOpenLabExecute(Sender: TObject);
|
||||||
|
procedure actOpenRepoExecute(Sender: TObject);
|
||||||
|
procedure actReplaceTimExecute(Sender: TObject);
|
||||||
|
procedure actReturnFocusExecute(Sender: TObject);
|
||||||
|
procedure actScanDirExecute(Sender: TObject);
|
||||||
|
procedure actScanFileExecute(Sender: TObject);
|
||||||
|
procedure actStretchExecute(Sender: TObject);
|
||||||
|
procedure actTim2PngExecute(Sender: TObject);
|
||||||
|
procedure actTimInfoExecute(Sender: TObject);
|
||||||
|
procedure btnShowClutClick(Sender: TObject);
|
||||||
|
procedure cbbBitModeChange(Sender: TObject);
|
||||||
|
procedure cbbTranspModeChange(Sender: TObject);
|
||||||
|
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
|
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
|
||||||
|
procedure grdCurrClutDblClick(Sender: TObject);
|
||||||
|
procedure grdCurrClutDrawCell(Sender: TObject; aCol, aRow: Integer;
|
||||||
|
aRect: TRect; aState: TGridDrawState);
|
||||||
|
procedure lvListData(Sender: TObject; Item: TListItem);
|
||||||
procedure lvListSelectItem(Sender: TObject; Item: TListItem;
|
procedure lvListSelectItem(Sender: TObject; Item: TListItem;
|
||||||
Selected: Boolean);
|
Selected: Boolean);
|
||||||
procedure cbbBitModeChange(Sender: TObject);
|
|
||||||
procedure actChangeFileExecute(Sender: TObject);
|
|
||||||
private
|
private
|
||||||
{ Private declarations }
|
{ private declarations }
|
||||||
StartedScans: Integer; //Count of currently started scans
|
StartedScans: Integer; //Count of currently started scans
|
||||||
LastDir: string; //var to store last selected dir
|
LastDir: string; //var to store last selected dir
|
||||||
Settings: TSettings; //var to work with program settings
|
Settings: TSettings; //var to work with program settings
|
||||||
PNG: PPNG; { TODO : Declare variable to store drawable TIM in some drawable format }
|
Surf: PDrawSurf;
|
||||||
WaitThread: TEventWaitThread;
|
|
||||||
|
|
||||||
function FGetSelectedScanResult: TScanResult;
|
function FGetSelectedScanResult: TScanResult;
|
||||||
property SelectedScanResult: TScanResult read FGetSelectedScanResult; //Selected scan result
|
property SelectedScanResult: TScanResult read FGetSelectedScanResult; //Selected scan result
|
||||||
@@ -154,13 +159,8 @@ type
|
|||||||
function FormatTimName(const FileName: string; ListIdx_, BitMode: Integer): string;
|
function FormatTimName(const FileName: string; ListIdx_, BitMode: Integer): string;
|
||||||
function FormatPngName(const FileName: string; ListIdx_, BitMode, Clut: Integer): string;
|
function FormatPngName(const FileName: string; ListIdx_, BitMode, Clut: Integer): string;
|
||||||
procedure ShowTim;
|
procedure ShowTim;
|
||||||
function ForceForegroundWindow(hwnd: THandle): Boolean;
|
|
||||||
protected
|
|
||||||
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
|
|
||||||
procedure WMCommandArrived(var Message: TMessage); message WM_COMMANDARRIVED;
|
|
||||||
function ReadPathFromMailslot: string;
|
|
||||||
public
|
public
|
||||||
{ Public declarations }
|
{ public declarations }
|
||||||
ScanResults: TScanResultList; //List of finished scan results
|
ScanResults: TScanResultList; //List of finished scan results
|
||||||
ScanThreads: TScanThreadList; //List of currently started scans
|
ScanThreads: TScanThreadList; //List of currently started scans
|
||||||
function CheckForFileOpened(const FileName: string): boolean;
|
function CheckForFileOpened(const FileName: string): boolean;
|
||||||
@@ -168,14 +168,19 @@ type
|
|||||||
|
|
||||||
var
|
var
|
||||||
frmMain: TfrmMain;
|
frmMain: TfrmMain;
|
||||||
ServerMailSlot: THandle;
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses ucdimage, ucpucount, lcltype, ucommon, LCLIntf, Clipbrd
|
||||||
ucdimage, udirselect, registry, pngimage;
|
|
||||||
|
|
||||||
{$R *.dfm}
|
{$IFDEF windows}
|
||||||
|
,registry
|
||||||
|
{$IFEND}
|
||||||
|
;
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
{ TfrmMain }
|
||||||
|
|
||||||
procedure TfrmMain.actScanFileExecute(Sender: TObject);
|
procedure TfrmMain.actScanFileExecute(Sender: TObject);
|
||||||
var
|
var
|
||||||
@@ -199,13 +204,13 @@ begin
|
|||||||
|
|
||||||
if not dlgSavePNG.Execute then Exit;
|
if not dlgSavePNG.Execute then Exit;
|
||||||
|
|
||||||
PNG^.SaveToFile(dlgSavePNG.FileName);
|
Surf^.SaveToFile(dlgSavePNG.FileName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.actTimInfoExecute(Sender: TObject);
|
procedure TfrmMain.actTimInfoExecute(Sender: TObject);
|
||||||
const
|
const
|
||||||
Tab = #$09;
|
Tab = #$09;
|
||||||
Row = #13#10;
|
Row = #10;
|
||||||
var
|
var
|
||||||
Info, IsGoodTIM: string;
|
Info, IsGoodTIM: string;
|
||||||
Index: Integer;
|
Index: Integer;
|
||||||
@@ -247,12 +252,12 @@ begin
|
|||||||
GetTimImageVRAMY(TIM), GetTimWidth(TIM), GetTimRealWidth(TIM),
|
GetTimImageVRAMY(TIM), GetTimWidth(TIM), GetTimRealWidth(TIM),
|
||||||
GetTimHeight(TIM)]);
|
GetTimHeight(TIM)]);
|
||||||
|
|
||||||
case MessageBox(Handle,
|
case Application.MessageBox(
|
||||||
PWideChar(Info + Row + Row +
|
PChar(Info + Row + Row +
|
||||||
'If you want to copy this info to clipboard press "YES" button.'),
|
'If you want to copy this info to clipboard press "YES" button.'),
|
||||||
'Information', MB_OKCANCEL + MB_ICONINFORMATION + MB_TOPMOST) of
|
'Information', MB_OKCANCEL + MB_ICONINFORMATION) of
|
||||||
IDOK:
|
IDOK:
|
||||||
Text2Clipboard(Info);
|
Clipboard.AsText := Info;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
FreeTIM(TIM);
|
FreeTIM(TIM);
|
||||||
@@ -289,10 +294,11 @@ end;
|
|||||||
|
|
||||||
procedure TfrmMain.actAboutExecute(Sender: TObject);
|
procedure TfrmMain.actAboutExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
MessageBox(Handle, 'Some "about strings" should be here!:)', 'About', MB_OK + MB_ICONINFORMATION);
|
Application.MessageBox('Some "about strings" should be here!:)', 'About', MB_OK + MB_ICONINFORMATION);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.actAssocTimsExecute(Sender: TObject);
|
procedure TfrmMain.actAssocTimsExecute(Sender: TObject);
|
||||||
|
{$IFDEF windows}
|
||||||
var
|
var
|
||||||
reg: TRegistry;
|
reg: TRegistry;
|
||||||
begin
|
begin
|
||||||
@@ -316,6 +322,9 @@ begin
|
|||||||
finally
|
finally
|
||||||
reg.Free;
|
reg.Free;
|
||||||
end;
|
end;
|
||||||
|
{$ELSE}
|
||||||
|
begin
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.actChangeClutIdxExecute(Sender: TObject);
|
procedure TfrmMain.actChangeClutIdxExecute(Sender: TObject);
|
||||||
@@ -368,14 +377,14 @@ var
|
|||||||
IsImage: Boolean;
|
IsImage: Boolean;
|
||||||
ScanTim: TTimInfo;
|
ScanTim: TTimInfo;
|
||||||
TIM: PTIM;
|
TIM: PTIM;
|
||||||
PNG_: PPNG;
|
Surf_: PDrawSurf;
|
||||||
begin
|
begin
|
||||||
lblStatus.Caption := sStatusBarPngsExtracting;
|
lblStatus.Caption := sStatusBarPngsExtracting;
|
||||||
|
|
||||||
FName := SelectedScanResult.ScanFile;
|
FName := SelectedScanResult.ScanFile;
|
||||||
IsImage := SelectedScanResult.IsImage;
|
IsImage := SelectedScanResult.IsImage;
|
||||||
|
|
||||||
New(PNG_);
|
New(Surf_);
|
||||||
|
|
||||||
pbProgress.Position := 0;
|
pbProgress.Position := 0;
|
||||||
pbProgress.Max := SelectedScanResult.Count;
|
pbProgress.Max := SelectedScanResult.Count;
|
||||||
@@ -392,17 +401,17 @@ begin
|
|||||||
CreateDir(Path);
|
CreateDir(Path);
|
||||||
|
|
||||||
TIM := LoadTimFromFile(FName, OFFSET, IsImage, SIZE);
|
TIM := LoadTimFromFile(FName, OFFSET, IsImage, SIZE);
|
||||||
TimToPNG(TIM, cbbCLUT.ItemIndex, PNG_, cbbTranspMode.ItemIndex);
|
TimToPNG(TIM, cbbCLUT.ItemIndex, Surf_, cbbTranspMode.ItemIndex);
|
||||||
|
|
||||||
PNG_^.SaveToFile(Path + FormatPngName(FName, I - 1, BIT_MODE, 0));
|
Surf_^.SaveToFile(Path + FormatPngName(FName, I - 1, BIT_MODE, 0));
|
||||||
PNG_^.Free;
|
Surf_^.Free;
|
||||||
|
|
||||||
FreeTIM(TIM);
|
FreeTIM(TIM);
|
||||||
|
|
||||||
pbProgress.Position := I;
|
pbProgress.Position := I;
|
||||||
Application.ProcessMessages;
|
Application.ProcessMessages;
|
||||||
end;
|
end;
|
||||||
Dispose(PNG_);
|
Dispose(Surf_);
|
||||||
lblStatus.Caption := sStatusBarExtracted;
|
lblStatus.Caption := sStatusBarExtracted;
|
||||||
pbProgress.Position := 0;
|
pbProgress.Position := 0;
|
||||||
end;
|
end;
|
||||||
@@ -460,12 +469,12 @@ end;
|
|||||||
|
|
||||||
procedure TfrmMain.actOpenLabExecute(Sender: TObject);
|
procedure TfrmMain.actOpenLabExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShellExecute(Handle, 'open', 'tim2view.googlecode.com', nil, nil, SW_SHOW);
|
OpenUrl('http://lab313.ru');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.actOpenRepoExecute(Sender: TObject);
|
procedure TfrmMain.actOpenRepoExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShellExecute(Handle, 'open', 'tim2view.googlecode.com', nil, nil, SW_SHOW);
|
OpenUrl('http://tim2view.googlecode.com');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.actReplaceTimExecute(Sender: TObject);
|
procedure TfrmMain.actReplaceTimExecute(Sender: TObject);
|
||||||
@@ -487,7 +496,12 @@ procedure TfrmMain.actScanDirExecute(Sender: TObject);
|
|||||||
var
|
var
|
||||||
SelectedDir: string;
|
SelectedDir: string;
|
||||||
begin
|
begin
|
||||||
SelectedDir := BrowseForFolder(Handle, sSelectDirCaption, LastDir);
|
dlgSelectDir.Title := sSelectDirCaption;
|
||||||
|
dlgSelectDir.FileName := LastDir;
|
||||||
|
|
||||||
|
if not dlgSelectDir.Execute then Exit;
|
||||||
|
|
||||||
|
SelectedDir := dlgSelectDir.FileName;
|
||||||
if DirectoryExists(SelectedDir) then
|
if DirectoryExists(SelectedDir) then
|
||||||
begin
|
begin
|
||||||
ScanPath(SelectedDir);
|
ScanPath(SelectedDir);
|
||||||
@@ -496,14 +510,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
|
procedure TfrmMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||||
begin
|
begin
|
||||||
actCloseFiles.Execute;
|
actCloseFiles.Execute;
|
||||||
ScanThreads.Free;
|
ScanThreads.Free;
|
||||||
ScanResults.Free;
|
ScanResults.Free;
|
||||||
|
|
||||||
if PNG^ <> nil then PNG^.Free;
|
Surf^.Free;
|
||||||
Dispose(PNG);
|
Dispose(Surf);
|
||||||
|
|
||||||
Settings.Free;
|
Settings.Free;
|
||||||
end;
|
end;
|
||||||
@@ -512,6 +526,8 @@ procedure TfrmMain.FormCreate(Sender: TObject);
|
|||||||
var
|
var
|
||||||
hGridRect: TGridRect;
|
hGridRect: TGridRect;
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF Linux}mnOptions.Visible := False;{$IFEND}
|
||||||
|
|
||||||
Settings := TSettings.Create(ExtractFilePath(ParamStr(0)));
|
Settings := TSettings.Create(ExtractFilePath(ParamStr(0)));
|
||||||
|
|
||||||
actStretch.Checked := Settings.StretchMode;
|
actStretch.Checked := Settings.StretchMode;
|
||||||
@@ -524,47 +540,28 @@ begin
|
|||||||
hGridRect.Bottom := -1;
|
hGridRect.Bottom := -1;
|
||||||
grdCurrClut.Selection := hGridRect;
|
grdCurrClut.Selection := hGridRect;
|
||||||
|
|
||||||
pbTim.Parent.DoubleBuffered := true;
|
ScanThreads := TScanThreadList.Create(False); //False - to able scan thread remove itself from this list
|
||||||
|
ScanResults := TScanResultList.Create(False);
|
||||||
ScanThreads := TScanThreadList.Create;
|
|
||||||
ScanResults := TScanResultList.Create;
|
|
||||||
StartedScans := 0;
|
StartedScans := 0;
|
||||||
New(PNG);
|
|
||||||
PNG^ := nil;
|
New(Surf);
|
||||||
|
Surf^ := nil;
|
||||||
|
|
||||||
SetCLUTListToNoCLUT;
|
SetCLUTListToNoCLUT;
|
||||||
Caption := cProgramName;
|
Caption := Format('%s v%s', [cProgramName, cProgramVersion]);
|
||||||
DragAcceptFiles(Handle, True);
|
|
||||||
CheckButtonsAndMainMenu;
|
CheckButtonsAndMainMenu;
|
||||||
|
|
||||||
if ParamCount > 0 then ScanPath(ParamStr(1));
|
if ParamCount > 0 then ScanPath(ParamStr(1));
|
||||||
|
|
||||||
WaitThread := TEventWaitThread.Create(False);
|
|
||||||
WaitThread.FreeOnTerminate := True;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.WMDropFiles(var Msg: TWMDropFiles);
|
procedure TfrmMain.FormDropFiles(Sender: TObject;
|
||||||
|
const FileNames: array of String);
|
||||||
var
|
var
|
||||||
I: Integer;
|
i: Integer;
|
||||||
CountFile: Integer;
|
|
||||||
SIZE: Integer;
|
|
||||||
FileName: PChar;
|
|
||||||
begin
|
begin
|
||||||
FileName := nil;
|
for i := 1 to Length(FileNames) do
|
||||||
try
|
ScanPath(FileNames[i - 1]);
|
||||||
CountFile := DragQueryFile(Msg.Drop, $FFFFFFFF, FileName, 1024);
|
|
||||||
|
|
||||||
for I := 0 to (CountFile - 1) do
|
|
||||||
begin
|
|
||||||
SIZE := DragQueryFile(Msg.Drop, I, nil, 0) + 1;
|
|
||||||
FileName := StrAlloc(SIZE);
|
|
||||||
DragQueryFile(Msg.Drop, I, FileName, SIZE);
|
|
||||||
ScanPath(StrPas(FileName));
|
|
||||||
StrDispose(FileName);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
DragFinish(Msg.Drop);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.grdCurrClutDblClick(Sender: TObject);
|
procedure TfrmMain.grdCurrClutDblClick(Sender: TObject);
|
||||||
@@ -624,10 +621,11 @@ begin
|
|||||||
|
|
||||||
DrawSelTim;
|
DrawSelTim;
|
||||||
DrawSelClut;
|
DrawSelClut;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.grdCurrClutDrawCell(Sender: TObject; ACol, ARow: Integer;
|
procedure TfrmMain.grdCurrClutDrawCell(Sender: TObject; aCol, aRow: Integer;
|
||||||
Rect: TRect; State: TGridDrawState);
|
aRect: TRect; aState: TGridDrawState);
|
||||||
var
|
var
|
||||||
TIM: PTIM;
|
TIM: PTIM;
|
||||||
begin
|
begin
|
||||||
@@ -746,9 +744,9 @@ begin
|
|||||||
ScanThreads.Add(TScanThread.Create(FileName, GetImageScan(FileName)));
|
ScanThreads.Add(TScanThread.Create(FileName, GetImageScan(FileName)));
|
||||||
ScanThreads.Last.FreeOnTerminate := True;
|
ScanThreads.Last.FreeOnTerminate := True;
|
||||||
ScanThreads.Last.Priority := tpNormal;
|
ScanThreads.Last.Priority := tpNormal;
|
||||||
ScanThreads.Last.OnTerminate := ScanFinished;
|
ScanThreads.Last.OnTerminate := @ScanFinished;
|
||||||
|
|
||||||
if StartedScans < GetCoreCount then
|
if StartedScans < GetLogicalCpuCount then
|
||||||
begin
|
begin
|
||||||
ScanThreads.Last.Start;
|
ScanThreads.Last.Start;
|
||||||
Inc(StartedScans);
|
Inc(StartedScans);
|
||||||
@@ -790,7 +788,7 @@ begin
|
|||||||
actCloseFiles.Enabled := cbbFiles.Enabled;
|
actCloseFiles.Enabled := cbbFiles.Enabled;
|
||||||
actReplaceTim.Enabled := (lvList.Selected <> nil) and (lvList.Selected.Index <> -1);
|
actReplaceTim.Enabled := (lvList.Selected <> nil) and (lvList.Selected.Index <> -1);
|
||||||
|
|
||||||
actTim2Png.Enabled := (PNG^ <> nil) and actReplaceTim.Enabled;
|
actTim2Png.Enabled := (Surf^ <> nil) and actReplaceTim.Enabled;
|
||||||
actExtractTim.Enabled := actReplaceTim.Enabled;
|
actExtractTim.Enabled := actReplaceTim.Enabled;
|
||||||
|
|
||||||
cbbCLUT.Enabled := actReplaceTim.Enabled;
|
cbbCLUT.Enabled := actReplaceTim.Enabled;
|
||||||
@@ -873,7 +871,7 @@ var
|
|||||||
Index: Integer;
|
Index: Integer;
|
||||||
mode: Byte;
|
mode: Byte;
|
||||||
begin
|
begin
|
||||||
pbTim.Picture := nil;
|
imgTim.Picture.Bitmap := nil;
|
||||||
|
|
||||||
case cbbBitMode.ItemIndex of
|
case cbbBitMode.ItemIndex of
|
||||||
1: mode := cTIM4C;
|
1: mode := cTIM4C;
|
||||||
@@ -887,19 +885,14 @@ begin
|
|||||||
TIM := SelectedTimInMode[mode];
|
TIM := SelectedTimInMode[mode];
|
||||||
if TIM = nil then Exit;
|
if TIM = nil then Exit;
|
||||||
|
|
||||||
if PNG^ <> nil then
|
|
||||||
begin
|
|
||||||
PNG^.Free;
|
|
||||||
PNG^ := nil;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Index := cbbCLUT.ItemIndex;
|
Index := cbbCLUT.ItemIndex;
|
||||||
|
|
||||||
TimToPNG(TIM, Index, PNG, cbbTranspMode.ItemIndex);
|
TimToPNG(TIM, Index, Surf, cbbTranspMode.ItemIndex);
|
||||||
PNG^.AssignTo(pbTim.Picture.Bitmap);
|
imgTim.Picture.Bitmap := TBitmap.Create;
|
||||||
|
imgTim.Picture.Bitmap := Surf^.Bitmap;
|
||||||
FreeTIM(TIM);
|
FreeTIM(TIM);
|
||||||
|
|
||||||
pbTim.Stretch := actStretch.Checked;
|
imgTim.Stretch := actStretch.Checked;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.DrawSelClut;
|
procedure TfrmMain.DrawSelClut;
|
||||||
@@ -952,12 +945,14 @@ begin
|
|||||||
cbbCLUT.ItemIndex := 0;
|
cbbCLUT.ItemIndex := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TfrmMain.FormatTimName(const FileName: string; ListIdx_, BitMode: Integer): string;
|
function TfrmMain.FormatTimName(const FileName: string; ListIdx_,
|
||||||
|
BitMode: Integer): string;
|
||||||
begin
|
begin
|
||||||
Result := Format(cAutoExtractionTimFormat, [ExtractJustName(FileName), ListIdx_ + 1, BitMode]);
|
Result := Format(cAutoExtractionTimFormat, [ExtractJustName(FileName), ListIdx_ + 1, BitMode]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TfrmMain.FormatPngName(const FileName: string; ListIdx_, BitMode, Clut: Integer): string;
|
function TfrmMain.FormatPngName(const FileName: string; ListIdx_, BitMode,
|
||||||
|
Clut: Integer): string;
|
||||||
begin
|
begin
|
||||||
Result := Format(cAutoExtractionPngFormat, [ExtractJustName(FileName), ListIdx_ + 1, BitMode, Clut + 1]);
|
Result := Format(cAutoExtractionPngFormat, [ExtractJustName(FileName), ListIdx_ + 1, BitMode, Clut + 1]);
|
||||||
end;
|
end;
|
||||||
@@ -979,101 +974,5 @@ begin
|
|||||||
CheckButtonsAndMainMenu;
|
CheckButtonsAndMainMenu;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.btnStopScanClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
I: Integer;
|
|
||||||
begin
|
|
||||||
if ScanThreads.Count = 0 then Exit;
|
|
||||||
|
|
||||||
for I := 1 to ScanThreads.Count do
|
|
||||||
ScanThreads[I - 1].StopScan := True;
|
|
||||||
|
|
||||||
ScanThreads.Clear;
|
|
||||||
StartedScans := 0;
|
|
||||||
btnStopScan.Tag := NativeInt(True);
|
|
||||||
|
|
||||||
ScanFinished(nil);
|
|
||||||
|
|
||||||
actReturnFocusExecute(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TfrmMain.ForceForegroundWindow(hwnd: THandle): Boolean;
|
|
||||||
const
|
|
||||||
SPI_GETFOREGROUNDLOCKTIMEOUT = $2000;
|
|
||||||
SPI_SETFOREGROUNDLOCKTIMEOUT = $2001;
|
|
||||||
var
|
|
||||||
ForegroundThreadID: DWORD;
|
|
||||||
ThisThreadID: DWORD;
|
|
||||||
timeout: DWORD;
|
|
||||||
begin
|
|
||||||
if IsIconic(hwnd) then ShowWindow(hwnd, SW_RESTORE);
|
|
||||||
|
|
||||||
if GetForegroundWindow = hwnd then Result := True
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
// Windows 98/2000 doesn't want to foreground a window when some other
|
|
||||||
// window has keyboard focus
|
|
||||||
|
|
||||||
if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion > 4)) or
|
|
||||||
((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and
|
|
||||||
((Win32MajorVersion > 4) or ((Win32MajorVersion = 4) and
|
|
||||||
(Win32MinorVersion > 0)))) then
|
|
||||||
begin
|
|
||||||
Result := False;
|
|
||||||
ForegroundThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil);
|
|
||||||
ThisThreadID := GetWindowThreadPRocessId(hwnd, nil);
|
|
||||||
if AttachThreadInput(ThisThreadID, ForegroundThreadID, True) then
|
|
||||||
begin
|
|
||||||
BringWindowToTop(hwnd); // IE 5.5 related hack
|
|
||||||
SetForegroundWindow(hwnd);
|
|
||||||
AttachThreadInput(ThisThreadID, ForegroundThreadID, False);
|
|
||||||
Result := (GetForegroundWindow = hwnd);
|
|
||||||
end;
|
|
||||||
if not Result then
|
|
||||||
begin
|
|
||||||
// Code by Daniel P. Stasinski
|
|
||||||
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0);
|
|
||||||
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0),
|
|
||||||
SPIF_SENDCHANGE);
|
|
||||||
BringWindowToTop(hwnd); // IE 5.5 related hack
|
|
||||||
SetForegroundWindow(hWnd);
|
|
||||||
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(timeout), SPIF_SENDCHANGE);
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
BringWindowToTop(hwnd); // IE 5.5 related hack
|
|
||||||
SetForegroundWindow(hwnd);
|
|
||||||
end;
|
|
||||||
|
|
||||||
Result := (GetForegroundWindow = hwnd);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TfrmMain.ReadPathFromMailslot: string;
|
|
||||||
var
|
|
||||||
MessageSize: DWORD;
|
|
||||||
begin
|
|
||||||
GetMailslotInfo(ServerMailSlot, nil, MessageSize, nil, nil);
|
|
||||||
|
|
||||||
if MessageSize = MAILSLOT_NO_MESSAGE then
|
|
||||||
begin
|
|
||||||
Result := '';
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
SetLength(Result, MessageSize div SizeOf(Char));
|
|
||||||
ReadFile(ServerMailSlot, Result[1], MessageSize * SizeOf(Char), MessageSize, nil);
|
|
||||||
Result := Trim(Result);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TfrmMain.WMCommandArrived(var Message: TMessage);
|
|
||||||
var
|
|
||||||
path: string;
|
|
||||||
begin
|
|
||||||
ForceForegroundWindow(Self.Handle);
|
|
||||||
path := ReadPathFromMailslot;
|
|
||||||
ScanPath(path);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
unit ueventwaitthread;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Classes;
|
|
||||||
|
|
||||||
type
|
|
||||||
TEventWaitThread = class(TThread)
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
protected
|
|
||||||
procedure Execute; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
CommandEvent: THandle;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses
|
|
||||||
uMain;
|
|
||||||
|
|
||||||
{ Important: Methods and properties of objects in VCL can only be used in a
|
|
||||||
method called using Synchronize, for example,
|
|
||||||
|
|
||||||
Synchronize(UpdateCaption);
|
|
||||||
|
|
||||||
and UpdateCaption could look like,
|
|
||||||
|
|
||||||
procedure TEventWaitThread.UpdateCaption;
|
|
||||||
begin
|
|
||||||
Form1.Caption := 'Updated in a thread';
|
|
||||||
end; }
|
|
||||||
|
|
||||||
{ TEventWaitThread }
|
|
||||||
|
|
||||||
procedure TEventWaitThread.Execute;
|
|
||||||
begin
|
|
||||||
while True do
|
|
||||||
begin
|
|
||||||
if WaitForSingleObject(CommandEvent, INFINITE) <> WAIT_OBJECT_0 then
|
|
||||||
Exit;
|
|
||||||
PostMessage(frmMain.Handle, WM_COMMANDARRIVED, 0, 0);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
unit udirselect;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
function BrowseForFolder(const appHWND: THandle; const browseTitle: String;
|
|
||||||
const initialFolder: String = ''): String;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, shlobj;
|
|
||||||
|
|
||||||
var
|
|
||||||
lg_StartFolder: String;
|
|
||||||
|
|
||||||
/// /////////////////////////////////////////////////////////////////////
|
|
||||||
// Call back function used to set the initial browse directory.
|
|
||||||
/// /////////////////////////////////////////////////////////////////////
|
|
||||||
function BrowseForFolderCallBack(Wnd: HWND; uMsg: UINT; lParam, lpData: lParam)
|
|
||||||
: Integer stdcall;
|
|
||||||
begin
|
|
||||||
if uMsg = BFFM_INITIALIZED then
|
|
||||||
SendMessage(Wnd, BFFM_SETSELECTION, 1, Integer(@lg_StartFolder[1]));
|
|
||||||
|
|
||||||
result := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
/// /////////////////////////////////////////////////////////////////////
|
|
||||||
// This function allows the user to browse for a folder
|
|
||||||
//
|
|
||||||
// Arguments:-
|
|
||||||
// browseTitle : The title to display on the browse dialog.
|
|
||||||
// initialFolder : Optional argument. Use to specify the folder
|
|
||||||
// initially selected when the dialog opens.
|
|
||||||
// mayCreateNewFolder : Flag indicating whether the user can create a
|
|
||||||
// new folder.
|
|
||||||
//
|
|
||||||
// Returns: The empty string if no folder was selected (i.e. if the user
|
|
||||||
// clicked cancel), otherwise the full folder path.
|
|
||||||
/// /////////////////////////////////////////////////////////////////////
|
|
||||||
function BrowseForFolder(const appHWND: THandle; const browseTitle: String;
|
|
||||||
const initialFolder: String = ''): String;
|
|
||||||
var
|
|
||||||
browse_info: TBrowseInfo;
|
|
||||||
folder: array [0 .. MAX_PATH] of char;
|
|
||||||
find_context: PItemIDList;
|
|
||||||
begin
|
|
||||||
// --------------------------
|
|
||||||
// Initialise the structure.
|
|
||||||
// --------------------------
|
|
||||||
FillChar(browse_info, SizeOf(browse_info), #0);
|
|
||||||
lg_StartFolder := initialFolder;
|
|
||||||
browse_info.pszDisplayName := @folder[0];
|
|
||||||
browse_info.lpszTitle := PChar(browseTitle);
|
|
||||||
browse_info.ulFlags := BIF_DONTGOBELOWDOMAIN or BIF_RETURNONLYFSDIRS or
|
|
||||||
BIF_STATUSTEXT or BIF_VALIDATE {or BIF_USENEWUI} or BIF_NONEWFOLDERBUTTON;
|
|
||||||
|
|
||||||
browse_info.hwndOwner := appHWND;
|
|
||||||
if initialFolder <> '' then
|
|
||||||
browse_info.lpfn := BrowseForFolderCallBack;
|
|
||||||
find_context := SHBrowseForFolder(browse_info);
|
|
||||||
if Assigned(find_context) then
|
|
||||||
begin
|
|
||||||
if SHGetPathFromIDList(find_context, folder) then
|
|
||||||
result := folder
|
|
||||||
else
|
|
||||||
result := '';
|
|
||||||
GlobalFreePtr(find_context);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
result := '';
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
@@ -2,8 +2,7 @@ unit uscanresult;
|
|||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses fgl;
|
||||||
generics.collections;
|
|
||||||
|
|
||||||
type
|
type
|
||||||
TTimInfo = record
|
TTimInfo = record
|
||||||
@@ -16,6 +15,7 @@ type
|
|||||||
Good: Boolean;
|
Good: Boolean;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
TScanResult = class(TObject)
|
TScanResult = class(TObject)
|
||||||
private
|
private
|
||||||
pScanFile: string;
|
pScanFile: string;
|
||||||
@@ -38,7 +38,7 @@ type
|
|||||||
|
|
||||||
property ScanTim[index: Integer]: TTimInfo read fGetTim write fSetTim;
|
property ScanTim[index: Integer]: TTimInfo read fGetTim write fSetTim;
|
||||||
end;
|
end;
|
||||||
TScanResultList = TList<TScanResult>;
|
TScanResultList = specialize TFPGObjectList<TScanResult>;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@ unit uscanthread;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
ucommon, utim, uscanresult, classes, generics.collections;
|
ucommon, utim, uscanresult, classes, fgl;
|
||||||
|
|
||||||
type
|
type
|
||||||
TScanThread = class(TThread)
|
TScanThread = class(TThread)
|
||||||
@@ -28,17 +28,19 @@ type
|
|||||||
procedure Execute; override;
|
procedure Execute; override;
|
||||||
public
|
public
|
||||||
constructor Create(const FileToScan: string; ImageScan: boolean);
|
constructor Create(const FileToScan: string; ImageScan: boolean);
|
||||||
|
//property Started: boolean read pStarted write pStarted;
|
||||||
property StopScan: boolean read pStopScan write pStopScan;
|
property StopScan: boolean read pStopScan write pStopScan;
|
||||||
end;
|
end;
|
||||||
TScanThreadList = TList<TScanThread>;
|
TScanThreadList = specialize TFPGObjectList<TScanThread>;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
umain, ucdimage, sysutils;
|
umain, ucdimage, sysutils, FileUtil;
|
||||||
|
|
||||||
const
|
const
|
||||||
cClearBufferSize = ((cTIMMaxSize div cSectorDataSize) + 1) * cSectorDataSize * 2;
|
cClearBufferSize = ((cTIMMaxSize div cSectorDataSize) + 1) *
|
||||||
|
cSectorDataSize * 2;
|
||||||
cSectorBufferSize = (cClearBufferSize div cSectorDataSize) * cSectorSize;
|
cSectorBufferSize = (cClearBufferSize div cSectorDataSize) * cSectorSize;
|
||||||
|
|
||||||
{ TScanThread }
|
{ TScanThread }
|
||||||
@@ -86,9 +88,7 @@ var
|
|||||||
pScanFinished: boolean;
|
pScanFinished: boolean;
|
||||||
pRealBufSize, pTimPosition, pTIMNumber: Integer;
|
pRealBufSize, pTimPosition, pTIMNumber: Integer;
|
||||||
begin
|
begin
|
||||||
Synchronize(StartScan);
|
Synchronize(@StartScan);
|
||||||
SectorBuffer := nil;
|
|
||||||
ClearBuffer := nil;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
if pScanResult.IsImage then
|
if pScanResult.IsImage then
|
||||||
@@ -109,7 +109,7 @@ begin
|
|||||||
TIM := CreateTIM;
|
TIM := CreateTIM;
|
||||||
|
|
||||||
pStatusText := sStatusBarScanningFile;
|
pStatusText := sStatusBarScanningFile;
|
||||||
Synchronize(SetStatusText);
|
Synchronize(@SetStatusText);
|
||||||
|
|
||||||
pRealBufSize := pSrcFileStream.Read(SectorBuffer^[0], pSectorBufferSize);
|
pRealBufSize := pSrcFileStream.Read(SectorBuffer^[0], pSectorBufferSize);
|
||||||
Inc(pFilePos, pRealBufSize);
|
Inc(pFilePos, pRealBufSize);
|
||||||
@@ -158,22 +158,22 @@ begin
|
|||||||
pRealBufSize := pRealBufSize + (pSectorBufferSize div 2);
|
pRealBufSize := pRealBufSize + (pSectorBufferSize div 2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Synchronize(UpdateProgressBar);
|
Synchronize(@UpdateProgressBar);
|
||||||
|
|
||||||
ClearSectorBuffer(SectorBuffer, ClearBuffer);
|
ClearSectorBuffer(SectorBuffer, ClearBuffer);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
FreeTIM(TIM);
|
FreeTIM(TIM);
|
||||||
if SectorBuffer <> nil then FreeMemory(SectorBuffer);
|
FreeMemory(SectorBuffer);
|
||||||
if ClearBuffer <> nil then FreeMemory(ClearBuffer);
|
FreeMemory(ClearBuffer);
|
||||||
|
|
||||||
pSrcFileStream.Free;
|
pSrcFileStream.Free;
|
||||||
pStopScan := True;
|
pStopScan := True;
|
||||||
pFilePos := 0;
|
pFilePos := 0;
|
||||||
pStatusText := '';
|
pStatusText := '';
|
||||||
|
|
||||||
Synchronize(FinishScan);
|
Synchronize(@FinishScan);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
unit usettings;
|
unit usettings;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
IniFiles;
|
Classes, SysUtils, IniFiles;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@@ -28,8 +30,6 @@ type
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses Classes, SysUtils;
|
|
||||||
|
|
||||||
const sMain = 'main';
|
const sMain = 'main';
|
||||||
|
|
||||||
{ TSettings }
|
{ TSettings }
|
||||||
@@ -329,10 +329,12 @@ begin
|
|||||||
Inc(Position);
|
Inc(Position);
|
||||||
TIM_POS := P;
|
TIM_POS := P;
|
||||||
|
|
||||||
if TIM = nil then TIM := CreateTIM;
|
if TIM = nil then
|
||||||
|
TIM := CreateTIM;
|
||||||
|
|
||||||
Move(PBytesArray(BUFFER)^[P], TIM^.HEAD^, cTIMHeadSize);
|
Move(PBytesArray(BUFFER)^[P], TIM^.HEAD^, cTIMHeadSize);
|
||||||
if not CheckHEAD(TIM) then Exit;
|
if not CheckHEAD(TIM) then
|
||||||
|
Exit;
|
||||||
Inc(P, cTIMHeadSize);
|
Inc(P, cTIMHeadSize);
|
||||||
|
|
||||||
if TIMHasCLUT(TIM) then
|
if TIMHasCLUT(TIM) then
|
||||||
@@ -345,8 +347,10 @@ begin
|
|||||||
|
|
||||||
Move(PBytesArray(BUFFER)^[P], TIM^.IMAGE^, cIMAGEHeadSize);
|
Move(PBytesArray(BUFFER)^[P], TIM^.IMAGE^, cIMAGEHeadSize);
|
||||||
|
|
||||||
if not CheckIMAGE(TIM) then Exit;
|
if not CheckIMAGE(TIM) then
|
||||||
if not CheckTIMSize(TIM) then Exit;
|
Exit;
|
||||||
|
if not CheckTIMSize(TIM) then
|
||||||
|
Exit;
|
||||||
|
|
||||||
TIM^.dwSize := GetTIMSize(TIM);
|
TIM^.dwSize := GetTIMSize(TIM);
|
||||||
TIM^.bGOOD := TIMIsGood(TIM);
|
TIM^.bGOOD := TIMIsGood(TIM);
|
||||||
@@ -366,9 +370,6 @@ var
|
|||||||
Sector: TCDSector;
|
Sector: TCDSector;
|
||||||
P, TIM_FULL_SECTORS: Integer;
|
P, TIM_FULL_SECTORS: Integer;
|
||||||
begin
|
begin
|
||||||
sImageStream := nil;
|
|
||||||
TIM_BUF := nil;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
sImageStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
|
sImageStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
|
||||||
|
|
||||||
@@ -380,7 +381,8 @@ begin
|
|||||||
New(TIM_BUF);
|
New(TIM_BUF);
|
||||||
P := 0;
|
P := 0;
|
||||||
|
|
||||||
if SIZE < FirstPartSize then FirstPartSize := SIZE;
|
if SIZE < FirstPartSize then
|
||||||
|
FirstPartSize := SIZE;
|
||||||
|
|
||||||
sImageStream.Seek(TimStartSectorPos, soBeginning);
|
sImageStream.Seek(TimStartSectorPos, soBeginning);
|
||||||
sImageStream.Read(Sector, cSectorSize);
|
sImageStream.Read(Sector, cSectorSize);
|
||||||
@@ -430,7 +432,8 @@ var
|
|||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
|
|
||||||
if dwSize > cTIMMaxSize then Exit;
|
if dwSize > cTIMMaxSize then
|
||||||
|
Exit;
|
||||||
|
|
||||||
New(BUF);
|
New(BUF);
|
||||||
Result := CreateTIM;
|
Result := CreateTIM;
|
||||||
@@ -439,7 +442,8 @@ begin
|
|||||||
Stream.Read(BUF^[0], dwSize);
|
Stream.Read(BUF^[0], dwSize);
|
||||||
|
|
||||||
P := 0;
|
P := 0;
|
||||||
if not LoadTimFromBuf(BUF, Result, P) then FreeTIM(Result);
|
if not LoadTimFromBuf(BUF, Result, P) then
|
||||||
|
FreeTIM(Result);
|
||||||
|
|
||||||
Dispose(BUF);
|
Dispose(BUF);
|
||||||
end;
|
end;
|
||||||
@@ -449,7 +453,6 @@ function LoadTimFromFile(const FileName: string; var Position: Integer;
|
|||||||
var
|
var
|
||||||
sTIM: TFileStream;
|
sTIM: TFileStream;
|
||||||
begin
|
begin
|
||||||
sTIM := nil;
|
|
||||||
if not ImageScan then
|
if not ImageScan then
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
Reference in New Issue
Block a user