VerticalRuler.st
changeset 28 ca403f4c5b86
parent 27 12e5a38bf0a8
child 33 3e68e4c73db3
--- a/VerticalRuler.st	Thu Nov 17 15:42:58 1994 +0100
+++ b/VerticalRuler.st	Mon Nov 21 17:49:32 1994 +0100
@@ -23,7 +23,7 @@
 
 a VerticalRuler for page layout.
 
-$Header: /cvs/stx/stx/libwidg2/VerticalRuler.st,v 1.1 1994-11-17 14:42:58 claus Exp $
+$Header: /cvs/stx/stx/libwidg2/VerticalRuler.st,v 1.2 1994-11-21 16:48:22 claus Exp $
 
 written oct 91 by claus
 '!
@@ -51,14 +51,13 @@
 !VerticalRuler methodsFor:'redrawing'!
 
 redraw
-    "redraw scale"
+    "redraw the scale"
 
     |y pixelPerMM pixelPerInch mod pos shortLen veryShortLen longLen charX
      left paperHeightMM paperHeightPixel yOrigin labelBot marg fontHeight|
 
     shown ifFalse:[^ self].
 
-"/    self fill:viewBackground.
     self clear.
 
     yOrigin := self viewOrigin y.
@@ -95,18 +94,21 @@
 
 	y := (pixelPerMM * pos - yOrigin) rounded.
 	[(y < height) and:[pos <= paperHeightMM]] whileTrue:[
-	    (mod == 1) ifTrue:[
-		self displayLineFromX:left y:y
-				  toX:(left + shortLen) y:y
-	    ] ifFalse:[
+	    |l|
+
+	    l := shortLen.
+	    (mod ~~ 1) ifTrue:[
 		y < labelBot ifFalse:[
-		    self displayLineFromX:left y:y
-				      toX:(left + longLen) y:y.
-		    self displayString:(pos // 10) printString
-				     x:charX
-				     y:(y + marg + fontHeight)
+		    l := longLen
 		]
 	    ].
+	    self displayLineFromX:left y:y toX:(left + l) y:y.
+
+	    (mod ~~ 1 and:[y >= labelBot]) ifTrue:[
+		self displayString:(pos // 10) printString
+				 x:charX
+				 y:(y + marg + fontHeight)
+	    ].
 	    mod := (mod + 1) \\ 2.
 	    pos := pos + 5.
 	    y := (pixelPerMM * pos - yOrigin) rounded 
@@ -124,22 +126,26 @@
 	y := (pixelPerInch * pos - yOrigin) rounded.
 	veryShortLen := longLen // 4.
 	[(y < height) and:[pos <= paperHeight]] whileTrue:[
+	    |l|
+
+	    l := shortLen.
 	    (mod == 0) ifTrue:[
 		y < labelBot ifFalse:[
-		    self displayLineFromX:left y:y
-				      toX:(left + longLen) y:y.
+		    l := longLen.
+		]
+	    ] ifFalse:[
+		(mod == 2) ifFalse:[
+		    l := veryShortLen
+		]
+	    ].
+	    self displayLineFromX:left y:y toX:(left + l) y:y.
+
+	    (mod == 0) ifTrue:[
+		y < labelBot ifFalse:[
 		    self displayString:pos asInteger printString
 				     x:charX
 				     y:(y + marg + fontHeight)
 		]
-	    ] ifFalse:[
-		(mod == 2) ifTrue:[
-		    self displayLineFromX:left y:y
-				      toX:(left + shortLen) y:y
-		] ifFalse:[
-		    self displayLineFromX:left y:y
-				      toX:(left + veryShortLen) y:y
-		]
 	    ].
 	    mod := (mod + 1) \\ 4.
 	    pos := pos + 0.25.