Bug 1321412 - Add Min() and Max() functions to BaseSize. r=kats
MozReview-Commit-ID: 6GTzkpwwDNu
--- a/gfx/2d/BaseSize.h
+++ b/gfx/2d/BaseSize.h
@@ -1,16 +1,17 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef MOZILLA_GFX_BASESIZE_H_
#define MOZILLA_GFX_BASESIZE_H_
+#include <algorithm>
#include "mozilla/Attributes.h"
namespace mozilla {
namespace gfx {
/**
* Do not use this class directly. Subclass it, pass that subclass as the
* Sub parameter, and only use that subclass. This allows methods to safely
@@ -87,14 +88,24 @@ struct BaseSize {
}
Sub operator*(const Sub& aSize) const {
return Sub(width * aSize.width, height * aSize.height);
}
Sub operator/(const Sub& aSize) const {
return Sub(width / aSize.width, height / aSize.height);
}
+
+ friend Sub Min(const Sub& aA, const Sub& aB) {
+ return Sub(std::min(aA.width, aB.width),
+ std::min(aA.height, aB.height));
+ }
+
+ friend Sub Max(const Sub& aA, const Sub& aB) {
+ return Sub(std::max(aA.width, aB.width),
+ std::max(aA.height, aB.height));
+ }
};
} // namespace gfx
} // namespace mozilla
#endif /* MOZILLA_GFX_BASESIZE_H_ */