blob: 9e430433b80972611cfde470a3bd9d0bdcd0454b [file] [log] [blame]
Avi Drissman3e1a26c2022-09-15 20:26:031// Copyright 2009 The Chromium Authors
[email protected]0a02d612009-12-16 04:34:122// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]b5e2d782013-12-18 21:01:155#include "ui/gfx/geometry/insets.h"
[email protected]0a02d612009-12-16 04:34:126
danakj0eff62932020-09-30 21:55:237#include "ui/gfx/geometry/insets_conversions.h"
8#include "ui/gfx/geometry/insets_f.h"
Xianzhu Wange01a69a2022-03-16 06:10:399#include "ui/gfx/geometry/outsets.h"
estadeb58c6c302016-11-03 20:12:2610#include "ui/gfx/geometry/vector2d.h"
[email protected]0a02d612009-12-16 04:34:1211
12namespace gfx {
13
Xianzhu Wange01a69a2022-03-16 06:10:3914Outsets Insets::ToOutsets() const {
15 // Conversion from Insets to Outsets negates all components.
16 return Outsets()
17 .set_left_right(-left(), -right())
18 .set_top_bottom(-top(), -bottom());
19}
20
Xianzhu Wang443e5a62022-01-06 06:13:2121void Insets::Offset(const gfx::Vector2d& vector) {
Xianzhu Wang81a48802022-01-11 05:12:5322 set_left_right(base::ClampAdd(left(), vector.x()),
23 base::ClampSub(right(), vector.x()));
24 set_top_bottom(base::ClampAdd(top(), vector.y()),
25 base::ClampSub(bottom(), vector.y()));
estadeb58c6c302016-11-03 20:12:2626}
27
danakj0eff62932020-09-30 21:55:2328Insets ScaleToCeiledInsets(const Insets& insets, float x_scale, float y_scale) {
29 if (x_scale == 1.f && y_scale == 1.f)
30 return insets;
Xianzhu Wanga1aa0552022-01-11 05:45:5731 return ToCeiledInsets(ScaleInsets(InsetsF(insets), x_scale, y_scale));
danakj0eff62932020-09-30 21:55:2332}
33
34Insets ScaleToCeiledInsets(const Insets& insets, float scale) {
35 if (scale == 1.f)
36 return insets;
Xianzhu Wanga1aa0552022-01-11 05:45:5737 return ToCeiledInsets(ScaleInsets(InsetsF(insets), scale));
danakj0eff62932020-09-30 21:55:2338}
39
40Insets ScaleToFlooredInsets(const Insets& insets,
41 float x_scale,
42 float y_scale) {
43 if (x_scale == 1.f && y_scale == 1.f)
44 return insets;
Xianzhu Wanga1aa0552022-01-11 05:45:5745 return ToFlooredInsets(ScaleInsets(InsetsF(insets), x_scale, y_scale));
danakj0eff62932020-09-30 21:55:2346}
47
48Insets ScaleToFlooredInsets(const Insets& insets, float scale) {
49 if (scale == 1.f)
50 return insets;
Xianzhu Wanga1aa0552022-01-11 05:45:5751 return ToFlooredInsets(ScaleInsets(InsetsF(insets), scale));
danakj0eff62932020-09-30 21:55:2352}
53
54Insets ScaleToRoundedInsets(const Insets& insets,
55 float x_scale,
56 float y_scale) {
57 if (x_scale == 1.f && y_scale == 1.f)
58 return insets;
Xianzhu Wanga1aa0552022-01-11 05:45:5759 return ToRoundedInsets(ScaleInsets(InsetsF(insets), x_scale, y_scale));
danakj0eff62932020-09-30 21:55:2360}
61
62Insets ScaleToRoundedInsets(const Insets& insets, float scale) {
63 if (scale == 1.f)
64 return insets;
Xianzhu Wanga1aa0552022-01-11 05:45:5765 return ToRoundedInsets(ScaleInsets(InsetsF(insets), scale));
danakj0eff62932020-09-30 21:55:2366}
67
[email protected]0a02d612009-12-16 04:34:1268} // namespace gfx