#ifndef HELI_NUKLEAR_HELI_H
#define HELI_NUKLEAR_HELI_H
#include "animation.h"
#include <math.h>
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#define NK_INCLUDE_FIXED_TYPES
#define NK_INCLUDE_STANDARD_IO
#define NK_INCLUDE_STANDARD_VARARGS
#define NK_INCLUDE_DEFAULT_ALLOCATOR
#include "nuklear.h"
enum {
NKH_INPUT_MOUSE_MOTION = 1 << 0,
NKH_INPUT_MOUSE_BUTTON = 1 << 1,
NKH_INPUT_MOUSE_SCROLL = 1 << 2,
NKH_INPUT_MOUSE = NKH_INPUT_MOUSE_MOTION
| NKH_INPUT_MOUSE_BUTTON
| NKH_INPUT_MOUSE_SCROLL,
NKH_INPUT_KEYBOARD_KEY = 1 << 3,
NKH_INPUT_KEYBOARD_TEXT = 1 << 4,
NKH_INPUT_KEYBOARD_TEXT_CAPTURE = 1 << 5,
NKH_INPUT_KEYBOARD = NKH_INPUT_KEYBOARD_KEY
| NKH_INPUT_KEYBOARD_TEXT
| NKH_INPUT_KEYBOARD_TEXT_CAPTURE,
NKH_INPUT_DAFAULT = NKH_INPUT_MOUSE
| NKH_INPUT_KEYBOARD,
NKH_INPUT_RELEASE_MOUSE = 1 << 6,
NKH_INPUT_RELEASE_KEYBOARD = 1 << 7,
NKH_INPUT_RELEASE = NKH_INPUT_RELEASE_MOUSE
| NKH_INPUT_RELEASE_KEYBOARD,
};
typedef struct {
struct nk_context context;
struct nk_user_font font;
int cliprect[4];
int keys[NK_KEY_MAX];
int buttons[NK_BUTTON_MAX];
} nk_heli;
unsigned int nk_color_to_heli(struct nk_color c);
struct nk_color nk_color_from_heli(unsigned int c);
nk_bool nk_heli_init(nk_heli *n, double fontSize);
void nk_heli_deinit(nk_heli *n);
struct nk_image nk_heli_image(Animation anim, int width, int height);
void nk_heli_cliprect(nk_heli *n, int x, int y, int w, int h);
void nk_heli_input_ex(nk_heli *n, unsigned int flags);
void nk_heli_input(nk_heli *n);
void nk_heli_draw(nk_heli *n);
void nk_heli_process(nk_heli *n);
#endif