Skip to content
Stephen De Gabrielle edited this page Mar 7, 2014 · 17 revisions

Make a pieWedgeMorph, taken from the Self 4.1 tutorial.

  1. `New shell`
  2. `circleMorph copy` `Get it`
  3. middle-click/menu-click
  4. pin the menu
  5. Add slot
    percent <- 33.0
  6. Add slot
    startAngle <- 0
  7. Add slot
    amount <- 10
  8. `Show Morph` to show pie wedge morph. It is still a circle. Not a pie wedge. Yet.
  9. right-click/blue-menu the morph
  10. click `Move to Own Window` (If you have a separate window, messing up the draw method won’t crash the window you are developing in)
  11. Add slot baseDrawOn
    
    	baseDrawOn: canvas = (| r. |
    		"X bug: zero span angle draws full circle!"
    		percent = 0 ifTrue: [ ^self ]. 
    		"X bug: fillArc sometimes goes one pixel out of bounds"
    		r: baseBounds indent: 1. 
    		canvas
    			fillArcWithin: r 
    			From: startAngle 
    			Spanning: spanAngle
    			Color: color.
    		self
    	).
    
  12. Add slot spanAngle
    	spanAngle = (  3.6 * percent ).
  13. Add slot
    baseContainsPt: p = (| v. angle. |
    	v: (p - center) xAxisReflect. "expect y to increase vertically"
    	angle: v thetaDegrees.
    	v r > radius ifTrue: [ ^false ].
    	(angle >= startAngle) && [angle <= (startAngle + spanAngle)]
    )
  14. Add slot
    morphTypeName = 'pieWedgeMorph'

Clone this wiki locally