| // Copyright (c) 2009 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/gfx/geometry/insets.h" |
| |
| #include "base/strings/stringprintf.h" |
| #include "ui/gfx/geometry/insets_conversions.h" |
| #include "ui/gfx/geometry/insets_f.h" |
| #include "ui/gfx/geometry/vector2d.h" |
| |
| namespace gfx { |
| |
| std::string Insets::ToString() const { |
| // Print members in the same order of the constructor parameters. |
| return base::StringPrintf("%d,%d,%d,%d", top(), left(), bottom(), right()); |
| } |
| |
| Insets Insets::Offset(const gfx::Vector2d& vector) const { |
| return gfx::Insets(base::ClampAdd(top(), vector.y()), |
| base::ClampAdd(left(), vector.x()), |
| base::ClampSub(bottom(), vector.y()), |
| base::ClampSub(right(), vector.x())); |
| } |
| |
| Insets ScaleToCeiledInsets(const Insets& insets, float x_scale, float y_scale) { |
| if (x_scale == 1.f && y_scale == 1.f) |
| return insets; |
| return ToCeiledInsets(ScaleInsets(gfx::InsetsF(insets), x_scale, y_scale)); |
| } |
| |
| Insets ScaleToCeiledInsets(const Insets& insets, float scale) { |
| if (scale == 1.f) |
| return insets; |
| return ToCeiledInsets(ScaleInsets(gfx::InsetsF(insets), scale)); |
| } |
| |
| Insets ScaleToFlooredInsets(const Insets& insets, |
| float x_scale, |
| float y_scale) { |
| if (x_scale == 1.f && y_scale == 1.f) |
| return insets; |
| return ToFlooredInsets(ScaleInsets(gfx::InsetsF(insets), x_scale, y_scale)); |
| } |
| |
| Insets ScaleToFlooredInsets(const Insets& insets, float scale) { |
| if (scale == 1.f) |
| return insets; |
| return ToFlooredInsets(ScaleInsets(gfx::InsetsF(insets), scale)); |
| } |
| |
| Insets ScaleToRoundedInsets(const Insets& insets, |
| float x_scale, |
| float y_scale) { |
| if (x_scale == 1.f && y_scale == 1.f) |
| return insets; |
| return ToRoundedInsets(ScaleInsets(gfx::InsetsF(insets), x_scale, y_scale)); |
| } |
| |
| Insets ScaleToRoundedInsets(const Insets& insets, float scale) { |
| if (scale == 1.f) |
| return insets; |
| return ToRoundedInsets(ScaleInsets(gfx::InsetsF(insets), scale)); |
| } |
| |
| } // namespace gfx |