DrawKit
Vector and illustration framework for Mac OS X
Instance Methods | Class Methods | List of all members
DKShapeCluster Class Reference

A CLUSTER is a specialised form of group. More...

Inheritance diagram for DKShapeCluster:
Inheritance graph
[legend]

Instance Methods

(DKDrawableShape *) - masterObject
 What is the cluster's master object? More...
 
(void) - setMasterObject:
 Sets the master object for the cluster. More...
 
- Instance Methods inherited from DKShapeGroup
(DKGroupCacheOption) - cacheOptions
 
(void) - calcBoundingRectOfObjects:
 Computes the initial overall bounding rect of the constituent objects. More...
 
(BOOL- clipContentToPath
 
(NSAffineTransform *) - contentTransform
 Returns a transform used to map the contained objects to the group's size, position and angle. More...
 
(NSPoint) - convertPointFromContainer:
 Maps a point from the original container's coordinates to the equivalent group point. More...
 
(NSPoint) - convertPointToContainer:
 Maps a point from the group's coordinates to the equivalent original container point. More...
 
(void) - drawGroupContent
 
(NSSize) - extraSpaceNeededByObjects:
 Computes the extra space needed for the objects. More...
 
(NSRect- groupBoundingRect
 Returns the original untransformed bounds of the grouped objects. More...
 
(NSArray *) - groupObjects
 Gets the list of objects contained by the group. More...
 
(NSSize) - groupScaleRatios
 Returns the scale ratios that the group is currently applying to its contents. More...
 
(id- initWithObjectsInArray:
 Initialises a group from a list of existing objects. More...
 
(NSAffineTransform *) - renderingTransform
 Returns a transform which is the accumulation of all the parent objects above this one. More...
 
(void) - setCacheOptions:
 
(void) - setClipContentToPath:
 
(void) - setGroupObjects:
 Sets up the group state from the original set of objects. More...
 
(void) - setObjects:
 Sets the current list of objects to the given objects. More...
 
(void) - setTransformsVisually:
 
(IBAction) - toggleClipToPath:
 High-level call to toggle path clipping. More...
 
(BOOL- transformsVisually
 
(IBAction) - ungroupObjects:
 High-level call to ungroup the group. More...
 
(void) - ungroupToLayer:
 Unpacks the group back into the nominated layer. More...
 
- 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 *) - pdf
 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
 
- Instance Methods inherited from <DKDrawableContainer>
(DKDrawing *) - drawing
 
(DKImageDataManager *) - imageManager
 
(NSUInteger- indexOfObject:
 
(DKLayer *) - layer
 
(DKMetadataItem *) - metadataItemForKey:
 
(id- metadataObjectForKey:
 

Class Methods

(DKShapeCluster *) + clusterWithObjects:masterObject:
 Creates a new cluster from a set of objects. More...
 
- Class Methods inherited from DKShapeGroup
(DKShapeGroup *) + groupWithBezierPaths:objectType:style:
 Creates a group of shapes or paths from a list of bezier paths. More...
 
(DKShapeGroup *) + groupWithObjects:
 Creates a group from a list of existing objects. More...
 
(NSArray *) + objectsAvailableForGroupingFromArray:
 Filters array to remove objects whose class returns NO to isGroupable. More...
 
- Class Methods inherited from DKDrawableShape
(NSCursor *) + cursorForShapePartcode:
 
(DKDrawableShape *) + drawableShapeWithBezierPath:
 
(DKDrawableShape *) + drawableShapeWithBezierPath:rotatedToAngle:
 
(DKDrawableShape *) + drawableShapeWithBezierPath:rotatedToAngle:withStyle:
 
(DKDrawableShape *) + drawableShapeWithBezierPath:withStyle:
 
(DKDrawableShape *) + drawableShapeWithCanonicalBezierPath:
 
(DKDrawableShape *) + drawableShapeWithOvalInRect:
 
(DKDrawableShape *) + drawableShapeWithRect:
 
(NSInteger+ knobMask
 Return which particular knobs are used by instances of this class. More...
 
(void) + setAngularConstraintAngle:
 
(void) + setInfoWindowBackgroundColour:
 
(void) + setKnobMask:
 
(NSRect+ unitRectAtOrigin
 
- Class Methods inherited from DKDrawableObject
(Class+ classForConversionRequestFor:
 Return the class to use in place of the given class when performing a conversion. More...
 
(NSUInteger+ countOfNativeObjectsOnPasteboard:
 Return the number of native objects held by the pasteboard. More...
 
(BOOL+ displaysSizeInfoWhenDragging
 Return whether an info floater is displayed when resizing an object. More...
 
(NSColor *) + ghostColour
 Return the outline colour to use when drawing objects in their ghosted state. More...
 
(NSInteger+ initialPartcodeForObjectCreation
 
(NSDictionary *) + interconversionTable
 Return the interconversion table. More...
 
(BOOL+ isGroupable
 Return whether obejcts of this class can be grouped. More...
 
(BOOL+ metadataChangesAreUndoable
 
(NSArray *) + nativeObjectsFromPasteboard:
 
(NSArray *) + pasteboardTypesForOperation:
 
(void) + setDisplaysSizeInfoWhenDragging:
 Set whether an info floater is displayed when resizing an object. More...
 
(void) + setGhostColour:
 Set the outline colour to use when drawing objects in their ghosted state. More...
 
(void) + setInterconversionTable:
 Return the interconversion table. More...
 
(void) + setMetadataChangesAreUndoable:
 
(void) + substituteClass:forClass:
 Sets the class to use in place of the a base class when performing a conversion. More...
 
(NSRect+ unionOfBoundsOfDrawablesInArray:
 Returns the union of the bounds of the objects in the array. More...
 
- Class Methods inherited from NSObject
(id+ alloc
 
(Class+ class
 
(void) + initialize
 
(void) + load
 
(id+ new
 
- Class Methods inherited from <NSKeyValueBindingCreation>
(void) + exposeBinding:
 

Additional Inherited Members

- Protected Attributes inherited from DKDrawableShape
BOOL m_inRotateOp
 
NSRect mBoundsCache
 
- Protected Attributes inherited from DKDrawableObject
BOOL m_clipToBBox: 1
 
BOOL m_showBBox: 1
 
BOOL m_showPartcodes: 1
 
BOOL m_showTargets: 1
 
BOOL m_unused_padding: 4
 

Detailed Description

A CLUSTER is a specialised form of group.

Author
Contributions from the community; see CONTRIBUTORS.md
Date
2005-2015

A CLUSTER is a specialised form of group. The idea is to allow a set of shapes to be associated with a main "master" object around which the others are subordinated. Selecting the cluster selects the main object, but the subordinate objects will be sized to match as needed.

One use for this is to allow automatic dimensioning of objects to work while the shape itself is edited - the shape itself is the master and the dimensions are subordinate objects within the cluster. As the shape's size and angle change, the dimensions adjust to match.

The main differences from a group are that when selected the main object acts as a proxy for the cluster as a whole, and the cluster size and angle are controlled by the user's hits on the main object. Clusters need to be programatically created since the master object must be nominated when creating the cluster.

Method Documentation

+ (DKShapeCluster*) clusterWithObjects: (NSArray *)  objects
masterObject: (DKDrawableShape *)  master 

Creates a new cluster from a set of objects.

The master object must be also one of the objects in the list of objects, and must be a shape.

Parameters
objectsthe list of objects to be added to the cluster
masterthe master object
Returns
a new autoreleased cluster object, which should be added to a suitable drawing layer before use
- (DKDrawableShape*) masterObject

What is the cluster's master object?

Returns
the master object for this cluster
- (void) setMasterObject: (DKDrawableShape *)  master

Sets the master object for the cluster.

The master object must already be one of the objects in the group, and it must be a shape

Parameters
masterthe master object