ultimatepp/uppsrc/Draw/Uhd.cpp
cxl 26b381bcef upp.src: UHD issues
git-svn-id: svn://ultimatepp.org/upp/trunk@8803 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2015-08-09 11:14:16 +00:00

51 lines
No EOL
997 B
C++

#include "Draw.h"
namespace Upp {
static bool sUHDMode;
void SetUHDMode(bool b)
{
for(int i = 0; i < GetImlCount(); i++)
GetIml(i).Reset();
sUHDMode = b;
}
bool IsUHDMode()
{
return sUHDMode;
}
Image DPI(const Image& img)
{
if(IsUHDMode()) {
if(img.GetResolution() == IMAGE_RESOLUTION_STANDARD) {
Image m = CachedRescale(img, 2 * img.GetSize(), FILTER_LANCZOS3);
ImageBuffer h(m);
h.SetResolution(IMAGE_RESOLUTION_UHD);
return h;
}
}
else {
if(img.GetResolution() == IMAGE_RESOLUTION_UHD) {
Image m = CachedRescale(img, img.GetSize() - 2, FILTER_LANCZOS3);
ImageBuffer h(m);
h.SetResolution(IMAGE_RESOLUTION_UHD);
return h;
}
}
return img;
}
Image DPI(const Image& img, int expected)
{
if(img.GetSize().cy <= expected && IsUHDMode()) {
Image m = CachedRescale(img, 2 * img.GetSize(), FILTER_LANCZOS3);
ImageBuffer h(m);
h.SetResolution(IMAGE_RESOLUTION_UHD);
return h;
}
return img;
}
};