| 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 |