Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ui / gfx / geometry / size.h
index 5040a01..74857c5 100644 (file)
@@ -9,7 +9,6 @@
 #include <string>
 
 #include "base/compiler_specific.h"
-#include "ui/gfx/geometry/size_base.h"
 #include "ui/gfx/geometry/size_f.h"
 #include "ui/gfx/gfx_export.h"
 
@@ -24,12 +23,15 @@ typedef struct tagSIZE SIZE;
 namespace gfx {
 
 // A size has width and height values.
-class GFX_EXPORT Size : public SizeBase<Size, int> {
+class GFX_EXPORT Size {
  public:
-  Size() : SizeBase<Size, int>(0, 0) {}
-  Size(int width, int height) : SizeBase<Size, int>(width, height) {}
+  Size() : width_(0), height_(0) {}
+  Size(int width, int height)
+      : width_(width < 0 ? 0 : width), height_(height < 0 ? 0 : height) {}
 #if defined(OS_MACOSX)
-  explicit Size(const CGSize& s);
+  explicit Size(const CGSize& s)
+      : width_(s.width < 0 ? 0 : s.width),
+        height_(s.height < 0 ? 0 : s.height) {}
 #endif
 
   ~Size() {}
@@ -41,14 +43,38 @@ class GFX_EXPORT Size : public SizeBase<Size, int> {
 #if defined(OS_WIN)
   SIZE ToSIZE() const;
 #elif defined(OS_MACOSX)
-  CGSize ToCGSize() const;
+  CGSize ToCGSize() const { return CGSizeMake(width(), height()); }
 #endif
 
+  int width() const { return width_; }
+  int height() const { return height_; }
+
+  void set_width(int width) { width_ = width < 0 ? 0 : width; }
+  void set_height(int height) { height_ = height < 0 ? 0 : height; }
+
+  int GetArea() const;
+
+  void SetSize(int width, int height) {
+    set_width(width);
+    set_height(height);
+  }
+
+  void Enlarge(int grow_width, int grow_height);
+
+  void SetToMin(const Size& other);
+  void SetToMax(const Size& other);
+
+  bool IsEmpty() const { return !width() || !height(); }
+
   operator SizeF() const {
-    return SizeF(width(), height());
+    return SizeF(static_cast<float>(width()), static_cast<float>(height()));
   }
 
   std::string ToString() const;
+
+ private:
+  int width_;
+  int height_;
 };
 
 inline bool operator==(const Size& lhs, const Size& rhs) {
@@ -59,10 +85,6 @@ inline bool operator!=(const Size& lhs, const Size& rhs) {
   return !(lhs == rhs);
 }
 
-#if !defined(COMPILER_MSVC)
-extern template class SizeBase<Size, int>;
-#endif
-
 // This is declared here for use in gtest-based unit tests but is defined in
 // the gfx_test_support target. Depend on that to use this in your unit test.
 // This should not be used in production code - call ToString() instead.