15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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)#ifndef CONTENT_PUBLIC_COMMON_PAGE_ZOOM_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_PUBLIC_COMMON_PAGE_ZOOM_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This enum is the parameter to various text/page zoom commands so we know
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// what the specific zoom command is.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum PageZoom {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PAGE_ZOOM_OUT   = -1,
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PAGE_ZOOM_RESET = 0,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PAGE_ZOOM_IN    = 1,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The minimum zoom factor permitted for a page. This is an alternative to
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WebView::minTextSizeMultiplier.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CONTENT_EXPORT extern const double kMinimumZoomFactor;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The maximum zoom factor permitted for a page. This is an alternative to
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WebView::maxTextSizeMultiplier.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CONTENT_EXPORT extern const double kMaximumZoomFactor;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Epsilon value for comparing two floating-point zoom values. We don't use
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// std::numeric_limits<> because it is too precise for zoom values. Zoom
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// values lose precision due to factor/level conversions. A value of 0.001
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// is precise enough for zoom value comparisons.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CONTENT_EXPORT extern const double kEpsilon;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test if two zoom values (either zoom factors or zoom levels) should be
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// considered equal.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CONTENT_EXPORT bool ZoomValuesEqual(double value_a, double value_b);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3858e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch// Converts between zoom factors and levels.
3958e6fbe4ee35d65e14b626c557d37565bf8ad179Ben MurdochCONTENT_EXPORT double ZoomLevelToZoomFactor(double zoom_level);
4058e6fbe4ee35d65e14b626c557d37565bf8ad179Ben MurdochCONTENT_EXPORT double ZoomFactorToZoomLevel(double factor);
4158e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_PUBLIC_COMMON_PAGE_ZOOM_H_
45