wxwidgets/tests/benchmarks/image.cpp
Vadim Zeitlin e25b47ee32 Allow tweaking parameters of wxImage::Scale() benchmarks
Use the string parameter as the name of the file containing the image to
resize and the numeric parameter as the scale factor in percents (so
that fractional factors could also be specified using this integer
parameter).
2022-02-22 23:59:36 +00:00

104 lines
2.6 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: tests/benchmarks/image.cpp
// Purpose: wxImage benchmarks
// Author: Vadim Zeitlin
// Created: 2013-06-30
// Copyright: (c) 2013 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/image.h"
#include "bench.h"
BENCHMARK_FUNC(LoadBMP)
{
wxImage image;
return image.LoadFile("horse.bmp");
}
BENCHMARK_FUNC(LoadJPEG)
{
static bool s_handlerAdded = false;
if ( !s_handlerAdded )
{
s_handlerAdded = true;
wxImage::AddHandler(new wxJPEGHandler);
}
wxImage image;
return image.LoadFile("horse.jpg");
}
BENCHMARK_FUNC(LoadPNG)
{
static bool s_handlerAdded = false;
if ( !s_handlerAdded )
{
s_handlerAdded = true;
wxImage::AddHandler(new wxPNGHandler);
}
wxImage image;
return image.LoadFile("horse.png");
}
#if wxUSE_LIBTIFF
BENCHMARK_FUNC(LoadTIFF)
{
static bool s_handlerAdded = false;
if ( !s_handlerAdded )
{
s_handlerAdded = true;
wxImage::AddHandler(new wxTIFFHandler);
}
wxImage image;
return image.LoadFile("horse.tif");
}
#endif // wxUSE_LIBTIFF
static const wxImage& GetTestImage()
{
static wxImage s_image;
static bool s_triedToLoad = false;
if ( !s_triedToLoad )
{
s_triedToLoad = true;
s_image.LoadFile(Bench::GetStringParameter("horse.bmp"));
}
return s_image;
}
BENCHMARK_FUNC(EnlargeNormal)
{
const wxImage& image = GetTestImage();
const double factor = Bench::GetNumericParameter(150) / 100.;
return image.Scale(factor*image.GetWidth(), factor*image.GetHeight(),
wxIMAGE_QUALITY_NORMAL).IsOk();
}
BENCHMARK_FUNC(EnlargeHighQuality)
{
const wxImage& image = GetTestImage();
const double factor = Bench::GetNumericParameter(150) / 100.;
return image.Scale(factor*image.GetWidth(), factor*image.GetHeight(),
wxIMAGE_QUALITY_HIGH).IsOk();
}
BENCHMARK_FUNC(ShrinkNormal)
{
const wxImage& image = GetTestImage();
const double factor = Bench::GetNumericParameter(50) / 100.;
return image.Scale(factor*image.GetWidth(), factor*image.GetHeight(),
wxIMAGE_QUALITY_NORMAL).IsOk();
}
BENCHMARK_FUNC(ShrinkHighQuality)
{
const wxImage& image = GetTestImage();
const double factor = Bench::GetNumericParameter(50) / 100.;
return image.Scale(factor*image.GetWidth(), factor*image.GetHeight(),
wxIMAGE_QUALITY_HIGH).IsOk();
}