Blame heliantus/private.h

3f9996
3f9996
#include <assert.h></assert.h>
3f9996
#include <string.h></string.h>
3f9996
#include <stdlib.h></stdlib.h>
8535a3
#include <stdio.h></stdio.h>
3f9996
#include <ctype.h></ctype.h>
3f9996
#include <math.h></math.h>
3f9996
8535a3
#include <cairo.h></cairo.h>
8535a3
3f9996
#include "common.h"
3f9996
#include "sprite.h"
3f9996
3f9996
8535a3
// globals
3f9996
8535a3
extern cairo_t *heliCairo;
3f9996
3f9996
3f9996
// string
3f9996
8535a3
char* heliStringCopy(const char *x);
8535a3
char* heliStringConcat3(const char *a, const char *b, const char *c);
8535a3
int heliStringEndsWithLowcase(const char *s, const char *tail);
3f9996
void heliLowercase(char *x);
8535a3
void heliParseColor(const char *x, double *color);
3f9996
3f9996
// pointer array
3f9996
8535a3
typedef void (*HeliFreeCallback)(void*);
8535a3
8535a3
typedef struct _HeliPair {
8535a3
	void *key;
8535a3
	void *value;
8535a3
	HeliFreeCallback freeKey;
8535a3
	HeliFreeCallback freeValue;
8535a3
} HeliPair;
8535a3
3f9996
typedef struct _HeliArray {
8535a3
	HeliPair *items;
3f9996
	int count;
3f9996
	int allocated;
3f9996
} HeliArray;
3f9996
8535a3
void heliPairInit(HeliPair *p);
8535a3
void heliPairDestroy(HeliPair *p);
8535a3
07b70f
void heliArrayInit(HeliArray *a);
8535a3
void heliArrayClear(HeliArray *a);
07b70f
void heliArrayDestroy(HeliArray *a);
8535a3
HeliPair* heliArrayGet(HeliArray *a, int i);
8535a3
void* heliArrayGetKey(HeliArray *a, int i);
8535a3
void* heliArrayGetValue(HeliArray *a, int i);
8535a3
HeliPair* heliArrayInsert(HeliArray *a, int i, void *v, HeliFreeCallback fv);
8535a3
HeliPair* heliArrayInsertPair(HeliArray *a, int i, void *k, void *v, HeliFreeCallback fk, HeliFreeCallback fv);
8535a3
void heliArrayRemove(HeliArray *a, int i);
8535a3
8535a3
HeliPair* heliStringmapFind(HeliArray *a, const char *k, int *gtOrEqIndex);
8535a3
HeliPair* heliStringmapGet(HeliArray *a, const char *k);
8535a3
HeliPair* heliStringmapAdd(HeliArray *a, const char *k, void *v, HeliFreeCallback fv);
8535a3
int heliStringmapRemove(HeliArray *a, const char *k);
3f9996
8535a3
8535a3
// animation
8535a3
8535a3
typedef struct _HeliAnimation {
8535a3
	char *path;
8535a3
	HeliArray frames;
8535a3
	int refcount;
8535a3
} HeliAnimation;
8535a3
8535a3
HeliAnimation *heliCreateAnimation(const char *path);
8535a3
void heliAnimationUnref(HeliAnimation *a);
07b70f
void heliAnimationFinish();
3f9996
3f9996
3f9996
// collider
3f9996
3f9996
typedef struct _HeliCollider {
3f9996
	Collider type;
3f9996
	double x;
3f9996
	double y;
3f9996
	double radius;
3f9996
	double width;
3f9996
	double height;
3f9996
	double rotation;
3f9996
} HeliCollider;
3f9996
3f9996
int heliCheckCollision(HeliCollider *a, HeliCollider *b, double *normX, double *normY);
3f9996
int heliPointCollision(HeliCollider *c, double x, double y);
3f9996
8535a3
8535a3
// sprite
8535a3
07b70f
typedef void (*HeliSpriteEashInt)(Sprite, int);
07b70f
typedef void (*HeliSpriteEashDouble)(Sprite, double);
07b70f
typedef void (*HeliSpriteEashString)(Sprite, const char*);
8535a3
HeliArray* heliSpriteGetGroups(Sprite sprite);
07b70f
void heliSpriteUpdate(double dt);
07b70f
void heliSpriteFinish();
8535a3
07b70f
07b70f
// drawing
07b70f
07b70f
void heliDrawingPrepareFrame();
07b70f
void heliDrawingFinish();