/src/mozilla-central/dom/base/nsViewportInfo.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
2 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
3 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
4 | | |
5 | | #ifndef nsViewportInfo_h___ |
6 | | #define nsViewportInfo_h___ |
7 | | |
8 | | #include <stdint.h> |
9 | | #include "mozilla/Attributes.h" |
10 | | #include "Units.h" |
11 | | |
12 | | /** |
13 | | * Default values for the nsViewportInfo class. |
14 | | */ |
15 | | static const mozilla::LayoutDeviceToScreenScale kViewportMinScale(0.1f); |
16 | | static const mozilla::LayoutDeviceToScreenScale kViewportMaxScale(10.0f); |
17 | | static const mozilla::CSSIntSize kViewportMinSize(200, 40); |
18 | | static const mozilla::CSSIntSize kViewportMaxSize(10000, 10000); |
19 | | |
20 | | /** |
21 | | * Information retrieved from the <meta name="viewport"> tag. See |
22 | | * nsIDocument::GetViewportInfo for more information on this functionality. |
23 | | */ |
24 | | class MOZ_STACK_CLASS nsViewportInfo |
25 | | { |
26 | | public: |
27 | | nsViewportInfo(const mozilla::ScreenIntSize& aDisplaySize, |
28 | | const mozilla::CSSToScreenScale& aDefaultZoom, |
29 | | bool aAllowZoom) : |
30 | | mDefaultZoomValid(true), |
31 | | mDefaultZoom(aDefaultZoom), |
32 | | mAutoSize(true), |
33 | | mAllowZoom(aAllowZoom) |
34 | 0 | { |
35 | 0 | mSize = mozilla::ScreenSize(aDisplaySize) / mDefaultZoom; |
36 | 0 | mozilla::CSSToLayoutDeviceScale pixelRatio(1.0f); |
37 | 0 | mMinZoom = pixelRatio * kViewportMinScale; |
38 | 0 | mMaxZoom = pixelRatio * kViewportMaxScale; |
39 | 0 | ConstrainViewportValues(); |
40 | 0 | } |
41 | | |
42 | | nsViewportInfo(const mozilla::CSSToScreenScale& aDefaultZoom, |
43 | | const mozilla::CSSToScreenScale& aMinZoom, |
44 | | const mozilla::CSSToScreenScale& aMaxZoom, |
45 | | const mozilla::CSSSize& aSize, |
46 | | bool aAutoSize, |
47 | | bool aAllowZoom) : |
48 | | mDefaultZoomValid(true), |
49 | | mDefaultZoom(aDefaultZoom), |
50 | | mMinZoom(aMinZoom), |
51 | | mMaxZoom(aMaxZoom), |
52 | | mSize(aSize), |
53 | | mAutoSize(aAutoSize), |
54 | | mAllowZoom(aAllowZoom) |
55 | 0 | { |
56 | 0 | ConstrainViewportValues(); |
57 | 0 | } |
58 | | |
59 | 0 | bool IsDefaultZoomValid() const { return mDefaultZoomValid; } |
60 | 0 | mozilla::CSSToScreenScale GetDefaultZoom() const { return mDefaultZoom; } |
61 | 0 | mozilla::CSSToScreenScale GetMinZoom() const { return mMinZoom; } |
62 | 0 | mozilla::CSSToScreenScale GetMaxZoom() const { return mMaxZoom; } |
63 | | |
64 | 0 | mozilla::CSSSize GetSize() const { return mSize; } |
65 | | |
66 | 0 | bool IsAutoSizeEnabled() const { return mAutoSize; } |
67 | 0 | bool IsZoomAllowed() const { return mAllowZoom; } |
68 | | |
69 | | private: |
70 | | |
71 | | /** |
72 | | * Constrain the viewport calculations from the |
73 | | * nsIDocument::GetViewportInfo() function in order to always return |
74 | | * sane minimum/maximum values. |
75 | | */ |
76 | | void ConstrainViewportValues(); |
77 | | |
78 | | // If the default zoom was specified and was between the min and max |
79 | | // zoom values. |
80 | | bool mDefaultZoomValid; |
81 | | |
82 | | // Default zoom indicates the level at which the display is 'zoomed in' |
83 | | // initially for the user, upon loading of the page. |
84 | | mozilla::CSSToScreenScale mDefaultZoom; |
85 | | |
86 | | // The minimum zoom level permitted by the page. |
87 | | mozilla::CSSToScreenScale mMinZoom; |
88 | | |
89 | | // The maximum zoom level permitted by the page. |
90 | | mozilla::CSSToScreenScale mMaxZoom; |
91 | | |
92 | | // The size of the viewport, specified by the <meta name="viewport"> tag. |
93 | | mozilla::CSSSize mSize; |
94 | | |
95 | | // Whether or not we should automatically size the viewport to the device's |
96 | | // width. This is true if the document has been optimized for mobile, and |
97 | | // the width property of a specified <meta name="viewport"> tag is either |
98 | | // not specified, or is set to the special value 'device-width'. |
99 | | bool mAutoSize; |
100 | | |
101 | | // Whether or not the user can zoom in and out on the page. Default is true. |
102 | | bool mAllowZoom; |
103 | | }; |
104 | | |
105 | | #endif |
106 | | |