UI improvements
This commit is contained in:
parent
608d08d252
commit
e13d0c3638
9 changed files with 88 additions and 19 deletions
6
.gitmodules
vendored
6
.gitmodules
vendored
|
@ -7,3 +7,9 @@
|
||||||
[submodule "ebcl"]
|
[submodule "ebcl"]
|
||||||
path = ebcl
|
path = ebcl
|
||||||
url = ssh://git@git.nocternity.net:44/u/tseeker/libs/corelib
|
url = ssh://git@git.nocternity.net:44/u/tseeker/libs/corelib
|
||||||
|
[submodule "font-awesome"]
|
||||||
|
path = font-awesome
|
||||||
|
url = https://github.com/FortAwesome/Font-Awesome.git
|
||||||
|
[submodule "IconFontCppHeaders"]
|
||||||
|
path = IconFontCppHeaders
|
||||||
|
url = https://github.com/juliettef/IconFontCppHeaders.git
|
||||||
|
|
|
@ -45,6 +45,8 @@ flags = [
|
||||||
'-x',
|
'-x',
|
||||||
'c++',
|
'c++',
|
||||||
'-I','.',
|
'-I','.',
|
||||||
|
'-I','output',
|
||||||
|
'-I','IconFontCppHeaders',
|
||||||
'-I','imgui',
|
'-I','imgui',
|
||||||
'-I','glm',
|
'-I','glm',
|
||||||
'-I','ebcl/include',
|
'-I','ebcl/include',
|
||||||
|
|
1
IconFontCppHeaders
Submodule
1
IconFontCppHeaders
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit f3f13bdd7ac0a14bfa0dde584936b1cd77250267
|
13
Makefile
13
Makefile
|
@ -3,7 +3,7 @@ OUTDIR = output
|
||||||
CXXFLAGS += $(shell sdl2-config --cflags) -std=c++14 -Wall -g
|
CXXFLAGS += $(shell sdl2-config --cflags) -std=c++14 -Wall -g
|
||||||
CFLAGS += $(shell sdl2-config --cflags)
|
CFLAGS += $(shell sdl2-config --cflags)
|
||||||
CPPFLAGS += -I. -I$(OUTDIR) \
|
CPPFLAGS += -I. -I$(OUTDIR) \
|
||||||
-Iimgui -Iglm -Iebcl/include \
|
-Iimgui -Iglm -IIconFontCppHeaders -Iebcl/include \
|
||||||
-DREAL_BUILD -DGLM_ENABLE_EXPERIMENTAL
|
-DREAL_BUILD -DGLM_ENABLE_EXPERIMENTAL
|
||||||
LIBS += $(shell sdl2-config --libs) -lGL -lGLEW -ldl \
|
LIBS += $(shell sdl2-config --libs) -lGL -lGLEW -ldl \
|
||||||
$(LIBEBCL) -latomic
|
$(LIBEBCL) -latomic
|
||||||
|
@ -130,3 +130,14 @@ $(LIBEBCL): ebcl-config
|
||||||
|
|
||||||
$(PCH): externals.hh
|
$(PCH): externals.hh
|
||||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
|
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
$(OUTDIR)/window.o: window.cc $(OUTDIR)/font-awesome.inl
|
||||||
|
|
||||||
|
$(OUTDIR)/font-awesome.inl: font-awesome/fonts/fontawesome-webfont.ttf $(OUTDIR)/font-to-c
|
||||||
|
$(OUTDIR)/font-to-c -base85 font-awesome/fonts/fontawesome-webfont.ttf \
|
||||||
|
FontAwesome_ >$@
|
||||||
|
|
||||||
|
$(OUTDIR)/font-to-c: imgui/extra_fonts/binary_to_compressed_c.cpp
|
||||||
|
$(CXX) -o $@ $<
|
||||||
|
|
|
@ -28,6 +28,9 @@ using std::swap;
|
||||||
// ImGui
|
// ImGui
|
||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
|
|
||||||
|
// FontAwesome
|
||||||
|
#include <IconsFontAwesome.h>
|
||||||
|
|
||||||
// GLM
|
// GLM
|
||||||
#include <glm/mat3x3.hpp>
|
#include <glm/mat3x3.hpp>
|
||||||
#include <glm/gtx/euler_angles.hpp>
|
#include <glm/gtx/euler_angles.hpp>
|
||||||
|
@ -59,11 +62,6 @@ using ebcl::T_HashIndex;
|
||||||
using ebcl::T_ObjectTable;
|
using ebcl::T_ObjectTable;
|
||||||
using ebcl::T_KeyValueTable;
|
using ebcl::T_KeyValueTable;
|
||||||
|
|
||||||
// Silly decoration macros I use everywhere
|
|
||||||
#define __rd__
|
|
||||||
#define __wr__
|
|
||||||
#define __rw__
|
|
||||||
|
|
||||||
// Macros that enable/disable copying/moving
|
// Macros that enable/disable copying/moving
|
||||||
#define NO_COPY( CLS ) \
|
#define NO_COPY( CLS ) \
|
||||||
CLS( CLS const& ) = delete; \
|
CLS( CLS const& ) = delete; \
|
||||||
|
|
1
font-awesome
Submodule
1
font-awesome
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 8e8e659341916ad8a551835c43b30395cd90f489
|
2
imgui
2
imgui
|
@ -1 +1 @@
|
||||||
Subproject commit 4faf99eff564d68bef9e43cb293c851fc489afc3
|
Subproject commit 302757447aa6f0eed177e6cb33de887242a6355e
|
48
syncview.cc
48
syncview.cc
|
@ -22,6 +22,7 @@ struct T_SyncViewImpl_
|
||||||
const uint32_t ColHeaderText{ ImGui::GetColorU32( ImVec4{ 0 , 0 , 0 , 1 } ) };
|
const uint32_t ColHeaderText{ ImGui::GetColorU32( ImVec4{ 0 , 0 , 0 , 1 } ) };
|
||||||
const uint32_t ColMain{ ImGui::GetColorU32( ImVec4{ .4 , .4 , .4 , .8 } ) };
|
const uint32_t ColMain{ ImGui::GetColorU32( ImVec4{ .4 , .4 , .4 , .8 } ) };
|
||||||
const uint32_t ColSelection{ ImGui::GetColorU32( ImVec4{ .8 , 1 , .8 , .2 } ) };
|
const uint32_t ColSelection{ ImGui::GetColorU32( ImVec4{ .8 , 1 , .8 , .2 } ) };
|
||||||
|
const ImVec2 BtSize{ 20 , 0 };
|
||||||
|
|
||||||
float zoomLevel{ 0.f };
|
float zoomLevel{ 0.f };
|
||||||
float startPos{ 0.f };
|
float startPos{ 0.f };
|
||||||
|
@ -69,28 +70,51 @@ bool T_SyncViewImpl_::display( ) noexcept
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( Button( sync.playing( ) ? ICON_FA_STOP : ICON_FA_PLAY , BtSize ) ) {
|
||||||
|
sync.playing( ) = !sync.playing( ) && !sync.finished( );
|
||||||
|
}
|
||||||
|
if ( IsItemHovered( ) ) {
|
||||||
|
BeginTooltip( );
|
||||||
|
Text( sync.playing( ) ? "Stop" : "Play" );
|
||||||
|
EndTooltip( );
|
||||||
|
}
|
||||||
|
|
||||||
|
SameLine( );
|
||||||
|
|
||||||
|
if ( Button( ICON_FA_BACKWARD , BtSize ) ) {
|
||||||
|
sync.setTime( 0 );
|
||||||
|
}
|
||||||
|
if ( IsItemHovered( ) ) {
|
||||||
|
BeginTooltip( );
|
||||||
|
Text( "Rewind to 00:00.000" );
|
||||||
|
EndTooltip( );
|
||||||
|
}
|
||||||
|
|
||||||
|
SameLine( );
|
||||||
|
|
||||||
|
Text( ICON_FA_SEARCH );
|
||||||
|
bool zoomHovered{ IsItemHovered( ) };
|
||||||
|
SameLine( );
|
||||||
PushItemWidth( 100 );
|
PushItemWidth( 100 );
|
||||||
SliderFloat( "##zoom" , &zoomLevel , 0 , 1 , "%.2f" );
|
SliderFloat( "##zoom" , &zoomLevel , 0 , 1 , "%.2f" );
|
||||||
if ( IsItemHovered( ) ) {
|
if ( zoomHovered || IsItemHovered( ) ) {
|
||||||
BeginTooltip( );
|
BeginTooltip( );
|
||||||
Text( "Zoom level" );
|
Text( "Zoom level" );
|
||||||
EndTooltip( );
|
EndTooltip( );
|
||||||
}
|
}
|
||||||
PopItemWidth( );
|
PopItemWidth( );
|
||||||
SameLine( );
|
|
||||||
Checkbox( "##follow" , &followTime );
|
|
||||||
if ( IsItemHovered( ) ) {
|
|
||||||
BeginTooltip( );
|
|
||||||
Text( "Follow cursor" );
|
|
||||||
EndTooltip( );
|
|
||||||
}
|
|
||||||
SameLine( );
|
SameLine( );
|
||||||
|
|
||||||
PushID( "playing" );
|
if ( Button( followTime ? ICON_FA_LOCK : ICON_FA_UNLOCK , BtSize ) ) {
|
||||||
if ( Button( sync.playing( ) ? "Stop" : "Play" ) ) {
|
followTime = !followTime;
|
||||||
sync.playing( ) = !sync.playing( ) && !sync.finished( );
|
}
|
||||||
|
if ( IsItemHovered( ) ) {
|
||||||
|
BeginTooltip( );
|
||||||
|
Text( followTime ? "Follows the current position.\nClick to untie."
|
||||||
|
: "Not tied to the current position.\nClick to follow." );
|
||||||
|
EndTooltip( );
|
||||||
}
|
}
|
||||||
PopID( );
|
|
||||||
|
|
||||||
PushItemWidth( -1 );
|
PushItemWidth( -1 );
|
||||||
sequencerWidget( );
|
sequencerWidget( );
|
||||||
|
|
26
window.cc
26
window.cc
|
@ -3,6 +3,16 @@
|
||||||
#include "imgui_impl_sdl.h"
|
#include "imgui_impl_sdl.h"
|
||||||
#include <imgui_internal.h>
|
#include <imgui_internal.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
#include "font-awesome.inl"
|
||||||
|
|
||||||
|
static const ImWchar IconsRanges_[] = {
|
||||||
|
ICON_MIN_FA ,
|
||||||
|
ICON_MAX_FA ,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
T_Window::T_Window( )
|
T_Window::T_Window( )
|
||||||
{
|
{
|
||||||
|
@ -30,16 +40,32 @@ T_Window::T_Window( )
|
||||||
ImGui_ImplSdl_Init( window );
|
ImGui_ImplSdl_Init( window );
|
||||||
|
|
||||||
using namespace ImGui;
|
using namespace ImGui;
|
||||||
|
StyleColorsDark( );
|
||||||
ImGuiIO& io{ GetIO( ) };
|
ImGuiIO& io{ GetIO( ) };
|
||||||
{
|
{
|
||||||
ImFontConfig cfg;
|
ImFontConfig cfg;
|
||||||
cfg.SizePixels = 13.0f;
|
cfg.SizePixels = 13.0f;
|
||||||
defaultFont_ = io.Fonts->AddFontDefault( &cfg );
|
defaultFont_ = io.Fonts->AddFontDefault( &cfg );
|
||||||
|
|
||||||
|
ImFontConfig icons;
|
||||||
|
icons.MergeMode = true;
|
||||||
|
icons.PixelSnapH = true;
|
||||||
|
io.Fonts->AddFontFromMemoryCompressedBase85TTF(
|
||||||
|
FontAwesome__compressed_data_base85 , 13.f ,
|
||||||
|
&icons , IconsRanges_ );
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
ImFontConfig cfg;
|
ImFontConfig cfg;
|
||||||
cfg.SizePixels = 9.0f;
|
cfg.SizePixels = 9.0f;
|
||||||
smallFont_ = io.Fonts->AddFontDefault( &cfg );
|
smallFont_ = io.Fonts->AddFontDefault( &cfg );
|
||||||
|
|
||||||
|
ImFontConfig icons;
|
||||||
|
icons.MergeMode = true;
|
||||||
|
icons.PixelSnapH = true;
|
||||||
|
icons.DstFont = smallFont_;
|
||||||
|
io.Fonts->AddFontFromMemoryCompressedBase85TTF(
|
||||||
|
FontAwesome__compressed_data_base85 , 9.f ,
|
||||||
|
&icons , IconsRanges_ );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue