-
Florian Franzen authoredFlorian Franzen authored
CustomLookAndFeel.h 4.72 KiB
/*
------------------------------------------------------------------
This file is part of the Open Ephys GUI
Copyright (C) 2013 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, scroll bars, and sliders.
It also takes care of custom fonts via getTypefaceForFont().
@see MainWindow
*/
class CustomLookAndFeel : public LookAndFeel
{
public:
CustomLookAndFeel();
~CustomLookAndFeel();
// ======== custom typeface getter: =============================
const Typeface::Ptr getTypefaceForFont(const Font& font);
// ======== 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();
Button* createSliderButton(bool isIncrement);
// ======== 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:
// UNCOMMENT AFTER UPDATE
// this maps strings to customtypeface pointers
HashMap<String, Typeface::Ptr> typefaceMap;
MemoryInputStream
cpmonoExtraLightStream,
cpmonoLightStream,
cpmonoPlainStream,
cpmonoBoldStream,
cpmonoBlackStream,
misoRegularStream,
silkscreenStream;
Typeface::Ptr
cpmonoExtraLight,
cpmonoLight,
cpmonoPlain,
cpmonoBold,
cpmonoBlack,
misoRegular,
silkscreen;
};
#endif // __CUSTOMLOOKANDFEEL_H_6B021009__