Border.st
changeset 7013 1b1f3144927a
parent 6714 08b320104918
child 7947 ccd0e325ddf8
child 8595 7f9b84978a2e
--- a/Border.st	Thu Oct 08 19:55:47 2015 +0200
+++ b/Border.st	Thu Oct 08 19:55:57 2015 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 1997 by eXept Software AG
 	      All Rights Reserved
@@ -14,7 +16,8 @@
 "{ NameSpace: Smalltalk }"
 
 AbstractBorder subclass:#Border
-	instanceVariableNames:'leftColor rightColor topColor bottomColor'
+	instanceVariableNames:'leftColor leftWidth rightColor rightWidth topColor topWidth
+		bottomColor bottomWidth'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Graphics-Support'
@@ -59,6 +62,16 @@
      v := StandardSystemView extent:100@100.
      v openAndWait.
 
+     b := Border width:1 color:Color red.
+     v border:b
+                                                        [exEnd]
+
+                                                        [exBegin]
+     |v b|
+
+     v := StandardSystemView extent:100@100.
+     v openAndWait.
+
      b := Border width:10 color:Color red.
      b displayOn:v forDisplayBox:(0@0 corner:90@90).
 
@@ -80,7 +93,13 @@
      v openAndWait.
 
      b := Border width:10 color:Color red.
-     v border:b
+     b topColor:Color red.
+     b leftColor:Color blue.
+     b topColor:Color green.
+     b rightColor:Color yellow.
+     b leftWidth:10 rightWidth:20 topWidth:5 bottomWidth:15.
+
+     b displayOn:v forDisplayBox:(0@0 corner:90@90).
                                                         [exEnd]
 
                                                         [exBegin]
@@ -124,6 +143,14 @@
     "Created: 10.2.1997 / 15:37:51 / cg"
 !
 
+bottomWidth
+    ^ bottomWidth
+!
+
+bottomWidth:something
+    bottomWidth := something.
+!
+
 color:newColor
     "set all four colors"
 
@@ -148,6 +175,21 @@
     "Created: 10.2.1997 / 15:38:02 / cg"
 !
 
+leftWidth
+    ^ leftWidth
+!
+
+leftWidth:something
+    leftWidth := something.
+!
+
+leftWidth:leftWidthArg rightWidth:rightWidthArg topWidth:topWidthArg bottomWidth:bottomWidthArg 
+    leftWidth := leftWidthArg.
+    rightWidth := rightWidthArg.
+    topWidth := topWidthArg.
+    bottomWidth := bottomWidthArg.
+!
+
 rightColor
     "return the value of the instance variable 'rightColor' (automatically generated)"
 
@@ -164,6 +206,14 @@
     "Created: 10.2.1997 / 15:38:08 / cg"
 !
 
+rightWidth
+    ^ rightWidth
+!
+
+rightWidth:something
+    rightWidth := something.
+!
+
 topColor
     "return the value of the instance variable 'topColor' (automatically generated)"
 
@@ -178,6 +228,18 @@
     topColor := aColor
 
     "Created: 10.2.1997 / 15:38:17 / cg"
+!
+
+topWidth
+    ^ topWidth
+!
+
+topWidth:something
+    topWidth := something.
+!
+
+width:w
+    leftWidth := rightWidth := topWidth := bottomWidth := width := w.
 ! !
 
 !Border methodsFor:'displaying'!
@@ -201,37 +263,37 @@
 
     leftColor notNil ifTrue:[
         aGC paint:leftColor.
-        width == 1 ifTrue:[
+        leftWidth == 1 ifTrue:[
             aGC displayLineFromX:rL y:rT toX:rL y:rB-1.
         ] ifFalse:[
-            aGC fillRectangleX:rL y:rT width:width height:rH
+            aGC fillRectangleX:rL y:rT width:leftWidth height:rH
         ].
     ].
 
     topColor notNil ifTrue:[
         aGC paint:topColor.
-        width == 1 ifTrue:[
+        topWidth == 1 ifTrue:[
             aGC displayLineFromX:rL+1 y:rT toX:rR-1 y:rT.
         ] ifFalse:[
-            aGC fillRectangleX:(rL + width) y:rT width:rW - width height:width
+            aGC fillRectangleX:(rL + leftWidth) y:rT width:rW - leftWidth - rightWidth  height:topWidth
         ].
     ].
 
     rightColor notNil ifTrue:[
         aGC paint:rightColor.
-        width == 1 ifTrue:[
+        rightWidth == 1 ifTrue:[
             aGC displayLineFromX:rR-1 y:rT toX:rR-1 y:rB-1.
         ] ifFalse:[
-            aGC fillRectangleX:(rR - width) y:(rT + width) width:width height:rH-width
+            aGC fillRectangleX:(rR - rightWidth) y:rT width:rightWidth height:rH
         ].
     ].
 
     bottomColor notNil ifTrue:[
         aGC paint:bottomColor.
-        width == 1 ifTrue:[
-            aGC displayLineFromX:rL y:rB-1 toX:rR-1 y:rB-1.
+        bottomWidth == 1 ifTrue:[
+            aGC displayLineFromX:rL+1 y:rB-1 toX:rR-2 y:rB-1.
         ] ifFalse:[
-            aGC fillRectangleX:rL y:(rB-width) width:rW - width height:width
+            aGC fillRectangleX:rL+leftWidth y:(rB-bottomWidth) width:rW - leftWidth - rightWidth height:bottomWidth
         ].
     ].
 
@@ -240,13 +302,38 @@
     "Modified: 10.2.1997 / 15:55:04 / cg"
 ! !
 
+!Border methodsFor:'initialization'!
+
+initialize
+    width := 1.
+    leftWidth := rightWidth := topWidth := bottomWidth := 1.
+! !
+
+!Border methodsFor:'queries'!
+
+bottomMargin
+    ^ bottomWidth
+!
+
+leftMargin
+    ^ leftWidth
+!
+
+rightMargin
+    ^ rightWidth
+!
+
+topMargin
+    ^ topWidth
+! !
+
 !Border class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/Border.st,v 1.10 2015-01-05 20:34:51 cg Exp $'
+    ^ '$Header$'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libview/Border.st,v 1.10 2015-01-05 20:34:51 cg Exp $'
+    ^ '$Header$'
 ! !