~vanvugt/compiz-plugins-main/fix-915236

« back to all changes in this revision

Viewing changes to scaleaddon/src/scaleaddon.h

  • Committer: Sam Spilsbury
  • Date: 2011-08-12 06:36:10 UTC
  • Revision ID: sam.spilsbury@canonical.com-20110812063610-8mcxo2xohctyp2ak
Sync - Remove Plugins

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 *
3
 
 * Compiz scale plugin addon plugin
4
 
 *
5
 
 * scaleaddon.h
6
 
 *
7
 
 * Copyright : (C) 2007 by Danny Baumann
8
 
 * E-mail    : maniac@opencompositing.org
9
 
 *
10
 
 * Organic scale mode taken from Beryl's scale.c, written by
11
 
 * Copyright : (C) 2006 Diogo Ferreira
12
 
 * E-mail    : diogo@underdev.org
13
 
 *
14
 
 * Ported to Compiz 0.9 by:
15
 
 * Copyright : (C) 2009 by Sam Spilsbury
16
 
 * E-mail    : smspillaz@gmail.com
17
 
 *
18
 
 * This program is free software; you can redistribute it and/or
19
 
 * modify it under the terms of the GNU General Public License
20
 
 * as published by the Free Software Foundation; either version 2
21
 
 * of the License, or (at your option) any later version.
22
 
 *
23
 
 * This program is distributed in the hope that it will be useful,
24
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26
 
 * GNU General Public License for more details.
27
 
 *
28
 
 *
29
 
 */
30
 
 
31
 
#include <cmath>
32
 
#include <cstring>
33
 
#include <X11/Xatom.h>
34
 
 
35
 
#include <core/core.h>
36
 
#include <composite/composite.h>
37
 
#include <opengl/opengl.h>
38
 
#include <text/text.h>
39
 
#include <scale/scale.h>
40
 
 
41
 
#include "scaleaddon_options.h"
42
 
 
43
 
class ScaleAddonScreen :
44
 
    public PluginClassHandler <ScaleAddonScreen, CompScreen>,
45
 
    public ScreenInterface,
46
 
    public CompositeScreenInterface,
47
 
    public ScaleScreenInterface,
48
 
    public ScaleaddonOptions
49
 
{
50
 
    public:
51
 
        ScaleAddonScreen (CompScreen *);
52
 
 
53
 
        CompositeScreen *cScreen;
54
 
        ScaleScreen     *sScreen;
55
 
 
56
 
        Window          highlightedWindow;
57
 
        Window          lastHighlightedWindow;
58
 
 
59
 
        int             lastState;
60
 
 
61
 
        float           scale;
62
 
        
63
 
        std::vector <ScaleSlot> paintSlots;
64
 
 
65
 
        void
66
 
        handleEvent (XEvent *);
67
 
 
68
 
        bool
69
 
        layoutSlotsAndAssignWindows ();
70
 
        
71
 
        bool
72
 
        layoutNaturalThumbs ();
73
 
 
74
 
        bool
75
 
        isOverlappingAny (ScaleWindow *w,
76
 
                          const std::map <ScaleWindow *, CompRegion>,
77
 
                          const CompRegion &border);
78
 
 
79
 
        void
80
 
        donePaint ();
81
 
 
82
 
        void
83
 
        checkWindowHighlight ();
84
 
 
85
 
        bool
86
 
        closeWindow (CompAction         *action,
87
 
                     CompAction::State  state,
88
 
                     CompOption::Vector options);
89
 
 
90
 
        bool
91
 
        pullWindow (CompAction         *action,
92
 
                    CompAction::State  state,
93
 
                    CompOption::Vector options);
94
 
 
95
 
        bool
96
 
        zoomWindow (CompAction         *action,
97
 
                    CompAction::State  state,
98
 
                    CompOption::Vector options);
99
 
 
100
 
        void
101
 
        handleCompizEvent (const char         *pluginName,
102
 
                           const char         *eventName,
103
 
                           CompOption::Vector &options);
104
 
 
105
 
        void
106
 
        optionChanged (CompOption                 *opt,
107
 
                       ScaleaddonOptions::Options num);
108
 
};
109
 
 
110
 
#define ADDON_SCREEN(s)                              \
111
 
     ScaleAddonScreen *as = ScaleAddonScreen::get (s)
112
 
 
113
 
class ScaleAddonWindow :
114
 
    public PluginClassHandler <ScaleAddonWindow, CompWindow>,
115
 
    public ScaleWindowInterface
116
 
{
117
 
    public:
118
 
        ScaleAddonWindow (CompWindow *);
119
 
 
120
 
        CompWindow *window;
121
 
        ScaleWindow *sWindow;
122
 
        CompositeWindow *cWindow;
123
 
 
124
 
        ScaleSlot    origSlot;
125
 
        CompText     text;
126
 
 
127
 
        bool         rescaled;
128
 
 
129
 
        CompWindow   *oldAbove;
130
 
 
131
 
        void
132
 
        scalePaintDecoration (const GLWindowPaintAttrib &,
133
 
                              const GLMatrix &,
134
 
                              const CompRegion &,
135
 
                              unsigned int);
136
 
 
137
 
        void
138
 
        scaleSelectWindow ();
139
 
 
140
 
        void
141
 
        renderTitle ();
142
 
 
143
 
        void
144
 
        drawTitle ();
145
 
 
146
 
        void
147
 
        drawHighlight ();
148
 
};
149
 
 
150
 
#define ADDON_WINDOW(w)                              \
151
 
     ScaleAddonWindow *aw = ScaleAddonWindow::get (w)
152
 
 
153
 
 
154
 
class ScaleAddonPluginVTable :
155
 
    public CompPlugin::VTableForScreenAndWindow <ScaleAddonScreen,
156
 
                                                 ScaleAddonWindow>
157
 
{
158
 
    public:
159
 
        bool init ();
160
 
};