79 lines
2.3 KiB
C++
79 lines
2.3 KiB
C++
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// NoesisGUI - http://www.noesisengine.com
|
|
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#ifndef __DRAWING_INT32RECT_H__
|
|
#define __DRAWING_INT32RECT_H__
|
|
|
|
|
|
#include <NsCore/Noesis.h>
|
|
#include <NsCore/ReflectionImplement.h>
|
|
#include <NsCore/StringFwd.h>
|
|
#include <NsDrawing/TypesApi.h>
|
|
|
|
|
|
namespace Noesis
|
|
{
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/// Describes the width, height, and location of an integer rectangle.
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
struct Int32Rect
|
|
{
|
|
int32_t x;
|
|
int32_t y;
|
|
uint32_t width;
|
|
uint32_t height;
|
|
|
|
/// Default constructor which initializes all values to 0
|
|
Int32Rect();
|
|
|
|
/// Constructor which sets initial position and size of the rectangle
|
|
Int32Rect(int32_t x, int32_t y, uint32_t width, uint32_t height);
|
|
|
|
/// Copy constructor
|
|
Int32Rect(const Int32Rect& rect) = default;
|
|
|
|
/// Copy operator
|
|
Int32Rect& operator=(const Int32Rect& rect) = default;
|
|
|
|
/// Comparison operators
|
|
bool operator==(const Int32Rect& rect) const;
|
|
bool operator!=(const Int32Rect& rect) const;
|
|
|
|
/// Indicates whether this rectangle is empty (all its members are 0)
|
|
bool IsEmpty() const;
|
|
|
|
/// Returns true if this rect has area (width and height greater than 0)
|
|
bool HasArea() const;
|
|
|
|
/// Creates a string representation of this rectangle
|
|
/// The string has the following form: "x,y,width,height"
|
|
NS_DRAWING_TYPES_API String ToString() const;
|
|
|
|
/// Tries to parse an Int32Rect from a string
|
|
NS_DRAWING_TYPES_API static bool TryParse(const char* str, Int32Rect& result);
|
|
|
|
/// Empty rect (with all members set to 0)
|
|
static Int32Rect Empty();
|
|
|
|
NS_IMPLEMENT_INLINE_REFLECTION(Int32Rect, NoParent)
|
|
{
|
|
NsProp("X", &Int32Rect::x);
|
|
NsProp("Y", &Int32Rect::y);
|
|
NsProp("Width", &Int32Rect::width);
|
|
NsProp("Height", &Int32Rect::height);
|
|
NsProp("IsEmpty", &Int32Rect::IsEmpty);
|
|
NsProp("HasArea", &Int32Rect::HasArea);
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
#include <NsDrawing/Int32Rect.inl>
|
|
|
|
|
|
#endif
|