// SPDX-License-Identifier: GPLv3-or-later WITH Appstore-exception // Copyright (C) 2020 Jesse Chappell #pragma once #include "JuceHeader.h" class CustomLookAndFeel : public LookAndFeel_V4 { public: CustomLookAndFeel(); void setLanguageCode(const String & lang); //void fillWithBackgroundTexture (Graphics&); //static void fillWithBackgroundTexture (Component&, Graphics&); void setLabelCornerRadius(float val) { labelCornerRadius = val; } float getLabelCornerRadius() const { return labelCornerRadius; } void drawTabButton (TabBarButton& button, Graphics&, bool isMouseOver, bool isMouseDown) override; void drawTabbedButtonBarBackground (TabbedButtonBar&, Graphics&) override; void drawTabAreaBehindFrontButton (TabbedButtonBar&, Graphics&, int, int) override; void drawTabButtonText (TabBarButton& button, Graphics& g, bool isMouseOver, bool isMouseDown) override; int getTabButtonSpaceAroundImage() override; int getTabButtonBestWidth (TabBarButton&, int tabDepth) override; juce::Rectangle getTabButtonExtraComponentBounds (const TabBarButton&, juce::Rectangle& textArea, Component& extraComp) override; void createTabTextLayout (const TabBarButton& button, float length, float depth, Colour colour, TextLayout& textLayout); //Typeface::Ptr getTypefaceForFont (const Font& font) override; Font getMenuBarFont (MenuBarComponent& menuBar, int /*itemIndex*/, const String& /*itemText*/) override; Button* createSliderButton (Slider&, const bool isIncrement) override; Label* createSliderTextBox (Slider&) override; Font getTextButtonFont (TextButton&, int buttonHeight) override; void drawButtonText (Graphics& g, TextButton& button, bool /*isMouseOverButton*/, bool /*isButtonDown*/) override; void drawButtonTextWithAlignment (Graphics& g, TextButton& button, bool /*isMouseOverButton*/, bool /*isButtonDown*/, Justification textjust = Justification::centred) ; void drawBubble (Graphics&, BubbleComponent&, const Point& tip, const juce::Rectangle& body) override; void drawFileBrowserRow (Graphics&, int width, int height, const File& file, const String& filename, Image* icon, const String& fileSizeDescription, const String& fileTimeDescription, bool isDirectory, bool isItemSelected, int itemIndex, DirectoryContentsDisplayComponent&) override; Button* createFileBrowserGoUpButton() override; void layoutFileBrowserComponent (FileBrowserComponent&, DirectoryContentsDisplayComponent*, FilePreviewComponent*, ComboBox* currentPathBox, TextEditor* filenameBox, Button* goUpButton) override; void drawTreeviewPlusMinusBox (Graphics& g, const juce::Rectangle& area, Colour backgroundColour, bool isOpen, bool isMouseOver) override; void drawToggleButton (Graphics& g, ToggleButton& button, bool isMouseOverButton, bool isButtonDown) override; void drawTickBox (Graphics&, Component&, float x, float y, float w, float h, bool ticked, bool isEnabled, bool isMouseOverButton, bool isButtonDown) override; void drawRotarySlider (Graphics& g, int x, int y, int width, int height, float sliderPos, const float rotaryStartAngle, const float rotaryEndAngle, Slider& slider) override; void drawLinearSlider (Graphics&, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, const Slider::SliderStyle, Slider&) override; Font getSliderPopupFont (Slider&) override; int getSliderPopupPlacement (Slider&) override; int getSliderThumbRadius (Slider& slider) override; Slider::SliderLayout getSliderLayout (Slider& slider) override; void drawDrawableButton (Graphics& g, DrawableButton& button, bool /*isMouseOverButton*/, bool /*isButtonDown*/) override; void drawCallOutBoxBackground (CallOutBox& box, Graphics& g, const Path& path, Image& cachedImage) override; Font getLabelFont (Label& label) override; void drawLabel (Graphics& g, Label& label) override; PopupMenu::Options getOptionsForComboBoxPopupMenu (ComboBox&, Label&) override; Justification sliderTextJustification = Justification::centred; protected: Font myFont; float fontScale; float labelCornerRadius = 4.0f; String languageCode; public: }; class CustomBigTextLookAndFeel : public CustomLookAndFeel { public: CustomBigTextLookAndFeel(float maxTextSize=32.0f); Font getTextButtonFont (TextButton&, int buttonHeight) override; Button* createSliderButton (Slider&, const bool isIncrement) override; Label* createSliderTextBox (Slider&) override; void drawToggleButton (Graphics& g, ToggleButton& button, bool isMouseOverButton, bool isButtonDown) override; Justification textJustification = Justification::centred; protected: float maxSize; };