~ubuntu-branches/ubuntu/natty/gnome-do/natty

« back to all changes in this revision

Viewing changes to Do.Interface.Linux.Docky/src/Docky.Interface/Docky.Interface.Renderers/DockBackgroundRenderer.cs

  • Committer: Bazaar Package Importer
  • Author(s): Iain Lane
  • Date: 2009-03-22 22:44:39 UTC
  • mto: (1.1.7 upstream) (0.1.4 squeeze)
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: james.westby@ubuntu.com-20090322224439-ztmk4tbq19s3safs
ImportĀ upstreamĀ versionĀ 0.8.1.3+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// DockBackgroundRenderer.cs
2
 
// 
3
 
// Copyright (C) 2008 GNOME Do
4
 
//
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.
9
 
//
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.
14
 
//
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/>.
17
 
//
18
 
 
19
 
using System;
20
 
using System.Collections.Generic;
21
 
 
22
 
using Cairo;
23
 
using Gdk;
24
 
 
25
 
using Do.Interface.CairoUtils;
26
 
 
27
 
namespace Docky.Interface.Renderers
28
 
{
29
 
        
30
 
        
31
 
        public static class DockBackgroundRenderer
32
 
        {
33
 
                static Surface sr;
34
 
                static int height;
35
 
                
36
 
                public static void RenderDockBackground (Context context, Gdk.Rectangle dockArea)
37
 
                {
38
 
                        if (sr == null || dockArea.Height > height) {
39
 
                                if (sr != null)
40
 
                                        sr.Destroy ();
41
 
                                
42
 
                                height = dockArea.Height;
43
 
                                sr = context.Target.CreateSimilar (context.Target.Content, 1000, dockArea.Height);
44
 
                                
45
 
                                using (Context cr = new Context (sr)) {
46
 
                                        cr.SetRoundedRectanglePath (.5, .5, 1000 - 1, dockArea.Height+40, 5); //fall off the bottom
47
 
                                        cr.Color = new Cairo.Color (0.1, 0.1, 0.1, .75);
48
 
                                        cr.FillPreserve ();
49
 
                        
50
 
                                        //gives the dock a "lifted" look and feel
51
 
                                        cr.Color = new Cairo.Color (0, 0, 0, .6);
52
 
                                        cr.LineWidth = 1;
53
 
                                        cr.Stroke ();
54
 
                        
55
 
                                        cr.SetRoundedRectanglePath (1.5, 1.5, 1000 - 3, dockArea.Height + 40, 5);
56
 
                                        LinearGradient lg = new LinearGradient (0, 1.5, 0, 10);
57
 
                                        lg.AddColorStop (0, new Cairo.Color (1, 1, 1, .4));
58
 
                                        lg.AddColorStop (1, new Cairo.Color (1, 1, 1, 0));
59
 
                                        cr.Pattern = lg;
60
 
                                        cr.LineWidth = 1;
61
 
                                        cr.Stroke ();
62
 
                                
63
 
                                        lg.Destroy ();
64
 
                                }
65
 
                        }
66
 
                        
67
 
                        context.SetSource (sr, dockArea.X, dockArea.Y);
68
 
                        context.Rectangle (dockArea.X, dockArea.Y, dockArea.Width / 2, dockArea.Height);
69
 
                        context.Fill ();
70
 
                        
71
 
                        context.SetSource (sr, dockArea.X + dockArea.Width - 1000, dockArea.Y);
72
 
                        context.Rectangle (dockArea.X + dockArea.Width / 2, dockArea.Y, dockArea.Width - dockArea.Width / 2, dockArea.Height);
73
 
                        context.Fill ();
74
 
                }
75
 
        }
76
 
}