blob: 2c5b3328a0392742a86a16d56e04c35b4ecc8fb1 [file] [log] [blame]
// Copyright 2016 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/float_box.h"
#include <algorithm>
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
namespace blink {
void FloatBox::ExpandTo(const FloatPoint3D& low, const FloatPoint3D& high) {
DCHECK_LE(low.X(), high.X());
DCHECK_LE(low.Y(), high.Y());
DCHECK_LE(low.Z(), high.Z());
float min_x = std::min(x_, low.X());
float min_y = std::min(y_, low.Y());
float min_z = std::min(z_, low.Z());
float max_x = std::max(Right(), high.X());
float max_y = std::max(Bottom(), high.Y());
float max_z = std::max(front(), high.Z());
x_ = min_x;
y_ = min_y;
z_ = min_z;
width_ = max_x - min_x;
height_ = max_y - min_y;
depth_ = max_z - min_z;
}
std::ostream& operator<<(std::ostream& ostream, const FloatBox& box) {
return ostream << box.ToString();
}
String FloatBox::ToString() const {
return String::Format("%lg,%lg,%lg %lgx%lgx%lg", X(), Y(), Z(), Width(),
Height(), Depth());
}
} // namespace blink