159 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			159 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								////////////////////////////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								// NoesisGUI - http://www.noesisengine.com
							 | 
						||
| 
								 | 
							
								// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
							 | 
						||
| 
								 | 
							
								////////////////////////////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef __DRAWING_SIZE_H__
							 | 
						||
| 
								 | 
							
								#define __DRAWING_SIZE_H__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <NsCore/Noesis.h>
							 | 
						||
| 
								 | 
							
								#include <NsCore/ReflectionImplement.h>
							 | 
						||
| 
								 | 
							
								#include <NsDrawing/TypesApi.h>
							 | 
						||
| 
								 | 
							
								#include <NsCore/StringFwd.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Noesis
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct Size;
							 | 
						||
| 
								 | 
							
								struct Sizei;
							 | 
						||
| 
								 | 
							
								struct Point;
							 | 
						||
| 
								 | 
							
								struct Pointi;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								////////////////////////////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								/// Size. Describes the size of an object.
							 | 
						||
| 
								 | 
							
								////////////////////////////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								struct Size
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    float width;
							 | 
						||
| 
								 | 
							
								    float height;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Default constructor which initializes all values to 0
							 | 
						||
| 
								 | 
							
								    Size();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Constructor from width and height values
							 | 
						||
| 
								 | 
							
								    Size(float w, float h);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Constructor from integer Sizei
							 | 
						||
| 
								 | 
							
								    Size(const Sizei& size);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Constructor from a Point
							 | 
						||
| 
								 | 
							
								    NS_DRAWING_TYPES_API explicit Size(const Point& point);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Copy constructor
							 | 
						||
| 
								 | 
							
								    Size(const Size& size) = default;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Copy operator
							 | 
						||
| 
								 | 
							
								    Size& operator=(const Size& size) = default;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Comparison operators
							 | 
						||
| 
								 | 
							
								    bool operator==(const Size& size) const;
							 | 
						||
| 
								 | 
							
								    bool operator!=(const Size& size) const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Math operators
							 | 
						||
| 
								 | 
							
								    Size operator+(const Size& size) const;
							 | 
						||
| 
								 | 
							
								    Size operator-(const Size& size) const;
							 | 
						||
| 
								 | 
							
								    Size operator*(float k) const;
							 | 
						||
| 
								 | 
							
								    Size operator/(float k) const;
							 | 
						||
| 
								 | 
							
								    Size& operator+=(const Size& size);
							 | 
						||
| 
								 | 
							
								    Size& operator-=(const Size& size);
							 | 
						||
| 
								 | 
							
								    Size& operator*=(float k);
							 | 
						||
| 
								 | 
							
								    Size& operator/=(float k);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Expands width and height with the specified size
							 | 
						||
| 
								 | 
							
								    void Expand(const Size& size);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Scales width and height by a factor
							 | 
						||
| 
								 | 
							
								    void Scale(float scaleX, float scaleY);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Generates a string representation of the size
							 | 
						||
| 
								 | 
							
								    /// The string has the following form: "width,height"
							 | 
						||
| 
								 | 
							
								    NS_DRAWING_TYPES_API String ToString() const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Tries to parse a Size from a string
							 | 
						||
| 
								 | 
							
								    NS_DRAWING_TYPES_API static bool TryParse(const char* str, Size& result);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Empty size (width and height of 0)
							 | 
						||
| 
								 | 
							
								    static Size Zero();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Infinite size (defined as the higher positive integer)
							 | 
						||
| 
								 | 
							
								    static Size Infinite();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    NS_IMPLEMENT_INLINE_REFLECTION(Size, NoParent)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        NsProp("Width", &Size::width);
							 | 
						||
| 
								 | 
							
								        NsProp("Height", &Size::height);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								////////////////////////////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								/// Sizei. Describes the integer size of an object.
							 | 
						||
| 
								 | 
							
								////////////////////////////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								struct Sizei
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint32_t width;
							 | 
						||
| 
								 | 
							
								    uint32_t height;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Default constructor which initializes all values to 0
							 | 
						||
| 
								 | 
							
								    Sizei();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Constructor from width and height values
							 | 
						||
| 
								 | 
							
								    Sizei(uint32_t w, uint32_t h);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Constructor from a float size
							 | 
						||
| 
								 | 
							
								    Sizei(const Size& size);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Constructor from a Pointi
							 | 
						||
| 
								 | 
							
								    NS_DRAWING_TYPES_API explicit Sizei(const Pointi& point);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Copy constructor
							 | 
						||
| 
								 | 
							
								    Sizei(const Sizei& size) = default;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Copy operator
							 | 
						||
| 
								 | 
							
								    Sizei& operator=(const Sizei& size) = default;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Comparison operators
							 | 
						||
| 
								 | 
							
								    bool operator==(const Sizei& size) const;
							 | 
						||
| 
								 | 
							
								    bool operator!=(const Sizei& size) const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Math operators
							 | 
						||
| 
								 | 
							
								    Sizei operator+(const Sizei& size) const;
							 | 
						||
| 
								 | 
							
								    Sizei operator-(const Sizei& size) const;
							 | 
						||
| 
								 | 
							
								    Sizei operator*(uint32_t k) const;
							 | 
						||
| 
								 | 
							
								    Sizei operator/(uint32_t k) const;
							 | 
						||
| 
								 | 
							
								    Sizei& operator+=(const Sizei& size);
							 | 
						||
| 
								 | 
							
								    Sizei& operator-=(const Sizei& size);
							 | 
						||
| 
								 | 
							
								    Sizei& operator*=(uint32_t k);
							 | 
						||
| 
								 | 
							
								    Sizei& operator/=(uint32_t k);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Expands width and height with the specified size
							 | 
						||
| 
								 | 
							
								    void Expand(const Sizei& size);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Scales width and height by a factor
							 | 
						||
| 
								 | 
							
								    void Scale(uint32_t scaleX, uint32_t scaleY);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Generates a string representation of the size
							 | 
						||
| 
								 | 
							
								    /// The string has the following form: "width,height"
							 | 
						||
| 
								 | 
							
								    NS_DRAWING_TYPES_API String ToString() const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Tries to parse a Sizei from a string
							 | 
						||
| 
								 | 
							
								    NS_DRAWING_TYPES_API static bool TryParse(const char* str, Sizei& result);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// Empty size (width and height of 0)
							 | 
						||
| 
								 | 
							
								    static Sizei Zero();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    NS_IMPLEMENT_INLINE_REFLECTION(Sizei, NoParent)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        NsProp("Width", &Size::width);
							 | 
						||
| 
								 | 
							
								        NsProp("Height", &Size::height);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <NsDrawing/Size.inl>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |