OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "cc/pinch_zoom_viewport.h" | |
6 | |
7 #include "base/logging.h" | |
8 | |
9 namespace cc { | |
10 | |
11 PinchZoomViewport::PinchZoomViewport() | |
12 : page_scale_factor_(1), | |
13 page_scale_delta_(1), | |
14 sent_page_scale_delta_(1), | |
15 min_page_scale_factor_(0), | |
16 max_page_scale_factor_(0), | |
17 device_scale_factor_(1) { | |
18 } | |
19 | |
20 void PinchZoomViewport::set_page_scale_delta(float delta) { | |
21 // Clamp to the current min/max limits. | |
22 float totalPageScaleFactor = page_scale_factor_ * delta; | |
23 if (min_page_scale_factor_ && totalPageScaleFactor < min_page_scale_factor_) | |
24 delta = min_page_scale_factor_ / page_scale_factor_; | |
25 else if (max_page_scale_factor_ && | |
26 totalPageScaleFactor > max_page_scale_factor_) | |
27 delta = max_page_scale_factor_ / page_scale_factor_; | |
28 | |
29 if (delta == page_scale_delta_) | |
30 return; | |
31 | |
32 page_scale_delta_ = delta; | |
33 } | |
34 | |
35 bool PinchZoomViewport::SetPageScaleFactorAndLimits( | |
36 float page_scale_factor, | |
37 float min_page_scale_factor, | |
38 float max_page_scale_factor) { | |
39 DCHECK(page_scale_factor); | |
40 | |
41 if (sent_page_scale_delta_ == 1 && page_scale_factor == page_scale_factor_ && | |
42 min_page_scale_factor == min_page_scale_factor_ && | |
43 max_page_scale_factor == max_page_scale_factor_) | |
44 return false; | |
45 | |
46 min_page_scale_factor_ = min_page_scale_factor; | |
47 max_page_scale_factor_ = max_page_scale_factor; | |
48 | |
49 page_scale_factor_ = page_scale_factor; | |
50 return true; | |
51 } | |
52 | |
53 gfx::Transform PinchZoomViewport::ImplTransform( | |
54 bool page_scale_pinch_zoom_enabled) const { | |
55 gfx::Transform transform; | |
56 transform.Scale(page_scale_delta_, page_scale_delta_); | |
57 | |
58 if (page_scale_pinch_zoom_enabled) | |
59 transform.Scale(page_scale_factor_, page_scale_factor_); | |
60 | |
61 return transform; | |
62 } | |
63 | |
64 } // namespace cc | |
OLD | NEW |