diff --git a/build/premake/extern_libs4.lua b/build/premake/extern_libs4.lua
index c27da08654..b4d9e28101 100644
--- a/build/premake/extern_libs4.lua
+++ b/build/premake/extern_libs4.lua
@@ -249,23 +249,6 @@ extern_lib_defs = {
})
end,
},
- devil = {
- compile_settings = function()
- if os.is("windows") then
- add_default_include_paths("devil")
- end
- end,
- link_settings = function()
- -- On Windows, it uses #pragma comment(lib ...) to link the library,
- -- so we only need to include the library-search-path
- if os.is("windows") then
- add_default_lib_paths("devil")
- end
- add_default_links({
- unix_names = { "IL", "ILU" },
- })
- end,
- },
enet = {
compile_settings = function()
if not _OPTIONS["with-system-enet"] then
@@ -565,23 +548,6 @@ extern_lib_defs = {
})
end,
},
- xerces = {
- compile_settings = function()
- if os.is("windows") then
- add_default_include_paths("xerces")
- end
- end,
- link_settings = function()
- if os.is("windows") then
- add_default_lib_paths("xerces")
- end
- add_default_links({
- win_names = { "xerces-c_2" },
- unix_names = { "xerces-c" },
- no_delayload = 1,
- })
- end,
- },
zlib = {
compile_settings = function()
if os.is("windows") then
diff --git a/build/premake/premake4.lua b/build/premake/premake4.lua
index 4837e14f77..5c083e6583 100644
--- a/build/premake/premake4.lua
+++ b/build/premake/premake4.lua
@@ -1,7 +1,6 @@
newoption { trigger = "atlas", description = "Include Atlas scenario editor projects" }
newoption { trigger = "collada", description = "Include COLLADA projects (requires FCollada library)" }
newoption { trigger = "coverage", description = "Enable code coverage data collection (GCC only)" }
-newoption { trigger = "aoe3ed", description = "Include AoE3Ed" }
newoption { trigger = "icc", description = "Use Intel C++ Compiler (Linux only; should use either \"--cc icc\" or --without-pch too, and then set CXX=icpc before calling make)" }
newoption { trigger = "outpath", description = "Location for generated project files" }
newoption { trigger = "without-tests", description = "Disable generation of test projects" }
@@ -730,10 +729,6 @@ function setup_atlas_project(project_name, target_type, rel_source_dirs, rel_inc
project_add_contents(source_root, rel_source_dirs, rel_include_dirs, extra_params)
project_add_extern_libs(extern_libs, target_type)
- if _OPTIONS["aoe3ed"] then
- defines { "USE_AOE3ED" }
- end
-
-- Platform Specifics
if os.is("windows") then
defines { "_UNICODE" }
@@ -812,12 +807,6 @@ function setup_atlas_projects()
"AtlasObject",
"AtlasScript",
}
- if _OPTIONS["aoe3ed"] then
- table.insert(atlas_src, "ArchiveViewer")
- table.insert(atlas_src, "FileConverter")
- table.insert(atlas_extra_links, "DatafileIO")
- table.insert(atlas_extra_links, "xerces-c")
- end
atlas_extern_libs = {
"boost",
@@ -830,9 +819,6 @@ function setup_atlas_projects()
"x11",
"zlib",
}
- if _OPTIONS["aoe3ed"] then
- table.insert(atlas_extern_libs, "devil")
- end
setup_atlas_project("AtlasUI", "SharedLib", atlas_src,
{ -- include
@@ -847,25 +833,6 @@ function setup_atlas_projects()
extra_links = atlas_extra_links,
extra_files = { "Misc/atlas.rc" }
})
-
- if _OPTIONS["aoe3ed"] then
- setup_atlas_project("DatafileIO", "StaticLib",
- { -- src
- ".",
- "BAR",
- "DDT",
- "SCN",
- "Stream",
- "XMB"
- },{ -- include
- },{ -- extern_libs
- "devil",
- "xerces",
- "zlib"
- },{ -- extra_params
- })
- end
-
end
@@ -899,9 +866,6 @@ function setup_atlas_frontend_project (project_name)
project_add_manifest()
else -- Non-Windows, = Unix
- if _OPTIONS["aoe3ed"] then
- links { "DatafileIO" }
- end
links { "AtlasObject" }
end
@@ -911,10 +875,6 @@ end
function setup_atlas_frontends()
setup_atlas_frontend_project("ActorEditor")
- if _OPTIONS["aoe3ed"] then
- setup_atlas_frontend_project("ArchiveViewer")
- setup_atlas_frontend_project("FileConverter")
- end
end
diff --git a/source/tools/atlas/AtlasFrontends/ArchiveViewer.cpp b/source/tools/atlas/AtlasFrontends/ArchiveViewer.cpp
deleted file mode 100644
index 7262a86995..0000000000
--- a/source/tools/atlas/AtlasFrontends/ArchiveViewer.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#ifdef _WIN32
-
-# define WIN32_LEAN_AND_MEAN
-# include
-
-// Use WinXP-style controls
-# if _MSC_VER >= 1400 // (can't be bothered to implement this for VC7.1...)
-# pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='6595b64144ccf1df'\"")
-# endif
-
-# define ATLASDLLIMPEXP extern "C" __declspec(dllimport)
-#else
-# define ATLASDLLIMPEXP extern "C"
-#endif
-
-#include "AtlasUI/Misc/DLLInterface.h"
-
-#ifdef _WIN32
-int APIENTRY wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int)
-#else
-int main()
-#endif
-{
- Atlas_StartWindow(L"ArchiveViewer");
- return 0;
-}
diff --git a/source/tools/atlas/AtlasFrontends/ArchiveViewer.rc b/source/tools/atlas/AtlasFrontends/ArchiveViewer.rc
deleted file mode 100644
index f8dc7e5766..0000000000
--- a/source/tools/atlas/AtlasFrontends/ArchiveViewer.rc
+++ /dev/null
@@ -1 +0,0 @@
-IDI_ICON1 ICON "..\\AtlasUI\\Misc\\Graphics\\ArchiveViewer.ico"
diff --git a/source/tools/atlas/AtlasFrontends/FileConverter.cpp b/source/tools/atlas/AtlasFrontends/FileConverter.cpp
deleted file mode 100644
index 479f6455e4..0000000000
--- a/source/tools/atlas/AtlasFrontends/FileConverter.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#ifdef _WIN32
-
-# define WIN32_LEAN_AND_MEAN
-# include
-
-// Use WinXP-style controls
-# if _MSC_VER >= 1400 // (can't be bothered to implement this for VC7.1...)
-# pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='6595b64144ccf1df'\"")
-# endif
-
-# define ATLASDLLIMPEXP extern "C" __declspec(dllimport)
-#else
-# define ATLASDLLIMPEXP extern "C"
-#endif
-
-#include "AtlasUI/Misc/DLLInterface.h"
-
-#ifdef _WIN32
-int APIENTRY wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int)
-#else
-int main()
-#endif
-{
- Atlas_StartWindow(L"FileConverter");
- return 0;
-}
diff --git a/source/tools/atlas/AtlasFrontends/FileConverter.rc b/source/tools/atlas/AtlasFrontends/FileConverter.rc
deleted file mode 100644
index 9876c06208..0000000000
--- a/source/tools/atlas/AtlasFrontends/FileConverter.rc
+++ /dev/null
@@ -1 +0,0 @@
-IDI_ICON1 ICON "..\\AtlasUI\\Misc\\Graphics\\FileConverter.ico"
diff --git a/source/tools/atlas/AtlasFrontends/generate.pl b/source/tools/atlas/AtlasFrontends/generate.pl
index 5bd1a70a78..611ac30de2 100644
--- a/source/tools/atlas/AtlasFrontends/generate.pl
+++ b/source/tools/atlas/AtlasFrontends/generate.pl
@@ -8,15 +8,6 @@ my @progs = (
PROJECT_NAME => "ActorEditor",
WINDOW_NAME => "ActorEditor",
},
- {
- PROJECT_NAME => "FileConverter",
- WINDOW_NAME => "FileConverter",
- },
- {
- PROJECT_NAME => "ArchiveViewer",
- WINDOW_NAME => "ArchiveViewer",
- },
-
);
for my $p (@progs) {
diff --git a/source/tools/atlas/AtlasUI/ArchiveViewer/ArchiveViewer.cpp b/source/tools/atlas/AtlasUI/ArchiveViewer/ArchiveViewer.cpp
deleted file mode 100644
index 81aa4d5c1f..0000000000
--- a/source/tools/atlas/AtlasUI/ArchiveViewer/ArchiveViewer.cpp
+++ /dev/null
@@ -1,652 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "ArchiveViewer.h"
-
-#include "Misc/Version.h"
-
-#include
-#include
-
-#include "DatafileIO/BAR/BAR.h"
-#include "DatafileIO/Stream/Stream.h"
-#include "DatafileIO/Stream/wx.h"
-using namespace DatafileIO;
-
-#include "wx/dnd.h"
-#include "wx/confbase.h"
-#include "wx/wfstream.h"
-#include "wx/tooltip.h"
-#include "wx/progdlg.h"
-#include "wx/regex.h"
-#ifdef __WXMSW__
-# include "wx/msw/registry.h"
-#endif
-
-// Possible TODO: Remove duplication of AtlasWindow code
-
-enum {
- ID_ExtractSelected,
- ID_ExtractAll,
- ID_EnablePreview,
- ID_About
-};
-
-BEGIN_EVENT_TABLE(ArchiveViewer, wxFrame)
- EVT_MENU(wxID_OPEN, ArchiveViewer::OnOpen)
- EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, ArchiveViewer::OnMRUFile)
- EVT_MENU(wxID_EXIT, ArchiveViewer::OnQuit)
- EVT_MENU(ID_ExtractSelected, ArchiveViewer::OnExtractSelected)
- EVT_MENU(ID_ExtractAll, ArchiveViewer::OnExtractAll)
- EVT_MENU(ID_EnablePreview, ArchiveViewer::OnEnablePreview)
- EVT_MENU(ID_About, ArchiveViewer::OnAbout)
- EVT_CLOSE(ArchiveViewer::OnClose)
-END_EVENT_TABLE()
-
-//////////////////////////////////////////////////////////////////////////
-
-
-class FilterTextCtrl : public wxTextCtrl
-{
-public:
- FilterTextCtrl(wxWindow* parent, ArchiveViewer* archViewWin, const wxSize& size)
- : wxTextCtrl(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, size),
- m_archViewWin(archViewWin) {}
-private:
- void OnChange(wxCommandEvent& WXUNUSED(event))
- {
- m_archViewWin->SetFilter(GetValue());
- }
- ArchiveViewer* m_archViewWin;
- DECLARE_EVENT_TABLE();
-};
-BEGIN_EVENT_TABLE(FilterTextCtrl, wxTextCtrl)
- EVT_TEXT(wxID_ANY, FilterTextCtrl::OnChange)
-END_EVENT_TABLE()
-
-class FileListCtrl : public wxListCtrl
-{
-public:
- FileListCtrl(wxWindow* parent, ArchiveViewer* archViewWin)
- : wxListCtrl(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT),
- m_archViewWin(archViewWin) {}
- void OnSelect(wxListEvent& event)
- {
- m_archViewWin->UpdatePreview(event.GetIndex());
- }
-private:
- ArchiveViewer* m_archViewWin;
- DECLARE_EVENT_TABLE();
-};
-BEGIN_EVENT_TABLE(FileListCtrl, wxListCtrl)
- EVT_LIST_ITEM_SELECTED(wxID_ANY, FileListCtrl::OnSelect)
-END_EVENT_TABLE()
-
-//////////////////////////////////////////////////////////////////////////
-
-// Allow drag-and-drop of files onto the window, as a convenient way of opening them
-//class DropTarget : public wxFileDropTarget
-//{
-//public:
-// DropTarget(ColourTesterImageCtrl* imgctrl)
-// : m_ImageCtrl(imgctrl)
-// {}
-//
-// bool OnDropFiles(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), const wxArrayString& filenames)
-// {
-// if (filenames.GetCount() >= 1)
-// m_ImageCtrl->SetImageFile(filenames[0]);
-// return true;
-// }
-//private:
-// ColourTesterImageCtrl* m_ImageCtrl;
-//};
-
-
-ArchiveViewer::ArchiveViewer(wxWindow* parent)
-: wxFrame(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(600, 371))
-, m_FileHistory(_T("Archive Viewer"))
-, m_WindowTitle(wxString::Format(_("%s - Archive Viewer"), g_ProgramNameVersion.c_str()))
-, m_BARStream(NULL), m_BARReader(NULL), m_PreviewEnabled(false)
-{
- SetIcon(wxIcon(_T("ICON_ArchiveViewer")));
-
- wxToolTip::Enable(true);
-
- wxMenuBar* menuBar = new wxMenuBar;
- SetMenuBar(menuBar);
-
- wxMenu *menuFile = new wxMenu;
- menuBar->Append(menuFile, _("&File"));
- {
- menuFile->Append(wxID_OPEN, _("&Open..."));
- menuFile->AppendSeparator();//-----------
- menuFile->Append(wxID_EXIT, _("E&xit"));
- m_FileHistory.UseMenu(menuFile);//-------
- m_FileHistory.AddFilesToMenu();
- }
-
- wxMenu *menuView = new wxMenu;
- menuBar->Append(menuView, _("&View"));
- {
- menuView->AppendCheckItem(ID_EnablePreview, _("&Preview"));
- }
-
- wxMenu *menuExtract = new wxMenu;
- menuBar->Append(menuExtract, _("&Extract"));
- {
- menuExtract->Append(ID_ExtractAll, _("&All files..."));
- menuExtract->Append(ID_ExtractSelected, _("&Selected..."));
- }
-
- wxMenu *menuHelp = new wxMenu;
- menuBar->Append(menuHelp, _("&Help"));
- {
- menuHelp->Append(ID_About, _("&About"));
- }
-
-
- m_FileHistory.Load(*wxConfigBase::Get());
-
-
-
- m_Splitter = new SnapSplitterWindow(this, wxSP_NOBORDER | wxSP_3DSASH);
-
- wxPanel* leftPanel = new wxPanel(m_Splitter);
-
- //////////////////////////////////////////////////////////////////////////
- // Set up sizers:
-
- wxBoxSizer* vertSizer = new wxBoxSizer(wxVERTICAL);
- leftPanel->SetSizer(vertSizer);
-
- wxBoxSizer* filterSizer = new wxBoxSizer(wxHORIZONTAL);
-
- //////////////////////////////////////////////////////////////////////////
- // Add things to sizers:
-
- m_FileListCtrl = new FileListCtrl(leftPanel, this);
- m_FileListCtrl->InsertColumn(0, _("Filename"), wxLIST_FORMAT_LEFT, 300);
- m_FileListCtrl->InsertColumn(1, _("File size (bytes)"), wxLIST_FORMAT_RIGHT, 100);
- m_FileListCtrl->InsertColumn(2, _("Last modified date"), wxLIST_FORMAT_LEFT, 150);
- vertSizer->Add(m_FileListCtrl, wxSizerFlags().Expand().Proportion(1).Border(wxALL, 5));
-
- vertSizer->Add(filterSizer,
- wxSizerFlags().Expand().Border(wxLEFT|wxRIGHT|wxBOTTOM, 5));
-
-
- m_PreviewWindow = new FilePreviewer(m_Splitter);
- m_PreviewWindow->Hide();
-
- m_Splitter->Initialize(leftPanel);
-
- filterSizer->Add(new wxStaticText(leftPanel, wxID_ANY, _("&Search for file:")),
- wxSizerFlags().Centre().Border(wxALL, 5));
-
- FilterTextCtrl* filterTextCtrl = new FilterTextCtrl(leftPanel, this, wxSize(150, -1));
- filterTextCtrl->SetToolTip(_("You may use * to match any sequence characters, and ? to match a single character"));
- filterSizer->Add(filterTextCtrl, wxSizerFlags().Border(wxALL, 5));
-
- //////////////////////////////////////////////////////////////////////////
-
- SetCurrentFilename();
-}
-
-void ArchiveViewer::OnAbout(wxCommandEvent& WXUNUSED(event))
-{
- wxMessageBox(wxString::Format(_("%s - created by Philip Taylor (philip@wildfiregames.com / philip@zaynar.demon.co.uk)"), g_ProgramNameVersion.c_str()),
- _("About"), wxOK|wxCENTRE|wxICON_INFORMATION);
-}
-
-ArchiveViewer::~ArchiveViewer()
-{
- delete m_BARStream;
- delete m_BARReader;
-}
-
-void ArchiveViewer::OnClose(wxCloseEvent& event)
-{
- event.Skip();
- m_FileHistory.Save(*wxConfigBase::Get());
-}
-
-//struct compare_bar {
-// bool operator()(const BAREntry& x, const BAREntry& y) { return (x.filename < y.filename); }
-//};
-
-void ArchiveViewer::RedrawFileList(bool keepSelection)
-{
- if (!m_BARReader || !m_BARStream)
- // No BAR file loaded
- return;
-
- std::vector filesSelected;
- filesSelected.resize(m_CachedFileData.size(), false);
-
- // If desired, remember a list of selected and focussed items
- int focussed = -1;
- if (keepSelection)
- {
- // Iterate through selected items
- long item = m_FileListCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
- while (item != -1)
- {
- filesSelected[ m_FileListCtrl->GetItemData(item) ] = true;
- item = m_FileListCtrl->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
- }
-
- // Remember single focussed item
- item = m_FileListCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED);
- if (item != -1)
- focussed = m_FileListCtrl->GetItemData(item);
- }
-
- wxString filter;
- enum { NONE, SUBSTRING, WILDCARD } filterType = NONE; // attempt to use most efficient matching system
- if (m_Filter.Len())
- {
- if (m_Filter.Contains(_T("*")) || m_Filter.Contains(_T("?")))
- {
- filterType = WILDCARD;
- filter = _T("*") + m_Filter.Lower() + _T("*"); // match any substring, and case insensitive
- }
- else
- {
- filterType = SUBSTRING;
- filter = m_Filter.Lower();
- }
- }
-
- m_FileListCtrl->Freeze();
- m_FileListCtrl->DeleteAllItems();
-
- for (size_t i = 0; i < m_CachedFileData.size(); ++i)
- {
- if ( (filterType == SUBSTRING && !m_CachedFileData[i].NameLower.Contains(filter))
- || (filterType == WILDCARD && !m_CachedFileData[i].NameLower.Matches(filter)))
- continue;
-
- wxListItem info;
- info.SetText(m_CachedFileData[i].Name);
- info.SetData((long)i);
- info.SetId((long)i);
- if (keepSelection)
- {
- int state = (filesSelected[i] ? wxLIST_STATE_SELECTED : 0) | (focussed == (int)i ? wxLIST_STATE_FOCUSED : 0);
- if (state)
- {
- info.SetState(state);
- info.SetStateMask(wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED);
- }
- }
- long idx = m_FileListCtrl->InsertItem(info);
- wxASSERT(idx != -1);
- m_FileListCtrl->SetItem(idx, 1, m_CachedFileData[i].Size);
- m_FileListCtrl->SetItem(idx, 2, m_CachedFileData[i].Date);
- }
-
- m_FileListCtrl->Thaw();
-}
-
-
-void ArchiveViewer::UpdateFileList()
-{
- if (!m_BARReader || !m_BARStream)
- // No BAR file loaded
- return;
-
- wxRegEx commas (_T("(\\d+)(\\d{3})"), wxRE_ADVANCED); // for comma-ising filesizes
-
- // Get list of all files
- // std::vector files = m_BARReader->GetFileList(); // non-constref copy, so we can sort it
- // std::sort(files.begin(), files.end(), compare_bar());
- const std::vector& files = m_BARReader->GetFileList();
-
- m_CachedFileData.clear();
- m_CachedFileData.resize(files.size());
-
- for (size_t i = 0; i < files.size(); ++i)
- {
- m_CachedFileData[i].Name = wxString( utf16tow(files[i].filename).c_str() );
- m_CachedFileData[i].NameLower = m_CachedFileData[i].Name.Lower();
-
- m_CachedFileData[i].Size = wxString::Format(_T("%d"), files[i].filesize);
- while (commas.Replace(&m_CachedFileData[i].Size, _T("\\1,\\2"))) ;
-
- if (files[i].modified.year == 0)
- m_CachedFileData[i].Date = _("Unknown");
- else
- {
- wxDateTime date (files[i].modified.day, (wxDateTime::Month)(wxDateTime::Jan + files[i].modified.month-1), files[i].modified.year,
- files[i].modified.hour, files[i].modified.minute, files[i].modified.second, files[i].modified.msecond);
- m_CachedFileData[i].Date = wxString::Format(
- _T("%s %s.%03d"),
- date.FormatISODate().c_str(),
- date.FormatISOTime().c_str(),
- date.GetMillisecond());
- }
- }
-}
-
-void ArchiveViewer::OpenFile(const wxString& filename)
-{
- wxFFileInputStream* fileStream = new wxFFileInputStream(filename);
- if (! fileStream->Ok())
- {
- wxLogError(_("Failed to open file"));
- delete fileStream;
- return;
- }
-
- SeekableInputStream* stream = new SeekableInputStreamFromWx(fileStream);
- BARReader* reader = new BARReader(*stream);
- if (! reader->Initialise())
- {
- wxLogError(_("Failed to read BAR file"));
- delete reader;
- delete stream;
- return;
- }
-
- // Delete old data, replace with new data
- delete m_BARStream;
- delete m_BARReader;
- m_BARStream = stream;
- m_BARReader = reader;
-
- UpdateFileList();
- RedrawFileList(false);
-
- m_FileHistory.AddFileToHistory(filename);
- SetCurrentFilename(filename);
-}
-
-
-
-
-
-void ArchiveViewer::OnExtractSelected(wxCommandEvent& WXUNUSED(event))
-{
- ExtractFiles(true);
-}
-
-void ArchiveViewer::OnExtractAll(wxCommandEvent& WXUNUSED(event))
-{
- ExtractFiles(false);
-}
-
-void ArchiveViewer::ExtractFiles(bool onlySelected)
-{
- long item = -1;
-
- if (onlySelected)
- {
- // Find the first selected item, and make sure there is actually a selection
- item = m_FileListCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-
- if (item == -1)
- {
- wxMessageBox(_("Please select one or more files to extract."), _("No files selected"), wxICON_INFORMATION);
- return;
- }
- }
-
- // Work out where to extract the files to:
-
- // Assume same as last place, else default (from registry), else cwd
- wxString dir = m_LastExtractDir;
- if (! dir.Len())
- {
- dir = GetDefaultOpenDirectory();
- if (! dir.Len())
- dir = wxFileName::GetCwd();
- }
-
- // Let user choose final location
- wxDirDialog dlg(this, wxDirSelectorPromptStr, dir);
- if (dlg.ShowModal() != wxID_OK)
- return;
-
- // Remember the selection
- dir = dlg.GetPath();
- dir += wxFileName::GetPathSeparator();
- m_LastExtractDir = dir;
- wxFileName rootDir (dir);
-
-
- // Construct a list of items to extract:
- const std::vector& files = m_BARReader->GetFileList();
- std::vector selection;
- if (onlySelected)
- {
- while (item != -1)
- {
- selection.push_back(m_FileListCtrl->GetItemData(item)); // item was set at top of function
- item = m_FileListCtrl->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
- }
- }
- else
- {
- // Extract all files
- for (int i = 0; i < (int)files.size(); ++i)
- selection.push_back(i);
- }
-
- bool aborted = false;
-
- {
- // Create the required directory structure:
-
- // Extract the list of all directories:
- std::set dirs;
- for (size_t sel = 0; sel < selection.size(); ++sel)
- {
- const BAREntry& file = files[selection[sel]];
- wxString filename = wxString( utf16tow(file.filename).c_str() );
- int lastSlash = filename.Find(_T('\\'), true);
- if (lastSlash != -1)
- dirs.insert(filename.Mid(0, lastSlash+1).wc_str());
- }
-
- // Construct the directory tree:
- for (std::set::iterator it = dirs.begin(); it != dirs.end(); ++it)
- {
- // Append name-in-archive to target root directory, one dir
- // at a time, calling mkdir at each step if necessary
- wxFileName fullFilePath (rootDir);
- wxFileName filePath (it->c_str(), wxPATH_WIN);
- const wxArrayString& filePathDirs = filePath.GetDirs();
- for (size_t i = 0; i < filePathDirs.Count(); ++i)
- {
- fullFilePath.AppendDir(filePathDirs[i]);
- if (! wxDirExists(fullFilePath.GetPath()))
- wxMkdir(fullFilePath.GetPath());
- }
- }
-
- // Create progress display
- wxProgressDialog progress (_("Extracting files"), _("Please wait"), (int)selection.size(), this,
- wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME | wxPD_SMOOTH);
-
- // Repeat for each selection file
- for (size_t sel = 0; sel < selection.size(); ++sel)
- {
- const BAREntry& file = files[selection[sel]];
-
- if (! progress.Update((int)sel, wxString::Format(_("Extracting %s"), file.filename.c_str())))
- {
- aborted = true;
- break;
- }
-
- // Append name-in-archive to target root directory, one dir
- // at a time, calling mkdir at each step if necessary
- wxFileName filePath (wxString( utf16tow(file.filename).c_str() ), wxPATH_WIN);
- filePath.MakeAbsolute(rootDir.GetPath());
-
- // Output to disk
- wxFFileOutputStream outStream(filePath.GetFullPath());
- if (! outStream.Ok())
- wxLogError(wxString::Format(_("Error opening output file %s"), filePath.GetFullPath().c_str()));
- else
- {
- SeekableOutputStreamFromWx str (outStream);
- m_BARReader->TransferFile(file, str);
- outStream.Close();
-
- // Set the file's timestamps to match the one specified in the archive
- if (file.modified.year != 0)
- {
- wxDateTime date (file.modified.day, (wxDateTime::Month)(wxDateTime::Jan + file.modified.month-1), file.modified.year,
- file.modified.hour, file.modified.minute, file.modified.second, file.modified.msecond);
- filePath.SetTimes(NULL, &date, &date);
- }
- }
- }
- }
-
- if (aborted)
- wxMessageBox(_("Extraction aborted."), _("Stopped"));
- else
- wxMessageBox(_("Extraction complete."), _("Finished"));
-}
-
-
-void ArchiveViewer::OnEnablePreview(wxCommandEvent& event)
-{
- m_PreviewEnabled = event.IsChecked();
-
- if (m_PreviewEnabled)
- {
- // Make sure the window's not far too small
- if (GetSize().GetWidth() < 700)
- SetSize(-1, -1, 900, -1); // nobody is still using 800x600, are they?
-
- m_Splitter->SetDefaultSashPosition(600);
- m_Splitter->SplitVertically(m_Splitter->GetWindow1(), m_PreviewWindow);
- }
- else
- m_Splitter->Unsplit();
-
- UpdatePreview();
-}
-
-void ArchiveViewer::UpdatePreview(long item)
-{
- if (! m_PreviewEnabled)
- return;
-
- // If the user opens a large archive file, enables the preview, selects the
- // bottom file, and presses shift+home, it attempts to redraw the preview
- // for every single file in sequence. That takes forever; so provide a way
- // to abort the preview update.
- if (wxGetKeyState(WXK_ESCAPE))
- return;
-
- // If none is specified, preview the first selected item
- if (item == -1)
- item = m_FileListCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-
- if (item == -1) // none selected
- return;
-
- const BAREntry& file = m_BARReader->GetFileList()[ m_FileListCtrl->GetItemData(item) ];
- SeekableInputStream* str = m_BARReader->GetFile(file);
- m_PreviewWindow->PreviewFile(wxString(utf16tow(file.filename).c_str()), *str);
- delete str;
-}
-
-
-
-void ArchiveViewer::OnOpen(wxCommandEvent& WXUNUSED(event))
-{
- wxString path, name;
- if (GetCurrentFilename().IsOk())
- {
- path = GetCurrentFilename().GetPath();
- name = GetCurrentFilename().GetFullName();
- }
- else
- {
- path = GetDefaultOpenDirectory();
- }
-
- wxFileDialog dlg (this, _("Select archive file to open"), path, name, _("BAR files (*.bar)|*.bar|All files (*.*)|*.*"), wxOPEN);
-
- if (dlg.ShowModal() != wxID_OK)
- return;
-
- OpenFile(dlg.GetPath());
-}
-
-void ArchiveViewer::OnMRUFile(wxCommandEvent& event)
-{
- wxString file (m_FileHistory.GetHistoryFile(event.GetId() - wxID_FILE1));
- if (file.Len())
- OpenFile(file);
-}
-
-void ArchiveViewer::OnQuit(wxCommandEvent& WXUNUSED(event))
-{
- Close();
-}
-
-void ArchiveViewer::SetCurrentFilename(wxFileName filename)
-{
- m_CurrentFilename = filename;
-
- if (filename.IsOk())
- SetTitle(m_WindowTitle + _T(" - ") + filename.GetFullName());
- else
- SetTitle(m_WindowTitle);
-}
-
-wxString ArchiveViewer::GetDefaultOpenDirectory()
-{
-// TODO
-/*
- wxRegKey key (_T("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft Games\\Age of Empires 3\\1.0"));
- if (key.Exists())
- {
- wxString dir;
-
- // The path might be the default value under the AppPath key, or it
- // might be the AppPath value; so check both.
- wxRegKey subkey (key, _T("AppPath"));
- if (subkey.Exists())
- {
- if (subkey.QueryValue(_T(""), dir)) // default value
- return dir;
- }
- else
- {
- if (key.HasValue(_T("AppPath")) && key.QueryValue(_T("AppPath"), dir))
- return dir;
- }
- }
-*/
-
- return _T("");
-}
-
-void ArchiveViewer::SetFilter(const wxString& filter)
-{
- m_Filter = filter;
- RedrawFileList(true);
-}
diff --git a/source/tools/atlas/AtlasUI/ArchiveViewer/ArchiveViewer.h b/source/tools/atlas/AtlasUI/ArchiveViewer/ArchiveViewer.h
deleted file mode 100644
index 037938f422..0000000000
--- a/source/tools/atlas/AtlasUI/ArchiveViewer/ArchiveViewer.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "FileHistory/FileHistory.h"
-#include "SnapSplitterWindow/SnapSplitterWindow.h"
-#include "FilePreviewer.h"
-
-#include "wx/filename.h"
-#include "wx/listctrl.h"
-
-#include
-
-namespace DatafileIO
-{
- class BARReader;
- struct BAREntry;
- class SeekableInputStream;
-}
-
-class ArchiveViewer : public wxFrame
-{
-public:
- ArchiveViewer(wxWindow* parent);
- ~ArchiveViewer();
-
- void OnOpen(wxCommandEvent& event);
- void OnMRUFile(wxCommandEvent& event);
- void OnQuit(wxCommandEvent& event);
- void OnExtractSelected(wxCommandEvent& event);
- void OnExtractAll(wxCommandEvent& event);
- void OnEnablePreview(wxCommandEvent& event);
- void OnAbout(wxCommandEvent& event);
-
- void OnClose(wxCloseEvent& event);
-
- void SetFilter(const wxString& filter);
- void UpdatePreview(long index = -1);
-
-private:
- void OpenFile(const wxString& filename);
- void UpdateFileList(); // must be called after opening a new file
- void RedrawFileList(bool keepSelection);
-
- void ExtractFiles(bool onlySelected);
-
- void SetCurrentFilename(wxFileName filename = wxString());
- wxFileName GetCurrentFilename() { return m_CurrentFilename; }
-
- wxString GetDefaultOpenDirectory();
-
- wxFileName m_CurrentFilename;
- wxString m_WindowTitle;
-
- wxString m_Filter;
- bool m_PreviewEnabled;
- FilePreviewer* m_PreviewWindow;
- SnapSplitterWindow* m_Splitter;
-
- wxString m_LastExtractDir;
-
-// wxStatusBar* m_StatusBar;
-
- wxListCtrl* m_FileListCtrl;
- DatafileIO::SeekableInputStream* m_BARStream;
- DatafileIO::BARReader* m_BARReader;
-
- struct FileData {
- wxString NameLower; // for filtering
- wxString Name;
- wxString Size;
- wxString Date;
- };
- std::vector m_CachedFileData;
-
- FileHistory m_FileHistory;
-
- DECLARE_EVENT_TABLE();
-};
diff --git a/source/tools/atlas/AtlasUI/ArchiveViewer/FilePreviewer.cpp b/source/tools/atlas/AtlasUI/ArchiveViewer/FilePreviewer.cpp
deleted file mode 100644
index d713cd1e63..0000000000
--- a/source/tools/atlas/AtlasUI/ArchiveViewer/FilePreviewer.cpp
+++ /dev/null
@@ -1,259 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "FilePreviewer.h"
-
-#include "DatafileIO/XMB/XMB.h"
-#include "DatafileIO/DDT/DDT.h"
-
-#include "wx/sound.h"
-#include "wx/image.h"
-
-using namespace DatafileIO;
-
-class ImagePanel : public /*wxPanel*/wxScrolledWindow
-{
-public:
- ImagePanel(wxWindow* parent, const wxImage& img)
- : m_Bmp(img),
-// wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(img.GetWidth(), img.GetHeight()))
- wxScrolledWindow(parent)
- {
- SetScrollbars(1, 1, img.GetWidth(), img.GetHeight());
- }
-
- void OnPaint(wxPaintEvent& WXUNUSED(event))
- {
- wxPaintDC dc(this);
- dc.Clear();
- if (m_Bmp.Ok())
- {
- dc.DrawBitmap(m_Bmp, CalcScrolledPosition(wxPoint(0, 0)));
- }
- }
-
-private:
- wxBitmap m_Bmp;
- DECLARE_EVENT_TABLE();
-};
-
-BEGIN_EVENT_TABLE(ImagePanel, /*wxPanel*/wxScrolledWindow)
- EVT_PAINT(ImagePanel::OnPaint)
-END_EVENT_TABLE()
-
-
-//////////////////////////////////////////////////////////////////////////
-
-FilePreviewer::FilePreviewer(wxWindow* parent)
-: wxPanel(parent), m_ContentPanel(NULL)
-{
- m_MainSizer = new wxBoxSizer(wxVERTICAL);
- SetSizer(m_MainSizer);
-}
-
-enum FileType
-{
- UNKNOWN,
- XMB,
- XML,
- DDT,
- WAV,
- UNKNOWN_TEXT
-};
-
-void FilePreviewer::PreviewFile(const wxString& filename, SeekableInputStream& stream)
-{
- if (m_ContentPanel)
- {
- m_MainSizer->Detach(m_ContentPanel);
- m_ContentPanel->Destroy();
- }
-
- Freeze();
-
- m_ContentPanel = new wxPanel(this);
- m_MainSizer->Add(m_ContentPanel, wxSizerFlags().Expand().Proportion(1));
-
- wxSizer* sizer = new wxBoxSizer(wxVERTICAL);
- wxStaticText* fileInfo = new wxStaticText(m_ContentPanel, wxID_ANY, wxString::Format(_("Filename: %s"), filename.c_str()));
- sizer->Add(fileInfo, wxSizerFlags().Border(wxALL, 5));
- m_ContentPanel->SetSizer(sizer);
-
- FileType type = UNKNOWN;
-
- wxString extn;
- int dot = filename.Find(_T('.'), true);
- if (dot != -1)
- extn = filename.Mid(dot).Lower();
-
-#define X(x) extn==_T(x)
- if (X(".xmb"))
- type = XMB;
-
- else if (X(".xml") || X(".lgt") || X(".dtd") || X(".shp"))
- type = XML;
-
- else if (X(".ddt"))
- type = DDT;
-
- else if (X(".wav"))
- type = WAV;
-
- else if (X(".txt") || X(".xs") || X(".psh") || X(".vsh") || X(".hlsl") || X(".inc"))
- type = UNKNOWN_TEXT;
-#undef X
-
- wxString extraFileInfo;
-
- if (type == XMB)
- {
- DatafileIO::XMBFile* file = DatafileIO::XMBFile::LoadFromXMB(stream);
- std::wstring text = file->SaveAsXML();
- delete file;
-
- wxString wtext (text.c_str(), text.length());
- wtext = L"\n" + wtext;
-
- sizer->Add(new wxTextCtrl(m_ContentPanel, wxID_ANY, wtext, wxDefaultPosition, wxDefaultSize,
- wxTE_MULTILINE | wxTE_READONLY | wxHSCROLL | wxTE_RICH), // use RICH so we can display big files
- wxSizerFlags().Expand().Proportion(1).Border(wxALL, 5));
-
- extraFileInfo = _("Format: XMB");
- }
-
- else if (type == XML || type == UNKNOWN_TEXT)
- {
- void* buf;
- size_t bufSize;
- if (! stream.AcquireBuffer(buf, bufSize))
- {
- wxFAIL_MSG(_T("Buffer acquisition failed"));
- }
- else
- {
- // Assume UTF8, and convert to wxString
- wxString wtext ((char*)buf, wxConvUTF8, bufSize);
-
- sizer->Add(new wxTextCtrl(m_ContentPanel, wxID_ANY, wtext, wxDefaultPosition, wxDefaultSize,
- wxTE_MULTILINE | wxTE_READONLY | wxHSCROLL),
- wxSizerFlags().Expand().Proportion(1).Border(wxALL, 5));
-
- if (type == XML)
- extraFileInfo = _("Format: XML");
- else
- extraFileInfo = _("Format: unidentified text");
- }
- }
-
- else if (type == DDT)
- {
- DDTFile file(stream);
- if (! file.Read(DDTFile::DDT))
- {
- wxLogError(_("Failed to read DDT file"));
- }
- else
- {
- wxArrayString formatStrings;
- switch (file.m_Type_Usage) {
- case DDTFile::BUMP: formatStrings.Add(_("normal map")); break;
- case DDTFile::CUBE: formatStrings.Add(_("cube map")); break;
- }
- switch (file.m_Type_Alpha) {
- case DDTFile::NONE: formatStrings.Add(_("no alpha")); break;
-// case DDTFile::PLAYER: formatStrings.Add(_("player colour")); break;
-// case DDTFile::TRANS: formatStrings.Add(_("transparency")); break;
- case DDTFile::BLEND: formatStrings.Add(_("terrain blend")); break;
- }
- switch (file.m_Type_Format) {
- case DDTFile::BGRA: formatStrings.Add(_("32-bit BGRA")); break;
- case DDTFile::DXT1: formatStrings.Add(_("DXT1")); break;
- case DDTFile::GREY: formatStrings.Add(_("8-bit grey")); break;
- case DDTFile::DXT3: formatStrings.Add(_("DXT3")); break;
- case DDTFile::NORMSPEC: formatStrings.Add(_("specular+normal")); break;
- }
-
- wxString formatString;
- for (size_t i = 0; i < formatStrings.GetCount(); ++i)
- formatString += (i ? _T(", ") : _T("")) + formatStrings[i];
- if (! formatString.Len())
- formatString = _("unknown");
-
- extraFileInfo = wxString::Format(_("Format: DDT texture\nSubformat: %d %d %d (%s)"),
- file.m_Type_Usage, file.m_Type_Alpha, file.m_Type_Format, formatString.c_str());
-
- void* buffer;
- int width, height;
- if (! file.GetImageData(buffer, width, height, false))
- {
- extraFileInfo += _("\n(Unrecognised format - unable to display)");
- }
- else
- {
- sizer->Add(new ImagePanel(m_ContentPanel, wxImage(width, height, (unsigned char*)buffer)),
- wxSizerFlags().Expand().Proportion(1).Border(wxALL, 5));
- }
- }
- }
-
- else if (type == WAV)
- {
- void* buf;
- size_t bufSize;
- if (! stream.AcquireBuffer(buf, bufSize))
- {
- wxFAIL_MSG(_T("Buffer acquisition failed"));
- }
- else
- {
- // HACK: If we destroy the sound object before it's finished playing,
- // it deallocates the audio data and fails to play (or crashes).
- // (That's assuming we fix wxSound to not just leak the memory.)
- // So, just use a static object, and hope it stops playing before
- // the program is exited.
- // The wxSound-from memory constructor does not exist on OS X, so
- // just show a warning there.
-#ifdef __APPLE__
- wxFAIL_MSG(_T("WAV playback not available on Mac OS X"));
-#else
- static wxSound snd;
- snd.Stop();
- // HACK, FIXME, XXX: I'd like to call the wx people idiots for
- // having different API:s on different platforms, as well as for
- // having public non-API methods.
-#if __APPLE__
- snd.~wxSound();
- new (&snd) wxSound((int)bufSize, (const wxByte*)buf);
-#else
- snd.Create((int)bufSize, (const wxByte*)buf);
-#endif
- snd.Play();
-#endif
- stream.ReleaseBuffer(buf);
- }
-
- extraFileInfo = _("Format: WAV audio");
- }
-
- fileInfo->SetLabel(fileInfo->GetLabel() + _T("\n") + extraFileInfo);
-
- m_MainSizer->Layout();
-
- Thaw();
-}
diff --git a/source/tools/atlas/AtlasUI/ArchiveViewer/FilePreviewer.h b/source/tools/atlas/AtlasUI/ArchiveViewer/FilePreviewer.h
deleted file mode 100644
index ab73959510..0000000000
--- a/source/tools/atlas/AtlasUI/ArchiveViewer/FilePreviewer.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "DatafileIO/Stream/Stream.h"
-
-class FilePreviewer : public wxPanel
-{
-public:
- FilePreviewer(wxWindow* parent);
-
- // stream can be deleted by callers after this function returns
- void PreviewFile(const wxString& filename, DatafileIO::SeekableInputStream& stream);
-
-private:
- wxPanel* m_ContentPanel; // gets deleted and rebuilt when previewing a new file
- wxSizer* m_MainSizer;
-};
diff --git a/source/tools/atlas/AtlasUI/FileConverter/FileConverter.cpp b/source/tools/atlas/AtlasUI/FileConverter/FileConverter.cpp
deleted file mode 100644
index daf68c8f1d..0000000000
--- a/source/tools/atlas/AtlasUI/FileConverter/FileConverter.cpp
+++ /dev/null
@@ -1,367 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "FileConverter.h"
-
-#include "Misc/Version.h"
-
-#include "AtlasObject/AtlasObject.h"
-#include "DatafileIO/XMB/XMB.h"
-#include "DatafileIO/DDT/DDT.h"
-#include "DatafileIO/Stream/wx.h"
-#include "DatafileIO/Stream/Memory.h"
-
-#include "wx/wfstream.h"
-#include "wx/progdlg.h"
-#include "wx/config.h"
-#include "wx/regex.h"
-
-using namespace DatafileIO;
-
-//#define QUIET
-
-enum FileType { XMB, XML, DDT, TGA };
-
-const wxChar* xmlExtensions[] = {
- _T("amt"), _T("blueprint"), _T("d3dconfig"), _T("dmg"), _T("effect"), _T("impacteffect"),
- _T("lgt"), _T("multieffect"), _T("multips"), _T("multirs"),_T("multitechnique"),
- _T("multitss"), _T("multivs"), _T("particle"), _T("physics"), _T("ps"), _T("rs"),
- _T("tactics"), _T("technique"), _T("tss"), _T("vs"), _T("xml"),
- NULL };
-
-bool IsXMLExtension(const wxString& str)
-{
- const wxChar** e = xmlExtensions;
- while (*e)
- if (str == wxString(_T(".")) + *e++)
- return true;
- return false;
-}
-
-bool ConvertFiles(const wxArrayString& files, wxWindow* parent);
-
-bool ConvertFile(const wxString& sourceFilename, FileType sourceType,
- const wxString& targetFilename, FileType targetType,
- XMLReader* io);
-
-FileConverter::FileConverter(wxWindow* parent)
-: wxFrame(parent, wxID_ANY, wxString::Format(_("%s - File Converter"), g_ProgramNameVersion.c_str()))
-{
- SetIcon(wxIcon(_T("ICON_FileConverter")));
-
- m_Transient = true;
-
- bool succeeded = false;
- wxApp* app = wxTheApp;
- if (app->argc > 1)
- {
- wxArrayString files;
- for (int i = 1; i < app->argc; ++i)
- files.Add(app->argv[i]);
- succeeded = ConvertFiles(files, this);
- }
- else
- {
- wxConfigBase* cfg = wxConfigBase::Get(false);
- wxString defaultDir;
- if (cfg)
- cfg->Read(_T("File Converter/OpenDir"), &defaultDir);
-
- wxString extns = _("Recognised files");
- extns += _T(" (*.xmb, *.ddt, *.xml, *.tga)|*.xmb;*.ddt;*.xml;*.tga");
- // Add all the extra XML types
- const wxChar** e = xmlExtensions;
- while (*e)
- {
- extns += _T(";*.");
- extns += *e++;
- }
- extns += wxString(_T("|")) + _("All files") + _T(" (*.*)|*.*");
-
- wxFileDialog dlg (this, _("Select file(s) to convert"), defaultDir, _T(""),
- extns, wxOPEN|/*wxFILE_MUST_EXIST|*/wxMULTIPLE); // for some reason, it complains that files don't exist when they actually do...
- if (dlg.ShowModal() == wxID_OK)
- {
- wxArrayString files;
- dlg.GetPaths(files);
- succeeded = ConvertFiles(files, this);
-
- if (cfg)
- cfg->Write(_T("File Converter/OpenDir"), dlg.GetDirectory());
- }
- else
- {
- succeeded = false;
- }
- }
-
- wxLog::FlushActive(); // ensure errors are displayed before the "finished" message
-
-#ifndef QUIET
- if (succeeded)
- wxMessageBox(_("Conversion complete."), _("Finished"), wxOK|wxICON_INFORMATION);
-#endif
-
- Destroy();
-}
-
-bool FileConverter::Show(bool show)
-{
- if (m_Transient)
- return true;
- else
- return wxFrame::Show(show);
-}
-
-
-
-bool ConvertFiles(const wxArrayString& files, wxWindow* parent)
-{
- XMLReader io; // TODO: don't create this unless necessary, because Xerces is slow
-
- wxProgressDialog progress(_("Converting files"), _("Please wait"), (int)files.GetCount(), parent,
- wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME | wxPD_SMOOTH);
-
- for (size_t i = 0; i < files.GetCount(); ++i)
- {
- wxString sourceFilename = files[i];
- wxString targetFilename;
- FileType sourceType, targetType;
-
- if (! progress.Update((int)i, wxString::Format(_("Converting %s"), sourceFilename.c_str())))
- return false;
-
- wxString sourceExtn, sourceName;
- {
- int dot = sourceFilename.Find(_T('.'), true);
- if (dot == -1)
- {
- wxLogError(_("No file extension for %s - don't know how to convert"), sourceFilename.c_str());
- continue;
- }
- else
- {
- sourceExtn = sourceFilename.Mid(dot).Lower();
- sourceName = sourceFilename.Mid(0, dot); // no extension
- }
- }
-
- if (sourceExtn == _T(".xmb"))
- {
- sourceType = XMB;
- targetType = XML;
- // Ignore trailing .xmb
- targetFilename = sourceName;
- }
- else if (sourceExtn == _T(".ddt"))
- {
- sourceType = DDT;
- targetType = TGA; // TODO: allow BMP
- targetFilename = sourceName + _T(".tga");
- }
- else if (sourceExtn == _T(".tga"))
- {
- sourceType = TGA; // TODO: allow BMP
- targetType = DDT;
- targetFilename = sourceName + _T(".ddt");
- }
- else if (IsXMLExtension(sourceExtn))
- {
- sourceType = XML;
- targetType = XMB;
- // Add a trailing .xmb (in addition to the normal .xml/etc)
- targetFilename = sourceFilename + _T(".xmb");
- }
- else
- {
- wxLogError(_("Unknown file extension for %s - don't know how to convert"), sourceFilename.c_str());
- continue;
- }
-
-
-#ifndef QUIET
- // Warn about overwriting files
- if (wxFile::Exists(targetFilename))
- {
- int ret = wxMessageBox(wxString::Format(_("Output file already exists: %s\nOverwrite file?"), targetFilename.c_str()), _("Overwrite?"), wxYES_NO|wxCANCEL);
- if (ret == wxCANCEL) return false;
- else if (ret == wxNO) continue;
- else { /* carry on converting */ }
- }
-#endif
-
- // Do the actual conversion
- ConvertFile(sourceFilename, sourceType, targetFilename, targetType, &io);
- }
-
- return true;
-}
-
-bool ConvertFile(const wxString& sourceFilename, FileType sourceType,
- const wxString& targetFilename, FileType targetType,
- XMLReader* io)
-{
- // Open input file (in binary read mode)
- wxFFileInputStream file (sourceFilename);
- if (! file.Ok())
- {
- wxLogError(_("Failed to open input file %s"), sourceFilename.c_str());
- return false;
- }
- // Decompress input file if necessary (for any file type)
- //std::auto_ptr inStream (new Maybel33tInputStream(new SeekableInputStreamFromWx(file)));
- Maybel33tInputStream inStream (new SeekableInputStreamFromWx(file));
- if (! inStream.IsOk())
- {
- wxLogError(_("Failed to decompress input file %s"), sourceFilename.c_str());
- return false;
- }
-
- // Handle XMB<->XML conversions
- if (sourceType == XMB || sourceType == XML)
- {
- std::auto_ptr data (NULL);
-
- // Read data with the appropriate format
- if (sourceType == XML)
- {
-// if (! io) io = new XMLReader(); // TODO - see earlier comment
- data.reset(io->LoadFromXML(inStream));
- data->format = XMBFile::AOE3; // TODO: let users control this?
- }
- else if (sourceType == XMB)
- {
- data.reset(XMBFile::LoadFromXMB(inStream));
- }
-
- // Write data with the appropriate format
- if (targetType == XML)
- {
- std::wstring xml = data->SaveAsXML();
- wxFFileOutputStream out(targetFilename, _T("w")); // open in text mode
- if (! out.Ok())
- {
- wxLogError(_("Failed to open output file %s"), targetFilename.c_str());
- return false;
- }
-
- // Output with UTF-8 encoding
- xml = L"\n" + xml;
- wxCharBuffer buf = wxString(xml.c_str()).mb_str(wxConvUTF8);
- out.Write(buf.data(), strlen(buf.data()));
- }
- else if (targetType == XMB)
- {
- wxFFileOutputStream out (targetFilename, _T("wb"));
- if (! out.Ok())
- {
- wxLogError(_("Failed to open output file %s"), targetFilename.c_str());
- return false;
- }
-
- SeekableOutputStreamFromWx out2 (out);
- data->SaveAsXMB(out2);
- }
- }
-
- else if (sourceType == DDT)
- {
- DDTFile ddt(inStream);
- if (! ddt.Read(DDTFile::DDT))
- {
- wxLogError(_("Failed to read DDT file %s"), sourceFilename.c_str());
- return false;
- }
- // Stick some format-identifying data just before the extension
- // part of the filename:
- wxRegEx re (_T("(.*)\\."), wxRE_ADVANCED);
- wxString newFilename = targetFilename;
- re.ReplaceFirst(&newFilename,
- wxString::Format(_T("\\1.(%d,%d,%d,%d)."),
- ddt.m_Type_Usage, ddt.m_Type_Alpha, ddt.m_Type_Format, ddt.m_Type_Levels));
-
- wxFFileOutputStream out(newFilename, _T("wb"));
- if (! out.Ok())
- {
- wxLogError(_("Failed to open output file %s"), newFilename.c_str());
- return false;
- }
- SeekableOutputStreamFromWx out2 (out);
- ddt.SaveFile(out2, DDTFile::TGA);
- }
-
- else if (sourceType == TGA)
- {
- DDTFile ddt(inStream);
- if (! ddt.Read(DDTFile::TGA))
- {
- wxLogError(_("Failed to read TGA file %s"), sourceFilename.c_str());
- return false;
- }
- // Extract the format-identifying data from just before the extension
- // part of the filename:
- wxRegEx re (_T("\\.\\((\\d+),(\\d+),(\\d+),(\\d+)\\)\\."), wxRE_ADVANCED); // regexps in C++ are ugly :-(
- wxString newFilename = targetFilename;
- if (re.Matches(newFilename.c_str()))
- {
- wxASSERT(re.GetMatchCount() == 5);
- long l0 = 0, l1 = 0, l2 = 0, l3 = 0;
- if (re.GetMatch(newFilename, 1).ToLong(&l0)
- && re.GetMatch(newFilename, 2).ToLong(&l1)
- && re.GetMatch(newFilename, 3).ToLong(&l2)
- && re.GetMatch(newFilename, 4).ToLong(&l3))
- {
- ddt.m_Type_Usage = (DDTFile::Type_Usage)l0;
- ddt.m_Type_Alpha = (DDTFile::Type_Alpha)l1;
- ddt.m_Type_Format = (DDTFile::Type_Format)l2;
- ddt.m_Type_Levels = l3;
- }
- else
- {
- // TODO: ask the user for settings? or at least be more helpful
- wxLogError(_("Invalid filename - should be something.(n,n,n,n).tga"));
- return false;
- }
- // Remove the format-identifying part when constructing the DDT filename
- re.ReplaceFirst(&newFilename, _T("."));
- }
- else
- {
- wxLogError(_("Invalid filename - should be something.(n,n,n,n).tga"));
- return false;
- }
-
- wxFFileOutputStream out(newFilename, _T("wb"));
- if (! out.Ok())
- {
- wxLogError(_("Failed to open output file %s"), newFilename.c_str());
- return false;
- }
- SeekableOutputStreamFromWx out2 (out);
- ddt.SaveFile(out2, DDTFile::DDT);
- }
-
- else
- {
- wxFAIL_MSG(_T("TODO"));
- return false;
- }
-
- return true;
-}
diff --git a/source/tools/atlas/AtlasUI/FileConverter/FileConverter.h b/source/tools/atlas/AtlasUI/FileConverter/FileConverter.h
deleted file mode 100644
index 31c3642235..0000000000
--- a/source/tools/atlas/AtlasUI/FileConverter/FileConverter.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-class FileConverter : public wxFrame
-{
-public:
- FileConverter(wxWindow* parent);
- virtual bool Show(bool);
-
-private:
- bool m_Transient; // if true, the window won't be shown (since it's assumed to have been destroyed immediately)
-};
diff --git a/source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp b/source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp
index 6abadade27..0db8639540 100644
--- a/source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp
+++ b/source/tools/atlas/AtlasUI/Misc/DLLInterface.cpp
@@ -24,8 +24,6 @@
#include "General/Datafile.h"
#include "ActorEditor/ActorEditor.h"
-#include "ArchiveViewer/ArchiveViewer.h"
-#include "FileConverter/FileConverter.h"
#include "ScenarioEditor/ScenarioEditor.h"
#include "ErrorReporter/ErrorReporter.h"
@@ -203,15 +201,11 @@ public:
// Display the appropriate window
wxFrame* frame;
-#define MAYBE(t) if (g_InitialWindowType == _T(#t)) frame = new t(NULL); else
- MAYBE(ActorEditor)
-#ifdef USE_AOE3ED
- MAYBE(ArchiveViewer)
- MAYBE(FileConverter)
-#endif
-#undef MAYBE
- // else
- if (g_InitialWindowType == _T("ScenarioEditor"))
+ if (g_InitialWindowType == _T("ActorEditor"))
+ {
+ frame = new ActorEditor(NULL);
+ }
+ else if (g_InitialWindowType == _T("ScenarioEditor"))
{
m_ScriptInterface = new ScriptInterface(&ScenarioEditorSubmitCommand);
frame = new ScenarioEditor(NULL, *m_ScriptInterface);
diff --git a/source/tools/atlas/AtlasUI/Misc/Version.h b/source/tools/atlas/AtlasUI/Misc/Version.h
deleted file mode 100644
index 000be28fc6..0000000000
--- a/source/tools/atlas/AtlasUI/Misc/Version.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-const wxString g_ProgramNameVersion = _("AoE3Ed v0.9");
diff --git a/source/tools/atlas/DatafileIO/BAR/BAR.cpp b/source/tools/atlas/DatafileIO/BAR/BAR.cpp
deleted file mode 100644
index fa33b4e0f0..0000000000
--- a/source/tools/atlas/DatafileIO/BAR/BAR.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Copyright (C) 2011 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "BAR.h"
-#include "Util.h"
-#include "Stream/Stream.h"
-#include "Stream/Memory.h"
-
-#include
-#include
-#include
-
-using namespace DatafileIO;
-
-BARReader::BARReader(SeekableInputStream& stream)
-: m_Stream(stream)
-{
-}
-
-#define CHECK(expr) if (!(expr)) { assert(!(expr)); return false; }
-
-bool BARReader::Initialise()
-{
- assert(m_FileList.size() == 0); // Only call Init once
-
- char head[4];
- m_Stream.Read(head, 4);
- CHECK(strncmp(head, "ESPN", 4) == 0);
-
- uint32_t unknown;
- m_Stream.Read(&unknown, 4);
- CHECK(unknown == 2);
-
- m_Stream.Read(&unknown, 4);
- CHECK(unknown == 0x44332211);
-
- for (int i = 0; i < 66; ++i)
- {
- m_Stream.Read(&unknown, 4);
- CHECK(unknown == 0);
- }
-
- m_Stream.Read(&unknown, 4); // TODO: checksum?
-
- uint32_t numFiles, filetableOffset;
- m_Stream.Read(&numFiles, 4);
- m_Stream.Read(&filetableOffset, 4);
-
- m_Stream.Read(&unknown, 4);
- // 0 in AoE3
- // Non-zero (e.g. 466a800a, 8df1e438) in AoEO; purpose unknown
-
- m_Stream.Seek(filetableOffset, Stream::FROM_START);
-
- utf16string rootName = ReadUString(m_Stream);
- uint32_t numRootFiles;
- m_Stream.Read(&numRootFiles, 4);
- CHECK(numRootFiles == numFiles);
-
- m_FileList.reserve(numFiles);
- for (uint32_t i = 0; i < numFiles; ++i)
- {
- BAREntry file;
-
- uint32_t offset, length0, length1;
- m_Stream.Read(&offset, 4);
- m_Stream.Read(&length0, 4);
- m_Stream.Read(&length1, 4);
- CHECK(length0 == length1); // ??
-
- file.offset = offset;
- file.filesize = length0;
-
- // Ranges: 1995-2005, 1-12, 0-5, 1-31, 0+10-23, 0-59, 0-59, 0-999
- m_Stream.Read(&file.modified.year, 2);
- m_Stream.Read(&file.modified.month, 2);
- m_Stream.Read(&file.modified.dayofweek, 2);
- m_Stream.Read(&file.modified.day, 2);
- m_Stream.Read(&file.modified.hour, 2);
- m_Stream.Read(&file.modified.minute, 2);
- m_Stream.Read(&file.modified.second, 2);
- m_Stream.Read(&file.modified.msecond, 2);
-
- if (file.modified.year == 0xCCCC) // no date specified
- memset(&file.modified, 0, sizeof(file.modified));
-
- file.filename = rootName + ReadUString(m_Stream);
-
- m_FileList.push_back(file);
- }
-
- // TODO: check this is really EOF
-
- return true;
-}
-
-struct buffer_releaser
-{
- SeekableInputStream* stream;
-
-};
-
-SeekableInputStream* BARReader::GetFile(const BAREntry& file) const
-{
- void* buffer;
- size_t size;
- m_Stream.Seek((off_t)file.offset, Stream::FROM_START);
- m_Stream.AcquireBuffer(buffer, size, file.filesize);
- return new SeekableInputStream_mem((char*)buffer, size, new SeekableInputStream_mem::Releaser_StreamBuffer(&m_Stream));
-}
-
-void BARReader::TransferFile(const BAREntry& file, OutputStream& stream) const
-{
- m_Stream.Seek((off_t)file.offset, Stream::FROM_START);
- const size_t bufSize = 128*1024; // people
- static char* buffer[bufSize];
- size_t bytesLeft = file.filesize;
- while (bytesLeft)
- {
- size_t bytesRead = m_Stream.Read(buffer, std::min(bufSize, bytesLeft));
- stream.Write(buffer, bytesRead);
- bytesLeft -= bytesRead;
- if (bytesRead == 0)
- break;
- }
-}
diff --git a/source/tools/atlas/DatafileIO/BAR/BAR.h b/source/tools/atlas/DatafileIO/BAR/BAR.h
deleted file mode 100644
index 73c1107172..0000000000
--- a/source/tools/atlas/DatafileIO/BAR/BAR.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include
-#include
-
-#include "../Util.h"
-
-namespace DatafileIO
-{
- class SeekableInputStream;
- class OutputStream;
-
- struct BAREntry
- {
- utf16string filename; // includes root name - e.g. "Data\tactics\warwagon.tactics.xmb"
- size_t filesize; // in bytes
- struct {
- unsigned short year, month, day, dayofweek; // 2005 etc, 1..12, 1..31, 0..6 (from Sunday)
- unsigned short hour, minute, second, msecond; // 1..24, 0..59, 0..59, 0..999
- // ...unless there's no date specified, in which case these will all be zero
- } modified;
-
- private: // implementation details
- friend class BARReader;
- size_t offset; // (assume all BARs are <4GB)
- };
-
- class BARReader
- {
- public:
- BARReader(SeekableInputStream& stream);
-
- // Read the header and file table.
- bool Initialise();
-
- // Get list of files.
- const std::vector& GetFileList() const { return m_FileList; }
-
- // Get a seekable input stream for the specified file.
- // Multiple file streams can be open at the same time.
- SeekableInputStream* GetFile(const BAREntry& file) const;
- // Copy a file's contents from the archive to an output stream
- void TransferFile(const BAREntry& file, OutputStream& stream) const;
-
- private:
- SeekableInputStream& m_Stream;
- std::vector m_FileList;
-
- BARReader& operator=(const BARReader&);
- };
-
-}
diff --git a/source/tools/atlas/DatafileIO/DDT/DDT.cpp b/source/tools/atlas/DatafileIO/DDT/DDT.cpp
deleted file mode 100644
index f8d3a7539d..0000000000
--- a/source/tools/atlas/DatafileIO/DDT/DDT.cpp
+++ /dev/null
@@ -1,467 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "DDT.h"
-
-#include "Stream/Stream.h"
-#include "Util.h"
-
-#include "IL/il.h"
-#include "IL/ilu.h"
-
-#include
-#include
-#include
-
-using namespace DatafileIO;
-
-DDTFile::DDTFile(SeekableInputStream& stream)
-: m_Stream(stream)
-{
- // TODO: allow multiple nested DDTFiles, with ref-counted init
- ilInit();
- ilGenImages(1, &m_Image);
-}
-
-DDTFile::~DDTFile()
-{
- ilDeleteImages(1, &m_Image);
- ilShutDown();
-}
-
-
-struct DDTImage
-{
- int width, height;
- off_t offset;
- size_t length;
-};
-
-#ifdef USE_DEVIL_DXT
-static void LoadDXT(int dxtType, unsigned char* oldData);
-static void SaveDXT(int dxtType); // saves the currently bound image
-static void SwizzleAGBR();
-#endif
-#ifdef USE_HACKED_DEVIL
-static void ToggleOrigin(); // urgh
-#endif
-
-bool DDTFile::Read(FileType type)
-{
- ilBindImage(m_Image);
-
- if (type == DDT)
- {
- char head[4];
- m_Stream.Read(head, 4);
- if (strncmp(head, "RTS3", 4) != 0)
- {
- // TODO: report helpful error message
- return false;
- }
-
- char format[3];
- m_Stream.Read(format, 3);
- m_Type_Usage = (Type_Usage)format[0];
- m_Type_Alpha = (Type_Alpha)format[1];
- m_Type_Format = (Type_Format)format[2];
-
- char mipmapLevels;
- m_Stream.Read(&mipmapLevels, 1);
- m_Type_Levels = mipmapLevels;
-
- uint32_t baseWidth, baseHeight;
- m_Stream.Read(&baseWidth, 4);
- m_Stream.Read(&baseHeight, 4);
-
- int numImagesPerLevel = (m_Type_Usage == CUBE ? 6 : 1);
- int numImages = mipmapLevels * numImagesPerLevel;
-
- std::vector Images;
-
- Images.resize(numImages);
- for (int i = 0; i < numImages; ++i)
- {
- int width = baseWidth >> (i/numImagesPerLevel); if (width < 1) width = 1;
- int height = baseHeight >> (i/numImagesPerLevel); if (height < 1) height = 1;
- uint32_t offset, length;
- m_Stream.Read(&offset, 4);
- m_Stream.Read(&length, 4);
- Images[i].width = width;
- Images[i].height = height;
- Images[i].offset = offset;
- Images[i].length = length;
- }
-
- // Read the first image. (TODO: cubemaps)
-
- int w = Images[0].width;
- int h = Images[0].height;
- ilTexImage(w,h,1, 4, IL_RGBA, IL_UNSIGNED_BYTE, NULL);
-
- unsigned char* newData = (unsigned char*)ilGetData();
- switch (m_Type_Format)
- {
- case BGRA:
- {
- unsigned char* oldData = new unsigned char[w*h*4];
- m_Stream.Read(oldData, w*h*4);
- for (int i = 0; i < w*h; ++i)
- {
- newData[i*4+0] = oldData[i*4+2];
- newData[i*4+1] = oldData[i*4+1];
- newData[i*4+2] = oldData[i*4+0];
- newData[i*4+3] = oldData[i*4+3];
- }
- delete[] oldData;
- }
- break;
-
-#ifdef USE_DEVIL_DXT
- case DXT1:
- case DXT3:
- case NORMSPEC:
- {
- int dxtType = (m_Type_Format == DXT1 ? 1 : m_Type_Format == DXT3 ? 3 : 5);
- int pixPerByte = (m_Type_Format == DXT1 ? 2 : 1);
- unsigned char* oldData = new unsigned char[w*h/pixPerByte];
- m_Stream.Read(oldData, w*h/pixPerByte);
- LoadDXT(dxtType, oldData);
- if (m_Type_Format == NORMSPEC)
- SwizzleAGBR();
- delete[] oldData;
- }
- break;
-#endif
-
- case GREY:
- {
- unsigned char* oldData = new unsigned char[w*h];
- m_Stream.Read(oldData, w*h);
- for (int i = 0; i < w*h; ++i)
- {
- newData[i*4+0] =
- newData[i*4+1] =
- newData[i*4+2] = oldData[i];
- newData[i*4+3] = 255;
- }
- delete[] oldData;
- }
- break;
-
- default:
- //assert(! "Unhandled format");
- ilClearColour(1.0f, 0.0f, 1.0f, 1.0f);
- ilClearImage();
- break;
- }
-
-#ifdef USE_HACKED_DEVIL
- ToggleOrigin(); // use this instead of iluFlip because we don't want to change the actual data
-#endif
- }
-
- else if (type == TGA)
- {
- void* buffer;
- size_t size;
- m_Stream.AcquireBuffer(buffer, size);
- ilLoadL(IL_TGA, buffer, (ILuint)size);
- m_Stream.ReleaseBuffer(buffer);
- ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
- iluFlipImage();
- }
- else
- {
- assert(! "Invalid type");
- }
-
- return true;
-}
-
-
-bool DDTFile::GetImageData(void*& buffer, int& width, int& height, bool realAlpha)
-{
- ilBindImage(m_Image);
-
- width = ilGetInteger(IL_IMAGE_WIDTH);
- height = ilGetInteger(IL_IMAGE_HEIGHT);
- if (realAlpha)
- {
- buffer = malloc(width*height * 4);
- memcpy(buffer, ilGetData(), width*height * 4);
- }
- else
- {
- buffer = malloc(width*height * 3 * 2);
- unsigned char* newData = (unsigned char*)buffer;
- unsigned char* oldData = (unsigned char*)ilGetData();
-
- for (int i = 0; i < width*height; ++i)
- {
- newData[i*3+0] = oldData[i*4+0];
- newData[i*3+1] = oldData[i*4+1];
- newData[i*3+2] = oldData[i*4+2];
- }
- for (int i = 0; i < width*height; ++i)
- {
- newData[(i+width*height)*3+0] =
- newData[(i+width*height)*3+1] =
- newData[(i+width*height)*3+2] = oldData[i*4+3];
- }
- }
-
- height *= 2;
-
- return true;
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-// DevIL code: (slightly nasty, since DevIL doesn't seem to be flexible enough
-// to do what I need it to do...)
-
-struct ILOutputStream
-{
- static OutputStream* stream;
- static ILHANDLE ILAPIENTRY Open(const ILstring)
- {
- return (void*)-1;
- }
- static void ILAPIENTRY Close(ILHANDLE)
- {
- }
- static ILint ILAPIENTRY Putc(ILubyte c, ILHANDLE)
- {
- stream->Write(&c, 1);
- return c;
- }
- static ILint ILAPIENTRY Seek(ILHANDLE, ILint /*offset*/, ILint /*whence*/)
- {
- assert(! "Not implemented");
- return 0;
- }
- static ILint ILAPIENTRY Tell(ILHANDLE)
- {
- return stream->Tell();
- }
- static ILint ILAPIENTRY Write(const void* data, ILuint size, ILuint count, ILHANDLE)
- {
- if (size*count)
- stream->Write(data, size*count);
- return count;
- }
-};
-OutputStream* ILOutputStream::stream = NULL;
-
-extern "C" {
- extern ILboolean ilSaveTargaF(ILHANDLE File);
- // because DevIL doesn't want to write to things that aren't
- // really files, so we have to use its internal writing functions
- extern void iSetOutputFile(ILHANDLE File);
-}
-
-bool DDTFile::SaveFile(OutputStream& stream, FileType outputType)
-{
- ilBindImage(m_Image);
-
- ilSetWrite(&ILOutputStream::Open, &ILOutputStream::Close, &ILOutputStream::Putc,
- &ILOutputStream::Seek, &ILOutputStream::Tell, &ILOutputStream::Write);
- iSetOutputFile(NULL); // make sure it's using the right output functions
-
- ILOutputStream::stream = &stream;
-
- if (outputType == TGA)
- {
- ilSaveTargaF(NULL);
- }
- else if (outputType == DDT)
- {
- int bpp;
- switch (m_Type_Format)
- {
- case BGRA: bpp = 32; break;
- case GREY: bpp = 8; break;
- case DXT1: bpp = 4; break;
- case DXT3: bpp = 8; break;
- case NORMSPEC: bpp = 8; break;
- default: assert(! "Invalid format"); return false;
- }
-
- stream.Write("RTS3", 4);
-
- char format[4];
- format[0] = (char)m_Type_Usage;
- format[1] = (char)m_Type_Alpha;
- format[2] = (char)m_Type_Format;
- format[3] = (char)m_Type_Levels;
- stream.Write(format, 4);
-
- uint32_t baseWidth, baseHeight;
- baseWidth = ilGetInteger(IL_IMAGE_WIDTH);
- baseHeight = ilGetInteger(IL_IMAGE_HEIGHT);
- stream.Write(&baseWidth, 4);
- stream.Write(&baseHeight, 4);
-
- int numImagesPerLevel = 1; // TODO: cubemaps
- int numImages = m_Type_Levels * numImagesPerLevel;
- uint32_t imgOffset = 16 + 8*numImages;
-
- for (int i = 0; i < numImages; ++i)
- {
- int width = baseWidth >> (i/numImagesPerLevel); if (width < 1) width = 1;
- int height = baseHeight >> (i/numImagesPerLevel); if (height < 1) height = 1;
- uint32_t length = width*height * bpp / 8;
- stream.Write(&imgOffset, 4);
- stream.Write(&length, 4);
- imgOffset += length;
- }
-
- for (int i = 0; i < numImages; ++i)
- {
- int width = baseWidth >> (i/numImagesPerLevel); if (width < 1) width = 1;
- int height = baseHeight >> (i/numImagesPerLevel); if (height < 1) height = 1;
-
- ilBindImage(m_Image);
-
- ILuint img = ilCloneCurImage();
- ilBindImage(img);
- iluImageParameter(ILU_FILTER, ILU_SCALE_BOX); // TODO - proper mipmapping
- iluScale(width, height, 1);
-
- switch (m_Type_Format)
- {
- case BGRA:
- {
- unsigned char* newData = new unsigned char[width*height*4];
- unsigned char* oldData = (unsigned char*)ilGetData();
- for (int i = 0; i < width*height; ++i)
- {
- newData[i*4+0] = oldData[i*4+2];
- newData[i*4+1] = oldData[i*4+1];
- newData[i*4+2] = oldData[i*4+0];
- newData[i*4+3] = oldData[i*4+3];
- }
- stream.Write(newData, width*height*4);
- delete[] newData;
- break;
- }
- case GREY:
- {
- unsigned char* newData = new unsigned char[width*height];
- unsigned char* oldData = (unsigned char*)ilGetData();
- for (int i = 0; i < width*height; ++i)
- {
- newData[i] = oldData[i*4+0];
- }
- stream.Write(newData, width*height);
- delete[] newData;
- break;
- }
-#ifdef USE_DEVIL_DXT
- case DXT1:
- SaveDXT(1);
- break;
- case DXT3:
- SaveDXT(3);
- break;
- case NORMSPEC:
- SwizzleAGBR();
- SaveDXT(5);
- break;
-#endif
- }
-
- ilDeleteImages(1, &img);
- }
- }
-
- ilResetWrite();
-
- return true;
-}
-
-
-
-// Evilness:
-#ifdef USE_HACKED_DEVIL
-#include "IL/devil_internal_exports.h"
-extern "C"
-{
- extern ILboolean DecompressDXT1();
- extern ILboolean DecompressDXT3();
- extern ILboolean DecompressDXT5();
- extern ILuint Compress(ILimage* Image, ILenum DXTCFormat);
- extern ILimage* iCurImage;
-}
-
-static void ToggleOrigin()
-{
- iCurImage->Origin = (iCurImage->Origin == IL_ORIGIN_UPPER_LEFT ? IL_ORIGIN_LOWER_LEFT : IL_ORIGIN_UPPER_LEFT);
-}
-#endif
-
-#ifdef USE_DEVIL_DXT
-extern "C"
-{
- extern ILubyte* CompData;
- extern ILint Depth, Width, Height;
- extern ILimage* Image;
-}
-
-static void LoadDXT(int dxtType, unsigned char* oldData)
-{
- // More evilness, that assumes a lot about DevIL's internals:
- CompData = (ILubyte*)oldData;
- Image = iCurImage;
- Width = Image->Width;
- Height = Image->Height;
- Depth = Image->Depth;
-
- switch (dxtType)
- {
- case 1: DecompressDXT1(); break;
- case 3: DecompressDXT3(); break;
- case 5: DecompressDXT5(); break;
- default: assert(0);
- }
-
- CompData = NULL;
- Image = NULL;
-}
-
-static void SwizzleAGBR()
-{
- ILubyte* data = ilGetData();
- ILint pixels = ilGetInteger(IL_IMAGE_WIDTH)*ilGetInteger(IL_IMAGE_HEIGHT);
- for (ILint i = 0; i < pixels; ++i)
- {
- ILubyte t = data[i*4+0];
- data[i*4+0] = data[i*4+3];
- data[i*4+3] = t;
- }
-}
-
-static void SaveDXT(int dxtType)
-{
- Compress(ilGetCurImage(), dxtType==1 ? IL_DXT1 : dxtType==3 ? IL_DXT3 : IL_DXT5);
-}
-
-#endif
diff --git a/source/tools/atlas/DatafileIO/DDT/DDT.h b/source/tools/atlas/DatafileIO/DDT/DDT.h
deleted file mode 100644
index a652fa04b0..0000000000
--- a/source/tools/atlas/DatafileIO/DDT/DDT.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include
-
-typedef unsigned int ILuint;
-
-namespace DatafileIO
-{
- class SeekableInputStream;
- class OutputStream;
-
- class DDTFile
- {
- public:
- enum FileType { TGA, BMP, DDT };
-
- // Initialises the file, but doesn't actually read anything
- DDTFile(SeekableInputStream& stream);
-
- ~DDTFile();
-
- // Attempts to read the file, and returns true on success
- bool Read(FileType type);
-
- bool SaveFile(OutputStream& stream, FileType outputType);
-
- // All arguments are outputs. buffer is allocated by malloc, and
- // must be freed by the caller. If realAlpha is true, the buffer
- // will be RGBA, else it'll be RGB (with height doubled and the alpha
- // stuck on the bottom)
- bool GetImageData(void*& buffer, int& width, int& height, bool realAlpha);
-
- enum Type_Usage {
- UNK0 = 0, // ??
- UNK1 = 1, // ??
- BUMP = 6,
- UNK2 = 7, // ??
- CUBE = 8
- };
- enum Type_Alpha {
- NONE = 0, // ??
- PLAYER = 1, // ?? }
- TRANS = 4, // ?? } these names are completely incorrect
- BLEND = 8, // mostly unused
- };
- enum Type_Format {
- BGRA = 1,
- DXT1 = 4,
- GREY = 7,
- DXT3 = 8,
- NORMSPEC = 9 // DXT5, with spec in R channel, XYZ in AGB channels.
- // (See e.g. http://www.ati.com/developer/NormalMapCompression.pdf)
- };
-
- // (These values are not guaranteed to actually be in the enums)
- Type_Usage m_Type_Usage;
- Type_Alpha m_Type_Alpha;
- Type_Format m_Type_Format;
-
- int m_Type_Levels; // of mipmaps
-
-// struct Image
-// {
-// int width, height;
-// off_t offset;
-// size_t length;
-// };
-// std::vector m_Images;
- ILuint m_Image;
-
- private:
- SeekableInputStream& m_Stream;
-
- DDTFile& operator=(const DDTFile&);
- };
-}
diff --git a/source/tools/atlas/DatafileIO/Stream/Memory.cpp b/source/tools/atlas/DatafileIO/Stream/Memory.cpp
deleted file mode 100644
index e3290cc52d..0000000000
--- a/source/tools/atlas/DatafileIO/Stream/Memory.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "Memory.h"
-
-#include "../Util.h"
-
-#include "zlib.h"
-
-#include
-#include
-#include
-
-using namespace DatafileIO;
-
-SeekableInputStream_mem::SeekableInputStream_mem(char* data, size_t size, Releaser* releaser)
-: m_Data(data), m_Size(size), m_Cursor(0), m_Releaser(releaser)
-{
-}
-
-SeekableInputStream_mem::~SeekableInputStream_mem()
-{
- m_Releaser->release(m_Data);
- delete m_Releaser;
-}
-
-off_t SeekableInputStream_mem::Tell() const
-{
- return m_Cursor;
-}
-
-bool SeekableInputStream_mem::IsOk() const
-{
- return true;
-}
-
-void SeekableInputStream_mem::Seek(off_t pos, Stream::whence mode)
-{
- if (mode == FROM_START)
- m_Cursor = pos;
- else if (mode == FROM_CURRENT)
- m_Cursor += pos;
- else if (mode == FROM_END)
- m_Cursor = (off_t)m_Size - pos;
-}
-
-size_t SeekableInputStream_mem::Read(void* buffer, size_t size)
-{
- if (m_Cursor >= (off_t)m_Size)
- return 0;
-
- size_t amount = size;
- if (m_Cursor + amount > m_Size)
- amount = m_Size - m_Cursor;
-
- std::copy(m_Data+m_Cursor, m_Data+m_Cursor+amount, (char*)buffer);
- m_Cursor += (off_t)amount;
-
- return amount;
-}
-
-bool SeekableInputStream_mem::AcquireBuffer(void*& buffer, size_t& size, size_t max_size)
-{
- buffer = m_Data + m_Cursor;
- size = m_Size - m_Cursor;
- if (size > max_size) size = max_size;
- return true;
-}
-void SeekableInputStream_mem::ReleaseBuffer(void* /*buffer*/)
-{
- /* do nothing */
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-Maybel33tInputStream::Maybel33tInputStream(SeekableInputStream* stream)
-: m_Stream(NULL)
-{
- char head[8];
- size_t bytes = stream->Read(head, 8);
- if (bytes == 8 && strncmp(head, "l33t", 4) == 0)
- {
- uint32_t uncompressedSize;
- memcpy(&uncompressedSize, &head[4], 4);
-
- void* buffer;
- size_t size;
- if (! stream->AcquireBuffer(buffer, size))
- {
- assert(!"Buffer acquisition unsuccessful");
- }
- else
- {
- char* uncompressedBuffer = new char[uncompressedSize];
- uLongf newUncomprSize = (uLongf)uncompressedSize;
- int err = uncompress((Bytef*)uncompressedBuffer, &newUncomprSize, (Bytef*)buffer, (uLong)size);
- if (err != Z_OK)
- {
- assert(!"Decompression failed");
- delete[] uncompressedBuffer;
- }
- else
- {
- assert(newUncomprSize == uncompressedSize);
- m_Stream = new SeekableInputStream_mem(uncompressedBuffer, uncompressedSize, new SeekableInputStream_mem::Releaser_NewArray);
- }
- stream->ReleaseBuffer(buffer);
- }
- delete stream;
- }
- else
- {
- stream->Seek(-(off_t)bytes, FROM_CURRENT);
- m_Stream = stream;
- }
-
-}
-Maybel33tInputStream::~Maybel33tInputStream()
-{
- delete m_Stream;
-}
-
-bool Maybel33tInputStream::IsOk() const
-{
- return (m_Stream != NULL);
-}
-
-off_t Maybel33tInputStream::Tell() const { return m_Stream->Tell(); }
-void Maybel33tInputStream::Seek(off_t pos, Stream::whence mode) { m_Stream->Seek(pos, mode); }
-size_t Maybel33tInputStream::Read(void* buffer, size_t size) { return m_Stream->Read(buffer, size); }
-bool Maybel33tInputStream::AcquireBuffer(void*& buffer, size_t& size, size_t max_size) { return m_Stream->AcquireBuffer(buffer, size, max_size); }
-void Maybel33tInputStream::ReleaseBuffer(void* buffer) { m_Stream->ReleaseBuffer(buffer); }
diff --git a/source/tools/atlas/DatafileIO/Stream/Memory.h b/source/tools/atlas/DatafileIO/Stream/Memory.h
deleted file mode 100644
index fe5c1b4913..0000000000
--- a/source/tools/atlas/DatafileIO/Stream/Memory.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "Stream.h"
-
-namespace DatafileIO
-{
-
- class SeekableInputStream_mem : public SeekableInputStream
- {
- public:
- // 'Release' provides common buffer-release mechanisms, called
- // when this stream is destroyed
- struct Releaser {
- virtual ~Releaser() {}
- virtual void release(char* buffer) = 0;
- };
- struct Releaser_None : public Releaser {
- virtual void release(char* /*buffer*/) {};
- };
- struct Releaser_StreamBuffer : public Releaser {
- Releaser_StreamBuffer(InputStream* s) : stream(s) {}
- InputStream* stream;
- virtual void release(char* buffer) {
- stream->ReleaseBuffer(buffer);
- }
- };
- struct Releaser_NewArray : public Releaser {
- virtual void release(char* buffer) {
- delete[] buffer;
- }
- };
-
- SeekableInputStream_mem(char* data, size_t size, Releaser* releaser);
- ~SeekableInputStream_mem();
- virtual off_t Tell() const;
- virtual bool IsOk() const;
- virtual void Seek(off_t pos, Stream::whence mode);
- virtual size_t Read(void* buffer, size_t size);
- virtual bool AcquireBuffer(void*& buffer, size_t& size, size_t max_size);
- virtual void ReleaseBuffer(void* buffer);
- private:
- Releaser* m_Releaser;
- char* m_Data;
- size_t m_Size;
- off_t m_Cursor;
- };
-
-
- // Magically decompresses l33t-compressed files.
- class Maybel33tInputStream : public SeekableInputStream
- {
- public:
- // Take ownership of a SeekableInputStream
- Maybel33tInputStream(SeekableInputStream* stream);
- ~Maybel33tInputStream();
-
- virtual off_t Tell() const;
- virtual bool IsOk() const;
- virtual void Seek(off_t pos, Stream::whence mode);
- virtual size_t Read(void* buffer, size_t size);
- virtual bool AcquireBuffer(void*& buffer, size_t& size, size_t max_size);
- virtual void ReleaseBuffer(void* buffer);
- private:
- SeekableInputStream* m_Stream;
- };
-}
diff --git a/source/tools/atlas/DatafileIO/Stream/Stream.cpp b/source/tools/atlas/DatafileIO/Stream/Stream.cpp
deleted file mode 100644
index 370ec5dd82..0000000000
--- a/source/tools/atlas/DatafileIO/Stream/Stream.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "Stream.h"
-
-#include
-#include
-#include
-
-using namespace DatafileIO;
-
-bool InputStream::AcquireBuffer(void*& buffer, size_t& size, size_t max_size)
-{
- std::string data;
- const size_t tempBufSize = 65536;
- static char tempBuffer[tempBufSize];
- size = 0;
- size_t bytesLeft = max_size;
- size_t bytesRead;
- while (bytesLeft > 0 && (bytesRead = Read(tempBuffer, std::min(bytesLeft, tempBufSize))) != 0)
- {
- size += bytesRead;
- bytesLeft -= bytesRead;
- data += std::string(tempBuffer, bytesRead);
- }
-
- buffer = new char[size];
- memcpy(buffer, data.data(), size);
-
- return true;
-}
-
-void InputStream::ReleaseBuffer(void* buffer)
-{
- delete[] (char*)buffer;
-}
diff --git a/source/tools/atlas/DatafileIO/Stream/Stream.h b/source/tools/atlas/DatafileIO/Stream/Stream.h
deleted file mode 100644
index fcc17ed5cf..0000000000
--- a/source/tools/atlas/DatafileIO/Stream/Stream.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#ifndef INCLUDED_STREAM
-#define INCLUDED_STREAM
-
-/*
- Stream: A system for input/output of data, particularly with chained streams
- (e.g. file -> zlib decompressor -> data processor).
-
- Similar to wxWidget's streams, but rewritten so that code can use this without
- requiring wx.
-
- TODO: This concept might not actually be any good; consider alternatives.
-*/
-
-#include
-#include
-
-namespace DatafileIO
-{
- class Stream
- {
- public:
- enum whence { FROM_START, FROM_END, FROM_CURRENT };
-
- virtual ~Stream() {}
- virtual off_t Tell() const = 0;
- virtual bool IsOk() const = 0;
- };
-
- class SeekableStream
- {
- public:
- virtual ~SeekableStream() {}
- virtual void Seek(off_t pos, Stream::whence mode) = 0;
- };
-
-
- class InputStream : public Stream
- {
- public:
- // Try to read up to 'size' bytes into buffer, and return the amount
- // actually read.
- virtual size_t Read(void* buffer, size_t size) = 0;
-
- // Sets 'buffer' and 'size' to point to the data from the current cursor
- // position up to max_size bytes (or the end of the file, whichever is
- // reached first) and returns true if successful.
- // If a derived stream doesn't implement these, a default (which just
- // calls Read to get all the data) will be used instead. (It is implemented
- // in e.g. streams that already have a pointer to all the data, so they
- // don't need to do any memory copying.)
- virtual bool AcquireBuffer(void*& buffer, size_t& size, size_t max_size = std::numeric_limits::max());
- virtual void ReleaseBuffer(void* buffer);
- };
-
- class OutputStream : public Stream
- {
- public:
- virtual void Write(const void* buffer, size_t size) = 0;
- };
-
-
- // Specialisations to indicate that a stream allows seeking.
- class SeekableInputStream : public InputStream, public SeekableStream
- {
- };
-
- class SeekableOutputStream : public OutputStream, public SeekableStream
- {
- };
-
-}
-
-#endif // INCLUDED_STREAM
diff --git a/source/tools/atlas/DatafileIO/Stream/wx.h b/source/tools/atlas/DatafileIO/Stream/wx.h
deleted file mode 100644
index 0d323e8f03..0000000000
--- a/source/tools/atlas/DatafileIO/Stream/wx.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "Stream.h"
-
-#include "wx/mstream.h"
-#include "wx/zstream.h"
-
-namespace DatafileIO
-{
-
- // Wrappers around wx streams, so they can be used as [non-wx] Streams.
- // (This code is all inline so that the project can be compiled without
- // requiring wxWidgets.)
-
- class SeekableInputStreamFromWx : public SeekableInputStream
- {
- public:
- // Take ownership of a wxInputStream
- SeekableInputStreamFromWx(wxInputStream* stream)
- : m_Stream(stream), m_Owner(true) {}
-
- // Use an externally-owned wxInputStream
- SeekableInputStreamFromWx(wxInputStream& stream)
- : m_Stream(&stream), m_Owner(false) {}
-
- ~SeekableInputStreamFromWx()
- {
- if (m_Owner)
- delete m_Stream;
- }
-
- virtual off_t Tell() const { return m_Stream->TellI(); }
- virtual bool IsOk() const { return m_Stream->IsOk(); }
-
- virtual void Seek(off_t pos, Stream::whence mode)
- {
- m_Stream->SeekI(pos,
- mode==Stream::FROM_START ? wxFromStart
- : mode==Stream::FROM_END ? wxFromEnd
- : /*mode==Stream::FROM_CURRENT*/ wxFromCurrent);
- }
-
- virtual size_t Read(void* buffer, size_t size)
- {
- m_Stream->Read(buffer, size);
- return m_Stream->LastRead();
- }
-
- private:
- wxInputStream* m_Stream;
- bool m_Owner;
- };
-
-
- class SeekableOutputStreamFromWx : public SeekableOutputStream
- {
- public:
- // Take ownership of a wxInputStream
- SeekableOutputStreamFromWx(wxOutputStream* stream)
- : m_Stream(stream), m_Owner(true) {}
-
- // Use an externally-owned wxInputStream
- SeekableOutputStreamFromWx(wxOutputStream& stream)
- : m_Stream(&stream), m_Owner(false) {}
-
- ~SeekableOutputStreamFromWx()
- {
- if (m_Owner)
- delete m_Stream;
- }
-
- virtual off_t Tell() const
- {
- return m_Stream->TellO();
- }
-
- virtual bool IsOk() const
- {
- return m_Stream->IsOk();
- }
-
- virtual void Seek(off_t pos, Stream::whence mode)
- {
- m_Stream->SeekO(pos,
- mode==Stream::FROM_START ? wxFromStart
- : mode==Stream::FROM_END ? wxFromEnd
- : /*mode==Stream::FROM_CURRENT*/ wxFromCurrent);
- }
-
- virtual void Write(const void* buffer, size_t size)
- {
- m_Stream->Write(buffer, size);
- }
-
- private:
- wxOutputStream* m_Stream;
- bool m_Owner;
- };
-
-}
diff --git a/source/tools/atlas/DatafileIO/Util.cpp b/source/tools/atlas/DatafileIO/Util.cpp
deleted file mode 100644
index 88900fd9a8..0000000000
--- a/source/tools/atlas/DatafileIO/Util.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "Util.h"
-#include "Stream/Stream.h"
-
-using namespace DatafileIO;
-
-utf16string DatafileIO::ReadUString(InputStream& stream)
-{
- uint32_t length;
- stream.Read(&length, 4);
-
- utf16string ret;
- ret.resize(length);
- stream.Read(&ret[0], length*2);
-
- return ret;
-}
-
-void DatafileIO::WriteUString(OutputStream& stream, const utf16string& string)
-{
- uint32_t length = (uint32_t)string.length();
- stream.Write(&length, 4);
- stream.Write((utf16_t*)&string[0], length*2);
-}
-
-#ifndef _WIN32
-// TODO In reality, these two should be able to de/encode UTF-16 to/from UCS-4
-// instead of just treating UTF-16 as UCS-2
-
-std::wstring DatafileIO::utf16tow(const utf16string &str)
-{
- return std::wstring(str.begin(), str.end());
-}
-
-utf16string DatafileIO::wtoutf16(const std::wstring &str)
-{
- return utf16string(str.begin(), str.end());
-}
-#endif
diff --git a/source/tools/atlas/DatafileIO/Util.h b/source/tools/atlas/DatafileIO/Util.h
deleted file mode 100644
index 5602bdad51..0000000000
--- a/source/tools/atlas/DatafileIO/Util.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#ifndef INCLUDED_UTIL
-#define INCLUDED_UTIL
-
-#include
-#include
-#include
-
-#ifndef C_ASSERT
-#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
-#endif
-
-namespace DatafileIO
-{
-#ifdef _WIN32
- // TODO: proper portability
- typedef int int32_t;
- typedef unsigned int uint32_t;
- typedef unsigned short uint16_t;
- typedef std::wstring utf16string;
- typedef wchar_t utf16_t;
-#else
- typedef uint16_t utf16_t;
- typedef std::basic_string utf16string;
-#endif
-
- C_ASSERT(sizeof(int32_t) == 4);
- C_ASSERT(sizeof(uint32_t) == 4);
- C_ASSERT(sizeof(uint16_t) == 2);
- C_ASSERT(sizeof(utf16_t) == 2);
-
- class InputStream;
- class OutputStream;
-
- // Read/write 4-byte length + UCS-2 string
- utf16string ReadUString(InputStream& stream);
- void WriteUString(OutputStream& stream, const utf16string& string);
-
-#ifdef _WIN32
-# define utf16tow(_str) _str
-# define wtoutf16(_str) _str
-#else
- std::wstring utf16tow(const utf16string &str);
- utf16string wtoutf16(const std::wstring &str);
-#endif
-}
-
-#endif // INCLUDED_UTIL
diff --git a/source/tools/atlas/DatafileIO/XMB/XMB.cpp b/source/tools/atlas/DatafileIO/XMB/XMB.cpp
deleted file mode 100644
index 473f3eb49e..0000000000
--- a/source/tools/atlas/DatafileIO/XMB/XMB.cpp
+++ /dev/null
@@ -1,672 +0,0 @@
-/* Copyright (C) 2009 Wildfire Games.
- * This file is part of 0 A.D.
- *
- * 0 A.D. is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * 0 A.D. is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with 0 A.D. If not, see .
- */
-
-#include "precompiled.h"
-
-#include "XMB.h"
-#include "Stream/Stream.h"
-
-#include
-#include
-#include