/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2020 - Raw Material Software Limited JUCE is an open source library subject to commercial or open-source licensing. By using JUCE, you agree to the terms of both the JUCE 6 End-User License Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020). End User License Agreement: www.juce.com/juce-6-licence Privacy Policy: www.juce.com/juce-privacy-policy Or: You may also use this code under the terms of the GPL v3 (see www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ #pragma once //============================================================================== class ProjucerLookAndFeel : public LookAndFeel_V4 { public: ProjucerLookAndFeel(); ~ProjucerLookAndFeel() override; void drawTabButton (TabBarButton& button, Graphics&, bool isMouseOver, bool isMouseDown) override; int getTabButtonBestWidth (TabBarButton&, int tabDepth) override; void drawTabAreaBehindFrontButton (TabbedButtonBar&, Graphics&, int, int) override {} void drawPropertyComponentBackground (Graphics&, int, int, PropertyComponent&) override {} void drawPropertyComponentLabel (Graphics&, int width, int height, PropertyComponent&) override; Rectangle getPropertyComponentContentPosition (PropertyComponent&) override; void drawButtonBackground (Graphics&, Button&, const Colour& backgroundColour, bool isMouseOverButton, bool isButtonDown) override; void drawButtonText (Graphics&, TextButton&, bool isMouseOverButton, bool isButtonDown) override; void drawToggleButton (Graphics&, ToggleButton&, bool isMouseOverButton, bool isButtonDown) override; void drawTextEditorOutline (Graphics&, int, int, TextEditor&) override {} void fillTextEditorBackground (Graphics&, int width, int height, TextEditor&) override; void layoutFileBrowserComponent (FileBrowserComponent&, DirectoryContentsDisplayComponent*, FilePreviewComponent*, ComboBox* currentPathBox, TextEditor* filenameBox,Button* goUpButton) override; void drawFileBrowserRow (Graphics&, int width, int height, const File&, const String& filename, Image* icon, const String& fileSizeDescription, const String& fileTimeDescription, bool isDirectory, bool isItemSelected, int itemIndex, DirectoryContentsDisplayComponent&) override; void drawCallOutBoxBackground (CallOutBox&, Graphics&, const Path&, Image&) override; void drawMenuBarBackground (Graphics&, int width, int height, bool isMouseOverBar, MenuBarComponent&) override; void drawMenuBarItem (Graphics&, int width, int height, int itemIndex, const String& itemText, bool isMouseOverItem, bool isMenuOpen, bool isMouseOverBar, MenuBarComponent&) override; void drawResizableFrame (Graphics&, int w, int h, const BorderSize&) override; void drawComboBox (Graphics&, int width, int height, bool isButtonDown, int buttonX, int buttonY, int buttonW, int buttonH, ComboBox&) override; void drawTreeviewPlusMinusBox (Graphics&, const Rectangle& area, Colour backgroundColour, bool isItemOpen, bool isMouseOver) override; void drawProgressBar (Graphics&, ProgressBar&, int width, int height, double progress, const String& textToShow) override; //============================================================================== static Path getArrowPath (Rectangle arrowZone, const int direction, const bool filled, const Justification justification); static Path getChoiceComponentArrowPath (Rectangle arrowZone); static Font getPropertyComponentFont() { return { 14.0f, Font::FontStyleFlags::bold }; } static int getTextWidthForPropertyComponent (PropertyComponent* pp) { return jmin (200, pp->getWidth() / 2); } static ColourScheme getProjucerDarkColourScheme() { return { 0xff323e44, 0xff263238, 0xff323e44, 0xff8e989b, 0xffffffff, 0xffa45c94, 0xffffffff, 0xff181f22, 0xffffffff }; } //============================================================================== void setupColours(); private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProjucerLookAndFeel) };