/****************************************************************************************/
/*                                                                                      */
/*              Fichier objstr.h                                                        */
/*              Structure de données des différents objets affichables                  */
/*                                                                                      */
/*              Fred Manisse                                                            */
/*                                                                                      */
/****************************************************************************************/


//
// Modifications History
//
//$ LB (13/06/2002) : changed the objbitmap struct to manage the GDI problem.
//
//
//$LB (16/12/2003) : add a background bitmap to the ObjWindow struct, in order to simulate
//                   the windows transparency (Win95, 98, Me). (WinXp, win2k : doesn't have to be
//                   simulated). 


#ifndef OBJSTR_H
#define OBJSTR_H

#include <commctrl.h>

#define MAX_TEXT        32000

#define BUFFER_FLAG_DOWN 1




/* le buffer est de bas de en haut , et non de haut en bas */

/****************************************************************************************/
/*                                                                                      */
/*              Structure ObjVoid : structure de base, commune a tout les objets        */
/*                                                                                      */
/****************************************************************************************/

struct ObjVoid {

        int     Type            ; /* le type d'objet , voir plus bas                    */       
        int     Father          ; /* le pointeur magma sur le pere                      */
        int     Buffer          ; /* donnee de type TYPEBUF                             */
        int     Tab             ; /* donnee de type TYPETAB                             */
} ;


typedef struct ObjVoid *PtrObjVoid ;





/****************************************************************************************/
/*                                                                                      */
/*              Constantes definissant les differents types d'objets                    */
/*              Ces constantes correspondent au champ type de l'objet de base           */
/*                                                                                      */
/****************************************************************************************/

#define OBJ_TYPE_NULL                   0


#define OBJ_MAX_TYPE 1


//-----------------------------------------------------------------------------
// Miscellaneous helper functions
//-----------------------------------------------------------------------------
#define SAFE_DELETE(p)        { if(p) { delete (p);     (p)=NULL; } }
#define SAFE_DELETE_ARRAY(p)  { if(p) { delete[] (p);   (p)=NULL; } }
#define SAFE_RELEASE(p)       { if(p) { (p)->Release(); (p)=NULL; } }
#define SAFE_CLOSE_HANDLE(p)  { if(p) { CloseHandle(p); (p)=NULL; } }
#define SAFE_DELETE_BUFFER(p) { if(p) { if( (p)->buffer ) delete[] (p)->buffer; delete (p); (p)=NULL; } }

#endif


