| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/android/edge_effect_base.h" |
| |
| #include "base/notreached.h" |
| |
| namespace ui { |
| |
| // static |
| gfx::Transform EdgeEffectBase::ComputeTransform(Edge edge, |
| const gfx::SizeF& viewport_size, |
| float offset) { |
| // Transforms assume the edge layers are anchored to their *top center point*. |
| switch (edge) { |
| case EDGE_TOP: |
| return gfx::Transform(1, 0, 0, 1, 0, offset); |
| case EDGE_LEFT: |
| return gfx::Transform(0, 1, -1, 0, -viewport_size.height() / 2.f + offset, |
| viewport_size.height() / 2.f); |
| case EDGE_BOTTOM: |
| return gfx::Transform(-1, 0, 0, -1, 0, viewport_size.height() + offset); |
| case EDGE_RIGHT: |
| return gfx::Transform(0, -1, 1, 0, -viewport_size.height() / 2.f + |
| viewport_size.width() + offset, |
| viewport_size.height() / 2.f); |
| default: |
| NOTREACHED() << "Invalid edge: " << edge; |
| return gfx::Transform(); |
| }; |
| } |
| |
| // static |
| gfx::SizeF EdgeEffectBase::ComputeOrientedSize( |
| Edge edge, |
| const gfx::SizeF& viewport_size) { |
| switch (edge) { |
| case EDGE_TOP: |
| case EDGE_BOTTOM: |
| return viewport_size; |
| case EDGE_LEFT: |
| case EDGE_RIGHT: |
| return gfx::SizeF(viewport_size.height(), viewport_size.width()); |
| default: |
| NOTREACHED() << "Invalid edge: " << edge; |
| return gfx::SizeF(); |
| }; |
| } |
| |
| } // namespace ui |