#ifndef _BASE_CIRCLE_HPP_ #define _BASE_CIRCLE_HPP_ // ------------------------------------------------------------------------------------------------ #include "Config.hpp" #include "Base/Vector2f.hpp" // ------------------------------------------------------------------------------------------------ namespace SqMod { /* ------------------------------------------------------------------------------------------------ * ... */ struct Circle { // -------------------------------------------------------------------------------------------- typedef SQFloat Value; // -------------------------------------------------------------------------------------------- static const Circle NIL; static const Circle MIN; static const Circle MAX; // -------------------------------------------------------------------------------------------- static SQChar Delim; // -------------------------------------------------------------------------------------------- Vector2f pos; Value rad; // -------------------------------------------------------------------------------------------- Circle(); Circle(Value r); Circle(const Vector2f & p); Circle(const Vector2f & p, Value r); Circle(Value x, Value y, Value r); // -------------------------------------------------------------------------------------------- Circle(const Circle & c); Circle(Circle && c); // -------------------------------------------------------------------------------------------- ~Circle(); // -------------------------------------------------------------------------------------------- Circle & operator = (const Circle & c); Circle & operator = (Circle && c); // -------------------------------------------------------------------------------------------- Circle & operator = (Value r); Circle & operator = (const Vector2f & p); // -------------------------------------------------------------------------------------------- Circle & operator += (const Circle & c); Circle & operator -= (const Circle & c); Circle & operator *= (const Circle & c); Circle & operator /= (const Circle & c); Circle & operator %= (const Circle & c); // -------------------------------------------------------------------------------------------- Circle & operator += (Value r); Circle & operator -= (Value r); Circle & operator *= (Value r); Circle & operator /= (Value r); Circle & operator %= (Value r); // -------------------------------------------------------------------------------------------- Circle & operator += (const Vector2f & p); Circle & operator -= (const Vector2f & p); Circle & operator *= (const Vector2f & p); Circle & operator /= (const Vector2f & p); Circle & operator %= (const Vector2f & p); // -------------------------------------------------------------------------------------------- Circle & operator ++ (); Circle & operator -- (); // -------------------------------------------------------------------------------------------- Circle operator ++ (int); Circle operator -- (int); // -------------------------------------------------------------------------------------------- Circle operator + (const Circle & c) const; Circle operator - (const Circle & c) const; Circle operator * (const Circle & c) const; Circle operator / (const Circle & c) const; Circle operator % (const Circle & c) const; // -------------------------------------------------------------------------------------------- Circle operator + (Value r) const; Circle operator - (Value r) const; Circle operator * (Value r) const; Circle operator / (Value r) const; Circle operator % (Value r) const; // -------------------------------------------------------------------------------------------- Circle operator + (const Vector2f & p) const; Circle operator - (const Vector2f & p) const; Circle operator * (const Vector2f & p) const; Circle operator / (const Vector2f & p) const; Circle operator % (const Vector2f & p) const; // -------------------------------------------------------------------------------------------- Circle operator + () const; Circle operator - () const; // -------------------------------------------------------------------------------------------- bool operator == (const Circle & c) const; bool operator != (const Circle & c) const; bool operator < (const Circle & c) const; bool operator > (const Circle & c) const; bool operator <= (const Circle & c) const; bool operator >= (const Circle & c) const; // -------------------------------------------------------------------------------------------- SQInteger Cmp(const Circle & c) const; // -------------------------------------------------------------------------------------------- const SQChar * ToString() const; // -------------------------------------------------------------------------------------------- void Set(Value nr); void Set(const Circle & nc); void Set(const Vector2f & np); void Set(const Vector2f & np, Value nr); // -------------------------------------------------------------------------------------------- void Set(Value nx, Value ny); void Set(Value nx, Value ny, Value nr); // -------------------------------------------------------------------------------------------- void Set(const SQChar * values, SQChar delim); // -------------------------------------------------------------------------------------------- void Generate(); void Generate(Value min, Value max, bool r); void Generate(Value xmin, Value xmax, Value ymin, Value ymax); void Generate(Value xmin, Value xmax, Value ymin, Value ymax, Value rmin, Value rmax); // -------------------------------------------------------------------------------------------- void Clear() { pos.Clear(); rad = 0.0; } // -------------------------------------------------------------------------------------------- Circle Abs() const; }; } // Namespace:: SqMod #endif // _BASE_CIRCLE_HPP_