diff options
Diffstat (limited to 'ui/gfx/size_f.h')
-rw-r--r-- | ui/gfx/size_f.h | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/ui/gfx/size_f.h b/ui/gfx/size_f.h index 733e368..23b6f3b 100644 --- a/ui/gfx/size_f.h +++ b/ui/gfx/size_f.h @@ -8,9 +8,8 @@ #include <string> +#include "build/build_config.h" #include "ui/base/ui_export.h" -#include "ui/gfx/size.h" -#include "ui/gfx/size_base.h" #if !defined(ENABLE_DIP) #error "This class should be used only when DIP feature is enabled" @@ -18,16 +17,51 @@ namespace gfx { -// A floating version of gfx::Size. -class UI_EXPORT SizeF : public SizeBase<SizeF, float> { +// A floating versino of gfx::Size. This is copied, instead of using +// template, to avoid conflict with m19 branch. +// TODO(oshima): Merge this to ui/gfx/size.h using template. +class UI_EXPORT SizeF { public: SizeF(); SizeF(float width, float height); - virtual ~SizeF(); + ~SizeF(); - Size ToSize() const; + float width() const { return width_; } + float height() const { return height_; } + + float GetArea() const { return width_ * height_; } + + void SetSize(float width, float height) { + set_width(width); + set_height(height); + } + + void Enlarge(float width, float height) { + set_width(width_ + width); + set_height(height_ + height); + } + + void set_width(float width); + void set_height(float height); + + bool operator==(const SizeF& s) const { + return width_ == s.width_ && height_ == s.height_; + } + + bool operator!=(const SizeF& s) const { + return !(*this == s); + } + + bool IsEmpty() const { + // Size doesn't allow negative dimensions, so testing for 0 is enough. + return (width_ == 0) || (height_ == 0); + } std::string ToString() const; + + private: + float width_; + float height_; }; } // namespace gfx |