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

tree object; this stores indexes in mutable index sets. More...

Inheritance diagram for DKBSPIndexTree:
Inheritance graph
[legend]

Instance Methods

(NSSize) - canvasSize
 
(NSUInteger- countOfLeaves
 
(NSBezierPath *) - debugStorageDivisions
 
(id- initWithCanvasSize:depth:
 
(void) - insertItemIndex:withRect:
 
(NSIndexSet *) - itemsIntersectingPoint:
 
(NSIndexSet *) - itemsIntersectingRect:
 
(NSIndexSet *) - itemsIntersectingRects:count:
 
(void) - removeItemIndex:withRect:
 
(void) - setDepth:
 
(void) - shiftIndexesStartingAtIndex:by:
 
- 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:
 

Class Methods

(Class+ leafClass
 
- Class Methods inherited from NSObject
(id+ alloc
 
(Class+ class
 
(void) + initialize
 
(void) + load
 
(id+ new
 
- Class Methods inherited from <NSKeyValueBindingCreation>
(void) + exposeBinding:
 

Protected Attributes

NSSize mCanvasSize
 
NSBezierPath * mDebugPath
 
NSMutableArraymLeaves
 
NSMutableArraymNodes
 
DKBSPOperation mOp
 
NSUInteger mOpIndex
 
NSMutableIndexSet * mResults
 

Detailed Description

tree object; this stores indexes in mutable index sets.

this stores indexes in mutable index sets. The indexes refer to the index of the object within the linear array. Given a rect query, this returns an index set which is the indexes of all objects that intersect the rect. Using -objectsAtIndexes: on the linear array then returns the relevant objects sorted by Z-order. The tree only stores the indexes of visible objects, thus it doesn't need to test for visibility - the storage will manage adding and removing indexes as object visibility changes.

note that this is equivalent to a binary search in 2 dimensions. The purpose is to weed out as many irrelevant objects as possible in advance of returning them to the client for drawing. Internally it is tuned for speed but it relies heavily on the performance of Cocoa's NSIndexSet class, and -addIndexes: in particular. If these turn out to be slow, this may be detrimental to drawing performance.

Method Documentation

- (NSSize) canvasSize
- (NSUInteger) countOfLeaves
- (NSBezierPath*) debugStorageDivisions
- (id) initWithCanvasSize: (NSSize)  size
depth: (NSUInteger depth 
- (void) insertItemIndex: (NSUInteger idx
withRect: (NSRect rect 
- (NSIndexSet*) itemsIntersectingPoint: (NSPoint)  point
- (NSIndexSet*) itemsIntersectingRect: (NSRect rect
- (NSIndexSet*) itemsIntersectingRects: (const NSRect *)  rects
count: (NSUInteger count 
+ (Class) leafClass
- (void) removeItemIndex: (NSUInteger idx
withRect: (NSRect rect 
- (void) setDepth: (NSUInteger depth
- (void) shiftIndexesStartingAtIndex: (NSUInteger startIndex
by: (NSInteger delta 

Member Data Documentation

- (NSSize) mCanvasSize
protected
- (NSBezierPath*) mDebugPath
protected
- (NSMutableArray*) mLeaves
protected
- (NSMutableArray*) mNodes
protected
- (DKBSPOperation) mOp
protected
- (NSUInteger) mOpIndex
protected
- (NSMutableIndexSet*) mResults
protected