Etoys Inbox: Morphic-kks.67.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Etoys Inbox: Morphic-kks.67.mcz

commits-2
A new version of Morphic was added to project Etoys Inbox:
http://source.squeak.org/etoysinbox/Morphic-kks.67.mcz

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

Name: Morphic-kks.67
Author: kks
Time: 30 July 2011, 5:18:47 pm
UUID: 33db131b-2c4b-40e6-883a-77678befec97
Ancestors: Morphic-kfr.66

Create a silhouette from any morph or use one as a stencil to create a sketch. see in "extras.." sub-menu.

=============== Diff against Morphic-kfr.66 ===============

Item was added:
+ ----- Method: EllipseMorph class>>fromHand: (in category 'class initialization') -----
+ fromHand: aHand
+ "Create an EllipseMorph interactively"
+ | origin color ellipse w drawBlock savecursor |
+ w _ self currentWorld.
+ Cursor crossHair showWhile: [
+ [Sensor noButtonPressed] whileTrue: [w displayWorldSafely; runStepMethods].
+ origin _ Sensor cursorPoint].
+ color _ Color yellow alpha: 0.2.
+ ellipse _ EllipseMorph new extent: 10@10; center: origin;  color: color;  width: 2.
+ ellipse openInWorld: w.
+ drawBlock _ [:p |
+ ellipse extent: (p - origin) abs * 2; center: origin.
+ w displayWorldSafely; runStepMethods].
+ savecursor _ Sensor currentCursor.
+ Cursor corner show.
+ [true] whileTrue: [
+ [Sensor anyButtonPressed] whileTrue: [ drawBlock value: Sensor cursorPoint ].
+ (Sensor cursorPoint dist: origin) > 3 ifTrue: [
+ drawBlock value: Sensor cursorPoint.
+ aHand position: Sensor cursorPoint.
+ savecursor show.
+ ellipse color: (ellipse color alpha: 1.0).
+ ^ellipse delete].
+ [Sensor noButtonPressed] whileTrue: [ drawBlock value: Sensor cursorPoint ].
+ ].
+ "
+ EllipseMorph fromHand: ActiveHand
+ "!

Item was added:
+ ----- Method: EllipseMorph class>>newFrom: (in category 'class initialization') -----
+ newFrom: aHand
+ "Create a new ellipse interactively"
+ | e |
+ e _ self fromHand: aHand.
+ e openInWorld: aHand world.
+ "
+ EllipseMorph newFrom: ActiveHand.
+ "!

Item was changed:
  ----- Method: Morph>>addMiscExtrasTo: (in category 'menus') -----
  addMiscExtrasTo: aMenu
  "Add a submenu of miscellaneous extra items to the menu."
 
  | realOwner realMorph subMenu |
  subMenu _ MenuMorph new defaultTarget: self.
  (Preferences eToyFriendly not and: [self isWorldMorph not and: [self renderedMorph isSystemWindow not]])
  ifTrue: [subMenu add: 'put in a window' translated action: #embedInWindow].
 
  self isWorldMorph ifFalse:
  [subMenu add: 'adhere to edge...' translated action: #adhereToEdge.
  subMenu addLine].
 
  realOwner _ (realMorph _ self topRendererOrSelf) owner.
  (realOwner isKindOf: TextPlusPasteUpMorph) ifTrue:
  [subMenu add: 'GeeMail stuff...' translated subMenu: (realOwner textPlusMenuFor: realMorph)].
 
  Preferences eToyFriendly
   ifFalse: [
  subMenu
 
  add: 'add mouse up action' translated action: #addMouseUpAction;
 
  add: 'remove mouse up action' translated action: #removeMouseUpAction;
 
  add: 'hand me tiles to fire this button' translated action: #handMeTilesToFire.
 
  subMenu addLine.
  ].
 
  Preferences eToyFriendly
   ifFalse: [
  subMenu add: 'arrowheads on pen trails...' translated action: #setArrowheads.
 
  subMenu addLine.
 
  ].
  subMenu defaultTarget: self topRendererOrSelf.
  (self isWorldMorph not and: [(self renderedMorph isSystemWindow) not]) ifTrue: [
  subMenu add: 'draw new path' translated action: #definePath.
 
  subMenu add: 'follow existing path' translated action: #followPath.
 
  subMenu add: 'delete existing path' translated action: #deletePath.
 
  subMenu addLine.
  ].
  self addGestureMenuItems: subMenu hand: ActiveHand.
 
  self isWorldMorph ifFalse:
  [subMenu add: 'balloon help for this object' translated action: #editBalloonHelpText].
 
+ subMenu addLine.
+ subMenu add: 'sketch this' translated action: #sketchIt.
+ subMenu add: 'sketch a silhouette' translated action: #sketchASilhouette.
+ subMenu add: 'stencil a sketch' translated action: #stencilASketch.
+
  subMenu submorphs isEmpty ifFalse: [
  aMenu add: 'extras...' translated subMenu: subMenu
+ ].
+ !
- ].!

Item was added:
+ ----- Method: Morph>>silhouetteForm (in category 'drawing') -----
+ silhouetteForm
+ "Return a form representing the 'shadow' of the receiver including all its submorphs"
+ | bnds canvas form |
+ bnds _ self fullBounds.
+ canvas _ (Display defaultCanvasClass extent: bnds extent depth: 1)
+ asShadowDrawingCanvas: Color black. "Color black represents one for 1bpp"
+ canvas translateBy: bnds topLeft negated
+ during:[:tempCanvas|
+ self fullDrawOn: tempCanvas].
+ form _ ColorForm mappingWhiteToTransparentFrom: canvas form.
+ ^form offset: bnds topLeft.
+ !

Item was added:
+ ----- Method: Morph>>sketchASilhouette (in category 'as yet unclassified') -----
+ sketchASilhouette
+ | w m |
+ w _ self world ifNil: [ActiveWorld ].
+ m _ w drawingClass withForm: self silhouetteForm.
+ m openInHand.!

Item was added:
+ ----- Method: Morph>>sketchIt (in category 'as yet unclassified') -----
+ sketchIt
+ | w m |
+ w _ self world ifNil: [ActiveWorld].
+ m _ w drawingClass withMorph: self.
+ m openInHand.!

Item was added:
+ ----- Method: Morph>>stencilASketch (in category 'as yet unclassified') -----
+ stencilASketch
+ | m |
+ self world ifNil: [^self ].
+ m _ SketchMorph withStencil: self.
+ m openInHand.!

Item was changed:
  ----- Method: PasteUpMorph>>grabFloodFromScreen: (in category 'world menu') -----
  grabFloodFromScreen: evt
  "Allow the user to plant a flood seed on the Display, and create a new drawing morph from the resulting region. Attach the result to the hand."
  | screenForm exterior p1 box |
  Cursor crossHair showWhile: [p1 _ Sensor waitButton].
  box _ Display floodFill: Color transparent at: p1.
  exterior _ ((Display copy: box) makeBWForm: Color transparent) reverse.
  self world invalidRect: box; displayWorldSafely.
  (box area > (Display boundingBox area // 2))
  ifTrue: [^ PopUpMenu notify: 'Sorry, the region was too big'].
  (exterior deepCopy reverse anyShapeFill reverse)  "save interior bits"
  displayOn: exterior at: 0@0 rule: Form and.
  screenForm _ Form fromDisplay: box.
  screenForm eraseShape: exterior.
  screenForm isAllWhite ifFalse:
+ [(evt ifNil: [ActiveHand] ifNotNil: [ evt hand]) attachMorph: (self drawingClass withForm: screenForm)]!
- [evt hand attachMorph: (self drawingClass withForm: screenForm)]!

Item was added:
+ ----- Method: PolygonMorph class>>newFrom: (in category 'instance creation') -----
+ newFrom: aHand
+ "Rubber-band tool for polygons"
+ | polygon |
+ polygon _ self fromHand: aHand.
+ polygon makeClosed; color: (Color orange lighter alpha: 0.7).
+ polygon openInWorld: aHand world.
+ "
+ PolygonMorph newFrom: ActiveHand.
+ "
+ !

Item was added:
+ ----- Method: PolygonMorph class>>newLassoFrom: (in category 'instance creation') -----
+ newLassoFrom: aHand
+ "Smooth Polygon tool"
+ | polygon |
+ polygon _ self fromHandFreehand: aHand.
+ polygon makeClosed; color: (Color orange lighter alpha: 0.7).
+ polygon openInWorld: aHand world.
+ "
+ PolygonMorph newLassoOn: ActiveHand.
+ "
+ !

Item was added:
+ ----- Method: RectangleMorph class>>fromHand: (in category 'class initialization') -----
+ fromHand: hand
+ "Let the user draw a rectangle by indicating top left origin and bottom right corner"
+ | rect  |
+ rect := Rectangle fromUser.
+ ^self authoringPrototype
+ position: rect origin;
+ extent: rect extent.
+
+ "
+ RectangleMorph fromHand: ActiveHand
+ "
+ !

Item was added:
+ ----- Method: RectangleMorph class>>newFrom: (in category 'class initialization') -----
+ newFrom: hand
+ "Let the user draw a rectangle by indicating top left origin and bottom right corner"
+ |  m |
+ m _ self fromHand: hand.
+ m openInWorld: hand world.
+ "
+ RectangleMorph fromHand: ActiveHand
+ "
+ !

Item was added:
+ ----- Method: SketchMorph class>>fromLasso (in category 'instance creation') -----
+ fromLasso
+ "Create a sketch by rubber-banding a region interactively"
+ | lasso |
+ lasso _ PolygonMorph fromHandFreehand: self currentHand.
+ lasso makeClosed.
+ (self withStencil: lasso) openInHand.
+ "
+ SketchMorph fromLasso.
+ "!

Item was added:
+ ----- Method: SketchMorph class>>fromPolygon (in category 'instance creation') -----
+ fromPolygon
+ "Create a sketch by rubber-banding a region"
+ | polygon |
+ polygon _ PolygonMorph fromHand: self currentHand.
+ polygon makeClosed.
+ (self withStencil: polygon) openInHand.
+ "
+ SketchMorph fromPolygon.
+ "!

Item was added:
+ ----- Method: SketchMorph class>>withMorph: (in category 'instance creation') -----
+ withMorph: aMorph
+ "Create a sketch from a Morph and its submorphs"
+
+ | bnds canvas |
+ bnds _ aMorph fullBounds.
+ canvas _ Display defaultCanvasClass extent: bnds extent.
+ canvas translateBy: bnds topLeft negated during: [ :tmpCanvas |
+ aMorph fullDrawOn: tmpCanvas].
+ ^SketchMorph withForm: (canvas form offset: bnds topLeft).
+ !

Item was added:
+ ----- Method: SketchMorph class>>withStencil: (in category 'instance creation') -----
+ withStencil: stencilMorph
+ "Create a sketch from Display by using a morph as a stencil"
+
+ | w outline topLeft baseForm finalForm |
+ w _ stencilMorph world ifNil: [ActiveWorld].
+ outline _ stencilMorph silhouetteForm.
+ topLeft _ outline offset.
+ stencilMorph hide.
+ w displayWorldSafely.
+ baseForm _ stencilMorph pasteUpMorphOrWorld imageFormForRectangle: (topLeft extent: outline extent).
+ stencilMorph show.
+ finalForm _ (baseForm eraseShape: (outline reverse offset: 0@0)) trimBordersOfColor: Color transparent.
+ ^SketchMorph withForm: finalForm.
+
+ "
+ (SketchMorph withStencil: (EllipseMorph new position: Display center)) openInHand
+ "
+ !

_______________________________________________
etoys-dev mailing list
[hidden email]
http://lists.squeakland.org/mailman/listinfo/etoys-dev