typedef struct		{
	int x, y, largeur, hauteur;
	SPRITE sprite;
} OBJET;

#define CreeObjetDeBmp24 ChargeObjet

OBJET *ChargeObjet(const char *nomFichier)		{
	OBJET *obj;
	obj=(OBJET*)malloc(sizeof(OBJET));
	if (!obj)
		return NULL;
	obj->x=obj->y=0;
	obj->sprite=(unsigned char *)ChargeBmpDansSprite24(nomFichier);
	obj->largeur=tx;
	obj->hauteur=ty;
	if (obj->sprite==NULL)		{
		free(obj);
		return NULL;
	}
	else
		return obj;
}

void DessObjet(OBJET *obj)		{
	if (!obj)
		return;
	Sprite(obj->x,obj->y,obj->largeur,obj->hauteur,obj->sprite);
}

void Objet(OBJET *obj, int x, int y)		{
	if (!obj)
		return;
	Sprite(x,y,obj->largeur,obj->hauteur,obj->sprite);
}

void FxObjet(OBJET *obj, int x, int y, int effet=0, int niveau=0)		{
	if (!obj)
		return;
	FxSprite(x,y,obj->largeur,obj->hauteur,obj->sprite,effet,niveau);
}

void BlitObjet(OBJET *obj, int x, int y, int hauteur, int offsetY, int effet=0, int niveau=0)		{
	if (!obj)
		return;
	if (offsetY>=obj->hauteur || !obj->sprite)
		return;
	if (offsetY+hauteur>obj->hauteur)
		hauteur-=offsetY+hauteur-obj->hauteur;
	FxSprite(x,y,obj->largeur,hauteur,obj->sprite+(obj->hauteur-offsetY-hauteur)*obj->largeur*3,effet,niveau);
}

SPRITE AdresseBlit(OBJET *obj, int offsetY, int hauteur)		{
	if (!obj)
		return NULL;
	if (offsetY>=obj->hauteur || !obj->sprite)
		return NULL;
	if (offsetY+hauteur>obj->hauteur)
		return NULL;
	return obj->sprite+(obj->hauteur-offsetY-hauteur)*obj->largeur*3;
}


void RedimensionneObjet(OBJET *obj, int x, int y, int l, int h, int effet=0, int niveau=0)		{
	if (!obj)
		return;
	FxRedimensionne(obj->sprite,x,y,obj->largeur,obj->hauteur,l,h,effet,niveau);
}


void RotationObjet(OBJET *obj, int x, int y, double zoom, double angle, int effet=0, int niveau=0)		{
	if (!obj)
		return;
	FxRotozoom(obj->sprite,x,y,obj->largeur,obj->hauteur,zoom,angle*3.1415926/180,effet,niveau);
}

void DetruitObjet(OBJET *obj)		{
	if (!obj)
		return;
	if (obj->sprite)
		free(obj->sprite);
}

