[squeak-dev] The Trunk: MorphicExtras-nice.138.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Dec 13 21:53:37 UTC 2013


Nicolas Cellier uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/MorphicExtras-nice.138.mcz

==================== Summary ====================

Name: MorphicExtras-nice.138
Author: nice
Time: 13 December 2013, 10:52:51.312 pm
UUID: 7341d071-8e59-4440-a218-079102d11bfe
Ancestors: MorphicExtras-nice.137

PaintBoxMorph re-engineering:
1) Initialize more PaintBoxMorph newPrototype instance variables.
2) Remove unused colorPatch instance variable.
  The two methods in which it appears are unsent, or more exactly they both have an alternate implementor which only send to self.
3) Avoid highlighting the brush buttons onImage with a cyan/light blue square again and again.
  The Prototype is already highlighted.
  Move this highlighting in prototype initialization.

=============== Diff against MorphicExtras-nice.137 ===============

Item was changed:
  ImageMorph subclass: #PaintBoxMorph
+ 	instanceVariableNames: 'action tool currentCursor thumbnail currentColor currentBrush colorMemory stampHolder rotationTabForm scaleTabForm colorMemoryThin brushes focusMorph weakDependents recentColors'
- 	instanceVariableNames: 'action tool currentCursor thumbnail currentColor currentBrush colorMemory colorPatch stampHolder rotationTabForm scaleTabForm colorMemoryThin brushes focusMorph weakDependents recentColors'
  	classVariableNames: 'AllOffImage AllOnImage AllPressedImage ColorChart ImageLibrary OriginalBounds Prototype RecentColors UseLargeColorPicker'
  	poolDictionaries: ''
  	category: 'MorphicExtras-Support'!

Item was changed:
  ----- Method: PaintBoxMorph class>>new (in category 'instance creation') -----
  new
  
  	| pb |
  	pb := self prototype veryDeepCopy.
  		"Assume that the PaintBox does not contain any scripted Players!!"
  	pb stampHolder normalize.	"Get the stamps to show"
  	"Get my own copies of the brushes so I can modify them"
+ 	#(brush1: brush2: brush3: brush4: brush5: brush6:) do: [:sel | | dualUse button |
- 	#(brush1: brush2: brush3: brush4: brush5: brush6:) do: [:sel | | dualUse formCanvas rect button |
  		button := pb submorphNamed: sel.
  		button offImage: button offImage deepCopy.
  		dualUse := button onImage == button pressedImage.	"sometimes shared"
  		button onImage: button onImage deepCopy.
  		dualUse
  			ifTrue: [button pressedImage: button onImage]
  			ifFalse: [button pressedImage: button pressedImage deepCopy].
- 		"force color maps for later mapping"
- 		button offImage.
- 		button onImage.
- 		button pressedImage.
- 		formCanvas := button onImage getCanvas.
- 		formCanvas := formCanvas
- 			copyOrigin: 0 at 0
- 			clipRect: (rect := 0 at 0 extent: button onImage extent).
- 		(#(brush1: brush3:) includes: sel) ifTrue: [
- 			rect := rect origin corner: rect corner - (2 at 2)].
- 		(#brush2: == sel) ifTrue: [
- 			rect := rect origin corner: rect corner - (2 at 4)].
- 		formCanvas frameAndFillRectangle: rect fillColor: Color transparent
- 			borderWidth: 2 borderColor: (Color r: 0.599 g: 0.8 b: 1.0).
  		].
  	pb showColor.
  	pb fixUpRecentColors.
  	pb addLabels.
  	^ pb!

Item was added:
+ ----- Method: PaintBoxMorph>>addBrushesOffImage: (in category 'initialization') -----
+ addBrushesOffImage: offImage
+ 	| posSpec |
+ 	posSpec := #(
+ 		(13 37 64 13 37 64) "offset X"
+ 		(107 107 107 124 124 124) "offset Y"
+ 		(21 24 27 21 24 27) "width"
+ 		(18 18 18 25 25 25) "height").
+ 	#(brush1: brush2: brush3: brush4: brush5: brush6: ) keysAndValuesDo: [:index :name |
+ 		| button nib rect on off |
+ 		(self submorphNamed: name) ifNil:
+ 			[nib := Form dotOfSize: (#(1 2 3 6 11 26) at: index).
+ 			rect := ((posSpec at: 1) at: index) @ ((posSpec at: 2) at: index)
+ 					extent: ((posSpec at: 3) at: index) @ ((posSpec at: 4) at: index).
+ 			off := (offImage copy: rect) as8BitColorForm.
+ 			"highlight a frame"
+ 			on := off deepCopy.
+ 			(on getCanvas copyOrigin: 0 at 0 clipRect: (0 at 0 extent: rect extent))
+ 				frameAndFillRectangle: (0 at 0 extent: rect extent) fillColor: Color transparent
+ 				borderWidth: 2 borderColor: (Color r: 0.6 g: 0.8 b: 1.0).
+ 			(button := ThreePhaseButtonMorph new)
+ 				onImage: on;
+ 				offImage: off;
+ 				pressedImage: on;
+ 				bounds: (rect translateBy: self position);
+ 				setNamePropertyTo: name;
+ 				actionSelector: #brush:action:nib:evt:; 
+ 					arguments: (Array with: button with: name with: nib);
+ 				actWhen: #buttonUp; target: self.
+ 			self addMorph: button.]].
+ 	brushes := #(brush1: brush2: brush3: brush4: brush5: brush6: ) collect: [:name | self submorphNamed: name].
+ 	currentBrush := brushes last.
+ 	currentBrush state: #on.
+ 
+ !

Item was removed:
- ----- Method: PaintBoxMorph>>addBrushesOffImage:onImage: (in category 'initialization') -----
- addBrushesOffImage: offImage onImage: onImage
- 	| posSpec |
- 	posSpec := #(
- 		(13 36 63 13 36 63) "offset X"
- 		(107 107 107 124 124 124) "offset Y"
- 		(21 24 27 21 24 27) "width"
- 		(18 18 18 25 25 25) "height").
- 	#(brush1: brush2: brush3: brush4: brush5: brush6: ) keysAndValuesDo: [:index :name |
- 		| button nib rect |
- 		(self submorphNamed: name) ifNil:
- 			[nib := Form dotOfSize: (#(1 2 3 6 11 26) at: index).
- 			rect := ((posSpec at: 1) at: index) @ ((posSpec at: 2) at: index)
- 					extent: ((posSpec at: 3) at: index) @ ((posSpec at: 4) at: index).
- 			(button := ThreePhaseButtonMorph new)
- 				onImage: (onImage copy: rect) as8BitColorForm;
- 				offImage: (offImage copy: rect) as8BitColorForm;
- 				pressedImage: (onImage copy: rect) as8BitColorForm;
- 				bounds: (rect translateBy: self position);
- 				setNamePropertyTo: name;
- 				actionSelector: #brush:action:nib:evt:; 
- 					arguments: (Array with: button with: name with: nib);
- 				actWhen: #buttonUp; target: self.
- 			self addMorph: button.]].
- 	brushes := #(brush1: brush2: brush3: brush4: brush5: brush6: ) collect: [:name | self submorphNamed: name]
- 
- !

Item was changed:
  ----- Method: PaintBoxMorph>>addToolsOffImage:onImage: (in category 'initialization') -----
  addToolsOffImage: offImage onImage: onImage
  	| posSpec actionSpec iconSpec |
  	posSpec := #(
  		(13 53 13 53) "offset X"
  		(13 13 61 61) "offset Y"
  		(40 40 40 40) "width"
  		(48 48 44 44) "height").
  	actionSpec := #(tool:action:cursor:evt: tool:action:cursor:evt: eyedropper:action:cursor:evt: tool:action:cursor:evt:).
  	iconSpec := #(paintIcon fillIcon eyedropperIcon eraseIcon).
  	#(paint: fill: eyedropper: erase:) keysAndValuesDo: [:index :name |
  		| button rect |
  		(self submorphNamed: name) ifNil:
  			[rect := ((posSpec at: 1) at: index) @ ((posSpec at: 2) at: index)
  					extent: ((posSpec at: 3) at: index) @ ((posSpec at: 4) at: index).
  			(button := ThreePhaseButtonMorph new)
  				onImage: (onImage copy: rect);
  				offImage: (offImage copy: rect);
  				pressedImage: (onImage copy: rect);
  				bounds: (rect translateBy: self position);
  				setNamePropertyTo: name;
  				actionSelector: (actionSpec at: index); 
  					arguments: (Array with: button with: name with: (self class perform: (iconSpec at: index)));
  				actWhen: #buttonUp; target: self.
+ 			index = 1
+ 				ifTrue:
+ 					[action := name.
+ 					tool := button.
+ 					currentCursor := button arguments at: 3].
  			self addMorph: button.]].
  
  !

Item was changed:
  ----- Method: PaintBoxMorph>>buildAPrototype (in category 'initialization') -----
  buildAPrototype
  	| onImage |
  	self initialize.
  	self image: self class paletteImage.
  	rotationTabForm := self class rotationTabImage.
  	scaleTabForm := self class scaleTabImage.
  	(colorMemoryThin := self class colorMemoryThinImage asMorph)
  		setNamePropertyTo: 'ColorPickerClosed';
  		position: self position + (11 at 150);
  		on: #mouseEnter send: #showColorPalette: to: self.
  	self addMorph: colorMemoryThin.
  	(colorMemory := PaintBoxColorPicker new image: self class colorMemoryImage)
  		setNamePropertyTo: 'ColorPickerOpened';
  		on: #mouseDown send: #takeColorEvt:from: to: self.
+ 	currentColor := Color transparent.
  	
  	onImage := self class paletteOnImage.
  	self
  		addToolsOffImage: image onImage: onImage;
+ 		addBrushesOffImage: image;
- 		addBrushesOffImage: image onImage: onImage;
  		addActionsOffImage: image onImage: onImage;
  		addStampsAndShapes;
  		addShapeButtonsOffImage: self class shapesImage onImage: self class shapesOnImage;
  		addStampButtonsOffImage: self class stampsImage onImage: self class stampsOnImage.
+ 	stampHolder := ScrollingToolHolder newPrototypeFor: self.!
- 	stampHolder := ScrollingToolHolder newPrototypeFor: self.
- 	currentBrush := brushes at: 1.!

Item was removed:
- ----- Method: PaintBoxMorph>>colorPatch (in category 'other') -----
- colorPatch
- 	^ colorPatch!

Item was removed:
- ----- Method: PaintBoxMorph>>indicateColorUnderMouse (in category 'actions') -----
- indicateColorUnderMouse
- 	"Track the mouse with the special eyedropper cursor, and accept whatever color is under the mouse as the currently-chosen color; reflect that choice in the feedback box, and return that color."
- 
- 	| pt feedbackColor |
- 	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].
- 
- 	self activeHand position: pt.
- 	self world displayWorldSafely.
- 	Display fill: colorPatch bounds fillColor: feedbackColor.
- 	^ feedbackColor	!



More information about the Squeak-dev mailing list