2016-06-06 21:37:41 +00:00
|
|
|
/* RetroArch - A frontend for libretro.
|
|
|
|
* Copyright (C) 2011-2016 - Daniel De Matteis
|
|
|
|
* Copyright (C) 2014-2015 - Jean-André Santoni
|
|
|
|
* Copyright (C) 2016 - Andrés Suárez
|
|
|
|
*
|
|
|
|
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
|
|
|
* of the GNU General Public License as published by the Free Software Found-
|
|
|
|
* ation, either version 3 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
|
|
* PURPOSE. See the GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along with RetroArch.
|
|
|
|
* If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _NK_COMMON_H
|
|
|
|
#define _NK_COMMON_H
|
|
|
|
|
|
|
|
/* This file is intended for backend code. */
|
|
|
|
|
|
|
|
#define NK_INCLUDE_FIXED_TYPES
|
|
|
|
#define NK_INCLUDE_STANDARD_IO
|
|
|
|
#define NK_INCLUDE_DEFAULT_ALLOCATOR
|
|
|
|
#define NK_INCLUDE_VERTEX_BUFFER_OUTPUT
|
|
|
|
#define NK_INCLUDE_FONT_BAKING
|
|
|
|
#define NK_INCLUDE_DEFAULT_FONT
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
#include "../../../deps/nuklear/nuklear.h"
|
|
|
|
#include "../../../deps/stb/stb_image.h"
|
|
|
|
|
|
|
|
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
|
|
|
|
#include "../../../gfx/common/gl_common.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define MAX_VERTEX_MEMORY (512 * 1024)
|
|
|
|
#define MAX_ELEMENT_MEMORY (128 * 1024)
|
|
|
|
|
|
|
|
#define NK_SYSTEM_TAB_END NK_SYSTEM_TAB_SETTINGS
|
|
|
|
|
|
|
|
struct nk_device
|
|
|
|
{
|
|
|
|
struct nk_buffer cmds;
|
|
|
|
struct nk_draw_null_texture null;
|
|
|
|
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
|
|
|
|
GLuint vbo, vao, ebo;
|
|
|
|
|
|
|
|
GLuint prog;
|
|
|
|
GLuint vert_shdr;
|
|
|
|
GLuint frag_shdr;
|
|
|
|
|
|
|
|
GLint attrib_pos;
|
|
|
|
GLint attrib_uv;
|
|
|
|
GLint attrib_col;
|
|
|
|
|
|
|
|
GLint uniform_proj;
|
|
|
|
GLuint font_tex;
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
extern struct nk_font *font;
|
|
|
|
extern struct nk_font_atlas atlas;
|
|
|
|
extern struct nk_user_font usrfnt;
|
|
|
|
extern struct nk_allocator nk_alloc;
|
|
|
|
extern struct nk_device device;
|
|
|
|
|
|
|
|
enum theme {THEME_BLACK, THEME_WHITE, THEME_RED, THEME_BLUE, THEME_DARK};
|
|
|
|
|
|
|
|
struct nk_image nk_common_image_load(const char *filename);
|
|
|
|
|
|
|
|
char* nk_common_file_load(const char* path, size_t* size);
|
|
|
|
|
|
|
|
void nk_common_device_init(struct nk_device *dev);
|
|
|
|
|
|
|
|
void nk_common_device_shutdown(struct nk_device *dev);
|
|
|
|
|
|
|
|
void nk_common_device_draw(struct nk_device *dev,
|
|
|
|
struct nk_context *ctx, int width, int height,
|
|
|
|
enum nk_anti_aliasing AA);
|
|
|
|
|
|
|
|
void* nk_common_mem_alloc(nk_handle a, void *old, nk_size b);
|
|
|
|
|
|
|
|
void nk_common_mem_free(nk_handle unused, void *ptr);
|
|
|
|
|
|
|
|
void device_upload_atlas(struct nk_device *dev, const void *image, int width, int height);
|
|
|
|
|
|
|
|
#endif
|