1
4
5 import org.aswing.ASColor;
6 import org.aswing.border.Border;
7 import org.aswing.border.DecorateBorder;
8 import org.aswing.Component;
9 import org.aswing.geom.Rectangle;
10 import org.aswing.graphices.AdvancedPen;
11 import org.aswing.graphices.Graphics;
12 import org.aswing.Insets;
13
14
18 class org.aswing.border.BevelBorder extends DecorateBorder {
19
20
21 public static var RAISED:Number = 0;
22
23 public static var LOWERED:Number = 1;
24
25 private var bevelType:Number;
26 private var highlightOuter:ASColor;
27 private var highlightInner:ASColor;
28 private var shadowInner:ASColor;
29 private var shadowOuter:ASColor;
30
31
51 public function BevelBorder(interior:Border, bevelType:Number, highlightOuterColor:ASColor,
52 highlightInnerColor:ASColor, shadowOuterColor:ASColor,
53 shadowInnerColor:ASColor) {
54 super(interior);
55 this.bevelType = bevelType;
56 if(highlightInnerColor != undefined && shadowOuterColor == undefined){
57 this.highlightOuter = highlightOuterColor.brighter();
58 this.highlightInner = highlightOuterColor;
59 this.shadowOuter = shadowOuterColor;
60 this.shadowInner = shadowOuterColor.brighter();
61 }else{
62 this.highlightOuter = highlightOuterColor;
63 this.highlightInner = highlightInnerColor;
64 this.shadowOuter = shadowOuterColor;
65 this.shadowInner = shadowInnerColor;
66 }
67 }
68
69
70 public function paintBorderImp(c:Component, g:Graphics, b:Rectangle):Void{
71 if (bevelType == RAISED) {
72 paintRaisedBevel(c, g, b.x, b.y, b.width, b.height);
73 }else{
74 paintLoweredBevel(c, g, b.x, b.y, b.width, b.height);
75 }
76 }
77
78 public function getBorderInsetsImp(c:Component, bounds:Rectangle):Insets{
79 return new Insets(2, 2, 2, 2);
80 }
81
82
89 public function getHighlightOuterColorWith(c:Component):ASColor{
90 var highlight:ASColor = getHighlightOuterColor();
91 if(highlight == undefined){
92 highlight = c.getBackground().brighter().brighter();
93 }
94 return highlight;
95 }
96
97
104 public function getHighlightInnerColorWith(c:Component):ASColor{
105 var highlight:ASColor = getHighlightInnerColor();
106 if(highlight == undefined){
107 highlight = c.getBackground().brighter();
108 }
109 return highlight;
110 }
111
112
119 public function getShadowInnerColorWith(c:Component):ASColor{
120 var shadow:ASColor = getShadowInnerColor();
121 if(shadow == undefined){
122 shadow = c.getBackground().darker();
123 }
124 return shadow ;
125
126 }
127
128
135 public function getShadowOuterColorWith(c:Component):ASColor{
136 var shadow:ASColor = getShadowOuterColor();
137 if(shadow == undefined){
138 shadow = c.getBackground().darker().darker();
139 }
140 return shadow ;
141 }
142
143
148 public function getHighlightOuterColor():ASColor{
149 return highlightOuter;
150 }
151
152
157 public function getHighlightInnerColor():ASColor{
158 return highlightInner;
159 }
160
161
166 public function getShadowInnerColor():ASColor{
167 return shadowInner;
168 }
169
170
175 public function getShadowOuterColor():ASColor{
176 return shadowOuter;
177 }
178
179
182 public function getBevelType():Number{
183 return bevelType;
184 }
185
186 private function paintRaisedBevel(c:Component, g:Graphics, x:Number, y:Number,
187 width:Number, height:Number):Void {
188 var h:Number = height;
189 var w:Number = width;
190 x += 0.5;
191 y += 0.5;
192 w -= 1;
193 h -= 1;
194 var pen:AdvancedPen = new AdvancedPen(getHighlightOuterColorWith(c), 1, undefined, "normal", "square", "miter");
195 g.drawLine(pen, x, y, x, y+h-2);
196 g.drawLine(pen, x+1, y, x+w-2, y);
197
198 pen.setASColor(getHighlightInnerColorWith(c));
199 g.drawLine(pen, x+1, y+1, x+1, y+h-3);
200 g.drawLine(pen, x+2, y+1, x+w-3, y+1);
201
202 pen.setASColor(getShadowOuterColorWith(c));
203 g.drawLine(pen, x, y+h-1, x+w-1, y+h-1);
204 g.drawLine(pen, x+w-1, y, x+w-1, y+h-2);
205
206 pen.setASColor(getShadowInnerColorWith(c));
207 g.drawLine(pen, x+1, y+h-2, x+w-2, y+h-2);
208 g.drawLine(pen, x+w-2, y+1, x+w-2, y+h-3);
209
210 }
211
212 private function paintLoweredBevel(c:Component, g:Graphics, x:Number, y:Number,
213 width:Number, height:Number):Void {
214 var h:Number = height;
215 var w:Number = width;
216 x += 0.5;
217 y += 0.5;
218 w -= 1;
219 h -= 1;
220 var pen:AdvancedPen = new AdvancedPen(getShadowInnerColorWith(c), 1, undefined, "normal", "square", "miter");
221 g.drawLine(pen, x, y, x, y+h-1);
222 g.drawLine(pen, x+1, y, x+w-1, y);
223
224 pen.setASColor(getShadowOuterColorWith(c));
225 g.drawLine(pen, x+1, y+1, x+1, y+h-2);
226 g.drawLine(pen, x+2, y+1, x+w-2, y+1);
227
228 pen.setASColor(getHighlightOuterColorWith(c));
229 g.drawLine(pen, x+1, y+h-1, x+w-1, y+h-1);
230 g.drawLine(pen, x+w-1, y+1, x+w-1, y+h-2);
231
232 pen.setASColor(getHighlightInnerColorWith(c));
233 g.drawLine(pen, x+2, y+h-2, x+w-2, y+h-2);
234 g.drawLine(pen, x+w-2, y+2, x+w-2, y+h-3);
235 }
236
237 }
238