Skip to content

Commit 1d4b60f

Browse files
[tools] Improve colour scheme
1 parent 0868d70 commit 1d4b60f

File tree

10 files changed

+103
-21
lines changed

10 files changed

+103
-21
lines changed

tools/jml-designer/Layer/LayerTreeItem.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
#include "Component/TreeView.hpp"
44
#include "Layer/LayerTree.hpp"
55

6+
#include <jml_tools/jml_tools.hpp>
7+
68
namespace jml::designer {
79

810
namespace {
@@ -33,8 +35,12 @@ auto LayerTreeItem::mightContainSubItems() -> bool { return _layer.getNumChildre
3335

3436
auto LayerTreeItem::paintItem(juce::Graphics& g, int width, int height) -> void
3537
{
36-
g.fillAll(isSelected() ? juce::Colours::black : juce::Colours::lightgrey);
37-
g.setColour(isSelected() ? juce::Colours::white : juce::Colours::black);
38+
auto highlight = isSelected();
39+
auto text = highlight ? getSchemeHighlightTextColour() : getSchemeDefaultTextColour();
40+
auto background = highlight ? getSchemeDefaultFillColour() : getSchemeHighlightFillColour();
41+
42+
g.fillAll(background);
43+
g.setColour(text);
3844
g.setFont(15.0F);
3945
g.drawText(getDisplayText(), 4, 0, width - 4, height, juce::Justification::centredLeft, true);
4046
}

tools/jml-viewer/Application/MainComponent.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
#include "Application/CommandIDs.hpp"
44

5+
#include <jml_tools/jml_tools.hpp>
6+
57
namespace jml::viewer {
68

79
MainComponent::MainComponent()
@@ -18,10 +20,7 @@ MainComponent::MainComponent()
1820

1921
MainComponent::~MainComponent() = default;
2022

21-
auto MainComponent::paint(juce::Graphics& g) -> void
22-
{
23-
g.fillAll(getLookAndFeel().findColour(juce::ResizableWindow::backgroundColourId));
24-
}
23+
auto MainComponent::paint(juce::Graphics& g) -> void { g.fillAll(getSchemeWindowBackgroundColour()); }
2524

2625
auto MainComponent::resized() -> void
2726
{
@@ -170,12 +169,8 @@ auto MainComponent::filesDropped(juce::StringArray const& files, int /*x*/, int
170169

171170
auto MainComponent::showSettingsWindow() -> void
172171
{
173-
_settings.showInDialogBox(
174-
"Settings",
175-
640,
176-
400,
177-
getLookAndFeel().findColour(juce::ResizableWindow::backgroundColourId)
178-
);
172+
auto const background = getLookAndFeel().findColour(juce::ResizableWindow::backgroundColourId);
173+
_settings.showInDialogBox("Settings", 640, 400, background);
179174
}
180175

181176
auto MainComponent::showAboutWindow() -> void

tools/jml-viewer/CodeEditor/CodeEditor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ auto CodeEditor::file(juce::File file) -> void
4545
}
4646
}
4747

48-
auto CodeEditor::paint(juce::Graphics& g) -> void { g.fillAll(Colours::whiteDirt); }
48+
auto CodeEditor::paint(juce::Graphics& g) -> void { g.fillAll(getSchemeWidgetBackgroundColour()); }
4949

5050
auto CodeEditor::resized() -> void { _editor.setBounds(getLocalBounds().reduced(16)); }
5151

tools/jml-viewer/Viewer/ComponentTree.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@ auto ComponentTree::Item::itemSelectionChanged(bool isNowSelected) -> void
5151
auto ComponentTree::Item::paintItem(juce::Graphics& g, int width, int height) -> void
5252
{
5353
auto const bounds = juce::Rectangle{0, 0, width, height}.reduced(1);
54-
g.setColour(Colours::whiteDirt);
54+
55+
g.setColour(getSchemeWidgetBackgroundColour());
5556
g.fillRect(bounds);
5657

57-
g.setColour(Colours::black);
58+
g.setColour(getSchemeDefaultTextColour());
5859
g.drawText(getUniqueName(), bounds.toFloat(), juce::Justification::centred, false);
5960
}
6061

tools/jml-viewer/Viewer/LuaScriptViewer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ auto LuaScriptViewer::setScriptFile(juce::File const& file) -> void
5757
_componentTree.restoreOpennessState(*componentTreeState, false);
5858
}
5959

60-
auto LuaScriptViewer::paint(juce::Graphics& g) -> void { g.fillAll(juce::Colours::white); }
60+
auto LuaScriptViewer::paint(juce::Graphics& g) -> void
61+
{
62+
g.fillAll(getSchemeWindowBackgroundColour());
63+
}
6164

6265
auto LuaScriptViewer::resized() -> void
6366
{

tools/jml-viewer/Viewer/ScriptPanel.cpp

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ ScriptPanel::ScriptPanel(juce::ApplicationCommandManager& commandManager)
99
, _editor{commandManager}
1010
{
1111
_tabs.setTabBarDepth(50);
12-
_tabs.addTab("Viewer", Colours::black, &_preview, false);
13-
_tabs.addTab("Code", Colours::black, &_editor, false);
12+
_tabs.addTab("Viewer", getSchemeWidgetBackgroundColour(), &_preview, false);
13+
_tabs.addTab("Code", getSchemeWidgetBackgroundColour(), &_editor, false);
1414
addAndMakeVisible(_tabs);
1515
}
1616

@@ -27,10 +27,10 @@ auto ScriptPanel::resized() -> void { _tabs.setBounds(getLocalBounds()); }
2727

2828
MultiScriptPanel::MultiScriptPanel(juce::ApplicationCommandManager& commandManager)
2929
: _commandManager{commandManager}
30+
, _openIcon{getIcon("launch_black_48dp_svg")}
3031
{
31-
auto background = getLookAndFeel().findColour(juce::ResizableWindow::backgroundColourId);
3232
setLayoutMode(juce::MultiDocumentPanel::LayoutMode::MaximisedWindowsWithTabs);
33-
setBackgroundColour(background);
33+
setBackgroundColour(getSchemeWindowBackgroundColour());
3434
useFullscreenWhenOneDocument(true);
3535
}
3636

@@ -48,6 +48,27 @@ auto MultiScriptPanel::reloadActiveScript() -> void
4848
}
4949
}
5050

51+
auto MultiScriptPanel::paint(juce::Graphics& g) -> void
52+
{
53+
jassert(_openIcon != nullptr);
54+
55+
MultiDocumentPanel::paint(g);
56+
57+
if (getNumDocuments() != 0) {
58+
return;
59+
}
60+
61+
auto area = getLocalBounds().reduced(proportionOfWidth(0.25F), proportionOfHeight(0.25F));
62+
63+
auto const iconArea = area.removeFromTop(area.proportionOfHeight(0.5));
64+
auto const text = juce::String{R"(Drop lua script or go to File -> Open)"};
65+
66+
_openIcon->drawWithin(g, iconArea.toFloat(), juce::RectanglePlacement::centred, 1.0);
67+
g.setColour(getSchemeDefaultTextColour());
68+
g.setFont(32.0F);
69+
g.drawText(text, area, juce::Justification::centred, false);
70+
}
71+
5172
auto MultiScriptPanel::tryToCloseDocumentAsync(
5273
juce::Component* component,
5374
std::function<void(bool)> callback

tools/jml-viewer/Viewer/ScriptPanel.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,14 @@ struct MultiScriptPanel final : juce::MultiDocumentPanel
3131
auto openScript(juce::File const& script) -> void;
3232
auto reloadActiveScript() -> void;
3333

34+
// juce::MultiDocumentPanel
35+
auto paint(juce::Graphics& g) -> void override;
3436
auto tryToCloseDocumentAsync(juce::Component* component, std::function<void(bool)> callback)
3537
-> void override;
3638

3739
private:
3840
juce::ApplicationCommandManager& _commandManager;
41+
std::unique_ptr<juce::Drawable> _openIcon;
3942
};
4043

4144
} // namespace jml::viewer

tools/jml-viewer/Viewer/ScriptViewport.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "ScriptViewport.hpp"
22

3+
#include <jml_tools/jml_tools.hpp>
4+
35
namespace jml::viewer {
46

57
auto ScriptViewport::setViewedComponent(juce::Component* component) -> void
@@ -15,7 +17,7 @@ auto ScriptViewport::setViewedComponent(juce::Component* component) -> void
1517

1618
auto ScriptViewport::paint(juce::Graphics& g) -> void
1719
{
18-
g.fillAll(juce::Colour::fromRGB(240, 240, 240));
20+
g.fillAll(getSchemeWidgetBackgroundColour());
1921
}
2022

2123
auto ScriptViewport::resized() -> void

tools/jml_tools/look_and_feel/LookAndFeel.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,46 @@ LookAndFeel::LookAndFeel() : juce::LookAndFeel_V4{makeColourScheme(true)}
6666
// setColour(juce::Slider::thumbColourId, Colours::black);
6767
}
6868

69+
auto getSchemeColour(juce::LookAndFeel_V4::ColourScheme::UIColour id) -> juce::Colour
70+
{
71+
auto& lnf = juce::LookAndFeel::getDefaultLookAndFeel();
72+
if (auto* v4 = dynamic_cast<juce::LookAndFeel_V4*>(&lnf); v4 != nullptr) {
73+
return v4->getCurrentColourScheme().getUIColour(id);
74+
}
75+
76+
// You need juce::LookAndFeel_V4 to be a base of the global LNF
77+
jassertfalse;
78+
return {};
79+
}
80+
81+
auto getSchemeWindowBackgroundColour() -> juce::Colour
82+
{
83+
return getSchemeColour(juce::LookAndFeel_V4::ColourScheme::windowBackground);
84+
}
85+
86+
auto getSchemeWidgetBackgroundColour() -> juce::Colour
87+
{
88+
return getSchemeColour(juce::LookAndFeel_V4::ColourScheme::widgetBackground);
89+
}
90+
91+
auto getSchemeDefaultFillColour() -> juce::Colour
92+
{
93+
return getSchemeColour(juce::LookAndFeel_V4::ColourScheme::defaultFill);
94+
}
95+
96+
auto getSchemeDefaultTextColour() -> juce::Colour
97+
{
98+
return getSchemeColour(juce::LookAndFeel_V4::ColourScheme::defaultText);
99+
}
100+
101+
auto getSchemeHighlightFillColour() -> juce::Colour
102+
{
103+
return getSchemeColour(juce::LookAndFeel_V4::ColourScheme::highlightedFill);
104+
}
105+
106+
auto getSchemeHighlightTextColour() -> juce::Colour
107+
{
108+
return getSchemeColour(juce::LookAndFeel_V4::ColourScheme::highlightedText);
109+
}
110+
69111
} // namespace jml

tools/jml_tools/look_and_feel/LookAndFeel.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,13 @@ struct LookAndFeel final : juce::LookAndFeel_V4
88
~LookAndFeel() override = default;
99
};
1010

11+
[[nodiscard]] auto getSchemeColour(juce::LookAndFeel_V4::ColourScheme::UIColour id) -> juce::Colour;
12+
13+
[[nodiscard]] auto getSchemeWindowBackgroundColour() -> juce::Colour;
14+
[[nodiscard]] auto getSchemeWidgetBackgroundColour() -> juce::Colour;
15+
[[nodiscard]] auto getSchemeDefaultFillColour() -> juce::Colour;
16+
[[nodiscard]] auto getSchemeDefaultTextColour() -> juce::Colour;
17+
[[nodiscard]] auto getSchemeHighlightFillColour() -> juce::Colour;
18+
[[nodiscard]] auto getSchemeHighlightTextColour() -> juce::Colour;
19+
1120
} // namespace jml

0 commit comments

Comments
 (0)