diff options
Diffstat (limited to 'ui/gfx/size_base.h')
-rw-r--r-- | ui/gfx/size_base.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/ui/gfx/size_base.h b/ui/gfx/size_base.h new file mode 100644 index 0000000..1256f7f --- /dev/null +++ b/ui/gfx/size_base.h @@ -0,0 +1,62 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_GFX_SIZE_BASE_H_ +#define UI_GFX_SIZE_BASE_H_ +#pragma once + +#include <string> + +#include "build/build_config.h" +#include "ui/base/ui_export.h" + +namespace gfx { + +// A size has width and height values. +template<typename Class, typename Type> +class UI_EXPORT SizeBase { + public: + Type width() const { return width_; } + Type height() const { return height_; } + + Type GetArea() const { return width_ * height_; } + + void SetSize(Type width, Type height) { + set_width(width); + set_height(height); + } + + void Enlarge(Type width, Type height) { + set_width(width_ + width); + set_height(height_ + height); + } + + void set_width(Type width); + void set_height(Type height); + + bool operator==(const Class& s) const { + return width_ == s.width_ && height_ == s.height_; + } + + bool operator!=(const Class& 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); + } + + protected: + SizeBase(Type width, Type height); + virtual ~SizeBase(); + + private: + Type width_; + Type height_; +}; + +} // namespace gfx + +#endif // UI_GFX_SIZE_BASE_H_ |