[FIX] [BUG] PolygonAddHandleFix (sm)

stéphane ducasse ducasse at iam.unibe.ch
Sun Mar 21 08:47:28 UTC 2004


Hi jerome

please send code as changeset (changesorter -> create a new changeste-> 
move your method there -> edit preable -> send to the list). This way 
the people can use the harvesting tools
to check and evaluate your code.

Thanks

Stef

On 21 mars 04, at 02:24, Peace Jerome wrote:

> Problem: After Polygon Drop Handles are fixed, One
> vertex open curves do not get grow handles so they
> can't be changed. This fix allows for a grow handle if
> there is only one vertex.
>  
>  
> This is a resubmission of some small fixes that I
> originally tried to get looked at in Oct 2003.
> In resubmitting them I've made each a fix separate and
> atomic to ease the decision making process for the
> harvesters. And removed extraneous changes not
> directly concerned with the fix.
> I've also added preamble comments to indicate the
> purpose of each fix.
>
>
> Yours in Service, Jerome Peace
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Finance Tax Center - File online. File on time.
> http://taxes.yahoo.com/filing.html'From Squeak3.7alpha of 11 September 
> 2003 [latest update: #5816] on 13 March 2004 at 4:09:46 pm'!
> "Change Set:		PolygonAddHandleFix
> Date:			13 March 2004
> Author:			wiz (Jerome Peace)
>
> Add 'tween' add handles to one vertex lines, curves and polygons so 
> they can grow."!
>
>
> !PolygonMorph methodsFor: 'editing' stamp: 'wiz 3/13/2004 16:02'!
> addHandles
> 	| handle newVert tri |
> 	self removeHandles.
> 	handles _ OrderedCollection new.
> 	tri _ Array with: 0 at -4 with: 4 at 3 with: -3 at 3.
> 	vertices withIndexDo:
> 		[:vertPt :vertIndex |
> 		handle _ EllipseMorph newBounds: (Rectangle center: vertPt extent: 
> 8 at 8)
> 				color: Color yellow.
> 		handle on: #mouseMove send: #dragVertex:event:fromHandle:
> 				to: self withValue: vertIndex.
> 		handle on: #mouseUp send: #dropVertex:event:fromHandle:
> 				to: self withValue: vertIndex.
> 		self addMorph: handle.
> 		handles addLast: handle.
> 		"Give a small polygon a chance to grow. -wiz"
> 		(closed or: [(1 = vertices size) or: [vertIndex < vertices size]]) 
> ifTrue:
> 			[newVert _ PolygonMorph
> 					vertices: (tri collect: [:p | p + (vertPt + (vertices atWrap: 
> vertIndex+1) // 2)])
> 					color: Color green borderWidth: 1 borderColor: Color black.
> 			newVert on: #mouseDown send: #newVertex:event:fromHandle:
> 					to: self withValue: vertIndex.
> 			self addMorph: newVert.
> 			handles addLast: newVert]].
> 	smoothCurve ifTrue: [self updateHandles; layoutChanged].
> 	self changed! !
>
> !PolygonMorph methodsFor: 'editing' stamp: 'wiz 3/13/2004 16:06'!
> updateHandles
> 	| newVert oldVert midPts nextVertIx tweens |
> 	smoothCurve
> 		ifTrue: [
> 			handles first center: vertices first.
> 			handles last center: vertices last.
> 			midPts _ OrderedCollection new.
> 			nextVertIx _ 2.
> 			tweens _ OrderedCollection new.
> 			self
> 				lineSegmentsDo: [:p1 :p2 |
> 					tweens addLast: p2 asIntegerPoint.
> 					p2
> 							= (vertices atWrap: nextVertIx)
> 						ifTrue: ["Found endPoint."
> 							midPts addLast: (tweens atWrap: tweens size // 2)
> 									+ (tweens at: tweens size + 1 // 2) // 2.
> 							tweens _ OrderedCollection new.
> 							nextVertIx _ nextVertIx + 1]].
> 			midPts
> 				withIndexDo: [:midPt :vertIndex | (closed
> 							or: [vertIndex < vertices size])
> 						ifTrue: [newVert _ handles atWrap: vertIndex * 2.
> 							newVert position: midPt - (newVert extent // 2)]]]
> 		ifFalse: [vertices
> 				withIndexDo: [:vertPt :vertIndex |
> 					oldVert _ handles at: vertIndex * 2 - 1.
> 					oldVert position: vertPt - (oldVert extent // 2).
> 					(closed
> 							or: [vertIndex < vertices size])
> 						ifTrue: [newVert _ handles at: vertIndex * 2.
> 							newVert position: vertPt
> 									+ (vertices atWrap: vertIndex + 1) - newVert extent // 2 + (1 
> @ -1)]]]! !




More information about the Squeak-dev mailing list