11#include <klocalizedstring.h>
15QString zoomToString(qreal
value)
17 const qreal valueInPercent =
value * 100;
18 const int precision = (
value > 10.0) ? 0 : 1;
20 return i18n(
"%1%", QLocale().
toString(valueInPercent,
'f', precision));
28 std::copy_if(standardZoomLevels.begin(), standardZoomLevels.end(),
29 std::back_inserter(zoomLevels),
30 [] (qreal zoom) { return zoom >= 0.2 && zoom <= 10; });
33 result.reserve(zoomLevels.size() + 3);
39 Q_FOREACH (qreal
value, zoomLevels) {
56 bool needsUpdateRealLevels = forceInitialization;
58 if (forceInitialization ||
65 auto newGuiLevels = generateZoomGuiItems(newStandardLevels);
68 needsUpdateRealLevels =
true;
78 const qreal
eps = 1e-5;
79 auto fuzzyCompareLess = [
eps] (
const ZoomItem &lhs, qreal rhs) {
80 return std::get<qreal>(lhs) +
eps < rhs;
84 newState.
zoom, fuzzyCompareLess);
95 proposedCurrentIndex = std::distance(
realGuiLevels.begin(), it);
98 auto textForFixedMode = [&] (
const int index) {
100 return i18nc(
"concatenate mode name (e.g. \"Fit Page\") and real zoom percent string",
"%1 (%2)",
101 std::get<QString>(zoomItem),
102 zoomToString(newState.
zoom));
105 switch (newState.
mode) {
130 const qreal
eps = 1e-5;
131 auto fuzzyCompareLess = [
eps](qreal lhs, qreal rhs) {
132 return lhs +
eps < rhs;
136 zoom, fuzzyCompareLess);
148 dbg.nospace() <<
"KoZoomActionState::ZoomItem("
149 << std::get<0>(item) <<
", "
150 << std::get<1>(item) <<
", "
151 << std::get<2>(item) <<
")";
float value(const T *src, size_t ch)
QDebug operator<<(QDebug dbg, const KoZoomActionState::ZoomItem &item)
QVector< ZoomItem > realGuiLevels
QVector< ZoomItem > guiLevels
QString currentRealLevelText
QVector< qreal > standardLevels
int calcNearestStandardLevel() const
std::tuple< KoZoomMode::Mode, qreal, QString > ZoomItem
KoZoomActionState(const KoZoomState &state)
void setZoomState(const KoZoomState &state)
int currentRealLevelIndex
@ ZOOM_WIDTH
zoom pagewidth
@ ZOOM_HEIGHT
zoom pageheight
static QString toString(Mode mode)
static QVector< qreal > generateStandardZoomLevels(qreal minZoom, qreal maxZoom)
static bool qFuzzyCompare(half p1, half p2)
QString toString(const QString &value)