root/ui/gfx/geometry/size.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


// 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_GEOMETRY_SIZE_H_
#define UI_GFX_GEOMETRY_SIZE_H_

#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"

#if defined(OS_WIN)
typedef struct tagSIZE SIZE;
#elif defined(OS_IOS)
#include <CoreGraphics/CoreGraphics.h>
#elif defined(OS_MACOSX)
#include <ApplicationServices/ApplicationServices.h>
#endif

namespace gfx {

// A size has width and height values.
class GFX_EXPORT Size : public SizeBase<Size, int> {
 public:
  Size() : SizeBase<Size, int>(0, 0) {}
  Size(int width, int height) : SizeBase<Size, int>(width, height) {}
#if defined(OS_MACOSX)
  explicit Size(const CGSize& s);
#endif

  ~Size() {}

#if defined(OS_MACOSX)
  Size& operator=(const CGSize& s);
#endif

#if defined(OS_WIN)
  SIZE ToSIZE() const;
#elif defined(OS_MACOSX)
  CGSize ToCGSize() const;
#endif

  operator SizeF() const {
    return SizeF(width(), height());
  }

  std::string ToString() const;
};

inline bool operator==(const Size& lhs, const Size& rhs) {
  return lhs.width() == rhs.width() && lhs.height() == rhs.height();
}

inline bool operator!=(const Size& lhs, const Size& rhs) {
  return !(lhs == rhs);
}

#if !defined(COMPILER_MSVC)
extern template class SizeBase<Size, int>;
#endif

}  // namespace gfx

#endif  // UI_GFX_GEOMETRY_SIZE_H_

/* [<][>][^][v][top][bottom][index][help] */