#REFACTORING by stefan
class: Color
changed:
#alphaMixed:with:
#exactOn:
#fromLiteralArrayEncoding:
#nearestOn:
#onDevice:
#wheel:
use "self class" when refering to own class
--- a/Color.st Sun Dec 25 17:32:17 2016 +0100
+++ b/Color.st Tue Jan 03 14:41:54 2017 +0100
@@ -3840,11 +3840,11 @@
frac1 := proportion asFloat min: 1.0 max: 0.0.
frac2 := 1.0 - frac1.
- ^ Color
- r: ((red * frac1) + (aColor scaledRed * frac2)) / MaxValue
- g: ((green * frac1) + (aColor scaledGreen * frac2)) / MaxValue
- b: ((blue * frac1) + (aColor scaledBlue * frac2)) / MaxValue
- alpha: (self alpha * frac1) + (aColor alpha * frac2)
+ ^ self class
+ r: ((red * frac1) + (aColor scaledRed * frac2)) / MaxValue
+ g: ((green * frac1) + (aColor scaledGreen * frac2)) / MaxValue
+ b: ((blue * frac1) + (aColor scaledBlue * frac2)) / MaxValue
+ alpha: (self alpha * frac1) + (aColor alpha * frac2)
"
(Color r:1 g:0 b:0 alpha:1) alphaMixed:0.5 with:(Color r:1 g:0 b:0 alpha:1)
@@ -3999,9 +3999,9 @@
hue := self hue.
step := 360.0 / thisMany.
^ (1 to: thisMany) collect: [:num |
- c := Color h: hue s: sat v: bri. "hue is taken mod 360"
- hue := hue + step.
- c].
+ c := self class h: hue s: sat v: bri. "hue is taken mod 360"
+ hue := hue + step.
+ c].
! !
!Color methodsFor:'accessing'!
@@ -4542,9 +4542,9 @@
encoding size == 2 ifTrue:[
nameOrRGB := encoding at:2.
nameOrRGB isSymbol ifTrue:[
- clr := Color perform:nameOrRGB
+ clr := self class perform:nameOrRGB
] ifFalse:[
- clr := Color rgbValue:nameOrRGB.
+ clr := self class rgbValue:nameOrRGB.
].
red := clr scaledRed.
green := clr scaledGreen.
@@ -4632,7 +4632,7 @@
b := blue.
"first look if not already there"
- newColor := Color existingColorScaledRed:r scaledGreen:g scaledBlue:b on:aDevice.
+ newColor := self class existingColorScaledRed:r scaledGreen:g scaledBlue:b on:aDevice.
(newColor notNil and:[newColor ditherForm isNil]) ifTrue:[^ newColor].
r := (r bitAnd:16rFF00) bitOr:(r bitShift:-8).
@@ -4719,46 +4719,44 @@
(device == aDevice) ifTrue:[^ self].
"first look if not already there"
- newColor := Color nearestColorScaledRed:red scaledGreen:green scaledBlue:blue on:aDevice.
+ newColor := self class nearestColorScaledRed:red scaledGreen:green scaledBlue:blue on:aDevice.
newColor notNil ifTrue:[^ newColor].
"ask that device for the color"
id := aDevice colorScaledRed:red scaledGreen:green scaledBlue:blue.
id isNil ifTrue:[
- "this is a kludge:
- scavenge to possuby free unused colors and try again ...
- this is a compromise: actually a full GC is required here,
- but that is too expensive.
- "
-" "
- ObjectMemory scavenge; finalize.
- id := aDevice colorScaledRed:red scaledGreen:green scaledBlue:blue
-" "
+ "this is a kludge:
+ scavenge to possuby free unused colors and try again ...
+ this is a compromise: actually a full GC is required here,
+ but that is too expensive.
+ "
+ ObjectMemory scavenge; finalize.
+ id := aDevice colorScaledRed:red scaledGreen:green scaledBlue:blue
].
id isNil ifTrue:[
- "no color - fail"
-
- ^ nil
+ "no color - fail"
+
+ ^ nil
].
"receiver was not associated - do it now"
device isNil ifTrue:[
- device := aDevice.
- colorId := id.
-
- aDevice visualType ~~ #TrueColor ifTrue:[
- "/ Lobby register:self.
- aDevice registerColor:self.
- ].
- ^ self
+ device := aDevice.
+ colorId := id.
+
+ aDevice visualType ~~ #TrueColor ifTrue:[
+ "/ Lobby register:self.
+ aDevice registerColor:self.
+ ].
+ ^ self
].
"receiver was already associated to another device - need a new color"
- newColor := (self class basicNew) setScaledRed:red scaledGreen:green sclaedBlue:blue device:aDevice.
+ newColor := self class basicNew setScaledRed:red scaledGreen:green scaledBlue:blue device:aDevice.
newColor setColorId:id.
aDevice visualType ~~ #TrueColor ifTrue:[
- "/ Lobby register:newColor.
- aDevice registerColor:newColor.
+ "/ Lobby register:newColor.
+ aDevice registerColor:newColor.
].
^ newColor
@@ -4845,7 +4843,7 @@
device := aDevice.
^ self
].
- newColor := (self class basicNew)
+ newColor := self class basicNew
setScaledRed:red
scaledGreen:green
scaledBlue:blue
@@ -4892,7 +4890,7 @@
"/ ^ self
"/ ].
- newColor := Color existingColorScaledRed:rV scaledGreen:gV scaledBlue:bV on:aDevice.
+ newColor := self class existingColorScaledRed:rV scaledGreen:gV scaledBlue:bV on:aDevice.
newColor notNil ifTrue:[
(newColor scaledRed ~~ red
or:[newColor scaledGreen ~~ green
@@ -4912,7 +4910,7 @@
device := aDevice.
newColor := self.
] ifFalse:[
- newColor := (self class basicNew)
+ newColor := self class basicNew
setScaledRed:red
scaledGreen:green
scaledBlue:blue
@@ -5051,7 +5049,7 @@
"/ receiver was already associated to another device
"/ - need a new color and return it
- newColor := (self class basicNew)
+ newColor := self class basicNew
setScaledRed:red
scaledGreen:green
scaledBlue:blue