DrawKit
Vector and illustration framework for Mac OS X
|
This subclass of DKDrawableShape implements a protocol for obtaining shapes dynamically from a shape provider. More...
Instance Methods | |
(id) | - optionalParameter |
(NSBezierPath *) | - providedShapeForRect: |
(void) | - setOptionalParameter: |
(void) | - setShapeProvider:selector: |
(id) | - shapeProvider |
(SEL) | - shapeSelector |
Instance Methods inherited from DKDrawableShape | |
(NSInteger) | - addHotspot: |
(void) | - adjustToFitGrid: |
(void) | - adoptPath: |
(BOOL) | - allowSizeKnobsToRotateShape |
(NSArray *) | - breakApart |
(BOOL) | - canPastePathWithPasteboard: |
(NSPoint) | - convertPointFromRelativeLocation: |
(IBAction) | - convertToPath: |
(DKDistortionTransform *) | - distortionTransform |
(void) | - drawHotspotAtPoint:inState: |
(void) | - drawHotspotsInState: |
(void) | - drawKnob: |
(void) | - flipHorizontally |
(void) | - flipVertically |
(DKHotspot *) | - hotspotForPartCode: |
(NSPoint) | - hotspotPointForPartcode: |
(NSRect) | - hotspotRect: |
(NSArray *) | - hotspots |
(DKHotspot *) | - hotspotUnderMouse: |
(id) | - initWithBezierPath: |
(id) | - initWithBezierPath:rotatedToAngle: |
(id) | - initWithBezierPath:rotatedToAngle:style: |
(id) | - initWithBezierPath:style: |
(id) | - initWithCanonicalBezierPath: |
(id) | - initWithCanonicalBezierPath:style: |
(id) | - initWithOvalInRect: |
(id) | - initWithOvalInRect:style: |
(id) | - initWithRect: |
(id) | - initWithRect:style: |
(NSAffineTransform *) | - inverseTransform |
(NSPoint) | - knobPoint: |
(NSPoint) | - locationIgnoringOffset |
(DKDrawablePath *) | - makePath |
(void) | - moveKnob:toPoint:allowRotate:constrain: |
(NSInteger) | - operationMode |
(IBAction) | - pastePath: |
(NSBezierPath *) | - path |
(NSBezierPath *) | - path:withFinalSize:offsetBy:fromPartcode: |
Transforms a path to the final size and position relative to a partcode. More... | |
(NSBezierPath *) | - pathWithFinalSize:offsetBy:fromPartcode: |
Return a rectangular path offset from a given partcode. More... | |
(NSBezierPath *) | - pathWithRelativePosition:finalSize: |
Return a rectangular path with given relative origin but absolute final size. More... | |
(NSBezierPath *) | - pathWithRelativeRect: |
Return a rectangular path with given size and origin. More... | |
(NSPoint) | - pointForRelativeLocation: |
Convert a point from relative coordinates to absolute coordinates. More... | |
(void) | - removeHotspot: |
(void) | - resetBoundingBox |
(IBAction) | - resetBoundingBox: |
(void) | - resetBoundingBoxAndRotation |
(void) | - reshapePath |
(IBAction) | - rotate: |
(void) | - rotateUsingReferencePoint:constrain: |
(NSPoint) | - rotationKnobPoint |
(void) | - setDistortionTransform: |
(IBAction) | - setDistortMode: |
(void) | - setDragAnchorToPart: |
(void) | - setHotspots: |
(void) | - setOperationMode: |
(void) | - setPath: |
(IBAction) | - toggleHorizontalFlip: |
(IBAction) | - toggleVerticalFlip: |
(NSAffineTransform *) | - transform |
Return a transform that maps the object's stored path to its true location in the drawing. More... | |
(NSBezierPath *) | - transformedPath |
(NSAffineTransform *) | - transformIncludingParent |
(NSString *) | - undoActionNameForPartCode: |
(IBAction) | - unrotate: |
Instance Methods inherited from DKDrawableObject | |
(void) | - addMetadata: |
(void) | - addUserInfo: |
(NSSet *) | - allRegisteredStyles |
(NSSet *) | - allStyles |
(CGFloat) | - angle |
(CGFloat) | - angleInDegrees |
Return the shape's current rotation angle. More... | |
(NSRect) | - apparentBounds |
(void) | - applyTransform: |
Apply the transform to the object. More... | |
(NSRect) | - bounds |
(NSImage *) | - cachedImage |
Returns an image of the object representing its current appearance at 100% scale. More... | |
(NSColor *) | - colourForKey: |
(id< DKDrawableContainer >) | - container |
Returns the immediate parent of this object. More... | |
(NSAffineTransform *) | - containerTransform |
Return the container's transform. More... | |
(CGFloat) | - convertLength: |
(NSPoint) | - convertPointToDrawing: |
(IBAction) | - copyDrawingStyle: |
(void) | - creationTool:willBeginCreationAtPoint: |
(void) | - creationTool:willEndCreationAtPoint: |
(NSView *) | - currentView |
(NSCursor *) | - cursorForPartcode:mouseButtonDown: |
(void) | - detachStyle |
If the object's style is currently sharable, copy it and make it non-sharable. More... | |
(void) | - drawContent |
(void) | - drawContentInRect:fromRect:withStyle: |
(void) | - drawContentWithSelectedState: |
(void) | - drawContentWithStyle: |
(void) | - drawGhostedContent |
(DKDrawing *) | - drawing |
(void) | - drawSelectedState |
(void) | - drawSelectionPath: |
(NSSize) | - extraSpaceNeeded |
(CGFloat) | - floatValueForKey: |
(NSUInteger) | - geometryChecksum |
(void) | - group:willUngroupObjectWithTransform: |
This object is being ungrouped from a group. More... | |
(void) | - groupWillAddObject: |
This object is being added to a group. More... | |
(BOOL) | - hasMetadataForKey: |
(NSInteger) | - hitPart: |
(NSInteger) | - hitSelectedPart:forSnapDetection: |
(NSUInteger) | - indexInContainer |
Returns the index position of this object in its container layer. More... | |
(id) | - initWithStyle: |
Initializes the drawable to have the style given. More... | |
(BOOL) | - intersectsRect: |
(NSInteger) | - intValueForKey: |
(void) | - invalidateRenderingCache |
Discard all cached rendering information. More... | |
(BOOL) | - isBeingHitTested |
Is a hit-test in progress. More... | |
(BOOL) | - isGhosted |
Retuirn whether the object is ghosted rather than with its full style. More... | |
(BOOL) | - isKeyObject |
Is the object currently the layer's key object? More... | |
(BOOL) | - isPendingObject |
Is the object currently a pending object? More... | |
(BOOL) | - isSelected |
(BOOL) | - isTrackingMouse |
(DKKnobType) | - knobTypeForPartCode: |
(DKObjectOwnerLayer *) | - layer |
Returns the layer that this object ultimately belongs to. More... | |
(NSPoint) | - location |
(BOOL) | - locationLocked |
Whether the object's location is locked or not. More... | |
(IBAction) | - lock: |
(BOOL) | - locked |
(IBAction) | - lockLocation: |
(NSRect) | - logicalBounds |
(NSMenu *) | - menu |
Reurn the menu to use as the object's contextual menu. More... | |
(NSMutableDictionary *) | - metadata |
(NSUInteger) | - metadataChecksum |
(void) | - metadataDidChangeKey: |
(DKMetadataItem *) | - metadataItemForKey: |
(DKMetadataItem *) | - metadataItemForKey:limitToLocalSearch: |
(NSArray *) | - metadataItemsForKeysInArray: |
(NSArray *) | - metadataItemsForKeysInArray:limitToLocalSearch: |
(NSArray *) | - metadataKeys |
(id) | - metadataObjectForKey: |
(void) | - metadataWillChangeKey: |
(void) | - mouseDoubleClickedAtPoint:inPart:event: |
(void) | - mouseDownAtPoint:inPart:event: |
(void) | - mouseDraggedAtPoint:inPart:event: |
(NSSize) | - mouseDragOffset |
(BOOL) | - mouseHasMovedSinceStartOfTracking |
(NSSize) | - mouseOffset |
(BOOL) | - mouseSnappingEnabled |
(void) | - mouseUpAtPoint:inPart:event: |
(void) | - notifyGeometryChange: |
(void) | - notifyStatusChange |
(void) | - notifyVisualChange |
(void) | - objectDidBecomeSelected |
(void) | - objectIsNoLongerSelected |
(BOOL) | - objectIsValid |
(BOOL) | - objectMayBecomeSelected |
Is the object able to be selected? More... | |
(void) | - objectWasAddedToLayer: |
The object was added to a layer. More... | |
(void) | - objectWasRemovedFromLayer: |
The object was removed from the layer. More... | |
(void) | - objectWasUngrouped |
This object was ungrouped from a group. More... | |
(NSSize) | - offset |
(void) | - offsetLocationByX:byY: |
(NSAttributedString *) | - originalText |
(IBAction) | - pasteDrawingStyle: |
(NSData *) | |
Returns the single object rendered as a PDF image. More... | |
(NSPoint) | - pointForPartcode: |
(BOOL) | - pointHitsPath: |
Test a point against the offscreen bitmap representation of the shape. More... | |
(BOOL) | - populateContextualMenu: |
(BOOL) | - populateContextualMenu:atPoint: |
(void) | - readSupplementaryDataFromPasteboard: |
Read additional data from the pasteboard specific to the object. More... | |
(BOOL) | - rectHitsPath: |
Test if a rect encloses any of the shape's actual pixels. More... | |
(void) | - removeMetadataForKey: |
(NSBezierPath *) | - renderingPath |
(void) | - replaceMatchingStylesFromSet: |
(void) | - resetOffset |
(void) | - resizeWidthBy:heightBy: |
(void) | - rotateByAngle: |
Rotate the shape by adding a delta angle to the current angle. More... | |
(DKMetadataSchema) | - schema |
(void) | - setAngle: |
Set the object's current angle in radians. More... | |
(void) | - setBeingHitTested: |
Set whether a hit-test in progress. More... | |
(void) | - setColour:forKey: |
(void) | - setContainer: |
(void) | - setFloatValue:forKey: |
(void) | - setGhosted: |
Set whether the object is ghosted rather than with its full style. More... | |
(void) | - setIntValue:forKey: |
(void) | - setLocation: |
(void) | - setLocationLocked: |
Sets whether the object's location is locked or not. More... | |
(void) | - setLocked: |
(void) | - setMetadata: |
(void) | - setMetadataItem:forKey: |
(void) | - setMetadataItemType:forKey: |
(void) | - setMetadataItemValue:forKey: |
(void) | - setMetadataObject:forKey: |
(void) | - setMouseDragOffset: |
(void) | - setMouseHasMovedSinceStartOfTracking: |
(void) | - setMouseSnappingEnabled: |
(void) | - setNeedsDisplayInRect: |
(void) | - setNeedsDisplayInRects: |
(void) | - setNeedsDisplayInRects:withExtraPadding: |
(void) | - setOffset: |
(void) | - setOriginalText: |
(void) | - setSize: |
(void) | - setSize:forKey: |
(void) | - setString:forKey: |
(void) | - setStyle: |
(void) | - setTrackingMouse: |
(void) | - setupMetadata |
(void) | - setUserInfo: |
(void) | - setUserInfoObject:forKey: |
Set an item of user info. More... | |
(void) | - setVisible: |
(NSSize) | - size |
(NSSize) | - sizeForKey: |
(NSPoint) | - snappedMousePoint:forSnappingPointsWithControlFlag: |
(NSPoint) | - snappedMousePoint:withControlFlag: |
Offset the point to cause snap to grid + guides accoding to the drawing's settings. More... | |
(NSArray *) | - snappingPoints |
(NSArray *) | - snappingPointsWithOffset: |
(NSString *) | - stringForKey: |
(DKStyle *) | - style |
(void) | - styleDidChange: |
(void) | - styleWillChange: |
(NSSet *) | - subSelection |
Return the subselection of the object. More... | |
(NSImage *) | - swatchImageWithSize: |
(NSUndoManager *) | - undoManager |
(IBAction) | - unlock: |
(IBAction) | - unlockLocation: |
(void) | - updateMetadataKeys |
(void) | - updateRulerMarkers |
(BOOL) | - useLowQualityDrawing |
(NSMutableDictionary *) | - userInfo |
Return the attached user info. More... | |
(id) | - userInfoObjectForKey: |
Return an item of user info. More... | |
(BOOL) | - visible |
(void) | - willBeAddedAsSubstituteFor:toLayer: |
Some high-level operations substitute a new object in place of an existing one (or several). More... | |
(void) | - writeSupplementaryDataToPasteboard: |
Write additional data to the pasteboard specific to the object. More... | |
Instance Methods inherited from NSObject | |
(NSString *) | - address |
(DKStyleRegistry *) | - applicationWillReturnStyleRegistry |
(BOOL) | - canBeUsedWithSelectionTool |
(id) | - categoryManager:shouldReplaceObject:withObject: |
(Class) | - classForCoder |
(NSColor *) | - colorValue |
(NSColor *) | - colourValue |
(id) | - copy |
(void) | - dealloc |
(id) | - deepCopy |
(NSDictionary *) | - dimensionValuesForArrowStroke: |
(CGFloat) | - drawing:convertDistanceToExternalCoordinates: |
(NSPoint) | - drawing:convertLocationToExternalCoordinates: |
(void) | - drawing:didDrawRect:inView: |
(void) | - drawing:willDrawRect:inView: |
(NSString *) | - drawing:willReturnAbbreviationForUnit: |
(NSString *) | - drawing:willReturnFormattedCoordinateForDistance: |
(CGFloat) | - drawingWillReturnUnitToPointsConversonFactor: |
(void) | - finalize |
(NSString *) | - hexString |
(void) | - hotspot:didEndTrackingWithEvent:inView: |
(void) | - hotspot:isTrackingWithEvent:inView: |
(void) | - hotspot:willBeginTrackingWithEvent:inView: |
(NSData *) | - imageData |
(NSImage *) | - imageResourceNamed: |
(id) | - init |
(id) | - initWithExpression: |
(id) | - instantiateObjectWithShortName:parameters: |
(BOOL) | - isLiteralValue |
(void) | - layoutManager:willPlaceGlyphAtIndex:atLocation:pathAngle:yOffset: |
(void) | - menuItem:wasAddedForObject:inCategory: |
(BOOL) | - moveObjectTo:position:slope:userInfo: |
(id) | - mutableCopy |
(void) | - oneShotComplete |
(void) | - oneShotHasReached: |
(void) | - oneShotWillBegin |
(void) | - path:elementIndex:type:points:subPathIndex:subPathClosed:contextInfo: |
(id) | - placeLinkFromPoint:toPoint:onPath:linkNumber:userInfo: |
(id) | - placeObjectAtPoint:onPath:position:slope:userInfo: |
(NSPoint) | - point |
(NSPoint) | - pointForTextLayout |
(DKStyle *) | - registry:shouldReplaceStyle:withStyle: |
(NSBezierPath *) | - renderer:willRenderPath: |
(void) | - routeFinder:progressHasReached: |
(void) | - setValue:forNumericParameter: |
(NSString *) | - stringValue |
(CGFloat) | - taperFactorAtDistance:onPath:ofLength: |
(void) | - toolDidPerformUndoableAction: |
(void) | - toolWillPerformUndoableAction: |
(NSURL *) | - url |
Instance Methods inherited from <NSObject> | |
(NSString *) | - description |
(NSUInteger) | - hash |
(BOOL) | - isEqual: |
Instance Methods inherited from <NSKeyValueBindingCreation> | |
(void) | - bind:toObject:withKeyPath:options: |
(NSArray *) | - exposedBindings |
(NSDictionary *) | - infoForBinding: |
(NSArray *) | - optionDescriptionsForBinding: |
(void) | - unbind: |
(Class) | - valueClassForBinding: |
Instance Methods inherited from <DKStorableObject> | |
(NSUInteger) | - index |
(BOOL) | - isMarked |
(void) | - setIndex: |
(void) | - setMarked: |
(void) | - setStorage: |
(id< DKObjectStorage >) | - storage |
Instance Methods inherited from <NSCoding> | |
(void) | - encodeWithCoder: |
(id) | - initWithCoder: |
Instance Methods inherited from <NSCopying> | |
(id) | - copyWithZone: |
Instance Methods inherited from <DKRenderable> | |
(NSMutableDictionary *) | - renderingCache |
This subclass of DKDrawableShape implements a protocol for obtaining shapes dynamically from a shape provider.
This subclass of DKDrawableShape implements a protocol for obtaining shapes dynamically from a shape provider. When the user changes the shape's size, the shape provider is given the opportunity to supply a new path to fit the shape's new size. This path is then automatically inversely transformed and stored as the shape's path.
The shape provider must return a bezier path to fit a rectangle that it is passed. This path is inversely transformed to the internal path.
DKShapeFactory (instances) can be used as a shape provider.
While this looks like a bit of an awkward thing to use, it's actually very flexible and powerful. Many shapes can change dramatically when they are resized in ways that mere scaling cannot begin to describe. This permits that type of functionality to be set up pretty easily, especially in conjunction with DKDrawingTool.
Archiving works because the shape provider must comply with NSCoding. DKShapeFactory is compliant, even though in fact it has no ivars. While the shared DKShapeFactory instance is often specified as a shape provider, private instances that are owned by the individual objects come into being when dearchiving this kind of object. This is equivalent to the shape just making its own path, rather than using a helper object, but as a user of this system you don't really need to know or care about that - it's just a level of indirection that you can ignore. The point is that shape functionality can be added to DKShapeFactory rather than having to make lots of individual subclasses of DKDrawableShape for each one.
- (id) optionalParameter |
- (NSBezierPath*) providedShapeForRect: | (NSRect) | r |
- (void) setOptionalParameter: | (id) | objParam |
- (id) shapeProvider |
- (SEL) shapeSelector |