/* ------------------------------------------------------------------ This file is part of the Open Ephys GUI Copyright (C) 2012 Open Ephys ------------------------------------------------------------------ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifndef __CUSTOMLOOKANDFEEL_H_6B021009__ #define __CUSTOMLOOKANDFEEL_H_6B021009__ #include "../../JuceLibraryCode/JuceHeader.h" /** Used to modify the appearance of the application. Currently contains methods for drawing custom tabs, custom scroll bars, and custom sliders. @see MainWindow */ class CustomLookAndFeel : public LookAndFeel { public: CustomLookAndFeel(); ~CustomLookAndFeel(); // ======== custom fonts ================ Typeface::Ptr Miso; // ======== custom tab methods: ============================= void drawTabButton (Graphics & g, int w, int h, const Colour& preferredColour, int tabIndex, const String& text, Button& button, TabbedButtonBar::Orientation, bool isMouseOver, bool isMouseDown, bool isFrontTab); void drawTabButtonText (Graphics& g, int x, int y, int w, int h, const Colour& preferredBackgroundColour, int tabIndex, const String& text, Button& button, TabbedButtonBar::Orientation o, bool isMouseOver, bool isMouseDown, bool isFrontTab); int getTabButtonBestWidth (int tabIndex, const String& text, int tabDepth, Button& button); int getTabButtonSpaceAroundImage (); void drawTabAreaBehindFrontButton (Graphics& g, int w, int h, TabbedButtonBar& tabBar, TabbedButtonBar::Orientation o); int getTabButtonOverlap (int tabDepth); // ======== custom scroll bar methods: ============================= void drawScrollbarButton (Graphics& g, ScrollBar& scrollbar, int width, int height, int buttonDirection, bool isScrollBarVertical, bool isMouseOverButton, bool isButtonDown); void drawScrollbar (Graphics& g, ScrollBar& scrollbar, int x, int y, int width, int height, bool isScrollbarVertical, int thumbStartPosition, int thumbSize, bool isMouseOver, bool isMouseDown); // ======== custom slider methods: ============================= void drawLinearSliderThumb (Graphics& g, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, const Slider::SliderStyle style, Slider& slider); void drawLinearSliderBackground (Graphics& g, int x, int y, int width, int height, float /*sliderPos*/, float /*minSliderPos*/, float /*maxSliderPos*/, const Slider::SliderStyle /*style*/, Slider& slider); int getSliderThumbRadius (Slider& slider); void drawSliderKnob (Graphics& g, const float x, const float y, const float diameter, const Colour& colour, const float outlineThickness) throw(); void drawGlassPointer (Graphics& g, const float x, const float y, const float diameter, const Colour& colour, const float outlineThickness, const int direction) throw(); // const Typeface::Ptr getTypefaceForFont (const Font& font); // ======== custom combo box methods: ============================= void drawComboBox (Graphics& g, int width, int height, const bool isButtonDown, int buttonX, int buttonY, int buttonW, int buttonH, ComboBox& box); private: }; #endif // __CUSTOMLOOKANDFEEL_H_6B021009__