// $Source: /usr/local/SimSoft/SoftShop/XGraph/Space/Space.h,v $
// $Revision: 1.20 $
// $Author: baum $
// $Date: 2001/11/29 15:52:24 $
//
// Login name of the user who locked the revision
// $Locker:  $
// Tag name used to checkout the file
// $Name: Release-20 $
// State assigned to revision
// $State: Exp $
//
//
// $Log: Space.h,v $
// Revision 1.20  2001/11/29 15:52:24  baum
// -In Kalender.cpp und Kalender.h Handsteuerung eingebaut
//

#ifndef _SPACE_H
#define _SPACE_H  1

#ifndef _VIEW_H
class View;
#endif

#ifndef _SELECTION_H
  class Selection;
#endif

#include "DynArray.h"
#include "Vec3D.h"
#include "Location.h"

#include "Parent.h"

#ifdef _SPACE_CPP
#  undef _impexp
#  define _impexp __declspec(dllexport)
#elif defined BUILD_XGRAPH_DLL
#  undef _impexp
#  define _impexp
#else
#  undef _impexp
#  define _impexp __declspec(dllimport)
#endif

#if defined __GNUG__ || defined __hpux
#  undef _impexp
#  define _impexp
#endif

//==================================================================
//		Class-Header
//		for class Space
//==================================================================

//##ModelId=4030D77D0000
class _impexp Space : public Parent
  {
  public:
    // constructors
	//##ModelId=4030D77D0002
    Space ();

    // destructor
	//##ModelId=4030D77D0003
    virtual ~Space ();

    // transforming Vectors + Locations between own + space coordinates
	//##ModelId=4030D77D0005
    virtual Vec3D& PtToLocal     (Vec3D& pt) const;
	//##ModelId=4030D77D0011
    virtual Vec3D& PtToSpace     (Vec3D& pt) const;

	//##ModelId=4030D77D0014
    virtual Vec3D& DirToLocal    (Vec3D& dir) const;
	//##ModelId=4030D77D0020
    virtual Vec3D& DirToSpace    (Vec3D& dir) const;

	//##ModelId=4030D77D0023
    virtual Location& LocToLocal (Location& loc) const;
	//##ModelId=4030D77D002E
    virtual Location& LocToSpace (Location& loc) const;

    // insert and remove Views
	//##ModelId=4030D77D0031
    void insertView (View& newView);
	//##ModelId=4030D77D0033
    void removeView (View& oldView);

    // flushing all Views
	//##ModelId=4030D77D003E
    void flushAllViews ();

    // getting the Selection
	//##ModelId=4030D77D003F
    Selection *MySelection () const;

  protected:

  private:
    // copy constructor declared, but not defined
	//##ModelId=4030D77D0041
    Space (const Space&);

    // assignment operator declared, but not defined
	//##ModelId=4030D77D0043
    Space& operator = (const Space&);

	//##ModelId=4030D77D0050
    Selection *ObjSelect;

	//##ModelId=4030D77D0060
    DynArray<View> ObjMyViews;

  // friends
  friend class GeoObject;

};	// class Space

#endif // !_SPACE_H

