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 |
Free forum by Nabble | Edit this page |