// $Source: /usr/local/SimSoft/SoftShop/XGraph/Space/Parent.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: Parent.h,v $
// Revision 1.20  2001/11/29 15:52:24  baum
// -In Kalender.cpp und Kalender.h Handsteuerung eingebaut
//

#ifndef _PARENT_H
#define _PARENT_H  1

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

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

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

#ifndef _GEOOBJECT_H
class _impexp GeoObject;
#endif

//==================================================================
//		Class-Header
//		for class Parent
//==================================================================

//##ModelId=4030D77E00AB
class _impexp Parent
  {
  public:
    // constructors
	//##ModelId=4030D77E00BB
    Parent ();
	//##ModelId=4030D77E00BC
    Parent (const Parent&);

    // destructor
	//##ModelId=4030D77E00BE
    virtual ~Parent ();

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

	//##ModelId=4030D77E00CE
    virtual Vec3D& DirToLocal    (Vec3D& dir) const = 0;
	//##ModelId=4030D77E00D1
    virtual Vec3D& DirToSpace    (Vec3D& dir) const = 0;

	//##ModelId=4030D77E00DC
    virtual Location& LocToLocal (Location& loc) const = 0;
	//##ModelId=4030D77E00DF
    virtual Location& LocToSpace (Location& loc) const = 0;

    // who should be selected
	//##ModelId=4030D77E00EA
    virtual GeoObject *SelectionRequest () const;

    // set WrapBox invalidate
	//##ModelId=4030D77E00EC
    virtual void invalidateWrap() {};

    // modifying the Contents
	//##ModelId=4030D77E00EE
    void insert (GeoObject& child, unsigned newWrap = 1);
	//##ModelId=4030D77E00FB
    void remove (GeoObject& child, unsigned newWrap = 1);

    // grants access to the members for inspection, printing, streaming etc.
	//##ModelId=4030D77E00FE
    const DynArray<GeoObject>& GObjArray () const;

  protected:
    // data members
	//##ModelId=4030D77E010A
    DynArray<GeoObject> ObjGBabes;

  private:

  // friends

};	// class Parent

#endif // !_PARENT_H

