1
////////////////////////////////////////////////////////////////////////////////
2
/*! @file TwoDimensional.h Двумерные графические объекты.
3
- Part of RANet - Research Assistant Net Library (based on ANSI C++).
4
- Copyright(C) 2000-2010, Viktor E. Bursian, St.Petersburg, Russia.
5
Viktor.Bursian@mail.ioffe.ru
6
*///////////////////////////////////////////////////////////////////////////////
7
#ifndef TwoDimensional_H
8
#define TwoDimensional_H
11
#include "PhysValue.h"
14
//------------------------------------------------------------------------------
16
ANNOUNCE_CLASS(sPoint)
17
ANNOUNCE_CLASS(sLineSegment)
18
ANNOUNCE_CLASS(sBoundaries)
20
ANNOUNCE_CLASS(sAppearance)
21
ANNOUNCE_CLASS(sPointAppearance)
22
ANNOUNCE_CLASS(sLineAppearance)
24
ANNOUNCE_ABSTRACT_CLASS(s2DVisibleObject)
26
//------------------------------------------------------------------- sPoint ---
28
class RANet_EXPORT sPoint
34
sPoint (real x ,real y)
40
rsPoint operator = (rcsPoint P)
41
{ X=P.X; Y=P.Y; return *this; };
42
// bool operator == (rcsPoint P)
43
// { return (X==P.X)&&(Y==P.Y); };
44
// bool operator < (rcsPoint P)
45
// { return (X<P.X)&&(Y<P.Y); };
46
rsPoint operator += (rcsPoint P)
47
{ X+=P.X; Y+=P.Y; return *this; };
48
rsPoint operator -= (rcsPoint P)
49
{ X-=P.X; Y-=P.Y; return *this; };
50
sPoint operator + (rcsPoint P)
51
{ return sPoint( X+P.X , Y+P.Y ); };
52
sPoint operator - (rcsPoint P)
53
{ return sPoint( X-P.X , Y-P.Y ); };
60
//------------------------------------------------------------- sLineSegment ---
62
class RANet_EXPORT sLineSegment
65
// sLineSegment () {};
72
//-------------------------------------------------------------- sBoundaries ---
74
class RANet_EXPORT sBoundaries
79
sBoundaries (sRange x ,sRange y)
82
sBoundaries (rcsBoundaries B)
85
rsBoundaries operator = (rcsBoundaries B)
86
{ X=B.X; Y=B.Y; return *this; };
87
bool operator == (rcsBoundaries B)
88
{ return (X==B.X) && (Y==B.Y); };
89
// rsBoundaries operator |= (rcsBoundaries);
90
// rsBoundaries operator |= (rcsPoint);
97
//-------------------------------------------------------------- sAppearance ---
98
/*! Базовый класс для атрибутов внешнего вида узлов сети (цвета кривых и т.п.).
102
class RANet_EXPORT sAppearance : virtual public sStorable
104
STORABLE(sAppearance)
112
//--------------------------------------------------------- sPointAppearance ---
114
class RANet_EXPORT sPointAppearance : public sAppearance
116
STORABLE(sPointAppearance)
119
{PointSolidCircle,PointOpenCircle};
120
static const eStyle DefaultStyle;
121
static const int DefaultSize;
129
//---------------------------------------------------------- sLineAppearance ---
131
class RANet_EXPORT sLineAppearance : public sAppearance
133
STORABLE(sLineAppearance)
136
{LineSolid,LineDotted,LineDashed};
137
static const eStyle DefaultStyle;
138
static const int DefaultThickness;
147
//--------------------------------------------------------- s2DVisibleObject ---
149
class RANet_EXPORT s2DVisibleObject : virtual public sStorable
151
// ADAM(s2DVisibleObject)
152
ABSTRACT_STORABLE(s2DVisibleObject)
154
virtual sBoundaries Boundaries ();
155
virtual int Distance (sPoint P
158
virtual sString Hint () =0;
159
virtual void SetColor (rcsColor);
162
explicit s2DVisibleObject ()
163
:sAdam(),sStorable(),Appearance(NULL)
167
psAppearance Appearance;
170
//------------------------------------------------------------------------------