// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
/*
* Copyright (C) 2011 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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 .
*
* Authored by: Mirco Müller
#include
#include
#include
namespace nux
{
class AbstractPaintLayer;
}
namespace unity
{
namespace dash
{
enum class StockIcon {
CHECKMARK,
CROSS,
GRID_VIEW,
FLOW_VIEW,
STAR
};
enum class Alignment {
LEFT,
CENTER,
RIGHT
};
enum class Orientation {
UP,
DOWN,
LEFT,
RIGHT
};
enum class BlendMode {
NORMAL,
MULTIPLY,
SCREEN
};
enum class FontWeight {
LIGHT,
REGULAR,
BOLD
};
enum class Segment {
LEFT,
MIDDLE,
RIGHT
};
enum class Arrow {
LEFT,
RIGHT,
BOTH,
NONE
};
class Style : public StyleInterface
{
public:
Style ();
~Style ();
static Style& Instance();
virtual bool Button(cairo_t* cr, nux::ButtonVisualState state,
std::string const& label, int font_px_size=-1,
Alignment alignment = Alignment::CENTER,
bool zeromargin=false);
virtual bool SquareButton(cairo_t* cr, nux::ButtonVisualState state,
std::string const& label, bool curve_bottom,
int font_px_size=-1,
Alignment alignment = Alignment::CENTER,
bool zeromargin=false);
virtual nux::AbstractPaintLayer* FocusOverlay(int width, int height);
virtual bool ButtonFocusOverlay(cairo_t* cr, float alpha = 0.50f);
virtual bool MultiRangeSegment(cairo_t* cr,
nux::ButtonVisualState state,
std::string const& label,
int font_px_size,
Arrow arrow,
Segment segment);
virtual bool MultiRangeFocusOverlay(cairo_t* cr,
Arrow arrow,
Segment segment);
virtual bool TrackViewNumber(cairo_t* cr,
nux::ButtonVisualState state,
std::string const& trackNumber);
virtual bool TrackViewPlay(cairo_t* cr,
nux::ButtonVisualState state);
virtual bool TrackViewPause(cairo_t* cr,
nux::ButtonVisualState state);
virtual bool TrackViewProgress(cairo_t* cr);
virtual bool SeparatorVert(cairo_t* cr);
virtual bool SeparatorHoriz(cairo_t* cr);
virtual int GetButtonGarnishSize();
virtual int GetSeparatorGarnishSize();
virtual int GetScrollbarGarnishSize();
void Blur(cairo_t* cr, int size);
void RoundedRect(cairo_t* cr,
double aspect,
double x,
double y,
double cornerRadius,
double width,
double height);
nux::Color const& GetTextColor() const;
// TODO nux::Property
int GetDefaultNColumns() const;
void SetDefaultNColumns(int n_cols);
sigc::signal columns_changed;
int GetTileGIconSize() const;
int GetTileImageSize() const;
int GetTileWidth() const;
int GetTileHeight() const;
int GetTileIconHightlightHeight() const;
int GetTileIconHightlightWidth() const;
int GetHomeTileIconSize() const;
int GetHomeTileWidth() const;
int GetHomeTileHeight() const;
int GetTextLineHeight() const;
nux::BaseTexture* GetCategoryBackground();
nux::BaseTexture* GetCategoryBackgroundNoFilters();
nux::BaseTexture* GetDashBottomTile();
nux::BaseTexture* GetDashBottomTileMask();
nux::BaseTexture* GetDashRightTile();
nux::BaseTexture* GetDashRightTileMask();
nux::BaseTexture* GetDashCorner();
nux::BaseTexture* GetDashCornerMask();
nux::BaseTexture* GetDashFullscreenIcon();
nux::BaseTexture* GetDashLeftEdge();
nux::BaseTexture* GetDashLeftCorner();
nux::BaseTexture* GetDashLeftCornerMask();
nux::BaseTexture* GetDashLeftTile();
nux::BaseTexture* GetDashTopCorner();
nux::BaseTexture* GetDashTopCornerMask();
nux::BaseTexture* GetDashTopTile();
int GetDashBottomTileHeight() const;
int GetDashRightTileWidth() const;
nux::BaseTexture* GetDashShine();
nux::BaseTexture* GetSearchMagnifyIcon();
nux::BaseTexture* GetSearchCircleIcon();
nux::BaseTexture* GetSearchCloseIcon();
nux::BaseTexture* GetSearchSpinIcon();
nux::BaseTexture* GetGroupUnexpandIcon();
nux::BaseTexture* GetGroupExpandIcon();
nux::BaseTexture* GetStarDeselectedIcon();
nux::BaseTexture* GetStarSelectedIcon();
nux::BaseTexture* GetStarHighlightIcon();
nux::BaseTexture* GetInformationTexture();
nux::BaseTexture* GetRefineTextureCorner();
nux::BaseTexture* GetRefineTextureDash();
// Returns the width of the separator between the dash and the launcher.
int GetVSeparatorSize() const;
// Returns the height of the separator between the dash and the top panel.
int GetHSeparatorSize() const;
// Practically it is the space between the top border of the dash and the searchbar.
int GetDashViewTopPadding() const;
// Search bar
int GetSearchBarLeftPadding() const;
int GetSearchBarRightPadding() const;
int GetSearchBarHeight() const;
int GetFilterResultsHighlightRightPadding() const;
int GetFilterResultsHighlightLeftPadding() const;
// Filter bar
int GetFilterBarTopPadding() const;
int GetFilterHighlightPadding() const;
int GetSpaceBetweenFilterWidgets() const;
int GetAllButtonHeight() const;
int GetFilterBarLeftPadding() const;
int GetFilterBarRightPadding() const;
int GetFilterBarWidth() const;
int GetFilterButtonHeight() const;
int GetFilterViewRightPadding() const;
int GetSpaceBetweenScopeAndFilters() const;
// Scrollbars
int GetScrollbarWidth() const;
// Places Group
int GetCategoryIconSize() const;
int GetCategoryHighlightHeight() const;
int GetPlacesGroupTopSpace() const;
int GetPlacesGroupResultTopPadding() const;
int GetPlacesGroupResultLeftPadding() const;
int GetCategoryHeaderLeftPadding() const;
int GetCategorySeparatorLeftPadding() const;
int GetCategorySeparatorRightPadding() const;
bool GetUseBlur() const;
sigc::signal changed;
nux::Property always_maximised;
nux::Property preview_mode;
private:
class Impl;
Impl* pimpl;
};
}
}
#endif // DASH_STYLE_H