aseprite/src/ui/theme.h

92 lines
2.5 KiB
C++

// Aseprite UI Library
// Copyright (C) 2001-2013 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
#ifndef UI_THEME_H_INCLUDED
#define UI_THEME_H_INCLUDED
#pragma once
#include "ui/base.h"
#include "ui/cursor_type.h"
namespace gfx {
class Region;
}
namespace she {
class Font;
}
namespace ui {
class Cursor;
class PaintEvent;
class Widget;
class Theme
{
public:
const char* name;
she::Font* default_font;
int scrollbar_size;
int guiscale;
Theme();
virtual ~Theme();
void regenerate();
virtual Cursor* getCursor(CursorType type) = 0;
virtual void initWidget(Widget* widget) = 0;
virtual void getWindowMask(Widget* widget, gfx::Region& region) = 0;
virtual void setDecorativeWidgetBounds(Widget* widget) = 0;
virtual void paintDesktop(PaintEvent& ev) = 0;
virtual void paintBox(PaintEvent& ev) = 0;
virtual void paintButton(PaintEvent& ev) = 0;
virtual void paintCheckBox(PaintEvent& ev) = 0;
virtual void paintEntry(PaintEvent& ev) = 0;
virtual void paintGrid(PaintEvent& ev) = 0;
virtual void paintLabel(PaintEvent& ev) = 0;
virtual void paintLinkLabel(PaintEvent& ev) = 0;
virtual void paintListBox(PaintEvent& ev) = 0;
virtual void paintListItem(PaintEvent& ev) = 0;
virtual void paintMenu(PaintEvent& ev) = 0;
virtual void paintMenuItem(PaintEvent& ev) = 0;
virtual void paintSplitter(PaintEvent& ev) = 0;
virtual void paintRadioButton(PaintEvent& ev) = 0;
virtual void paintSeparator(PaintEvent& ev) = 0;
virtual void paintSlider(PaintEvent& ev) = 0;
virtual void paintComboBoxEntry(PaintEvent& ev) = 0;
virtual void paintComboBoxButton(PaintEvent& ev) = 0;
virtual void paintTextBox(PaintEvent& ev) = 0;
virtual void paintView(PaintEvent& ev) = 0;
virtual void paintViewScrollbar(PaintEvent& ev) = 0;
virtual void paintViewViewport(PaintEvent& ev) = 0;
virtual void paintWindow(PaintEvent& ev) = 0;
virtual void paintPopupWindow(PaintEvent& ev) = 0;
virtual void paintTooltip(PaintEvent& ev) = 0;
protected:
virtual void onRegenerate() = 0;
};
namespace CurrentTheme
{
void set(Theme* theme);
Theme* get();
}
// This value is a factor to multiply every screen size/coordinate.
// Every icon/graphics/font should be scaled to this factor.
inline int jguiscale()
{
return CurrentTheme::get() ? CurrentTheme::get()->guiscale: 1;
}
} // namespace ui
#endif