[NEWBIE]More questions on PaintBoxMorph
Bob Arning
arning at charm.net
Sun Apr 23 23:15:03 UTC 2000
On Sun, 23 Apr 2000 23:23:56 +0200 Karl Ramberg <karl.ramberg at chello.se> wrote:
>I still reading and trying to understand stuff in both Smalltalk and
>morph. This changeset is supposed to change the cursor into a
>color picker but fails to evoke the world (?) or HandMorph fails to
>update it self (?). The color picker draws once and then the
>cursor becomes invisible. The code commented out is to change the
>cursor back to normal but when commented out it will change the
>cursor into a color picker and the default cursor (depending on where
>the invisible cursor is at mouseUp.)
Karl,
There were several problems here:
1. The form used for the eyedropper seems to have been changed, so it was picking up from the wrong location.
2. If picking colors from a 32-bit deep Display, the alpha bits could be anything (they only matter squeak-to-squeak, but not squeak-to-OS.
3. If the hand has anything other than the OS-standard form, it needs to draw itself. The loop that takes control of all cursor tracking didn't handle that.
Changes included below.
Cheers,
Bob
===== code snipped below =====
'From Squeak2.8alpha of 13 January 2000 [latest update: #2005] on 23 April 2000 at 7:10:32 pm'!
!PaintBoxMorph methodsFor: 'actions' stamp: 'RAA 4/23/2000 19:10'!
eyedropper: aButton action: aSelector cursor: aCursor
"Take total control and pick up a color!!!!"
| pt feedbackColor |
aButton state: #on.
tool ifNotNil: [tool state: #off].
currentCursor _ aCursor.
self activeHand
showTemporaryCursor: currentCursor
hotSpotOffset: 6 negated @ 4 negated. "<<<< the form was changed a bit??"
feedbackColor _ Display colorAt: Sensor cursorPoint.
self addMorphFront: colorMemory.
"Full color picker"
[Sensor anyButtonPressed]
whileFalse:
[pt _ Sensor cursorPoint.
"deal with the fact that 32 bit displays may have garbage in the alpha bits"
feedbackColor _ Display depth = 32 ifTrue: [
Color colorFromPixelValue: ((Display pixelValueAt: pt) bitOr: 16rFF000000) depth: 32
] ifFalse: [
Display colorAt: pt
].
"the hand needs to be drawn"
self activeHand position: pt.
self world displayWorldSafely.
Display fill: colorPatch bounds fillColor: feedbackColor].
Sensor waitNoButton.
self activeHand showTemporaryCursor: nil hotSpotOffset: 0 @ 0.
self currentColor: feedbackColor.
colorMemory delete.
tool
ifNotNil:
[tool state: #on.
currentCursor _ tool arguments at: 3].
aButton state: #off! !
More information about the Squeak-dev
mailing list
|