Added extracting of TIMs and PNGs from all files.
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -27,7 +27,7 @@
|
|||||||
<AutoIncrementBuild Value="True"/>
|
<AutoIncrementBuild Value="True"/>
|
||||||
<MajorVersionNr Value="1"/>
|
<MajorVersionNr Value="1"/>
|
||||||
<RevisionNr Value="90"/>
|
<RevisionNr Value="90"/>
|
||||||
<BuildNr Value="54"/>
|
<BuildNr Value="56"/>
|
||||||
<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">
|
||||||
|
|||||||
18
umain.lfm
18
umain.lfm
@@ -898,6 +898,15 @@ object frmMain: TfrmMain
|
|||||||
object mnExtractAllPngs3: TMenuItem
|
object mnExtractAllPngs3: TMenuItem
|
||||||
Action = actExtractPngs
|
Action = actExtractPngs
|
||||||
end
|
end
|
||||||
|
object N22: TMenuItem
|
||||||
|
Caption = '-'
|
||||||
|
end
|
||||||
|
object MenuItem2: TMenuItem
|
||||||
|
Action = actExtractTimsAll
|
||||||
|
end
|
||||||
|
object MenuItem3: TMenuItem
|
||||||
|
Action = actExtractPngsAll
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object mnOptions: TMenuItem
|
object mnOptions: TMenuItem
|
||||||
Caption = '&Options'
|
Caption = '&Options'
|
||||||
@@ -1056,11 +1065,20 @@ object frmMain: TfrmMain
|
|||||||
OnExecute = actExtractTimsExecute
|
OnExecute = actExtractTimsExecute
|
||||||
ShortCut = 8305
|
ShortCut = 8305
|
||||||
end
|
end
|
||||||
|
object actExtractTimsAll: TAction
|
||||||
|
Caption = 'Extract all TIMs (&All Files)'
|
||||||
|
OnExecute = actExtractTimsAllExecute
|
||||||
|
ShortCut = 24689
|
||||||
|
end
|
||||||
object actExtractPngs: TAction
|
object actExtractPngs: TAction
|
||||||
Caption = '&Extract all PNGs (This File)'
|
Caption = '&Extract all PNGs (This File)'
|
||||||
OnExecute = actExtractPngsExecute
|
OnExecute = actExtractPngsExecute
|
||||||
ShortCut = 8307
|
ShortCut = 8307
|
||||||
end
|
end
|
||||||
|
object actExtractPngsAll: TAction
|
||||||
|
Caption = 'Extract all PNGs (All &Files)'
|
||||||
|
OnExecute = actExtractPngsAllExecute
|
||||||
|
end
|
||||||
object actChangeClutIdx: TAction
|
object actChangeClutIdx: TAction
|
||||||
OnExecute = actChangeClutIdxExecute
|
OnExecute = actChangeClutIdxExecute
|
||||||
end
|
end
|
||||||
|
|||||||
106
umain.pas
106
umain.pas
@@ -28,6 +28,8 @@ type
|
|||||||
actExtractTims: TAction;
|
actExtractTims: TAction;
|
||||||
actChangeFile: TAction;
|
actChangeFile: TAction;
|
||||||
actChangeBackColor: TAction;
|
actChangeBackColor: TAction;
|
||||||
|
actExtractTimsAll: TAction;
|
||||||
|
actExtractPngsAll: TAction;
|
||||||
actShowFileInfo: TAction;
|
actShowFileInfo: TAction;
|
||||||
actPngImport: TAction;
|
actPngImport: TAction;
|
||||||
actStopScan: TAction;
|
actStopScan: TAction;
|
||||||
@@ -50,6 +52,9 @@ type
|
|||||||
dlgOpenFile: TOpenDialog;
|
dlgOpenFile: TOpenDialog;
|
||||||
dlgSavePNG: TSavePictureDialog;
|
dlgSavePNG: TSavePictureDialog;
|
||||||
dlgSaveFile: TSaveDialog;
|
dlgSaveFile: TSaveDialog;
|
||||||
|
MenuItem2: TMenuItem;
|
||||||
|
MenuItem3: TMenuItem;
|
||||||
|
N22: TMenuItem;
|
||||||
mnExtractAllPngs3: TMenuItem;
|
mnExtractAllPngs3: TMenuItem;
|
||||||
mnExtractAllTims3: TMenuItem;
|
mnExtractAllTims3: TMenuItem;
|
||||||
N21: TMenuItem;
|
N21: TMenuItem;
|
||||||
@@ -117,8 +122,10 @@ type
|
|||||||
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 actExtractPngsAllExecute(Sender: TObject);
|
||||||
procedure actExtractPngsExecute(Sender: TObject);
|
procedure actExtractPngsExecute(Sender: TObject);
|
||||||
procedure actExtractTimExecute(Sender: TObject);
|
procedure actExtractTimExecute(Sender: TObject);
|
||||||
|
procedure actExtractTimsAllExecute(Sender: TObject);
|
||||||
procedure actExtractTimsExecute(Sender: TObject);
|
procedure actExtractTimsExecute(Sender: TObject);
|
||||||
procedure actOpenLabExecute(Sender: TObject);
|
procedure actOpenLabExecute(Sender: TObject);
|
||||||
procedure actOpenRepoExecute(Sender: TObject);
|
procedure actOpenRepoExecute(Sender: TObject);
|
||||||
@@ -372,6 +379,58 @@ begin
|
|||||||
Close;
|
Close;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrmMain.actExtractPngsAllExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
I, J, OFFSET, BIT_MODE, SIZE: Integer;
|
||||||
|
FName, Path: string;
|
||||||
|
IsImage: Boolean;
|
||||||
|
ScanTim: TTimInfo;
|
||||||
|
TIM: PTIM;
|
||||||
|
Image: PDrawSurf;
|
||||||
|
begin
|
||||||
|
lblStatus.Caption := sStatusBarPngsExtracting;
|
||||||
|
|
||||||
|
for J := 1 to ScanResults.Count do begin
|
||||||
|
FName := ScanResults[J - 1].ScanFile;
|
||||||
|
IsImage := ScanResults[J - 1].IsImage;
|
||||||
|
|
||||||
|
New(Image);
|
||||||
|
Image^ := nil;
|
||||||
|
|
||||||
|
pbProgress.Position := 0;
|
||||||
|
pbProgress.Max := ScanResults[J - 1].Count;
|
||||||
|
for I := 1 to ScanResults[J - 1].Count do
|
||||||
|
begin
|
||||||
|
ScanTim := TimInfoByIdx[I - 1];
|
||||||
|
OFFSET := ScanTim.Position;
|
||||||
|
SIZE := ScanTim.Size;
|
||||||
|
BIT_MODE := ScanTim.BitMode;
|
||||||
|
|
||||||
|
Path := SysToUTF8(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStrUTF8(0)) + cExtractedPngsDir));
|
||||||
|
CreateDirUTF8(Path);
|
||||||
|
Path := IncludeTrailingPathDelimiter(Path + ExtractFileName(FName));
|
||||||
|
CreateDirUTF8(Path);
|
||||||
|
|
||||||
|
TIM := LoadTimFromFile(FName, OFFSET, IsImage, SIZE);
|
||||||
|
Tim2Png(TIM, cbbCLUT.ItemIndex, Image, cbbTranspMode.ItemIndex);
|
||||||
|
|
||||||
|
Path := Path + FormatPngName(FName, I - 1, BIT_MODE, 0);
|
||||||
|
SaveImage(Path, Image, False);
|
||||||
|
{$IFDEF Linux}FpChmod(Path, &777);{$IFEND}
|
||||||
|
Image^.Free;
|
||||||
|
Image^ := nil;
|
||||||
|
|
||||||
|
FreeTIM(TIM);
|
||||||
|
|
||||||
|
pbProgress.Position := I;
|
||||||
|
Application.ProcessMessages;
|
||||||
|
end;
|
||||||
|
Dispose(Image);
|
||||||
|
lblStatus.Caption := sStatusBarExtracted;
|
||||||
|
pbProgress.Position := 0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.actExtractPngsExecute(Sender: TObject);
|
procedure TfrmMain.actExtractPngsExecute(Sender: TObject);
|
||||||
var
|
var
|
||||||
I, OFFSET, BIT_MODE, SIZE: Integer;
|
I, OFFSET, BIT_MODE, SIZE: Integer;
|
||||||
@@ -437,6 +496,49 @@ begin
|
|||||||
FreeTIM(TIM);
|
FreeTIM(TIM);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrmMain.actExtractTimsAllExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
I, J, OFFSET, BIT_MODE, SIZE, MAGIC: Integer;
|
||||||
|
FName, Path: string;
|
||||||
|
IsImage: Boolean;
|
||||||
|
TIM: PTIM;
|
||||||
|
ScanTim: TTimInfo;
|
||||||
|
begin
|
||||||
|
lblStatus.Caption := sStatusBarFilesExtracting;
|
||||||
|
|
||||||
|
for J := 1 to ScanResults.Count do begin
|
||||||
|
FName := ScanResults[J - 1].ScanFile;
|
||||||
|
IsImage := ScanResults[J - 1].IsImage;
|
||||||
|
|
||||||
|
pbProgress.Position := 0;
|
||||||
|
pbProgress.Max := ScanResults[J - 1].Count;
|
||||||
|
for I := 1 to ScanResults[J - 1].Count do
|
||||||
|
begin
|
||||||
|
ScanTim := TimInfoByIdx[I - 1];
|
||||||
|
OFFSET := ScanTim.Position;
|
||||||
|
SIZE := ScanTim.Size;
|
||||||
|
BIT_MODE := ScanTim.BitMode;
|
||||||
|
MAGIC := ScanTim.Magic;
|
||||||
|
|
||||||
|
Path := SysToUTF8(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStrUTF8(0)) + cExtractedFilesDir));
|
||||||
|
CreateDirUTF8(Path);
|
||||||
|
Path := IncludeTrailingPathDelimiter(Path + ExtractFileName(FName));
|
||||||
|
CreateDirUTF8(Path);
|
||||||
|
|
||||||
|
TIM := LoadTimFromFile(FName, OFFSET, IsImage, SIZE);
|
||||||
|
Path := Path + FormatFileName(FName, I - 1, BIT_MODE, MAGIC);
|
||||||
|
SaveTimToFile(Path, TIM);
|
||||||
|
{$IFDEF Linux}FpChmod(Path, &777);{$IFEND}
|
||||||
|
FreeTIM(TIM);
|
||||||
|
|
||||||
|
pbProgress.Position := I;
|
||||||
|
Application.ProcessMessages;
|
||||||
|
end;
|
||||||
|
lblStatus.Caption := sStatusBarExtracted;
|
||||||
|
pbProgress.Position := 0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrmMain.actExtractTimsExecute(Sender: TObject);
|
procedure TfrmMain.actExtractTimsExecute(Sender: TObject);
|
||||||
var
|
var
|
||||||
I, OFFSET, BIT_MODE, SIZE, MAGIC: Integer;
|
I, OFFSET, BIT_MODE, SIZE, MAGIC: Integer;
|
||||||
@@ -839,6 +941,8 @@ begin
|
|||||||
RemoveGridSelection;
|
RemoveGridSelection;
|
||||||
|
|
||||||
cbbFiles.Enabled := (cbbFiles.Items.Count <> 0);
|
cbbFiles.Enabled := (cbbFiles.Items.Count <> 0);
|
||||||
|
actExtractTimsAll.Enabled := cbbFiles.Enabled;
|
||||||
|
|
||||||
|
|
||||||
pnlList.Enabled := cbbFiles.Enabled;
|
pnlList.Enabled := cbbFiles.Enabled;
|
||||||
actCloseFile.Enabled := cbbFiles.Enabled;
|
actCloseFile.Enabled := cbbFiles.Enabled;
|
||||||
@@ -852,6 +956,8 @@ begin
|
|||||||
actPngExport.Enabled := (Surf^ <> nil) and actReplaceTim.Enabled;
|
actPngExport.Enabled := (Surf^ <> nil) and actReplaceTim.Enabled;
|
||||||
actPngImport.Enabled := actReplaceTim.Enabled;
|
actPngImport.Enabled := actReplaceTim.Enabled;
|
||||||
actExtractTim.Enabled := actReplaceTim.Enabled;
|
actExtractTim.Enabled := actReplaceTim.Enabled;
|
||||||
|
actExtractTims.Enabled := actReplaceTim.Enabled;
|
||||||
|
actExtractPngs.Enabled := actReplaceTim.Enabled;
|
||||||
|
|
||||||
pnlImageOptions.Enabled := actReplaceTim.Enabled;
|
pnlImageOptions.Enabled := actReplaceTim.Enabled;
|
||||||
end;
|
end;
|
||||||
|
|||||||
Reference in New Issue
Block a user