insets.cc 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright (c) 2009 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. #include "ui/gfx/geometry/insets.h"
  5. #include "ui/gfx/geometry/insets_conversions.h"
  6. #include "ui/gfx/geometry/insets_f.h"
  7. #include "ui/gfx/geometry/outsets.h"
  8. #include "ui/gfx/geometry/vector2d.h"
  9. namespace gfx {
  10. Outsets Insets::ToOutsets() const {
  11. // Conversion from Insets to Outsets negates all components.
  12. return Outsets()
  13. .set_left_right(-left(), -right())
  14. .set_top_bottom(-top(), -bottom());
  15. }
  16. void Insets::Offset(const gfx::Vector2d& vector) {
  17. set_left_right(base::ClampAdd(left(), vector.x()),
  18. base::ClampSub(right(), vector.x()));
  19. set_top_bottom(base::ClampAdd(top(), vector.y()),
  20. base::ClampSub(bottom(), vector.y()));
  21. }
  22. Insets ScaleToCeiledInsets(const Insets& insets, float x_scale, float y_scale) {
  23. if (x_scale == 1.f && y_scale == 1.f)
  24. return insets;
  25. return ToCeiledInsets(ScaleInsets(InsetsF(insets), x_scale, y_scale));
  26. }
  27. Insets ScaleToCeiledInsets(const Insets& insets, float scale) {
  28. if (scale == 1.f)
  29. return insets;
  30. return ToCeiledInsets(ScaleInsets(InsetsF(insets), scale));
  31. }
  32. Insets ScaleToFlooredInsets(const Insets& insets,
  33. float x_scale,
  34. float y_scale) {
  35. if (x_scale == 1.f && y_scale == 1.f)
  36. return insets;
  37. return ToFlooredInsets(ScaleInsets(InsetsF(insets), x_scale, y_scale));
  38. }
  39. Insets ScaleToFlooredInsets(const Insets& insets, float scale) {
  40. if (scale == 1.f)
  41. return insets;
  42. return ToFlooredInsets(ScaleInsets(InsetsF(insets), scale));
  43. }
  44. Insets ScaleToRoundedInsets(const Insets& insets,
  45. float x_scale,
  46. float y_scale) {
  47. if (x_scale == 1.f && y_scale == 1.f)
  48. return insets;
  49. return ToRoundedInsets(ScaleInsets(InsetsF(insets), x_scale, y_scale));
  50. }
  51. Insets ScaleToRoundedInsets(const Insets& insets, float scale) {
  52. if (scale == 1.f)
  53. return insets;
  54. return ToRoundedInsets(ScaleInsets(InsetsF(insets), scale));
  55. }
  56. } // namespace gfx