// 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 "third_party/blink/renderer/platform/geometry/double_rect.h" #include "third_party/blink/renderer/platform/geometry/float_rect.h" #include "third_party/blink/renderer/platform/geometry/int_rect.h" #include "third_party/blink/renderer/platform/geometry/layout_rect.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" namespace blink { DoubleRect::DoubleRect(const IntRect& r) : location_(r.Location()), size_(r.Size()) {} DoubleRect::DoubleRect(const FloatRect& r) : location_(r.Location()), size_(r.Size()) {} DoubleRect::DoubleRect(const LayoutRect& r) : location_(r.Location()), size_(r.Size()) {} IntRect EnclosingIntRect(const DoubleRect& rect) { IntPoint location = FlooredIntPoint(rect.MinXMinYCorner()); IntPoint max_point = CeiledIntPoint(rect.MaxXMaxYCorner()); return IntRect(location, max_point - location); } IntRect EnclosedIntRect(const DoubleRect& rect) { IntPoint location = CeiledIntPoint(rect.MinXMinYCorner()); IntPoint max_point = FlooredIntPoint(rect.MaxXMaxYCorner()); IntSize size = max_point - location; size.ClampNegativeToZero(); return IntRect(location, size); } IntRect RoundedIntRect(const DoubleRect& rect) { return IntRect(RoundedIntPoint(rect.Location()), RoundedIntSize(rect.Size())); } void DoubleRect::Scale(float sx, float sy) { location_.SetX(X() * sx); location_.SetY(Y() * sy); size_.SetWidth(Width() * sx); size_.SetHeight(Height() * sy); } std::ostream& operator<<(std::ostream& ostream, const DoubleRect& rect) { return ostream << rect.ToString(); } String DoubleRect::ToString() const { return String::Format("%s %s", Location().ToString().Ascii().data(), Size().ToString().Ascii().data()); } } // namespace blink