Blob Blame History Raw
#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