summaryrefslogtreecommitdiff
path: root/lib/resources.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/resources.cpp')
-rw-r--r--lib/resources.cpp105
1 files changed, 0 insertions, 105 deletions
diff --git a/lib/resources.cpp b/lib/resources.cpp
deleted file mode 100644
index 6deaf0ec..00000000
--- a/lib/resources.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-// **************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
-// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved *
-// **************************************************************************
-
-#include "resources.h"
-#include <memory>
-#include <wx/wfstream.h>
-#include <wx/zipstrm.h>
-#include <wx/image.h>
-#include <wx/mstream.h>
-#include <zen/utf.h>
-#include "ffs_paths.h"
-
-using namespace zen;
-
-
-const GlobalResources& GlobalResources::instance()
-{
- static GlobalResources inst;
- return inst;
-}
-
-
-namespace
-{
-void loadAnimFromZip(wxZipInputStream& zipInput, wxAnimation& anim)
-{
- //work around wxWidgets bug:
- //construct seekable input stream (zip-input stream is non-seekable) for wxAnimation::Load()
- //luckily this method call is very fast: below measurement precision!
- std::vector<char> data;
- data.reserve(10000);
-
- int newValue = 0;
- while ((newValue = zipInput.GetC()) != wxEOF)
- data.push_back(newValue);
-
- wxMemoryInputStream seekAbleStream(&data.front(), data.size()); //stream does not take ownership of data
-
- anim.Load(seekAbleStream, wxANIMATION_TYPE_GIF);
-}
-}
-
-
-GlobalResources::GlobalResources()
-{
- wxFFileInputStream input(utfCvrtTo<wxString>(zen::getResourceDir()) + L"Resources.zip");
- if (input.IsOk()) //if not... we don't want to react too harsh here
- {
- //activate support for .png files
- wxImage::AddHandler(new wxPNGHandler); //ownership passed
-
- wxZipInputStream resourceFile(input, wxConvUTF8);
- //do NOT rely on wxConvLocal! On failure shows unhelpful popup "Cannot convert from the charset 'Unknown encoding (-1)'!"
-
- while (true)
- {
- std::unique_ptr<wxZipEntry> entry(resourceFile.GetNextEntry()); //take ownership!
- if (!entry)
- break;
-
- const wxString name = entry->GetName();
-
- //generic image loading
- if (name.EndsWith(L".png"))
- bitmaps.insert(std::make_pair(name, wxImage(resourceFile, wxBITMAP_TYPE_PNG)));
- else if (name == L"wink.gif")
- loadAnimFromZip(resourceFile, aniWink);
- else if (name == L"working.gif")
- loadAnimFromZip(resourceFile, aniWorking);
- }
- }
-
-#ifdef ZEN_WIN
- //for compatibility it seems we need to stick with a "real" icon
- programIconFFS = wxIcon(L"A_FFS_ICON");
-
-#elif defined ZEN_LINUX
- //attention: make sure to not implicitly call "instance()" again => deadlock on Linux
- programIconFFS.CopyFromBitmap(getImage(L"FreeFileSync")); //use big logo bitmap for better quality
-
-#elif defined ZEN_MAC
- assert(getImage(L"FreeFileSync").GetWidth () == getImage(L"FreeFileSync").GetHeight() &&
- getImage(L"FreeFileSync").GetWidth() % 128 == 0);
- //wxWidgets' bitmap to icon conversion on OS X can only deal with very specific sizes
- programIconFFS.CopyFromBitmap(getImage(L"FreeFileSync").ConvertToImage().Scale(128, 128, wxIMAGE_QUALITY_HIGH)); //"von hinten durch die Brust ins Auge"
-#endif
-}
-
-
-const wxBitmap& GlobalResources::getImage(const wxString& imageName) const
-{
- auto it = bitmaps.find(!contains(imageName, L'.') ? //assume .png ending if nothing else specified
- imageName + L".png" :
- imageName);
- if (it != bitmaps.end())
- return it->second;
- else
- {
- assert(false);
- return wxNullBitmap;
- }
-}
bgstack15