1
// DockBackgroundRenderer.cs
3
// Copyright (C) 2008 GNOME Do
5
// This program is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
10
// This program is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
// GNU General Public License for more details.
15
// You should have received a copy of the GNU General Public License
16
// along with this program. If not, see <http://www.gnu.org/licenses/>.
20
using System.Collections.Generic;
25
using Do.Interface.CairoUtils;
27
using Docky.Utilities;
29
namespace Docky.Interface.Painters
33
public static class DockBackgroundRenderer
38
const int ShineWidth = 120;
39
const int width = 1500;
41
public static void RenderDockBackground (Context context, Gdk.Rectangle dockArea)
43
if (sr == null || dockArea.Height != height) {
48
height = dockArea.Height;
49
sr = context.Target.CreateSimilar (context.Target.Content, width, dockArea.Height);
51
using (Context cr = new Context (sr)) {
52
cr.SetRoundedRectanglePath (.5, .5, width - 1, height + 40, 5); // fall off the bottom
53
cr.Color = new Cairo.Color (0.1, 0.1, 0.1, .75);
56
// gives the dock a "lifted" look and feel
57
cr.Color = new Cairo.Color (0, 0, 0, .6);
61
cr.SetRoundedRectanglePath (1.5, 1.5, width - 3, height + 40, 5);
62
LinearGradient lg = new LinearGradient (0, 1.5, 0, 10);
63
lg.AddColorStop (0, new Cairo.Color (1, 1, 1, .4));
64
lg.AddColorStop (1, new Cairo.Color (1, 1, 1, 0));
73
switch (DockPreferences.Orientation) {
74
case DockOrientation.Bottom:
75
RenderBackground (context, dockArea);
77
case DockOrientation.Top:
78
context.Scale (1, -1);
79
context.Translate (0, 0 - (dockArea.Height + dockArea.Y));
81
RenderBackground (context, dockArea);
83
context.Translate (0, dockArea.Height + dockArea.Y);
84
context.Scale (1, -1);
89
static void RenderBackground (Context context, Gdk.Rectangle dockArea)
91
context.SetSource (sr, dockArea.X, dockArea.Y);
92
context.Rectangle (dockArea.X, dockArea.Y, dockArea.Width / 2, dockArea.Height);
95
context.SetSource (sr, dockArea.X + dockArea.Width - width, dockArea.Y);
96
context.Rectangle (dockArea.X + dockArea.Width / 2, dockArea.Y, dockArea.Width - dockArea.Width / 2, dockArea.Height);