mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-25 09:08:22 -05:00
Merge pull request #130 from dariomanesku/master
Added setWindowTitle() and imguiInput().
This commit is contained in:
commit
3d586e21e8
14 changed files with 338 additions and 15 deletions
|
@ -147,13 +147,123 @@ namespace entry
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset, MouseState* _mouse)
|
char keyToAscii(entry::Key::Enum _key, bool _shiftModifier)
|
||||||
|
{
|
||||||
|
static const char s_keyToAscii[entry::Key::Count] =
|
||||||
|
{
|
||||||
|
'\0', // None
|
||||||
|
0x1b, // Esc
|
||||||
|
0x0d, // Return
|
||||||
|
0x09, // Tab
|
||||||
|
0x20, // Space
|
||||||
|
0x08, // Backspace
|
||||||
|
'\0', // Up
|
||||||
|
'\0', // Down
|
||||||
|
'\0', // Left
|
||||||
|
'\0', // Right
|
||||||
|
'\0', // PageUp
|
||||||
|
'\0', // PageDown
|
||||||
|
'\0', // Home
|
||||||
|
'\0', // End
|
||||||
|
'\0', // Print
|
||||||
|
0x3d, // Equals
|
||||||
|
0x2d, // Minus
|
||||||
|
'\0', // F1
|
||||||
|
'\0', // F2
|
||||||
|
'\0', // F3
|
||||||
|
'\0', // F4
|
||||||
|
'\0', // F5
|
||||||
|
'\0', // F6
|
||||||
|
'\0', // F7
|
||||||
|
'\0', // F8
|
||||||
|
'\0', // F9
|
||||||
|
'\0', // F10
|
||||||
|
'\0', // F11
|
||||||
|
'\0', // F12
|
||||||
|
0x30, // NumPad0
|
||||||
|
0x31, // NumPad1
|
||||||
|
0x32, // NumPad2
|
||||||
|
0x33, // NumPad3
|
||||||
|
0x34, // NumPad4
|
||||||
|
0x35, // NumPad5
|
||||||
|
0x36, // NumPad6
|
||||||
|
0x37, // NumPad7
|
||||||
|
0x38, // NumPad8
|
||||||
|
0x39, // NumPad9
|
||||||
|
0x30, // Key0
|
||||||
|
0x31, // Key1
|
||||||
|
0x32, // Key2
|
||||||
|
0x33, // Key3
|
||||||
|
0x34, // Key4
|
||||||
|
0x35, // Key5
|
||||||
|
0x36, // Key6
|
||||||
|
0x37, // Key7
|
||||||
|
0x38, // Key8
|
||||||
|
0x39, // Key9
|
||||||
|
0x61, // KeyA
|
||||||
|
0x62, // KeyB
|
||||||
|
0x63, // KeyC
|
||||||
|
0x64, // KeyD
|
||||||
|
0x65, // KeyE
|
||||||
|
0x66, // KeyF
|
||||||
|
0x67, // KeyG
|
||||||
|
0x68, // KeyH
|
||||||
|
0x69, // KeyI
|
||||||
|
0x6a, // KeyJ
|
||||||
|
0x6b, // KeyK
|
||||||
|
0x6c, // KeyL
|
||||||
|
0x6d, // KeyM
|
||||||
|
0x6e, // KeyN
|
||||||
|
0x6f, // KeyO
|
||||||
|
0x70, // KeyP
|
||||||
|
0x71, // KeyQ
|
||||||
|
0x72, // KeyR
|
||||||
|
0x73, // KeyS
|
||||||
|
0x74, // KeyT
|
||||||
|
0x75, // KeyU
|
||||||
|
0x76, // KeyV
|
||||||
|
0x77, // KeyW
|
||||||
|
0x78, // KeyX
|
||||||
|
0x79, // KeyY
|
||||||
|
0x7a, // KeyZ
|
||||||
|
};
|
||||||
|
|
||||||
|
char ascii = s_keyToAscii[_key];
|
||||||
|
|
||||||
|
if (_shiftModifier)
|
||||||
|
{
|
||||||
|
// Big letters.
|
||||||
|
if(ascii >= 'a' && ascii <= 'z')
|
||||||
|
{
|
||||||
|
ascii += 'A' - 'a';
|
||||||
|
}
|
||||||
|
// Special cases.
|
||||||
|
else if('-' == ascii)
|
||||||
|
{
|
||||||
|
ascii = '_';
|
||||||
|
}
|
||||||
|
else if ('=' == ascii)
|
||||||
|
{
|
||||||
|
ascii = '+';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ascii;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset, MouseState* _mouse, KeyState* _keyboard)
|
||||||
{
|
{
|
||||||
s_debug = _debug;
|
s_debug = _debug;
|
||||||
s_reset = _reset;
|
s_reset = _reset;
|
||||||
|
|
||||||
bool mouseLock = inputIsMouseLocked();
|
bool mouseLock = inputIsMouseLocked();
|
||||||
|
|
||||||
|
if (NULL != _keyboard)
|
||||||
|
{
|
||||||
|
_keyboard->m_modifiers = 0;
|
||||||
|
memset(_keyboard->m_keysDown, 0, sizeof(_keyboard->m_keysDown) );
|
||||||
|
}
|
||||||
|
|
||||||
const Event* ev;
|
const Event* ev;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -200,6 +310,16 @@ namespace entry
|
||||||
{
|
{
|
||||||
const KeyEvent* key = static_cast<const KeyEvent*>(ev);
|
const KeyEvent* key = static_cast<const KeyEvent*>(ev);
|
||||||
inputSetKeyState(key->m_key, key->m_modifiers, key->m_down);
|
inputSetKeyState(key->m_key, key->m_modifiers, key->m_down);
|
||||||
|
|
||||||
|
if (NULL != _keyboard)
|
||||||
|
{
|
||||||
|
_keyboard->m_modifiers |= key->m_modifiers;
|
||||||
|
|
||||||
|
if (key->m_down)
|
||||||
|
{
|
||||||
|
_keyboard->m_keysDown[key->m_key] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -124,6 +124,8 @@ namespace entry
|
||||||
KeyX,
|
KeyX,
|
||||||
KeyY,
|
KeyY,
|
||||||
KeyZ,
|
KeyZ,
|
||||||
|
|
||||||
|
Count,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -144,11 +146,23 @@ namespace entry
|
||||||
uint8_t m_buttons[entry::MouseButton::Count];
|
uint8_t m_buttons[entry::MouseButton::Count];
|
||||||
};
|
};
|
||||||
|
|
||||||
bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset, MouseState* _mouse = NULL);
|
struct KeyState
|
||||||
|
{
|
||||||
|
uint8_t m_modifiers;
|
||||||
|
bool m_keysDown[entry::Key::Count];
|
||||||
|
};
|
||||||
|
|
||||||
|
char keyToAscii(entry::Key::Enum _key, bool _shiftModifier);
|
||||||
|
bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset, MouseState* _mouse = NULL, KeyState* _keyboard = NULL);
|
||||||
|
|
||||||
bx::FileReaderI* getFileReader();
|
bx::FileReaderI* getFileReader();
|
||||||
bx::FileWriterI* getFileWriter();
|
bx::FileWriterI* getFileWriter();
|
||||||
|
|
||||||
|
void setWindowSize(uint32_t _width, uint32_t _height);
|
||||||
|
bool setWindowTitle(const char* _title);
|
||||||
|
void toggleWindowFrame();
|
||||||
|
void setMouseLock(bool _lock);
|
||||||
|
|
||||||
} // namespace entry
|
} // namespace entry
|
||||||
|
|
||||||
#endif // ENTRY_H_HEADER_GUARD
|
#endif // ENTRY_H_HEADER_GUARD
|
||||||
|
|
|
@ -207,6 +207,11 @@ namespace entry
|
||||||
BX_UNUSED(_width, _height);
|
BX_UNUSED(_width, _height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
BX_UNUSED(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,11 @@ namespace entry
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
BX_UNUSED(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,6 +86,11 @@ namespace entry
|
||||||
BX_UNUSED(_width, _height);
|
BX_UNUSED(_width, _height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
BX_UNUSED(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -326,6 +326,11 @@ namespace entry
|
||||||
XSendEvent(s_ctx.m_display, s_ctx.m_window, false, ResizeRedirectMask, (XEvent*)&ev);
|
XSendEvent(s_ctx.m_display, s_ctx.m_window, false, ResizeRedirectMask, (XEvent*)&ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
BX_UNUSED(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,11 @@ namespace entry
|
||||||
BX_UNUSED(_width, _height);
|
BX_UNUSED(_width, _height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
BX_UNUSED(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -281,6 +281,11 @@ namespace entry
|
||||||
BX_UNUSED(_width, _height);
|
BX_UNUSED(_width, _height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
BX_UNUSED(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,10 +70,6 @@ namespace entry
|
||||||
const Event* poll();
|
const Event* poll();
|
||||||
void release(const Event* _event);
|
void release(const Event* _event);
|
||||||
|
|
||||||
void setWindowSize(uint32_t _width, uint32_t _height);
|
|
||||||
void toggleWindowFrame();
|
|
||||||
void setMouseLock(bool _lock);
|
|
||||||
|
|
||||||
class EventQueue
|
class EventQueue
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -25,6 +25,11 @@ namespace entry
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
BX_UNUSED(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -304,6 +304,11 @@ namespace entry
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
SDL_WM_SetCaption(_title, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
MainThreadEntry m_mte;
|
MainThreadEntry m_mte;
|
||||||
bx::Thread m_thread;
|
bx::Thread m_thread;
|
||||||
|
|
||||||
|
@ -342,6 +347,11 @@ namespace entry
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
s_ctx.setWindowTitle(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -574,6 +574,11 @@ namespace entry
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
return (1 == SetWindowText(m_hwnd, _title));
|
||||||
|
}
|
||||||
|
|
||||||
static LRESULT CALLBACK wndProc(HWND _hwnd, UINT _id, WPARAM _wparam, LPARAM _lparam);
|
static LRESULT CALLBACK wndProc(HWND _hwnd, UINT _id, WPARAM _wparam, LPARAM _lparam);
|
||||||
|
|
||||||
EventQueue m_eventQueue;
|
EventQueue m_eventQueue;
|
||||||
|
@ -621,6 +626,11 @@ namespace entry
|
||||||
PostMessage(s_ctx.m_hwnd, WM_USER_SET_WINDOW_SIZE, 0, (_height<<16) | (_width&0xffff) );
|
PostMessage(s_ctx.m_hwnd, WM_USER_SET_WINDOW_SIZE, 0, (_height<<16) | (_width&0xffff) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setWindowTitle(const char* _title)
|
||||||
|
{
|
||||||
|
return s_ctx.setWindowTitle(_title);
|
||||||
|
}
|
||||||
|
|
||||||
void toggleWindowFrame()
|
void toggleWindowFrame()
|
||||||
{
|
{
|
||||||
PostMessage(s_ctx.m_hwnd, WM_USER_TOGGLE_WINDOW_FRAME, 0, 0);
|
PostMessage(s_ctx.m_hwnd, WM_USER_TOGGLE_WINDOW_FRAME, 0, 0);
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
#include <bx/uint32_t.h>
|
#include <bx/uint32_t.h>
|
||||||
#include <bx/fpumath.h>
|
#include <bx/fpumath.h>
|
||||||
#include <bx/handlealloc.h>
|
#include <bx/handlealloc.h>
|
||||||
#include <bgfx.h>
|
|
||||||
|
|
||||||
#include "../entry/dbg.h"
|
#include "../entry/dbg.h"
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
|
@ -456,6 +455,11 @@ struct Imgui
|
||||||
return m_active == _id;
|
return m_active == _id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isActiveInputField(uint32_t _id) const
|
||||||
|
{
|
||||||
|
return m_inputField == _id;
|
||||||
|
}
|
||||||
|
|
||||||
bool isHot(uint32_t _id) const
|
bool isHot(uint32_t _id) const
|
||||||
{
|
{
|
||||||
return m_hot == _id;
|
return m_hot == _id;
|
||||||
|
@ -494,10 +498,21 @@ struct Imgui
|
||||||
clearInput();
|
clearInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void clearActiveInputField()
|
||||||
|
{
|
||||||
|
m_inputField = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void setActive(uint32_t _id)
|
void setActive(uint32_t _id)
|
||||||
{
|
{
|
||||||
m_active = _id;
|
m_active = _id;
|
||||||
m_wentActive = true;
|
m_wentActive = true;
|
||||||
|
m_inputField = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setActiveInputField(uint32_t _id)
|
||||||
|
{
|
||||||
|
m_inputField = _id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setHot(uint32_t _id)
|
void setHot(uint32_t _id)
|
||||||
|
@ -551,7 +566,41 @@ struct Imgui
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateInput(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll)
|
bool inputLogic(uint32_t _id, bool _over)
|
||||||
|
{
|
||||||
|
bool res = false;
|
||||||
|
|
||||||
|
if (!anyActive() )
|
||||||
|
{
|
||||||
|
if (_over)
|
||||||
|
{
|
||||||
|
setHot(_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isHot(_id)
|
||||||
|
&& m_leftPressed)
|
||||||
|
{
|
||||||
|
setActiveInputField(_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isHot(_id) )
|
||||||
|
{
|
||||||
|
m_isHot = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_leftPressed
|
||||||
|
&& !m_isHot
|
||||||
|
&& m_inputField != 0)
|
||||||
|
{
|
||||||
|
clearActiveInputField();
|
||||||
|
res = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateInput(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, char _inputChar)
|
||||||
{
|
{
|
||||||
bool left = (_button & IMGUI_MBUT_LEFT) != 0;
|
bool left = (_button & IMGUI_MBUT_LEFT) != 0;
|
||||||
|
|
||||||
|
@ -561,9 +610,16 @@ struct Imgui
|
||||||
m_leftReleased = m_left && !left;
|
m_leftReleased = m_left && !left;
|
||||||
m_left = left;
|
m_left = left;
|
||||||
m_scroll = _scroll;
|
m_scroll = _scroll;
|
||||||
|
|
||||||
|
if (_inputChar > 0x80)
|
||||||
|
{
|
||||||
|
_inputChar = 0;
|
||||||
|
}
|
||||||
|
m_lastChar = m_char;
|
||||||
|
m_char = _inputChar;
|
||||||
}
|
}
|
||||||
|
|
||||||
void beginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, uint8_t _view)
|
void beginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, char _inputChar, uint8_t _view)
|
||||||
{
|
{
|
||||||
nvgBeginFrame(m_nvg, _width, _height, 1.0f, NVG_STRAIGHT_ALPHA);
|
nvgBeginFrame(m_nvg, _width, _height, 1.0f, NVG_STRAIGHT_ALPHA);
|
||||||
|
|
||||||
|
@ -575,7 +631,7 @@ struct Imgui
|
||||||
bx::mtxOrtho(proj, 0.0f, (float)_width, (float)_height, 0.0f, 0.0f, 1000.0f);
|
bx::mtxOrtho(proj, 0.0f, (float)_width, (float)_height, 0.0f, 0.0f, 1000.0f);
|
||||||
bgfx::setViewTransform(_view, NULL, proj);
|
bgfx::setViewTransform(_view, NULL, proj);
|
||||||
|
|
||||||
updateInput(_mx, _my, _button, _scroll);
|
updateInput(_mx, _my, _button, _scroll, _inputChar);
|
||||||
|
|
||||||
m_hot = m_hotToBe;
|
m_hot = m_hotToBe;
|
||||||
m_hotToBe = 0;
|
m_hotToBe = 0;
|
||||||
|
@ -917,6 +973,77 @@ struct Imgui
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void input(const char* _label, char* _str, uint32_t _len, bool _enabled)
|
||||||
|
{
|
||||||
|
m_widgetId++;
|
||||||
|
const uint16_t id = (m_areaId << 8) | m_widgetId;
|
||||||
|
int32_t xx = m_widgetX;
|
||||||
|
int32_t yy = m_widgetY;
|
||||||
|
m_widgetY += BUTTON_HEIGHT + DEFAULT_SPACING;
|
||||||
|
|
||||||
|
const bool drawLabel = (NULL != _label && _label[0] != '\0');
|
||||||
|
|
||||||
|
if (drawLabel)
|
||||||
|
{
|
||||||
|
drawText(xx
|
||||||
|
, yy + BUTTON_HEIGHT / 2 + TEXT_HEIGHT / 2
|
||||||
|
, ImguiTextAlign::Left
|
||||||
|
, _label
|
||||||
|
, imguiRGBA(255, 255, 255, 200)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle input.
|
||||||
|
if (isActiveInputField(id) )
|
||||||
|
{
|
||||||
|
const size_t cursor = size_t(strlen(_str));
|
||||||
|
|
||||||
|
if (m_char == 0x08) //backspace
|
||||||
|
{
|
||||||
|
_str[cursor-1] = '\0';
|
||||||
|
}
|
||||||
|
else if (m_char == 0x0d || m_char == 0x1b) //enter or escape
|
||||||
|
{
|
||||||
|
clearActiveInputField();
|
||||||
|
}
|
||||||
|
else if (cursor < _len-1
|
||||||
|
&& 0 != m_char)
|
||||||
|
{
|
||||||
|
_str[cursor] = m_char;
|
||||||
|
_str[cursor+1] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw input area.
|
||||||
|
int32_t height = BUTTON_HEIGHT;
|
||||||
|
int32_t width = m_widgetW - 2;
|
||||||
|
if (drawLabel)
|
||||||
|
{
|
||||||
|
uint32_t numVertices = 0; //unused
|
||||||
|
const int32_t labelWidth = int32_t(getTextLength(m_fonts[m_currentFontIdx].m_cdata, _label, numVertices));
|
||||||
|
xx += (labelWidth + 6);
|
||||||
|
width -= (labelWidth + 6);
|
||||||
|
}
|
||||||
|
const bool enabled = _enabled && isEnabled(m_areaId);
|
||||||
|
const bool over = enabled && inRect(xx, yy, width, height);
|
||||||
|
const bool res = inputLogic(id, over);
|
||||||
|
|
||||||
|
drawRoundedRect( (float)xx
|
||||||
|
, (float)yy
|
||||||
|
, (float)width
|
||||||
|
, (float)height
|
||||||
|
, (float)BUTTON_HEIGHT / 5 - 1
|
||||||
|
, isActiveInputField(id)?imguiRGBA(255,196,0,255):imguiRGBA(128,128,128,96)
|
||||||
|
);
|
||||||
|
|
||||||
|
drawText(xx + 6
|
||||||
|
, yy + BUTTON_HEIGHT / 2 + TEXT_HEIGHT / 2
|
||||||
|
, ImguiTextAlign::Left
|
||||||
|
, _str
|
||||||
|
, isActiveInputField(id)?imguiRGBA(0, 0, 0, 255):imguiRGBA(255,255,255,255)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void image(bgfx::TextureHandle _image, float _lod, int32_t _width, int32_t _height, ImguiImageAlign::Enum _align)
|
void image(bgfx::TextureHandle _image, float _lod, int32_t _width, int32_t _height, ImguiImageAlign::Enum _align)
|
||||||
{
|
{
|
||||||
int32_t xx;
|
int32_t xx;
|
||||||
|
@ -1936,6 +2063,9 @@ struct Imgui
|
||||||
uint32_t m_active;
|
uint32_t m_active;
|
||||||
uint32_t m_hot;
|
uint32_t m_hot;
|
||||||
uint32_t m_hotToBe;
|
uint32_t m_hotToBe;
|
||||||
|
char m_char;
|
||||||
|
char m_lastChar;
|
||||||
|
uint32_t m_inputField;
|
||||||
int32_t m_dragX;
|
int32_t m_dragX;
|
||||||
int32_t m_dragY;
|
int32_t m_dragY;
|
||||||
float m_dragOrig;
|
float m_dragOrig;
|
||||||
|
@ -2025,9 +2155,9 @@ void imguiDestroy()
|
||||||
s_imgui.destroy();
|
s_imgui.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void imguiBeginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, uint8_t _view)
|
void imguiBeginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, char _inputChar, uint8_t _view)
|
||||||
{
|
{
|
||||||
s_imgui.beginFrame(_mx, _my, _button, _scroll, _width, _height, _view);
|
s_imgui.beginFrame(_mx, _my, _button, _scroll, _width, _height, _inputChar, _view);
|
||||||
}
|
}
|
||||||
|
|
||||||
void imguiEndFrame()
|
void imguiEndFrame()
|
||||||
|
@ -2111,6 +2241,11 @@ bool imguiSlider(const char* _text, int32_t& _val, int32_t _vmin, int32_t _vmax,
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void imguiInput(const char* _label, char* _str, uint32_t _len, bool _enabled)
|
||||||
|
{
|
||||||
|
s_imgui.input(_label, _str, _len, _enabled);
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t imguiChooseUseMacroInstead(uint32_t _selected, ...)
|
uint32_t imguiChooseUseMacroInstead(uint32_t _selected, ...)
|
||||||
{
|
{
|
||||||
va_list argList;
|
va_list argList;
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
#ifndef IMGUI_H_HEADER_GUARD
|
#ifndef IMGUI_H_HEADER_GUARD
|
||||||
#define IMGUI_H_HEADER_GUARD
|
#define IMGUI_H_HEADER_GUARD
|
||||||
|
|
||||||
|
#include <bgfx.h>
|
||||||
|
|
||||||
#define IMGUI_MBUT_LEFT 0x01
|
#define IMGUI_MBUT_LEFT 0x01
|
||||||
#define IMGUI_MBUT_RIGHT 0x02
|
#define IMGUI_MBUT_RIGHT 0x02
|
||||||
|
|
||||||
|
@ -71,7 +73,7 @@ void imguiSetFont(ImguiFontHandle _handle);
|
||||||
ImguiFontHandle imguiCreate(const void* _data, float _fontSize=15.0f);
|
ImguiFontHandle imguiCreate(const void* _data, float _fontSize=15.0f);
|
||||||
void imguiDestroy();
|
void imguiDestroy();
|
||||||
|
|
||||||
void imguiBeginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, uint8_t _view = 31);
|
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);
|
||||||
void imguiEndFrame();
|
void imguiEndFrame();
|
||||||
|
|
||||||
bool imguiBeginScrollArea(const char* _name, int _x, int _y, int _width, int _height, int* _scroll, bool _enabled = true);
|
bool imguiBeginScrollArea(const char* _name, int _x, int _y, int _width, int _height, int* _scroll, bool _enabled = true);
|
||||||
|
@ -90,6 +92,7 @@ void imguiLabel(const char* _format, ...);
|
||||||
void imguiValue(const char* _text);
|
void imguiValue(const char* _text);
|
||||||
bool imguiSlider(const char* _text, float& _val, float _vmin, float _vmax, float _vinc, bool _enabled = true);
|
bool imguiSlider(const char* _text, float& _val, float _vmin, float _vmax, float _vinc, bool _enabled = true);
|
||||||
bool imguiSlider(const char* _text, int32_t& _val, int32_t _vmin, int32_t _vmax, bool _enabled = true);
|
bool imguiSlider(const char* _text, int32_t& _val, int32_t _vmin, int32_t _vmax, bool _enabled = true);
|
||||||
|
void imguiInput(const char* _label, char* _str, uint32_t _len, bool _enabled = true);
|
||||||
|
|
||||||
uint32_t imguiChooseUseMacroInstead(uint32_t _selected, ...);
|
uint32_t imguiChooseUseMacroInstead(uint32_t _selected, ...);
|
||||||
#define imguiChoose(...) imguiChooseUseMacroInstead(__VA_ARGS__, NULL)
|
#define imguiChoose(...) imguiChooseUseMacroInstead(__VA_ARGS__, NULL)
|
||||||
|
@ -104,6 +107,6 @@ void imguiColorWheel(float _rgb[3], bool _respectIndentation = false, bool _enab
|
||||||
void imguiColorWheel(const char* _str, float _rgb[3], bool& _activated, bool _enabled = true);
|
void imguiColorWheel(const char* _str, float _rgb[3], bool& _activated, bool _enabled = true);
|
||||||
|
|
||||||
void imguiImage(bgfx::TextureHandle _image, float _lod, int32_t _width, int32_t _height, ImguiImageAlign::Enum _align = ImguiImageAlign::LeftIndented);
|
void imguiImage(bgfx::TextureHandle _image, float _lod, int32_t _width, int32_t _height, ImguiImageAlign::Enum _align = ImguiImageAlign::LeftIndented);
|
||||||
void imguiImage(bgfx::TextureHandle _image, float _lod, float _width, float _aspect, ImguiImageAlign::Enum _align = ImguiImageAlign::LeftIndented); //_width is in [0.0-1.0] range.
|
void imguiImage(bgfx::TextureHandle _image, float _lod, float _scale, float _aspect, ImguiImageAlign::Enum _align = ImguiImageAlign::LeftIndented); //_scale is in [0.0-1.0] range.
|
||||||
|
|
||||||
#endif // IMGUI_H_HEADER_GUARD
|
#endif // IMGUI_H_HEADER_GUARD
|
||||||
|
|
Loading…
Reference in a new issue