15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cmath>
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/page_zoom.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const double kMinimumZoomFactor = 0.25;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const double kMaximumZoomFactor = 5.0;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const double kEpsilon = 0.001;
1458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochconst double kTextSizeMultiplierRatio = 1.2;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ZoomValuesEqual(double value_a, double value_b) {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return (std::fabs(value_a - value_b) <= kEpsilon);
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2058e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochdouble ZoomLevelToZoomFactor(double zoom_level) {
2158e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  return std::pow(kTextSizeMultiplierRatio, zoom_level);
2258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch}
2358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch
2458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochdouble ZoomFactorToZoomLevel(double factor) {
2558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  return std::log(factor) / std::log(kTextSizeMultiplierRatio);
2658e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch}
2758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
29