2010-06-23 Miguel de Icaza <miguel@novell.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms.RTF / Color.cs
1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
8 // 
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
11 // 
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 //
20 // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
21 //
22 // Authors:
23 //      Peter Bartok    (pbartok@novell.com)
24 //
25 //
26
27 // COMPLETE
28
29 namespace System.Windows.Forms.RTF {
30
31 #if RTF_LIB
32         public
33 #else
34         internal
35 #endif
36         class Color {
37                 #region Local Variables
38                 private int             red;
39                 private int             green;
40                 private int             blue;
41                 private int             num;
42                 private Color           next;
43                 #endregion      // Local Variables
44
45                 #region Constructors
46                 public Color(RTF rtf) {
47                         red = -1;
48                         green = -1;
49                         blue = -1;
50                         num = -1;
51
52                         lock (rtf) {
53                                 if (rtf.Colors == null) {
54                                         rtf.Colors = this;
55                                 } else {
56                                         Color c = rtf.Colors;
57                                         while (c.next != null)
58                                                 c = c.next;
59                                         c.next = this;
60                                 }
61                         }
62                 }
63                 #endregion      // Constructors
64
65                 #region Properties
66                 public int Red {
67                         get {
68                                 return red;
69                         }
70
71                         set {
72                                 red = value;
73                         }
74                 }
75
76                 public int Green {
77                         get {
78                                 return green;
79                         }
80
81                         set {
82                                 green = value;
83                         }
84                 }
85
86                 public int Blue {
87                         get {
88                                 return blue;
89                         }
90
91                         set {
92                                 blue = value;
93                         }
94                 }
95
96                 public int Num {
97                         get {
98                                 return num;
99                         }
100
101                         set {
102                                 num = value;
103                         }
104                 }
105                 #endregion      // Properties
106
107                 #region Methods
108                 static public Color GetColor(RTF rtf, int color_number) {
109                         Color   c;
110
111                         lock (rtf) {
112                                 c = GetColor(rtf.Colors, color_number);
113                         }
114                         return c;
115                 }
116
117                 static private Color GetColor(Color start, int color_number) {
118                         Color   c;
119
120                         if (color_number == -1) {
121                                 return start;
122                         }
123
124                         c = start;
125
126                         while ((c != null) && (c.num != color_number)) {
127                                 c = c.next;
128                         }
129                         return c;
130                 }
131                 #endregion      // Methods
132         }
133 }