This commit is contained in:
Vladimir Kryvian
2015-08-06 12:43:25 +03:00
parent b6a4a590c6
commit ecfbb344b9
8 changed files with 78 additions and 93 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -27,7 +27,7 @@
<AutoIncrementBuild Value="True"/> <AutoIncrementBuild Value="True"/>
<MajorVersionNr Value="1"/> <MajorVersionNr Value="1"/>
<RevisionNr Value="90"/> <RevisionNr Value="90"/>
<BuildNr Value="33"/> <BuildNr Value="54"/>
<StringTable CompanyName="Lab 313" FileDescription="The best TIMs tool ever!:)" ProductVersion=""/> <StringTable CompanyName="Lab 313" FileDescription="The best TIMs tool ever!:)" ProductVersion=""/>
</VersionInfo> </VersionInfo>
<BuildModes Count="6"> <BuildModes Count="6">
@@ -37,7 +37,7 @@
<Version Value="11"/> <Version Value="11"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Target> <Target>
<Filename Value="output\tim2view_$(TargetOS)"/> <Filename Value="output\tim2view_$(TargetOS)_$(TargetCPU)"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/> <IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/>
@@ -77,7 +77,7 @@
<Version Value="11"/> <Version Value="11"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Target> <Target>
<Filename Value="output\tim2view_$(TargetOS)"/> <Filename Value="output\tim2view_$(TargetOS)_$(TargetCPU)"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/> <IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/>
@@ -117,7 +117,7 @@
<Version Value="11"/> <Version Value="11"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Target> <Target>
<Filename Value="output\tim2view_$(TargetOS)"/> <Filename Value="output\tim2view_$(TargetOS)_$(TargetCPU)"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/> <IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/>
@@ -157,7 +157,7 @@
<Version Value="11"/> <Version Value="11"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Target> <Target>
<Filename Value="output\tim2view_$(TargetOS)"/> <Filename Value="output\tim2view_$(TargetOS)_$(TargetCPU)"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/> <IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/>
@@ -197,7 +197,7 @@
<Version Value="11"/> <Version Value="11"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Target> <Target>
<Filename Value="output\tim2view_$(TargetOS)"/> <Filename Value="output\tim2view_$(TargetOS)_$(TargetCPU)"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/> <IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/>
@@ -316,7 +316,7 @@
<Version Value="11"/> <Version Value="11"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Target> <Target>
<Filename Value="output\tim2view_$(TargetOS)"/> <Filename Value="output\tim2view_$(TargetOS)_$(TargetCPU)"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/> <IncludeFiles Value="$(ProjOutDir);lazpaint\bgrabitmap"/>

View File

@@ -11,7 +11,7 @@ type
PDrawGrid = ^TDrawGrid; PDrawGrid = ^TDrawGrid;
procedure Tim2Png(TIM: PTIM; CLUT_NUM: Integer; Image: PDrawSurf; TranspMode: Byte; ForExport: Boolean); procedure Tim2Png(TIM: PTIM; CLUT_NUM: Integer; Image: PDrawSurf; TranspMode: Byte);
procedure Png2Tim(Image: PDrawSurf; Dest: PTIM); procedure Png2Tim(Image: PDrawSurf; Dest: PTIM);
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);
@@ -69,7 +69,7 @@ begin
end end
end; end;
procedure PrepareClut(TIM: PTIM; CLUT_NUM: Integer; Pal: PFPPalette; TranspMode: Integer; ForExport: Boolean); procedure PrepareClut(TIM: PTIM; CLUT_NUM: Integer; Pal: PFPPalette; TranspMode: Integer);
var var
I, COUNT: Integer; I, COUNT: Integer;
CC: TCLUT_COLOR; CC: TCLUT_COLOR;
@@ -105,12 +105,9 @@ begin
A := 0; A := 0;
end; end;
if ForExport then
begin
R := R + ((I - 1) and %00000011); R := R + ((I - 1) and %00000011);
G := G + ((I - 1) and %00011100) shr 2; G := G + ((I - 1) and %00011100) shr 2;
B := B + ((I - 1) and %11100000) shr 5; B := B + ((I - 1) and %11100000) shr 5;
end;
FC := BGRAToFPColor(BGRA(R, G, B, A)); FC := BGRAToFPColor(BGRA(R, G, B, A));
AlphaForMode(@FC, TranspMode); AlphaForMode(@FC, TranspMode);
@@ -182,7 +179,7 @@ begin
ClearCanvas(@Grid^.Canvas, Grid^.CellRect(X - 1, Y - 1)); ClearCanvas(@Grid^.Canvas, Grid^.CellRect(X - 1, Y - 1));
end; end;
procedure Tim2Png(TIM: PTIM; CLUT_NUM: Integer; Image: PDrawSurf; TranspMode: Byte; ForExport: Boolean); procedure Tim2Png(TIM: PTIM; CLUT_NUM: Integer; Image: PDrawSurf; TranspMode: Byte);
var var
RW, RH, CW: Word; RW, RH, CW: Word;
INDEXES: PIMAGE_INDEXES; INDEXES: PIMAGE_INDEXES;
@@ -202,7 +199,7 @@ begin
PAL := @(Image^.Palette); PAL := @(Image^.Palette);
PrepareClut(TIM, CLUT_NUM, PAL, TranspMode, ForExport); PrepareClut(TIM, CLUT_NUM, PAL, TranspMode);
INDEXES := PrepareIMAGE(TIM); INDEXES := PrepareIMAGE(TIM);
COLORS := GetTimColorsCount(TIM); COLORS := GetTimColorsCount(TIM);

View File

@@ -578,8 +578,8 @@ object frmMain: TfrmMain
TabOrder = 0 TabOrder = 0
object lvList: TListView object lvList: TListView
Left = 0 Left = 0
Height = 384 Height = 412
Top = 28 Top = 0
Width = 253 Width = 253
Align = alClient Align = alClient
Columns = < Columns = <
@@ -624,35 +624,6 @@ object frmMain: TfrmMain
OnData = lvListData OnData = lvListData
OnSelectItem = lvListSelectItem OnSelectItem = lvListSelectItem
end end
object pnlExtractAll: TPanel
Left = 0
Height = 28
Top = 0
Width = 253
Align = alTop
BevelOuter = bvLowered
ClientHeight = 28
ClientWidth = 253
TabOrder = 1
object btnExtractAllTims: TButton
Left = 152
Height = 26
Top = 1
Width = 100
Action = actExtractPngs
Align = alRight
TabOrder = 0
end
object btnExtractPNGs: TButton
Left = 1
Height = 26
Top = 1
Width = 100
Action = actExtractFiles
Align = alLeft
TabOrder = 1
end
end
object tblTimInfo: TStringGrid object tblTimInfo: TStringGrid
Left = 0 Left = 0
Height = 185 Height = 185
@@ -667,7 +638,7 @@ object frmMain: TfrmMain
Flat = True Flat = True
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goSmoothScroll] Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goSmoothScroll]
RowCount = 9 RowCount = 9
TabOrder = 2 TabOrder = 1
TitleFont.Color = clWindowText TitleFont.Color = clWindowText
TitleFont.Height = -11 TitleFont.Height = -11
TitleFont.Name = 'Tahoma' TitleFont.Name = 'Tahoma'
@@ -904,10 +875,10 @@ object frmMain: TfrmMain
object mnImage: TMenuItem object mnImage: TMenuItem
Caption = '&Image' Caption = '&Image'
object mnSaveTIM: TMenuItem object mnSaveTIM: TMenuItem
Action = actExtractFile Action = actExtractTim
end end
object mnReplaceIn: TMenuItem object mnReplaceIn: TMenuItem
Action = actReplaceFile Action = actReplaceTim
end end
object MenuItem1: TMenuItem object MenuItem1: TMenuItem
Caption = '-' Caption = '-'
@@ -918,6 +889,15 @@ object frmMain: TfrmMain
object mnImportPng: TMenuItem object mnImportPng: TMenuItem
Action = actPngImport Action = actPngImport
end end
object N21: TMenuItem
Caption = '-'
end
object mnExtractAllTims3: TMenuItem
Action = actExtractTims
end
object mnExtractAllPngs3: TMenuItem
Action = actExtractPngs
end
end end
object mnOptions: TMenuItem object mnOptions: TMenuItem
Caption = '&Options' Caption = '&Options'
@@ -1029,9 +1009,9 @@ object frmMain: TfrmMain
OnExecute = actExitExecute OnExecute = actExitExecute
ShortCut = 121 ShortCut = 121
end end
object actExtractFile: TAction object actExtractTim: TAction
Caption = '&Extract File...' Caption = '&Extract TIM...'
OnExecute = actExtractFileExecute OnExecute = actExtractTimExecute
ShortCut = 113 ShortCut = 113
end end
object actPngExport: TAction object actPngExport: TAction
@@ -1044,9 +1024,9 @@ object frmMain: TfrmMain
OnExecute = actPngImportExecute OnExecute = actPngImportExecute
ShortCut = 116 ShortCut = 116
end end
object actReplaceFile: TAction object actReplaceTim: TAction
Caption = '&Replace File...' Caption = '&Replace TIM...'
OnExecute = actReplaceFileExecute OnExecute = actReplaceTimExecute
ShortCut = 114 ShortCut = 114
end end
object actOpenRepo: TAction object actOpenRepo: TAction
@@ -1071,13 +1051,13 @@ object frmMain: TfrmMain
Caption = '&SendTo Shortcut for Tim2View' Caption = '&SendTo Shortcut for Tim2View'
OnExecute = actAddToSendtoExecute OnExecute = actAddToSendtoExecute
end end
object actExtractFiles: TAction object actExtractTims: TAction
Caption = 'Extract all &Files' Caption = 'Extract all &TIMs (This File)'
OnExecute = actExtractFilesExecute OnExecute = actExtractTimsExecute
ShortCut = 8305 ShortCut = 8305
end end
object actExtractPngs: TAction object actExtractPngs: TAction
Caption = '&Extract all PNGs' Caption = '&Extract all PNGs (This File)'
OnExecute = actExtractPngsExecute OnExecute = actExtractPngsExecute
ShortCut = 8307 ShortCut = 8307
end end
@@ -1108,20 +1088,26 @@ object frmMain: TfrmMain
object pmList: TPopupMenu object pmList: TPopupMenu
left = 432 left = 432
top = 112 top = 112
object ExtractTIM1: TMenuItem object mnSaveTIM1: TMenuItem
Action = actExtractFile Action = actExtractTim
end end
object ReplaceTIM1: TMenuItem object mnReplaceIn1: TMenuItem
Action = actReplaceFile Action = actReplaceTim
end
object SaveasPNG1: TMenuItem
Action = actPngExport
end end
object N7: TMenuItem object N7: TMenuItem
Caption = '-' Caption = '-'
end end
object mnSaveToPNG1: TMenuItem
Action = actPngExport
end
object mnImportPng1: TMenuItem
Action = actPngImport
end
object N20: TMenuItem
Caption = '-'
end
object mnExtractAllTims2: TMenuItem object mnExtractAllTims2: TMenuItem
Action = actExtractFiles Action = actExtractTims
end end
object mnExtractAllPngs2: TMenuItem object mnExtractAllPngs2: TMenuItem
Action = actExtractPngs Action = actExtractPngs
@@ -1134,7 +1120,7 @@ object frmMain: TfrmMain
Action = actPngExport Action = actPngExport
end end
object mnSaveAsTim: TMenuItem object mnSaveAsTim: TMenuItem
Action = actExtractFile Action = actExtractTim
end end
object N5: TMenuItem object N5: TMenuItem
Caption = '-' Caption = '-'

View File

@@ -24,8 +24,8 @@ type
actCloseFiles: TAction; actCloseFiles: TAction;
actExit: TAction; actExit: TAction;
actExtractPngs: TAction; actExtractPngs: TAction;
actExtractFile: TAction; actExtractTim: TAction;
actExtractFiles: TAction; actExtractTims: TAction;
actChangeFile: TAction; actChangeFile: TAction;
actChangeBackColor: TAction; actChangeBackColor: TAction;
actShowFileInfo: TAction; actShowFileInfo: TAction;
@@ -33,15 +33,13 @@ type
actStopScan: TAction; actStopScan: TAction;
actOpenLab: TAction; actOpenLab: TAction;
actOpenRepo: TAction; actOpenRepo: TAction;
actReplaceFile: TAction; actReplaceTim: TAction;
actReturnFocus: TAction; actReturnFocus: TAction;
actScanDir: TAction; actScanDir: TAction;
actScanFile: TAction; actScanFile: TAction;
actList: TActionList; actList: TActionList;
actStretch: TAction; actStretch: TAction;
actPngExport: TAction; actPngExport: TAction;
btnExtractAllTims: TButton;
btnExtractPNGs: TButton;
btnShowClut: TButton; btnShowClut: TButton;
btnStopScan: TButton; btnStopScan: TButton;
cbbBitMode: TComboBox; cbbBitMode: TComboBox;
@@ -52,13 +50,18 @@ type
dlgOpenFile: TOpenDialog; dlgOpenFile: TOpenDialog;
dlgSavePNG: TSavePictureDialog; dlgSavePNG: TSavePictureDialog;
dlgSaveFile: TSaveDialog; dlgSaveFile: TSaveDialog;
ExtractTIM1: TMenuItem; mnExtractAllPngs3: TMenuItem;
mnExtractAllTims3: TMenuItem;
N21: TMenuItem;
N20: TMenuItem;
mnSaveTIM1: TMenuItem;
grdClut: TDrawGrid; grdClut: TDrawGrid;
imgTim: TImage; imgTim: TImage;
lblClutHint: TLabel; lblClutHint: TLabel;
lblStatus: TLabel; lblStatus: TLabel;
lvList: TListView; lvList: TListView;
MenuItem1: TMenuItem; MenuItem1: TMenuItem;
mnImportPng1: TMenuItem;
mnShowTimInfo: TMenuItem; mnShowTimInfo: TMenuItem;
mnImportPng: TMenuItem; mnImportPng: TMenuItem;
mnChangeBackColor2: TMenuItem; mnChangeBackColor2: TMenuItem;
@@ -94,7 +97,6 @@ type
dlgOpenPNG: TOpenPictureDialog; dlgOpenPNG: TOpenPictureDialog;
pnlClut: TPanel; pnlClut: TPanel;
pbProgress: TProgressBar; pbProgress: TProgressBar;
pnlExtractAll: TPanel;
pnlImage: TPanel; pnlImage: TPanel;
pnlImageOptions: TPanel; pnlImageOptions: TPanel;
pnlList: TPanel; pnlList: TPanel;
@@ -102,8 +104,8 @@ type
pnlMain: TPanel; pnlMain: TPanel;
pmImage: TPopupMenu; pmImage: TPopupMenu;
pmList: TPopupMenu; pmList: TPopupMenu;
ReplaceTIM1: TMenuItem; mnReplaceIn1: TMenuItem;
SaveasPNG1: TMenuItem; mnSaveToPNG1: TMenuItem;
dlgSelectDir: TSelectDirectoryDialog; dlgSelectDir: TSelectDirectoryDialog;
splMain: TSplitter; splMain: TSplitter;
tblTimInfo: TStringGrid; tblTimInfo: TStringGrid;
@@ -116,12 +118,12 @@ type
procedure actCloseFilesExecute(Sender: TObject); procedure actCloseFilesExecute(Sender: TObject);
procedure actExitExecute(Sender: TObject); procedure actExitExecute(Sender: TObject);
procedure actExtractPngsExecute(Sender: TObject); procedure actExtractPngsExecute(Sender: TObject);
procedure actExtractFileExecute(Sender: TObject); procedure actExtractTimExecute(Sender: TObject);
procedure actExtractFilesExecute(Sender: TObject); procedure actExtractTimsExecute(Sender: TObject);
procedure actOpenLabExecute(Sender: TObject); procedure actOpenLabExecute(Sender: TObject);
procedure actOpenRepoExecute(Sender: TObject); procedure actOpenRepoExecute(Sender: TObject);
procedure actPngImportExecute(Sender: TObject); procedure actPngImportExecute(Sender: TObject);
procedure actReplaceFileExecute(Sender: TObject); procedure actReplaceTimExecute(Sender: TObject);
procedure actReturnFocusExecute(Sender: TObject); procedure actReturnFocusExecute(Sender: TObject);
procedure actScanDirExecute(Sender: TObject); procedure actScanDirExecute(Sender: TObject);
procedure actScanFileExecute(Sender: TObject); procedure actScanFileExecute(Sender: TObject);
@@ -255,7 +257,7 @@ begin
New(Image); New(Image);
Image^ := nil; Image^ := nil;
Tim2Png(TIM, cbbCLUT.ItemIndex, Image, cbbTranspMode.ItemIndex, True); Tim2Png(TIM, cbbCLUT.ItemIndex, Image, cbbTranspMode.ItemIndex);
SaveImage(dlgSavePNG.FileName, Image, TIMisIndexed(TIM)); SaveImage(dlgSavePNG.FileName, Image, TIMisIndexed(TIM));
FreeTIM(TIM); FreeTIM(TIM);
Image^.Free; Image^.Free;
@@ -402,7 +404,7 @@ begin
CreateDirUTF8(Path); CreateDirUTF8(Path);
TIM := LoadTimFromFile(FName, OFFSET, IsImage, SIZE); TIM := LoadTimFromFile(FName, OFFSET, IsImage, SIZE);
Tim2Png(TIM, cbbCLUT.ItemIndex, Image, cbbTranspMode.ItemIndex, False); Tim2Png(TIM, cbbCLUT.ItemIndex, Image, cbbTranspMode.ItemIndex);
Path := Path + FormatPngName(FName, I - 1, BIT_MODE, 0); Path := Path + FormatPngName(FName, I - 1, BIT_MODE, 0);
SaveImage(Path, Image, False); SaveImage(Path, Image, False);
@@ -420,7 +422,7 @@ begin
pbProgress.Position := 0; pbProgress.Position := 0;
end; end;
procedure TfrmMain.actExtractFileExecute(Sender: TObject); procedure TfrmMain.actExtractTimExecute(Sender: TObject);
var var
TIM: PTIM; TIM: PTIM;
begin begin
@@ -435,7 +437,7 @@ begin
FreeTIM(TIM); FreeTIM(TIM);
end; end;
procedure TfrmMain.actExtractFilesExecute(Sender: TObject); procedure TfrmMain.actExtractTimsExecute(Sender: TObject);
var var
I, OFFSET, BIT_MODE, SIZE, MAGIC: Integer; I, OFFSET, BIT_MODE, SIZE, MAGIC: Integer;
FName, Path: string; FName, Path: string;
@@ -507,7 +509,7 @@ begin
Dispose(Image); Dispose(Image);
end; end;
procedure TfrmMain.actReplaceFileExecute(Sender: TObject); procedure TfrmMain.actReplaceTimExecute(Sender: TObject);
var var
ScanRes: TScanResult; ScanRes: TScanResult;
begin begin
@@ -845,13 +847,13 @@ begin
actScanFile.Enabled := ScanThreads.Count = 0; actScanFile.Enabled := ScanThreads.Count = 0;
actScanDir.Enabled := ScanThreads.Count = 0; actScanDir.Enabled := ScanThreads.Count = 0;
actReplaceFile.Enabled := (lvList.Selected <> nil) and (lvList.Selected.Index <> -1); actReplaceTim.Enabled := (lvList.Selected <> nil) and (lvList.Selected.Index <> -1);
actPngExport.Enabled := (Surf^ <> nil) and actReplaceFile.Enabled; actPngExport.Enabled := (Surf^ <> nil) and actReplaceTim.Enabled;
actPngImport.Enabled := actReplaceFile.Enabled; actPngImport.Enabled := actReplaceTim.Enabled;
actExtractFile.Enabled := actReplaceFile.Enabled; actExtractTim.Enabled := actReplaceTim.Enabled;
pnlImageOptions.Enabled := actReplaceFile.Enabled; pnlImageOptions.Enabled := actReplaceTim.Enabled;
end; end;
procedure TfrmMain.ScanFinished(Sender: TObject); procedure TfrmMain.ScanFinished(Sender: TObject);
@@ -941,7 +943,7 @@ begin
TIM := SelectedTimInMode; TIM := SelectedTimInMode;
if TIM = nil then Exit; if TIM = nil then Exit;
Tim2Png(TIM, cbbCLUT.ItemIndex, Surf, cbbTranspMode.ItemIndex, False); Tim2Png(TIM, cbbCLUT.ItemIndex, Surf, cbbTranspMode.ItemIndex);
imgTim.Picture.Bitmap.Assign(Surf^.Bitmap); imgTim.Picture.Bitmap.Assign(Surf^.Bitmap);
FreeTIM(TIM); FreeTIM(TIM);