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

#ifndef _TEXT_H
#define _TEXT_H 1

#ifndef WIN32
#define __rtti
#endif

#include "Primitiv.h"
#include "Vec3D.h"
#include "Strings.h"

#ifdef _TEXT_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 Text 
//==================================================================

//##ModelId=4030D77C029F
class _impexp __rtti Text : public Primitive {
  public:
    // builds Text in the XY-Plane
	//##ModelId=4030D77C02A1
    static Primitive *create (const char *string, const double& size = 1.0,
                              const double& thickness = 3.0,
                              const Vec3D& bottomLeft = Vec3D ());

    // virtual functions for Building Display-Lists
	//##ModelId=4030D77C02B3
    virtual void buildOGL (Vec2D* texSize = NULL);

  protected:
    // writing create-command to ostr
	//##ModelId=4030D77C02BF
    void stream (ostream& ostr) const;

  private:
    // constructors
    // builds Text in the XY-Plane
	//##ModelId=4030D77C02C2
    Text (const char *string, const double& size,
          const double& thickness, const Vec3D& bottomLeft);

    // destructor
	//##ModelId=4030D77C02D0
    virtual ~Text ( );

    // default constructor declared, but not defined
	//##ModelId=4030D77C02D2
    Text ();

    // copy constructor declared, but not defined
	//##ModelId=4030D77C02D3
    Text (const Text&);

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

    // data members
	//##ModelId=4030D77C02E2
    Ustring ObjString;
	//##ModelId=4030D77C02EE
    double  ObjSize;
	//##ModelId=4030D77C02EF
    double  ObjThickness;
	//##ModelId=4030D77C02FE
    Vec3D   ObjBottomLeft;

	//##ModelId=4030D77C0303
    static unsigned ClassInitOK;

  //friends
    friend class Primitive;

};	// class Text


#endif	// !defined _TEXT_H

