From 2c87ea1040f8fc02fcadbf920d02685198a0c216 Mon Sep 17 00:00:00 2001
From: tobigun <tobigun@b956fd51-792f-4845-bead-9b4dfca2ff2c>
Date: Wed, 27 Aug 2008 15:26:05 +0000
Subject: Artwork/Game/Modis/Tools changed to lower case

git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1314 b956fd51-792f-4845-bead-9b4dfca2ff2c
---
 tools/ResourceExtractor/Makefile.in           |  19 ++++
 tools/ResourceExtractor/ResourceExtractor.lpi | 106 ++++++++++++++++++
 tools/ResourceExtractor/ResourceExtractor.pas | 152 ++++++++++++++++++++++++++
 3 files changed, 277 insertions(+)
 create mode 100644 tools/ResourceExtractor/Makefile.in
 create mode 100644 tools/ResourceExtractor/ResourceExtractor.lpi
 create mode 100644 tools/ResourceExtractor/ResourceExtractor.pas

(limited to 'tools/ResourceExtractor')

diff --git a/tools/ResourceExtractor/Makefile.in b/tools/ResourceExtractor/Makefile.in
new file mode 100644
index 00000000..709365d7
--- /dev/null
+++ b/tools/ResourceExtractor/Makefile.in
@@ -0,0 +1,19 @@
+PPC = @PPC@
+PFLAGS = -dRELEASE
+
+NAME = ResourceExtractor
+SRC = $(NAME).pas
+BIN = $(NAME)@EXEEXT@
+
+.PHONY: all clean distclean
+
+all: $(BIN)
+
+clean:
+	rm -f $(BIN) *.o *.ppu *.rst *.compiled
+
+distclean: clean
+	rm -rf Makefile *~ *.bak __history
+
+$(BIN): $(SRC)
+	$(PPC) $(PFLAGS) -o$@ $(SRC)
diff --git a/tools/ResourceExtractor/ResourceExtractor.lpi b/tools/ResourceExtractor/ResourceExtractor.lpi
new file mode 100644
index 00000000..82ecf87e
--- /dev/null
+++ b/tools/ResourceExtractor/ResourceExtractor.lpi
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<CONFIG>
+  <ProjectOptions>
+    <PathDelim Value="/"/>
+    <Version Value="6"/>
+    <General>
+      <Flags>
+        <MainUnitHasUsesSectionForAllUnits Value="False"/>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+      </Flags>
+      <MainUnit Value="0"/>
+      <IconPath Value="./"/>
+      <TargetFileExt Value=""/>
+      <ActiveEditorIndexAtStart Value="0"/>
+    </General>
+    <VersionInfo>
+      <ProjectVersion Value=""/>
+      <Language Value=""/>
+      <CharSet Value=""/>
+    </VersionInfo>
+    <PublishOptions>
+      <Version Value="2"/>
+      <IgnoreBinaries Value="False"/>
+      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
+      <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
+    </PublishOptions>
+    <RunParams>
+      <local>
+        <FormatVersion Value="1"/>
+        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+      </local>
+    </RunParams>
+    <Units Count="3">
+      <Unit0>
+        <Filename Value="ResourceExtractor.pas"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="ResourceExtractor"/>
+        <CursorPos X="1" Y="131"/>
+        <TopLine Value="108"/>
+        <EditorIndex Value="0"/>
+        <UsageCount Value="21"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="../USDXResCompiler.lpr"/>
+        <UnitName Value="USDXResCompiler"/>
+        <CursorPos X="17" Y="96"/>
+        <TopLine Value="89"/>
+        <UsageCount Value="10"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="../../Game/Code/resource.inc"/>
+        <CursorPos X="1" Y="1"/>
+        <TopLine Value="1"/>
+        <UsageCount Value="10"/>
+      </Unit2>
+    </Units>
+    <JumpHistory Count="8" HistoryIndex="7">
+      <Position1>
+        <Filename Value="ResourceExtractor.pas"/>
+        <Caret Line="144" Column="23" TopLine="104"/>
+      </Position1>
+      <Position2>
+        <Filename Value="ResourceExtractor.pas"/>
+        <Caret Line="120" Column="1" TopLine="99"/>
+      </Position2>
+      <Position3>
+        <Filename Value="ResourceExtractor.pas"/>
+        <Caret Line="140" Column="25" TopLine="105"/>
+      </Position3>
+      <Position4>
+        <Filename Value="ResourceExtractor.pas"/>
+        <Caret Line="146" Column="32" TopLine="103"/>
+      </Position4>
+      <Position5>
+        <Filename Value="ResourceExtractor.pas"/>
+        <Caret Line="139" Column="27" TopLine="105"/>
+      </Position5>
+      <Position6>
+        <Filename Value="ResourceExtractor.pas"/>
+        <Caret Line="140" Column="8" TopLine="105"/>
+      </Position6>
+      <Position7>
+        <Filename Value="ResourceExtractor.pas"/>
+        <Caret Line="139" Column="27" TopLine="106"/>
+      </Position7>
+      <Position8>
+        <Filename Value="ResourceExtractor.pas"/>
+        <Caret Line="144" Column="7" TopLine="106"/>
+      </Position8>
+    </JumpHistory>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="5"/>
+    <SearchPaths>
+      <SrcPath Value="../../Game/Code/"/>
+    </SearchPaths>
+    <CodeGeneration>
+      <Generate Value="Faster"/>
+    </CodeGeneration>
+    <Other>
+      <CompilerPath Value="$(CompPath)"/>
+    </Other>
+  </CompilerOptions>
+</CONFIG>
diff --git a/tools/ResourceExtractor/ResourceExtractor.pas b/tools/ResourceExtractor/ResourceExtractor.pas
new file mode 100644
index 00000000..aa9cc3bc
--- /dev/null
+++ b/tools/ResourceExtractor/ResourceExtractor.pas
@@ -0,0 +1,152 @@
+program ResourceExtractor;
+
+{$ifdef FPC}
+  {$mode delphi}{$H+}
+{$endif}
+
+uses
+  Classes,
+  SysUtils,
+  StrUtils;
+  
+
+var
+  ResCount: integer;
+  OutStream: TStringList;
+
+
+procedure Init();
+begin
+  OutStream := TStringList.Create();
+
+  OutStream.Add('const');
+  // placeholder for array-header (will be filled on file-saving)
+  OutStream.Add('');
+end;
+
+procedure SaveToFile(const OutFileName: string);
+begin
+  // add array-header
+  OutStream[1] := '  resources: array[0..'+IntToStr(ResCount-1)+', 0..2] of string = (';
+  // add trailer
+  OutStream.Add('  );');
+
+  // save file
+  try
+    OutStream.SaveToFile(OutFileName);
+  except
+    OutStream.Free();
+    raise Exception.Create('Could not save to file: "' + OutFileName + '"');
+  end;
+
+  OutStream.Free();
+end;
+
+function AddResource(Fields: TStringList; const RCFileDir, ResDir: string): boolean;
+var
+  ResName, ResType, ResFile: string;
+begin
+  if (Fields.Count < 3) or
+     (AnsiStartsStr('//', Fields[0])) or
+     (Length(Fields[2]) < 3) then
+  begin
+    Result := false;
+    Exit;
+  end;
+
+  // add a trailing comma to the last line
+  if (ResCount > 0) then
+    OutStream[OutStream.Count-1] := OutStream[OutStream.Count-1] + ',';
+
+  ResName := Fields[0];
+  ResType := Fields[1];
+  ResFile := Fields[2];
+  
+  Writeln('ADD:  [' + ResType + ':' + ResName + ' = ' +ResFile + ']');
+
+  // quote fields
+  ResName := AnsiQuotedStr(ResName, '''')+',';
+  ResType := AnsiQuotedStr(ResType, '''')+',';
+  // strip surrounding quotes of filename
+  ResFile := AnsiMidStr(ResFile, 2, Length(Fields[2])-2);
+  // now translate the resource filename (relative to the RC-file) to be relative to the resource-dir
+  // 1st step: get absolute path of the resource
+  ResFile := ExpandFileName(RCFileDir + ResFile);
+  // 2nd step: get path of the resource relative to the resource-dir
+  // Note: both paths must be absolute and the base-path must have a trailing '/' or '\'
+  ResFile := ExtractRelativepath(ResDir, ResFile);
+  // 3rd step: ... and quote
+  ResFile := AnsiQuotedStr(ResFile, '''');
+
+  // compose line
+  OutStream.Add(Format('    (%-20S%-8S%S)', [ResName, ResType, ResFile]));
+
+  Inc(ResCount);
+  
+  Result := true;
+end;
+
+procedure ExtractResources(const InFileName, ResDir: string);
+var
+  Fields: TStringList;
+  LineIndex: integer;
+  Lines: TStringList;
+  RCFileDirAbs, ResDirAbs: string;
+begin
+  // get absolute paths
+  RCFileDirAbs := ExtractFilePath(ExpandFileName(InFileName));
+  ResDirAbs := ExpandFileName(ResDir) + '/';
+
+  Lines := TStringList.Create();
+  try
+    Lines.LoadFromFile(InFileName);
+  except
+    raise Exception.Create('Failed to open file: "' + InFileName + '"');
+  end;
+
+  Fields := TStringList.Create();
+  for LineIndex := 0 to Lines.Count-1 do
+  begin
+    Fields.Clear();
+    // split line into [Name, Type, File]
+    ExtractStrings([' ', #9], [], PChar(Lines[LineIndex]), Fields);
+    if (not AddResource(Fields, RCFileDirAbs, ResDirAbs)) then
+      Writeln( 'SKIP: "'+Lines[LineIndex]+'"');
+  end;
+
+  Lines.Free();
+  Fields.Free();
+end;
+
+var
+  ProgName: string;
+begin
+  if (ParamCount <> 3) then
+  begin
+    ProgName := ExtractFileName(ParamStr(0));
+    WriteLn('Usage: ' + ProgName + ' RC-File Resource-Dir Output-File');
+    Exit;
+  end;
+
+  WriteLn('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
+  WriteLn('Converting "' + ParamStr(1) + '" to "' + ParamStr(3) + '"');
+  WriteLn('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
+
+  try
+    Init();
+    ExtractResources(ParamStr(1), ParamStr(2));
+    SaveToFile(ParamStr(3));
+  except on E:Exception do
+  begin
+    WriteLn('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
+    WriteLn('Conversion failed: ' + E.Message + '!');
+    WriteLn('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
+    Exit;
+  end;
+  end;
+
+  WriteLn('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<');
+  WriteLn('Conversion finished!');
+  WriteLn('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<');
+end.
+
-- 
cgit v1.2.3