@ -174,6 +174,12 @@ using namespace IMGUI_STB_NAMESPACE;
void ImGui : : StyleColorsDark ( ImGuiStyle * dst )
{
# ifdef WIN98
// These colors don't make sense with win98 so just call this anyway
// also means I don't have to change all the examples
StyleWin98 ( dst ) ;
return ;
# endif
ImGuiStyle * style = dst ? dst : & ImGui : : GetStyle ( ) ;
ImVec4 * colors = style - > Colors ;
@ -229,6 +235,12 @@ void ImGui::StyleColorsDark(ImGuiStyle* dst)
void ImGui : : StyleColorsClassic ( ImGuiStyle * dst )
{
# ifdef WIN98
// These colors don't make sense with win98 so just call this anyway
// also means I don't have to change all the examples
StyleWin98 ( dst ) ;
return ;
# endif
ImGuiStyle * style = dst ? dst : & ImGui : : GetStyle ( ) ;
ImVec4 * colors = style - > Colors ;
@ -285,6 +297,13 @@ void ImGui::StyleColorsClassic(ImGuiStyle* dst)
// Those light colors are better suited with a thicker font than the default one + FrameBorder
void ImGui : : StyleColorsLight ( ImGuiStyle * dst )
{
# ifdef WIN98
// These colors don't make sense with win98 so just call this anyway
// also means I don't have to change all the examples
StyleWin98 ( dst ) ;
return ;
# endif
ImGuiStyle * style = dst ? dst : & ImGui : : GetStyle ( ) ;
ImVec4 * colors = style - > Colors ;
@ -338,6 +357,128 @@ void ImGui::StyleColorsLight(ImGuiStyle* dst)
colors [ ImGuiCol_ModalWindowDimBg ] = ImVec4 ( 0.20f , 0.20f , 0.20f , 0.35f ) ;
}
// Windows style config
# ifdef WIN98
void ImGui : : StyleWin98 ( ImGuiStyle * dst )
{
ImGuiStyle * style = dst ? dst : & ImGui : : GetStyle ( ) ;
style - > FrameBorderSize = 1.0f ;
style - > FramePadding = ImVec2 ( 4.0f , 4.0f ) ;
style - > WindowMenuButtonPosition = ImGuiDir_Right ;
style - > ScrollbarSize = 16.0f ;
ImVec4 * colors = style - > Colors ;
colors [ ImGuiCol_Text ] = ImVec4 ( 0.00f , 0.00f , 0.00f , 1.00f ) ;
colors [ ImGuiCol_TextDisabled ] = ImVec4 ( 0.60f , 0.60f , 0.60f , 1.00f ) ;
colors [ ImGuiCol_WindowBg ] = ImVec4 ( 0.75f , 0.75f , 0.75f , 1.00f ) ;
colors [ ImGuiCol_ChildBg ] = ImVec4 ( 0.75f , 0.75f , 0.75f , 1.00f ) ;
colors [ ImGuiCol_PopupBg ] = ImVec4 ( 0.75f , 0.75f , 0.75f , 1.00f ) ;
colors [ ImGuiCol_Border ] = ImVec4 ( 0.00f , 0.00f , 0.00f , 0.30f ) ;
colors [ ImGuiCol_BorderShadow ] = ImVec4 ( 0.00f , 0.00f , 0.00f , 0.00f ) ;
colors [ ImGuiCol_FrameBg ] = ImVec4 ( 1.00f , 1.00f , 1.00f , 1.00f ) ;
colors [ ImGuiCol_FrameBgHovered ] = ImVec4 ( 1.00f , 1.00f , 1.00f , 1.00f ) ;
colors [ ImGuiCol_FrameBgActive ] = ImVec4 ( 1.00f , 1.00f , 1.00f , 1.00f ) ;
colors [ ImGuiCol_TitleBg ] = ImVec4 ( 0.96f , 0.96f , 0.96f , 1.00f ) ;
colors [ ImGuiCol_TitleBgActive ] = ImVec4 ( 0.00f , 0.00f , 0.50f , 1.00f ) ;
colors [ ImGuiCol_TitleBgCollapsed ] = ImVec4 ( 1.00f , 1.00f , 1.00f , 0.51f ) ;
colors [ ImGuiCol_MenuBarBg ] = ImVec4 ( 0.86f , 0.86f , 0.86f , 1.00f ) ;
colors [ ImGuiCol_ScrollbarBg ] = ImVec4 ( 0.98f , 0.98f , 0.98f , 0.53f ) ;
colors [ ImGuiCol_ScrollbarGrab ] = ImVec4 ( 0.69f , 0.69f , 0.69f , 0.80f ) ;
colors [ ImGuiCol_ScrollbarGrabHovered ] = ImVec4 ( 0.49f , 0.49f , 0.49f , 0.80f ) ;
colors [ ImGuiCol_ScrollbarGrabActive ] = ImVec4 ( 0.49f , 0.49f , 0.49f , 1.00f ) ;
colors [ ImGuiCol_CheckMark ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 1.00f ) ;
colors [ ImGuiCol_SliderGrab ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.78f ) ;
colors [ ImGuiCol_SliderGrabActive ] = ImVec4 ( 0.46f , 0.54f , 0.80f , 0.60f ) ;
colors [ ImGuiCol_Button ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.40f ) ;
colors [ ImGuiCol_ButtonHovered ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 1.00f ) ;
colors [ ImGuiCol_ButtonActive ] = ImVec4 ( 0.06f , 0.53f , 0.98f , 1.00f ) ;
colors [ ImGuiCol_Header ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.31f ) ;
colors [ ImGuiCol_HeaderHovered ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.80f ) ;
colors [ ImGuiCol_HeaderActive ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 1.00f ) ;
colors [ ImGuiCol_Separator ] = ImVec4 ( 0.39f , 0.39f , 0.39f , 0.62f ) ;
colors [ ImGuiCol_SeparatorHovered ] = ImVec4 ( 0.14f , 0.44f , 0.80f , 0.78f ) ;
colors [ ImGuiCol_SeparatorActive ] = ImVec4 ( 0.14f , 0.44f , 0.80f , 1.00f ) ;
colors [ ImGuiCol_ResizeGrip ] = ImVec4 ( 0.80f , 0.80f , 0.80f , 0.56f ) ;
colors [ ImGuiCol_ResizeGripHovered ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.67f ) ;
colors [ ImGuiCol_ResizeGripActive ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.95f ) ;
colors [ ImGuiCol_Tab ] = ImVec4 ( 0.76f , 0.80f , 0.84f , 0.95f ) ;
colors [ ImGuiCol_TabHovered ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.95f ) ;
colors [ ImGuiCol_TabActive ] = ImVec4 ( 0.60f , 0.73f , 0.88f , 0.95f ) ;
colors [ ImGuiCol_TabUnfocused ] = ImVec4 ( 0.92f , 0.92f , 0.94f , 0.95f ) ;
colors [ ImGuiCol_TabUnfocusedActive ] = ImVec4 ( 0.74f , 0.82f , 0.91f , 1.00f ) ;
colors [ ImGuiCol_PlotLines ] = ImVec4 ( 0.39f , 0.39f , 0.39f , 1.00f ) ;
colors [ ImGuiCol_PlotLinesHovered ] = ImVec4 ( 1.00f , 0.43f , 0.35f , 1.00f ) ;
colors [ ImGuiCol_PlotHistogram ] = ImVec4 ( 0.90f , 0.70f , 0.00f , 1.00f ) ;
colors [ ImGuiCol_PlotHistogramHovered ] = ImVec4 ( 1.00f , 0.45f , 0.00f , 1.00f ) ;
colors [ ImGuiCol_TextSelectedBg ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.35f ) ;
colors [ ImGuiCol_DragDropTarget ] = ImVec4 ( 0.26f , 0.59f , 0.98f , 0.95f ) ;
colors [ ImGuiCol_NavHighlight ] = colors [ ImGuiCol_HeaderHovered ] ;
colors [ ImGuiCol_NavWindowingHighlight ] = ImVec4 ( 0.70f , 0.70f , 0.70f , 0.70f ) ;
colors [ ImGuiCol_NavWindowingDimBg ] = ImVec4 ( 0.20f , 0.20f , 0.20f , 0.20f ) ;
colors [ ImGuiCol_ModalWindowDimBg ] = ImVec4 ( 0.20f , 0.20f , 0.20f , 0.35f ) ;
if ( dst ! = NULL ) return ;
// Fonts + Icons
ImGuiIO & io = ImGui : : GetIO ( ) ;
for ( int i = 0 ; i < io . Fonts - > ConfigData . size ( ) ; i + + ) {
if ( strcmp ( io . Fonts - > ConfigData [ i ] . Name , " MS Sans Serif " ) ) {
return ;
}
}
ImFont * font = io . Fonts - > AddFontFromFileTTF ( " ../../MS Sans Serif.ttf " , 12.0f , NULL , io . Fonts - > GetGlyphRangesDefault ( ) ) ;
io . Fonts - > AddFontFromFileTTF ( " ../../MS Sans Serif Bold.ttf " , 12.0f , NULL , io . Fonts - > GetGlyphRangesDefault ( ) ) ;
// Run-length encoding of some icons
// In retrorespect I should have used an icon map like FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS
unsigned char minimize [ ] = { 86 , 6 , 6 , 6 , 0 } ;
unsigned char close [ ] = { 14 , 2 , 4 , 2 , 5 , 2 , 2 , 2 , 7 , 4 , 9 , 2 , 9 , 4 , 7 , 2 , 2 , 2 , 5 , 2 , 4 , 2 , 0 } ;
unsigned char * run_length [ ] = { minimize , close } ;
int rect_ids [ IM_ARRAYSIZE ( run_length ) ] ;
for ( int i = 0 ; i < IM_ARRAYSIZE ( run_length ) ; i + + ) {
rect_ids [ i ] = io . Fonts - > AddCustomRectFontGlyph ( font , 214 + i , 12 , 9 , 13 + 1 ) ;
}
io . Fonts - > Build ( ) ;
unsigned char * tex_pixels = NULL ;
int tex_width , tex_height ;
io . Fonts - > GetTexDataAsRGBA32 ( & tex_pixels , & tex_width , & tex_height ) ;
for ( int i = 0 ; i < IM_ARRAYSIZE ( run_length ) ; i + + ) {
int rect_id = rect_ids [ i ] ;
if ( const ImFontAtlas : : CustomRect * rect = io . Fonts - > GetCustomRectByIndex ( rect_id ) ) {
bool black = false ;
unsigned char * run = run_length [ i ] ;
int run_size = 0 ;
for ( int y = 0 ; y < rect - > Height ; y + + )
{
ImU32 * p = ( ImU32 * ) tex_pixels + ( rect - > Y + y ) * tex_width + ( rect - > X ) ;
for ( int x = rect - > Width ; x > 0 ; x - - ) {
if ( black ) * p = IM_COL32 ( 255 , 0 , 0 , 255 ) ;
p + + ;
run_size + + ;
if ( run_size = = * run ) {
run_size = 0 ;
run + + ;
black = ! black ;
if ( * run = = 0 ) goto done ;
}
}
}
done : ;
}
}
}
# endif
//-----------------------------------------------------------------------------
// ImDrawList
//-----------------------------------------------------------------------------