git.haldean.org qb / main colors.cpp
main

Tree @main (Download .tar.gz)

colors.cpp @mainraw · history · blame

#include "imgui.h"
#include "colors.hpp"

namespace qb {
  namespace theme {
    int32_t colors[color::ncolors] = {0};

    static const char * colorname(color c) {
      switch (c) {
      case background: return "background";
      case waveform: return "waveform";
      case playhead: return "playhead";
      case hit: return "track hit";
      case ruler: return "time ruler";
      case ruler_text: return "time ruler text";
      }
      return "unknown";
    }

    void setdefault() {
      colors[color::background] = IM_COL32(5, 2, 3, 255);
      colors[color::waveform] = IM_COL32(255, 45, 0, 255);
      colors[color::playhead] = IM_COL32(255, 0, 128, 125);
      colors[color::hit] = IM_COL32(255, 203, 0, 255);
      colors[color::ruler] = IM_COL32(214, 14, 96, 255);
      colors[color::ruler_text] = IM_COL32(255, 255, 255, 255);

      ImVec4* colors = ImGui::GetStyle().Colors;
      colors[ImGuiCol_Text]                   = ImVec4(1.00f, 1.00f, 1.00f, 1.00f);
      colors[ImGuiCol_TextDisabled]           = ImVec4(0.50f, 0.50f, 0.50f, 1.00f);
      colors[ImGuiCol_WindowBg]               = ImVec4(0.06f, 0.06f, 0.06f, 0.94f);
      colors[ImGuiCol_ChildBg]                = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
      colors[ImGuiCol_PopupBg]                = ImVec4(0.08f, 0.08f, 0.08f, 0.94f);
      colors[ImGuiCol_Border]                 = ImVec4(0.43f, 0.43f, 0.50f, 0.50f);
      colors[ImGuiCol_BorderShadow]           = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
      colors[ImGuiCol_FrameBg]                = ImVec4(0.16f, 0.16f, 0.16f, 0.54f);
      colors[ImGuiCol_FrameBgHovered]         = ImVec4(0.30f, 0.30f, 0.30f, 0.40f);
      colors[ImGuiCol_FrameBgActive]          = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_TitleBg]                = ImVec4(0.04f, 0.04f, 0.04f, 1.00f);
      colors[ImGuiCol_TitleBgActive]          = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_TitleBgCollapsed]       = ImVec4(0.00f, 0.00f, 0.00f, 0.51f);
      colors[ImGuiCol_MenuBarBg]              = ImVec4(0.14f, 0.14f, 0.14f, 1.00f);
      colors[ImGuiCol_ScrollbarBg]            = ImVec4(0.02f, 0.02f, 0.02f, 0.53f);
      colors[ImGuiCol_ScrollbarGrab]          = ImVec4(0.31f, 0.31f, 0.31f, 1.00f);
      colors[ImGuiCol_ScrollbarGrabHovered]   = ImVec4(0.41f, 0.41f, 0.41f, 1.00f);
      colors[ImGuiCol_ScrollbarGrabActive]    = ImVec4(0.51f, 0.51f, 0.51f, 1.00f);
      colors[ImGuiCol_CheckMark]              = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_SliderGrab]             = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_SliderGrabActive]       = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_Button]                 = ImVec4(0.52f, 0.52f, 0.52f, 0.40f);
      colors[ImGuiCol_ButtonHovered]          = ImVec4(0.22f, 0.22f, 0.22f, 1.00f);
      colors[ImGuiCol_ButtonActive]           = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_Header]                 = ImVec4(0.62f, 0.62f, 0.62f, 0.31f);
      colors[ImGuiCol_HeaderHovered]          = ImVec4(0.45f, 0.45f, 0.45f, 0.80f);
      colors[ImGuiCol_HeaderActive]           = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_Separator]              = ImVec4(0.50f, 0.43f, 0.43f, 0.50f);
      colors[ImGuiCol_SeparatorHovered]       = ImVec4(0.75f, 0.00f, 0.10f, 0.78f);
      colors[ImGuiCol_SeparatorActive]        = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_ResizeGrip]             = ImVec4(1.00f, 1.00f, 1.00f, 0.24f);
      colors[ImGuiCol_ResizeGripHovered]      = ImVec4(1.00f, 1.00f, 1.00f, 0.67f);
      colors[ImGuiCol_ResizeGripActive]       = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_Tab]                    = ImVec4(1.00f, 0.00f, 0.16f, 0.44f);
      colors[ImGuiCol_TabHovered]             = ImVec4(1.00f, 0.00f, 0.16f, 0.80f);
      colors[ImGuiCol_TabActive]              = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_TabUnfocused]           = ImVec4(0.17f, 0.10f, 0.15f, 0.97f);
      colors[ImGuiCol_TabUnfocusedActive]     = ImVec4(0.47f, 0.18f, 0.28f, 1.00f);
      colors[ImGuiCol_PlotLines]              = ImVec4(0.61f, 0.61f, 0.61f, 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.60f, 0.00f, 1.00f);
      colors[ImGuiCol_TableHeaderBg]          = ImVec4(0.19f, 0.19f, 0.20f, 1.00f);
      colors[ImGuiCol_TableBorderStrong]      = ImVec4(0.31f, 0.31f, 0.35f, 1.00f);
      colors[ImGuiCol_TableBorderLight]       = ImVec4(0.23f, 0.23f, 0.25f, 1.00f);
      colors[ImGuiCol_TableRowBg]             = ImVec4(0.00f, 0.00f, 0.00f, 0.00f);
      colors[ImGuiCol_TableRowBgAlt]          = ImVec4(1.00f, 1.00f, 1.00f, 0.06f);
      colors[ImGuiCol_TextSelectedBg]         = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_DragDropTarget]         = ImVec4(1.00f, 1.00f, 0.00f, 0.90f);
      colors[ImGuiCol_NavHighlight]           = ImVec4(1.00f, 0.00f, 0.16f, 1.00f);
      colors[ImGuiCol_NavWindowingHighlight]  = ImVec4(1.00f, 1.00f, 1.00f, 0.70f);
      colors[ImGuiCol_NavWindowingDimBg]      = ImVec4(0.80f, 0.80f, 0.80f, 0.20f);
      colors[ImGuiCol_ModalWindowDimBg]       = ImVec4(0.80f, 0.80f, 0.80f, 0.35f);
    }

    void showeditor() {
      ImGui::Begin("theme editor");
      for (int c = 0; c < ncolors; c++) {
        ImVec4 ic = ImColor(colors[c]);
        ImGui::ColorEdit4(colorname((color)c), &ic.x);
        colors[c] = ImColor(ic);
      }
      ImGui::ShowStyleEditor();
      ImGui::End();
    }
  }
}