Bug 1321412 - Add Min() and Max() functions to BaseSize. r=kats
☠☠ backed out by 7121735f6c76 ☠ ☠
authorBotond Ballo <botond@mozilla.com>
Wed, 23 Nov 2016 19:27:27 -0500
changeset 448487 31f15a3b5ce0e02ce66d7ed04fa6055853749d20
parent 448486 34a1640010d698cb36b2ca74e4b0fffcdda6d4eb
child 448488 2f88a62520a4b1b0a8f29eddf5185af0fee052b9
push id38361
push usernhnt11@gmail.com
push dateSat, 10 Dec 2016 21:36:44 +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_ */