Bug 1321412 - Add Min() and Max() functions to BaseSize. r=kats draft
authorBotond Ballo <botond@mozilla.com>
Wed, 23 Nov 2016 19:27:27 -0500
changeset 448048 1d8e888649c10f8f044f475095cb592538992946
parent 448047 c1e71b18fdb303f9684d0c9c26dca2462fa0f62d
child 448049 4a5a3f09ab0008d7e736cedb817505e6e45b054c
push id38244
push userbballo@mozilla.com
push dateFri, 09 Dec 2016 01:03:26 +0000
reviewerskats
bugs1321412
milestone53.0a1
Bug 1321412 - Add Min() and Max() functions to BaseSize. r=kats MozReview-Commit-ID: 6GTzkpwwDNu
gfx/2d/BaseSize.h
--- 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_ */