~ubuntu-branches/ubuntu/precise/gnome-do/precise-backports

« back to all changes in this revision

Viewing changes to Do.Interface.Linux/src/Do.Interface/Do.Interface.Widgets/GlossyRoundedFrame.cs

  • Committer: Bazaar Package Importer
  • Author(s): Christopher James Halse Rogers, Christopher James Halse Rogers, Iain Lane
  • Date: 2009-02-04 15:30:25 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20090204153025-dhb2pm7dgbtmoib6
Tags: 0.8.0-1~ubuntu1
[ Christopher James Halse Rogers ]
* New upstream release.  (LP: #323048)
  + Fixes text input problems (LP: #288517)
  + No longer grabs plugins from internet repositories (LP: #294808)
  + Preferences dialog is resizable (LP: #305419)
* Build against gtk, gnome mono packages from Experimental. (Closes: #510836)
* debian/control:
  + Bump versioned dep on libgtk2.0-cil to ensure
    Gdk.Screen.IsComposited exists (Closes: #510973)
  + Add libwnck2.20-cil build-dep
  + gnome-sharp2 transition.
* debian/patches/04_fix_locale_dir
* debian/patches/05_fix_localised_theme_setting
* debian/patches/06_expand_homedir_in_open
  + Drop; fixed in new upstream  
* debian/patches/02_use_cli_for_wrapper
  + Update for new upstream
  + Add dpatch comments
* debian/gnome-do.1
  + Fix broken formatting (LP: #291654).  Thank you to Frédéric Grosshans
    for spotting it, and the patch.
  + Update for new version.

[ Iain Lane ]
* Tag pkg-cli-apps SVN revision into Jaunty, to get in before Feature
  Freeze. Should be a sync after the next Debian upload.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* GlossyRoundedFrame.cs
 
2
 *
 
3
 * GNOME Do is the legal property of its developers. Please refer to the
 
4
 * COPYRIGHT file distributed with this source distribution.
 
5
 *
 
6
 * This program is free software: you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License as published by
 
8
 * the Free Software Foundation, either version 3 of the License, or
 
9
 * (at your option) any later version.
 
10
 *
 
11
 * This program is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 * GNU General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
 */
 
19
 
 
20
using System;
 
21
 
 
22
using Cairo;
 
23
using Gtk;
 
24
using Gdk;
 
25
 
 
26
namespace Do.Interface.Widgets
 
27
{
 
28
        public class GlossyRoundedFrame : Frame
 
29
        {
 
30
                protected double glossHeight = .5;
 
31
                protected int glossAngle = -25;
 
32
 
 
33
                public GlossyRoundedFrame ()
 
34
                {
 
35
                        drawGradient = true;
 
36
                }
 
37
 
 
38
                public double GlossHeight
 
39
                {
 
40
                        get { return glossHeight; }
 
41
                        set {
 
42
                                if (value >= 0 || value <= 1)
 
43
                                        glossHeight = value; 
 
44
                        }
 
45
                }
 
46
                
 
47
                public int GlossAngle
 
48
                {
 
49
                        get { return glossAngle; }
 
50
                        set { glossAngle = value; }
 
51
                }
 
52
                
 
53
                protected void GlossOverlay (Context glare)
 
54
                {
 
55
                        Cairo.PointD pt1, pt2, pt3;
 
56
 
 
57
                        int localGlossHeight = (int) (height * glossHeight);
 
58
                        
 
59
                        pt1 = new Cairo.PointD (x,           localGlossHeight);
 
60
                        pt2 = new Cairo.PointD (x+2*width/3, localGlossHeight+glossAngle);
 
61
                        pt3 = new Cairo.PointD (x+width/3,   localGlossHeight+glossAngle);
 
62
                        
 
63
                        if (radius != 0) {
 
64
                                glare.MoveTo  (x+radius,       y);
 
65
                                glare.Arc     (x+width-radius, y+radius, radius, (Math.PI*1.5), (Math.PI*2));
 
66
                                glare.LineTo  (x+width,        localGlossHeight);
 
67
                                glare.CurveTo (pt2,            pt3,      pt1);
 
68
                                glare.Arc     (x+radius,       y+radius, radius, Math.PI, (Math.PI*1.5));
 
69
                        } else {
 
70
                                glare.MoveTo    (x,       y);
 
71
                                glare.LineTo    (x+width, y);
 
72
                                glare.LineTo    (x+width, localGlossHeight);
 
73
                                glare.CurveTo   (pt2,     pt3, pt1);
 
74
                                glare.ClosePath ();
 
75
                        }
 
76
                        
 
77
                }
 
78
                
 
79
                protected override LinearGradient GetGradient ()
 
80
                {
 
81
                        double r, g, b;
 
82
                        
 
83
                        LinearGradient gloss = base.GetGradient ();
 
84
                        r = (double) fillColor.Red / ushort.MaxValue;
 
85
                        g = (double) fillColor.Green / ushort.MaxValue;
 
86
                        b = (double) fillColor.Blue / ushort.MaxValue;
 
87
                        
 
88
                        gloss.AddColorStop (0,   new Cairo.Color (r+.25, g+.25, b+.25, fillAlpha));
 
89
                        gloss.AddColorStop (.25, new Cairo.Color (r,     g,     b,     fillAlpha));
 
90
                        gloss.AddColorStop (.75, new Cairo.Color (r-.15, g-.15, b-.15, fillAlpha));
 
91
                        
 
92
                        return gloss;
 
93
                }
 
94
 
 
95
                
 
96
                protected override void PaintFill ()
 
97
                {
 
98
                        base.PaintFill ();
 
99
                        
 
100
                        Cairo.Gradient fade;
 
101
                        
 
102
                        fade = new Cairo.LinearGradient (0, 0, 0, height);
 
103
                        fade.AddColorStop (0,   new Cairo.Color (1, 1, 1, 0));
 
104
                        fade.AddColorStop (.75, new Cairo.Color (1, 1, 1, .25));
 
105
                        
 
106
                        cairo.Save ();
 
107
                        cairo.NewPath ();
 
108
                        GlossOverlay (cairo);
 
109
                        
 
110
                        cairo.Pattern = fade;
 
111
                        cairo.FillPreserve ();
 
112
                        
 
113
                        cairo.Restore ();
 
114
                }
 
115
        }
 
116
}