#ifdef __cplusplus
extern "C" {
#endif

#pragma once


#include "HROOT-coreType.h"

#include "STDDeletable.h"

#include "stdcxxType.h"


#define TATTTEXT_DECL_VIRT(Type) \
short Type##_GetTextAlign ( Type##_p p );\
float Type##_GetTextAngle ( Type##_p p );\
short Type##_GetTextColor ( Type##_p p );\
short Type##_GetTextFont ( Type##_p p );\
float Type##_GetTextSize ( Type##_p p );\
void Type##_ResetAttText ( Type##_p p, const char* toption );\
void Type##_SetTextAttributes ( Type##_p p );\
void Type##_SetTextAlign ( Type##_p p, short align );\
void Type##_SetTextAngle ( Type##_p p, float tangle );\
void Type##_SetTextColor ( Type##_p p, int tcolor );\
void Type##_SetTextFont ( Type##_p p, short tfont );\
void Type##_SetTextSize ( Type##_p p, float tsize );\
void Type##_SetTextSizePixels ( Type##_p p, int npixels );


#define TATTTEXT_DECL_NONVIRT(Type) \
Type##_p Type##_newTAttText ( int align, float angle, short color, short font, float tsize );


#define TATTTEXT_DECL_ACCESSOR(Type) \



#define TATTTEXT_DEF_VIRT(Type) \
short Type##_GetTextAlign ( Type##_p p ) {\
return ((TYPECASTMETHOD(Type, GetTextAlign, TAttText))(p))->GetTextAlign();\
}\
\
float Type##_GetTextAngle ( Type##_p p ) {\
return ((TYPECASTMETHOD(Type, GetTextAngle, TAttText))(p))->GetTextAngle();\
}\
\
short Type##_GetTextColor ( Type##_p p ) {\
return ((TYPECASTMETHOD(Type, GetTextColor, TAttText))(p))->GetTextColor();\
}\
\
short Type##_GetTextFont ( Type##_p p ) {\
return ((TYPECASTMETHOD(Type, GetTextFont, TAttText))(p))->GetTextFont();\
}\
\
float Type##_GetTextSize ( Type##_p p ) {\
return ((TYPECASTMETHOD(Type, GetTextSize, TAttText))(p))->GetTextSize();\
}\
\
void Type##_ResetAttText ( Type##_p p, const char* toption ) {\
((TYPECASTMETHOD(Type, ResetAttText, TAttText))(p))->ResetAttText(toption);\
}\
\
void Type##_SetTextAttributes ( Type##_p p ) {\
((TYPECASTMETHOD(Type, SetTextAttributes, TAttText))(p))->SetTextAttributes();\
}\
\
void Type##_SetTextAlign ( Type##_p p, short align ) {\
((TYPECASTMETHOD(Type, SetTextAlign, TAttText))(p))->SetTextAlign(align);\
}\
\
void Type##_SetTextAngle ( Type##_p p, float tangle ) {\
((TYPECASTMETHOD(Type, SetTextAngle, TAttText))(p))->SetTextAngle(tangle);\
}\
\
void Type##_SetTextColor ( Type##_p p, int tcolor ) {\
((TYPECASTMETHOD(Type, SetTextColor, TAttText))(p))->SetTextColor(tcolor);\
}\
\
void Type##_SetTextFont ( Type##_p p, short tfont ) {\
((TYPECASTMETHOD(Type, SetTextFont, TAttText))(p))->SetTextFont(tfont);\
}\
\
void Type##_SetTextSize ( Type##_p p, float tsize ) {\
((TYPECASTMETHOD(Type, SetTextSize, TAttText))(p))->SetTextSize(tsize);\
}\
\
void Type##_SetTextSizePixels ( Type##_p p, int npixels ) {\
((TYPECASTMETHOD(Type, SetTextSizePixels, TAttText))(p))->SetTextSizePixels(npixels);\
}


#define TATTTEXT_DEF_NONVIRT(Type) \
Type##_p Type##_newTAttText ( int align, float angle, short color, short font, float tsize ) {\
Type* newp=new Type(align, angle, color, font, tsize);return from_nonconst_to_nonconst<Type##_t, Type>(newp);\
}


#define TATTTEXT_DEF_ACCESSOR(Type) \



DELETABLE_DECL_VIRT(TAttText)
TATTTEXT_DECL_VIRT(TAttText)
TATTTEXT_DECL_NONVIRT(TAttText)
TATTTEXT_DECL_ACCESSOR(TAttText)

#ifdef __cplusplus
}
#endif