summaryrefslogtreecommitdiff
path: root/wx+
diff options
context:
space:
mode:
authorB Stack <bgstack15@gmail.com>2020-02-15 11:50:31 -0500
committerB Stack <bgstack15@gmail.com>2020-02-15 11:50:31 -0500
commit791b90b9898cc41869538f1dfc303588436682b7 (patch)
tree02cc7f817d95ce3f21207cbaba130e3d537fc1eb /wx+
parentMerge branch '10.19' into 'master' (diff)
downloadFreeFileSync-791b90b9898cc41869538f1dfc303588436682b7.tar.gz
FreeFileSync-791b90b9898cc41869538f1dfc303588436682b7.tar.bz2
FreeFileSync-791b90b9898cc41869538f1dfc303588436682b7.zip
add upstream 10.20
It is worth noting that the send email feature is not present in the GPL release.
Diffstat (limited to 'wx+')
-rw-r--r--wx+/image_resources.cpp16
-rw-r--r--wx+/image_tools.h12
2 files changed, 19 insertions, 9 deletions
diff --git a/wx+/image_resources.cpp b/wx+/image_resources.cpp
index 2a3b7039..070b9112 100644
--- a/wx+/image_resources.cpp
+++ b/wx+/image_resources.cpp
@@ -187,7 +187,7 @@ void GlobalBitmaps::init(const Zstring& zipPath)
{
assert(bitmaps_.empty() && anims_.empty());
- std::vector<std::pair<Zstring /*file name*/, std::string /*byte stream*/>> streams;
+ std::vector<std::pair<wxString /*file name*/, std::string /*byte stream*/>> streams;
try //to load from ZIP first:
{
@@ -199,7 +199,7 @@ void GlobalBitmaps::init(const Zstring& zipPath)
while (const auto& entry = std::unique_ptr<wxZipEntry>(zipStream.GetNextEntry())) //take ownership!
if (std::string stream(entry->GetSize(), '\0'); !stream.empty() && zipStream.ReadAll(&stream[0], stream.size()))
- streams.emplace_back(utfTo<Zstring>(entry->GetName()), std::move(stream));
+ streams.emplace_back(entry->GetName(), std::move(stream));
else
assert(false);
}
@@ -211,7 +211,7 @@ void GlobalBitmaps::init(const Zstring& zipPath)
try
{
std::string stream = loadBinContainer<std::string>(fi.fullPath, nullptr /*notifyUnbufferedIO*/); //throw FileError
- streams.emplace_back(fi.itemName, std::move(stream));
+ streams.emplace_back(utfTo<wxString>(fi.itemName), std::move(stream));
}
catch (FileError&) { assert(false); }
}, nullptr, nullptr, [](const std::wstring& errorMsg) { assert(false); }); //errors are not really critical in this context
@@ -229,12 +229,10 @@ void GlobalBitmaps::init(const Zstring& zipPath)
for (const auto& [fileName, stream] : streams)
{
- const wxString& name = utfTo<wxString>(afterLast(fileName, FILE_NAME_SEPARATOR, IF_MISSING_RETURN_ALL));
-
wxMemoryInputStream wxstream(stream.c_str(), stream.size()); //stream does not take ownership of data
//bonus: work around wxWidgets bug: wxAnimation::Load() requires seekable input stream (zip-input stream is not seekable)
- if (endsWith(name, L".png"))
+ if (endsWith(fileName, L".png"))
{
wxImage img(wxstream, wxBITMAP_TYPE_PNG);
assert(img.IsOk());
@@ -244,14 +242,14 @@ void GlobalBitmaps::init(const Zstring& zipPath)
convertToVanillaImage(img);
if (dpiScaler_)
- dpiScaler_->add(name, img); //scale in parallel!
+ dpiScaler_->add(fileName, img); //scale in parallel!
else
- bitmaps_.emplace(name, img);
+ bitmaps_.emplace(fileName, img);
}
#if 0
else if (endsWith(name, L".gif"))
{
- [[maybe_unused]] const bool loadSuccess = anims_[name].Load(wxstream, wxANIMATION_TYPE_GIF);
+ [[maybe_unused]] const bool loadSuccess = anims_[fileName].Load(wxstream, wxANIMATION_TYPE_GIF);
assert(loadSuccess);
}
#endif
diff --git a/wx+/image_tools.h b/wx+/image_tools.h
index e2d42fb0..3e401f73 100644
--- a/wx+/image_tools.h
+++ b/wx+/image_tools.h
@@ -38,6 +38,8 @@ wxImage layOver(const wxImage& back, const wxImage& front, int alignment = wxALI
wxImage greyScale(const wxImage& img); //greyscale + brightness adaption
wxBitmap greyScale(const wxBitmap& bmp); //
+wxBitmap greyScaleIfDisabled(const wxBitmap& bmp, bool enabled);
+
//void moveImage(wxImage& img, int right, int up);
void adjustBrightness(wxImage& img, int targetLevel);
@@ -99,6 +101,16 @@ wxBitmap greyScale(const wxBitmap& bmp)
inline
+wxBitmap greyScaleIfDisabled(const wxBitmap& bmp, bool enabled)
+{
+ if (enabled) //avoid ternary WTF
+ return bmp;
+ else
+ return greyScale(bmp);
+}
+
+
+inline
double getAvgBrightness(const wxImage& img)
{
const int pixelCount = img.GetWidth() * img.GetHeight();
bgstack15