paysages3d/lib_paysages/shared/types.h

108 lines
1.8 KiB
C
Raw Normal View History

#ifndef _PAYSAGES_TYPES_H_
#define _PAYSAGES_TYPES_H_
#include "../euclid.h"
#include "../color.h"
#ifdef __cplusplus
extern "C" {
#endif
struct RenderFragment;
struct Renderer;
typedef struct LightDefinition LightDefinition;
typedef struct LightStatus LightStatus;
typedef int(*f_RenderFragmentCallback)(struct RenderFragment*, struct Renderer* renderer, void* data);
typedef struct
{
Vector3 location;
Color color;
f_RenderFragmentCallback callback;
void* callback_data;
} Vertex;
typedef struct RenderFragment
{
short int x;
short int y;
float z;
Vertex vertex;
} RenderFragment;
typedef struct
{
int width;
int height;
int antialias;
int quality;
} RenderParams;
typedef struct
{
int length;
int alloc_length;
int item_size;
int dirty;
void* data;
} Array;
typedef struct
{
Color base;
float reflection;
float shininess;
} SurfaceMaterial;
typedef void (*RenderCallbackStart)(int width, int height, Color background);
typedef void (*RenderCallbackDraw)(int x, int y, Color col);
typedef void (*RenderCallbackUpdate)(float progress);
typedef struct RenderArea RenderArea;
typedef struct
{
int hit;
Color hit_color;
Vector3 hit_location;
} RayCastingResult;
typedef RayCastingResult (*RayCastingFunction)(Vector3 start, Vector3 direction);
typedef struct
{
float min_height;
float max_height;
float base_height;
} HeightInfo;
typedef struct
{
Vector3 location;
float yaw;
float pitch;
float roll;
Vector3 target;
Vector3 forward;
Vector3 right;
Vector3 up;
float width;
float height;
float yfov;
float xratio;
float znear;
float zfar;
Matrix4 project;
Matrix4 unproject;
} CameraDefinition;
#ifdef __cplusplus
}
#endif
#endif