2013-04-24 21:01:11 -07:00
/*
2014-02-10 22:07:04 -08:00
* Copyright 2011 - 2014 Branimir Karadzic . All rights reserved .
2013-04-24 21:01:11 -07:00
* License : http : //www.opensource.org/licenses/BSD-2-Clause
*/
// This code is based on:
//
// Copyright (c) 2009-2010 Mikko Mononen memon@inside.org
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
//
// Source altered and distributed from https://github.com/AdrienHerubel/imgui
2013-11-14 19:10:10 -08:00
# ifndef IMGUI_H_HEADER_GUARD
# define IMGUI_H_HEADER_GUARD
2013-04-24 21:01:11 -07:00
2014-08-06 01:44:00 +01:00
# include <bgfx.h>
2013-08-06 21:04:28 -07:00
# define IMGUI_MBUT_LEFT 0x01
# define IMGUI_MBUT_RIGHT 0x02
2013-04-24 21:01:11 -07:00
2014-08-12 10:51:00 +01:00
/// For custom values, define these macros before including imgui.h
# ifndef IMGUI_SCROLL_AREA_R
2014-10-02 21:35:32 -07:00
# define IMGUI_SCROLL_AREA_R 6
2014-08-12 10:51:00 +01:00
# endif //IMGUI_SCROLL_AREA_R
# ifndef IMGUI_SCROLL_BAR_R
2014-10-02 21:35:32 -07:00
# define IMGUI_SCROLL_BAR_R 5
2014-08-12 10:51:00 +01:00
# endif //IMGUI_SCROLL_BAR_R
# ifndef IMGUI_BUTTON_R
2014-10-02 21:35:32 -07:00
# define IMGUI_BUTTON_R 9
2014-08-12 10:51:00 +01:00
# endif //IMGUI_BUTTON_R
2014-08-12 12:20:00 +01:00
# ifndef IMGUI_BUTTON_RGB0
2014-10-02 21:35:32 -07:00
# define IMGUI_BUTTON_RGB0 imguiRGBA(128, 128, 128, 0)
2014-08-12 12:20:00 +01:00
# endif //IMGUI_BUTTON_RGB0
2014-08-12 10:51:00 +01:00
# ifndef IMGUI_INPUT_R
2014-10-02 21:35:32 -07:00
# define IMGUI_INPUT_R 4
2014-08-12 10:51:00 +01:00
# endif //IMGUI_INPUT_R
2014-08-12 22:04:56 +01:00
# ifndef IMGUI_TABS_HEIGHT
2014-10-02 21:35:32 -07:00
# define IMGUI_TABS_HEIGHT 20
2014-08-12 22:04:56 +01:00
# endif //IMGUI_TABS_HEIGHT
# ifndef IMGUI_TABS_R
2014-10-02 21:35:32 -07:00
# define IMGUI_TABS_R 9
2014-08-12 22:04:56 +01:00
# endif //IMGUI_TABS_R
2014-08-12 10:51:00 +01:00
# ifndef IMGUI_INDENT_VALUE
2014-10-02 21:35:32 -07:00
# define IMGUI_INDENT_VALUE 16
2014-08-12 10:51:00 +01:00
# endif //IMGUI_INDENT_VALUE
# ifndef IMGUI_SEPARATOR_VALUE
2014-10-02 21:35:32 -07:00
# define IMGUI_SEPARATOR_VALUE 12
2014-08-12 10:51:00 +01:00
# endif //IMGUI_SEPARATOR_VALUE
2013-08-06 21:04:28 -07:00
struct ImguiTextAlign
2013-04-24 21:01:11 -07:00
{
2013-08-06 21:04:28 -07:00
enum Enum
{
Left ,
Center ,
Right ,
2014-06-29 21:53:23 -07:00
Count
2013-08-06 21:04:28 -07:00
} ;
2013-04-24 21:01:11 -07:00
} ;
2014-09-20 21:33:17 +02:00
struct ImguiAlign
2014-07-05 01:09:31 +01:00
{
enum Enum
{
Left ,
2014-07-05 04:33:00 +01:00
LeftIndented ,
2014-07-05 01:09:31 +01:00
Center ,
2014-07-05 01:50:11 +01:00
CenterIndented ,
2014-07-05 04:33:00 +01:00
Right ,
2014-07-05 01:09:31 +01:00
} ;
} ;
2014-08-10 13:11:16 +01:00
struct ImguiBorder
{
enum Enum
{
Left ,
Right ,
Top ,
Bottom
} ;
} ;
2013-04-24 21:01:11 -07:00
inline uint32_t imguiRGBA ( uint8_t _r , uint8_t _g , uint8_t _b , uint8_t _a = 255 )
{
return 0
2014-06-23 03:15:38 +01:00
| ( uint32_t ( _r ) < < 0 )
2013-04-24 21:01:11 -07:00
| ( uint32_t ( _g ) < < 8 )
| ( uint32_t ( _b ) < < 16 )
| ( uint32_t ( _a ) < < 24 )
;
}
2014-07-12 11:25:41 +01:00
BGFX_HANDLE ( ImguiFontHandle ) ;
ImguiFontHandle imguiCreateFont ( const void * _data , float _fontSize = 15.0f ) ;
void imguiSetFont ( ImguiFontHandle _handle ) ;
2014-09-20 21:33:17 +02:00
ImguiFontHandle imguiGetCurrentFont ( ) ;
2014-07-12 11:25:41 +01:00
ImguiFontHandle imguiCreate ( const void * _data , float _fontSize = 15.0f ) ;
2013-04-24 21:01:11 -07:00
void imguiDestroy ( ) ;
2014-08-06 01:42:46 +01:00
void imguiBeginFrame ( int32_t _mx , int32_t _my , uint8_t _button , int32_t _scroll , uint16_t _width , uint16_t _height , char _inputChar = 0 , uint8_t _view = 31 ) ;
2013-04-24 21:01:11 -07:00
void imguiEndFrame ( ) ;
2014-09-23 15:34:05 +02:00
void imguiDrawText ( int _x , int _y , ImguiTextAlign : : Enum _align , const char * _text , uint32_t _argb ) ;
void imguiDrawLine ( float _x0 , float _y0 , float _x1 , float _y1 , float _r , uint32_t _argb ) ;
void imguiDrawRoundedRect ( float _x , float _y , float _w , float _h , float _r , uint32_t _argb ) ;
void imguiDrawRect ( float _x , float _y , float _w , float _h , uint32_t _argb ) ;
2014-09-20 21:33:17 +02:00
/// Notice: this function is not to be called between imguiBeginArea() and imguiEndArea().
2014-08-10 13:11:16 +01:00
bool imguiBorderButton ( ImguiBorder : : Enum _border , bool _checked , bool _enabled = true ) ;
2014-09-20 21:33:17 +02:00
bool imguiBeginArea ( const char * _name , int _x , int _y , int _width , int _height , bool _enabled = true , int32_t _r = IMGUI_SCROLL_AREA_R ) ;
void imguiEndArea ( ) ;
bool imguiBeginScroll ( int32_t _height , int32_t * _scroll , bool _enabled = true ) ;
void imguiEndScroll ( int32_t _r = IMGUI_SCROLL_BAR_R ) ;
2014-08-12 10:51:00 +01:00
bool imguiBeginScrollArea ( const char * _name , int _x , int _y , int _width , int _height , int * _scroll , bool _enabled = true , int32_t _r = IMGUI_SCROLL_AREA_R ) ;
void imguiEndScrollArea ( int32_t _r = IMGUI_SCROLL_BAR_R ) ;
2013-04-24 21:01:11 -07:00
2014-08-12 10:51:00 +01:00
void imguiIndent ( uint16_t _width = IMGUI_INDENT_VALUE ) ;
void imguiUnindent ( uint16_t _width = IMGUI_INDENT_VALUE ) ;
void imguiSeparator ( uint16_t _height = IMGUI_SEPARATOR_VALUE ) ;
void imguiSeparatorLine ( uint16_t _height = IMGUI_SEPARATOR_VALUE ) ;
2013-04-24 21:01:11 -07:00
2014-08-12 21:41:24 +01:00
int32_t imguiGetWidgetX ( ) ;
int32_t imguiGetWidgetY ( ) ;
2014-09-20 21:33:17 +02:00
bool imguiButton ( const char * _text , bool _enabled = true , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented , uint32_t _rgb0 = IMGUI_BUTTON_RGB0 , int32_t _r = IMGUI_BUTTON_R ) ;
2013-04-24 21:01:11 -07:00
bool imguiItem ( const char * _text , bool _enabled = true ) ;
bool imguiCheck ( const char * _text , bool _checked , bool _enabled = true ) ;
2014-09-23 15:34:05 +02:00
void imguiBool ( const char * _text , bool & _flag , bool _enabled = true ) ;
2013-04-24 21:01:11 -07:00
bool imguiCollapse ( const char * _text , const char * _subtext , bool _checked , bool _enabled = true ) ;
void imguiLabel ( const char * _format , . . . ) ;
2014-09-20 21:33:17 +02:00
void imguiLabel ( uint32_t _rgba , const char * _format , . . . ) ;
2013-04-24 21:01:11 -07:00
void imguiValue ( const char * _text ) ;
2014-09-20 21:33:17 +02:00
bool imguiSlider ( const char * _text , float & _val , float _vmin , float _vmax , float _vinc , bool _enabled = true , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented ) ;
bool imguiSlider ( const char * _text , int32_t & _val , int32_t _vmin , int32_t _vmax , bool _enabled = true , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented ) ;
void imguiInput ( const char * _label , char * _str , uint32_t _len , bool _enabled = true , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented , int32_t _r = IMGUI_INPUT_R ) ;
2013-04-24 21:01:11 -07:00
2014-09-20 21:33:17 +02:00
uint8_t imguiTabsUseMacroInstead ( uint8_t _selected , . . . ) ;
2014-08-10 15:17:37 +01:00
uint8_t imguiTabsUseMacroInstead ( uint8_t _selected , bool _enabled , . . . ) ;
2014-09-20 21:33:17 +02:00
uint8_t imguiTabsUseMacroInstead ( uint8_t _selected , bool _enabled , ImguiAlign : : Enum _align , . . . ) ;
uint8_t imguiTabsUseMacroInstead ( uint8_t _selected , bool _enabled , ImguiAlign : : Enum _align , int32_t _height , int32_t _r , . . . ) ;
# define imguiTabs(...) imguiTabsUseMacroInstead(__VA_ARGS__, NULL)
2014-08-10 15:17:37 +01:00
2014-01-19 00:28:17 -08:00
uint32_t imguiChooseUseMacroInstead ( uint32_t _selected , . . . ) ;
2014-01-18 20:07:00 -08:00
# define imguiChoose(...) imguiChooseUseMacroInstead(__VA_ARGS__, NULL)
2014-06-27 21:47:33 -07:00
void imguiColorWheel ( float _rgb [ 3 ] , bool _respectIndentation = false , bool _enabled = true ) ;
void imguiColorWheel ( const char * _str , float _rgb [ 3 ] , bool & _activated , bool _enabled = true ) ;
2014-06-23 03:15:38 +01:00
2014-10-25 02:56:12 +02:00
bool imguiImage ( bgfx : : TextureHandle _image , float _lod , int32_t _width , int32_t _height , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented , bool _originBottomLeft = false ) ;
bool imguiImage ( bgfx : : TextureHandle _image , float _lod , float _scale , float _aspect , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented , bool _originBottomLeft = false ) ;
bool imguiImageChannel ( bgfx : : TextureHandle _image , uint8_t _channel , float _lod , int32_t _width , int32_t _height , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented ) ;
bool imguiImageChannel ( bgfx : : TextureHandle _image , uint8_t _channel , float _lod , float _scale , float _aspect , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented ) ;
2014-10-06 06:29:03 +02:00
bool imguiCube ( bgfx : : TextureHandle _cubemap , float _lod = 0.0f , bool _cross = true , ImguiAlign : : Enum _align = ImguiAlign : : LeftIndented ) ;
2014-09-20 21:33:17 +02:00
float imguiGetTextLength ( const char * _text , ImguiFontHandle _handle ) ;
2014-09-23 15:34:05 +02:00
bool imguiMouseOverArea ( ) ;
2014-07-04 21:03:43 -07:00
2013-11-14 19:10:10 -08:00
# endif // IMGUI_H_HEADER_GUARD