// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
/*
* Copyright (C) 2013 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: Marco Trevisan
*/
#ifndef UNITY_DECORATION_STYLE
#define UNITY_DECORATION_STYLE
#include
#include
#include
#include
#include
struct _GtkStyleContext;
namespace unity
{
namespace decoration
{
enum class Side : unsigned
{
TOP = 0,
LEFT,
RIGHT,
BOTTOM,
};
enum class Alignment
{
LEFT,
CENTER,
RIGHT,
FLOATING
};
enum class WidgetState : unsigned
{
NORMAL,
PRELIGHT,
PRESSED,
DISABLED,
BACKDROP,
BACKDROP_PRELIGHT,
BACKDROP_PRESSED,
Size
};
enum class WindowButtonType : unsigned
{
CLOSE,
MINIMIZE,
UNMAXIMIZE,
MAXIMIZE,
Size
};
enum class WMEvent
{
DOUBLE_CLICK = 1,
MIDDLE_CLICK = 2,
RIGHT_CLICK = 3
};
enum class WMAction
{
TOGGLE_SHADE,
TOGGLE_MAXIMIZE,
TOGGLE_MAXIMIZE_HORIZONTALLY,
TOGGLE_MAXIMIZE_VERTICALLY,
MINIMIZE,
SHADE,
MENU,
LOWER,
NONE
};
struct Border
{
Border(int top, int left, int right, int bottom)
: top(top)
, left(left)
, right(right)
, bottom(bottom)
{}
Border()
: Border(0, 0, 0, 0)
{}
int top;
int left;
int right;
int bottom;
};
class Style
{
public:
typedef std::shared_ptr