<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I figured something out -- here's my approach in case it's useful to anyone. I'd be glad to hear any other/better ideas on this.<div><br></div><div>I created a new "stamp tool" that is a subclass of DKObjectCreationTool. It sets the cursor with an image based on the prototype object so that when the tool is clicked the cursor changes to an image of the object that will be "stamped." On a mouse down event the prototype object is added to the target layer. If "sticky tools" are set ( [<span class="Apple-style-span" style="font-family: Monaco; font-size: 10px; ">DKToolController setAutomaticallyRevertsToSelectionTool:NO])&nbsp;<span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">then you can stamp/insert many of the same object over and over again.</span></span></div><div><br></div><div>I gave this subclass a "cursorImage" method so that it can draw itself for the cursor, but also so it can draw itself to set a tool palette icon. When initializing a tool palette then this code can set the image for that tool.</div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #aa0d91">if</span><span style="color: #000000"> ([[</span><span style="color: #5c2699">DKDrawingTool</span><span style="color: #000000"> </span>drawingToolWithName<span style="color: #000000">:[cell </span>title<span style="color: #000000">]] </span>respondsToSelector<span style="color: #000000">:</span><span style="color: #aa0d91">@selector</span><span style="color: #000000">(</span><span style="color: #26474b">cursorImage</span><span style="color: #000000">)])</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>[cell </span>setImage<span style="color: #000000">:[[</span><span style="color: #5c2699">DKDrawingTool</span><span style="color: #000000"> </span>drawingToolWithName<span style="color: #000000">:[cell </span>title<span style="color: #000000">]] </span><span style="color: #26474b">cursorImage</span><span style="color: #000000">]];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px; "><br></span></font></div></div><div><br></div><div>The tool is initialized at some point in the application with code along the lines of the following.</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// register the "center mark" tool, which is not one of the DK standard tools</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(92, 38, 153); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>DKDrawableShape<span style="color: #000000"> * shape = [[</span>DKDrawableShape<span style="color: #000000"> </span><span style="color: #2e0d6e">alloc</span><span style="color: #000000">] </span><span style="color: #2e0d6e">init</span><span style="color: #000000">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>[shape <span style="color: #2e0d6e">setPath</span>:[<span style="color: #5c2699">DKShapeFactory</span> <span style="color: #26474b">centerMark</span>]];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #5c2699">DKDrawingTool</span><span style="color: #000000"> * dt = [[</span><span style="color: #3f6e74">BBStampTool</span><span style="color: #000000"> </span>alloc<span style="color: #000000">] </span>initWithPrototypeObject<span style="color: #000000">:shape];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(38, 71, 75); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>[(</span><span style="color: #3f6e74">BBStampTool</span><span style="color: #000000"> *)dt </span>setCursorDimension<span style="color: #000000">:</span><span style="color: #1c00cf">48.0</span><span style="color: #000000">];&nbsp;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>[</span><span style="color: #5c2699">DKDrawingTool</span><span style="color: #000000"> </span>registerDrawingTool<span style="color: #000000">:dt&nbsp; </span>withName<span style="color: #000000">:</span><span style="color: #c41a16">@"Center Mark"</span><span style="color: #000000">];</span></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px; "><br></span></font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><div>Here's the implementation of the stamp tool.</div><div><div><font class="Apple-style-span" color="#AA0D91" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; "><div><br></div></span></span></font></div></div></span></span></font></div></div><div><font class="Apple-style-span" color="#2F9733">// ---------- BBStampTool.h --------------</font></div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(196, 26, 22); "><span style="color: #643820">#import </span>&lt;Cocoa/Cocoa.h&gt;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(196, 26, 22); "><span style="color: #643820">#import </span>&lt;GCDrawKit/DKDrawkit.h&gt;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">@interface</span> BBStampTool : DKObjectCreationTool</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #aa0d91">float</span> _cursorDim;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">@property</span> <span style="color: #aa0d91">float</span> cursorDimension;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">- (<span style="color: #5c2699">NSImage</span> *) cursorImage;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); ">@end</div><div><font class="Apple-style-span" color="#AA0D91" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px; "><br></span></font></div></div><div><div><font class="Apple-style-span" color="#2F9733">// ---------- BBStampTool.m --------------</font></div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(196, 26, 22); "><span style="color: #643820">#import </span>"BBStampTool.h"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); ">@implementation<span style="color: #000000"> BBStampTool</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">@synthesize</span> cursorDimension = <span style="color: #3f6e74">_cursorDim</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(100, 56, 32); ">#pragma mark -</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(100, 56, 32); ">#pragma mark - As a BBStampTool</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">- (<span style="color: #5c2699">NSImage</span> *) cursorImage</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// create a size based on the ivar _cursorDim</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #5c2699">NSSize</span> cursorSize = <span style="color: #2e0d6e">NSMakeSize</span>(<span style="color: #3f6e74">_cursorDim</span>, <span style="color: #3f6e74">_cursorDim</span>);</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// create and configure shape in order to create the cursor image</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #5c2699">DKDrawableShape</span><span style="color: #000000"> * s = [</span><span style="color: #aa0d91">self</span><span style="color: #000000"> </span>objectFromPrototype<span style="color: #000000">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>[s <span style="color: #2e0d6e">setSize</span>: cursorSize];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>[s </span>setStyle<span style="color: #000000">:[</span><span style="color: #5c2699">DKStyle</span><span style="color: #000000"> </span>defaultStyle<span style="color: #000000">]];</span></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// create and return the cursor image based on the tool's shape</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #5c2699">NSImage</span> * i = [s <span style="color: #2e0d6e">swatchImageWithSize</span>:cursorSize];</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>return<span style="color: #000000"> i;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(100, 56, 32); ">#pragma mark -</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(100, 56, 32); ">#pragma mark - As part of DKDrawingTool Protocol</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">+ (<span style="color: #aa0d91">BOOL</span>) toolPerformsUndoableAction</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>return<span style="color: #000000"> </span>YES<span style="color: #000000">;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">- (<span style="color: #5c2699">NSString</span> *) actionName</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(196, 26, 22); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #aa0d91">return</span><span style="color: #000000"> </span>@"object stamp"<span style="color: #000000">;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">- (<span style="color: #5c2699">NSCursor</span>*)&nbsp;cursor</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #5c2699">NSCursor</span><span style="color: #000000"> * c = [[</span><span style="color: #5c2699">NSCursor</span><span style="color: #000000"> </span>alloc<span style="color: #000000">] </span>initWithImage<span style="color: #000000">:[</span><span style="color: #aa0d91">self</span><span style="color: #000000"> </span><span style="color: #26474b">cursorImage</span><span style="color: #000000">] </span>hotSpot<span style="color: #000000">:</span>NSMakePoint<span style="color: #000000">(</span><span style="color: #3f6e74">_cursorDim</span><span style="color: #000000">/</span><span style="color: #1c00cf">2</span><span style="color: #000000">, </span><span style="color: #3f6e74">_cursorDim</span><span style="color: #000000">/</span><span style="color: #1c00cf">2</span><span style="color: #000000">)];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>return<span style="color: #000000"> c;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">- (<span style="color: #aa0d91">int</span>)<span class="Apple-tab-span" style="white-space:pre">        </span>mouseDownAtPoint:(<span style="color: #5c2699">NSPoint</span>) p targetObject:(<span style="color: #5c2699">DKDrawableObject</span>*) obj layer:(<span style="color: #5c2699">DKLayer</span>*) layer event:(<span style="color: #5c2699">NSEvent</span>*) event delegate:(<span style="color: #aa0d91">id</span>) aDel</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// condition point p based on drawing snap settings</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #aa0d91">BOOL</span> controlKey = ([event <span style="color: #2e0d6e">modifierFlags</span>] &amp; <span style="color: #2e0d6e">NSControlKeyMask</span>) != <span style="color: #1c00cf">0</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>p = [[layer </span>drawing<span style="color: #000000">] </span>snapToGrid<span style="color: #000000">:p </span>withControlFlag<span style="color: #000000">:controlKey];</span></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// create a size based on the ivar _cursorDim</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #5c2699">NSSize</span> objectSize = <span style="color: #2e0d6e">NSMakeSize</span>(<span style="color: #3f6e74">_cursorDim</span>, <span style="color: #3f6e74">_cursorDim</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// create and configure the tool's object</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #5c2699">DKDrawableObject</span> * objToInsert = [<span style="color: #aa0d91">self</span> <span style="color: #2e0d6e">objectFromPrototype</span>];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>[objToInsert <span style="color: #2e0d6e">setSize</span>:objectSize];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>[objToInsert <span style="color: #2e0d6e">setLocation</span>:p];</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// turn off recording of undo until we commit the object</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span>[[layer </span>undoManager<span style="color: #000000">] </span>disableUndoRegistration<span style="color: #000000">];</span></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// add the pending object</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>[(<span style="color: #5c2699">DKObjectOwnerLayer</span>*)layer <span style="color: #2e0d6e">addObjectPendingCreation</span>:objToInsert];</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// if the object created is not valid, the pending add to the layer needs to be</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// aborted. Otherwise the object is committed to the layer</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #aa0d91">if</span> (![objToInsert <span style="color: #2e0d6e">objectIsValid</span>])</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>[(</span><span style="color: #5c2699">DKObjectOwnerLayer</span><span style="color: #000000">*)layer </span>removePendingObject<span style="color: #000000">];</span></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">                </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span>// turn undo back on</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>[[layer </span>undoManager<span style="color: #000000">] </span>enableUndoRegistration<span style="color: #000000">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>else</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span>// a valid object was made, so commit it to the layer and select it</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span>// turn undo back on and commit the object</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>[[layer </span>undoManager<span style="color: #000000">] </span>enableUndoRegistration<span style="color: #000000">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>[aDel </span>toolWillPerformUndoableAction<span style="color: #000000">:</span><span style="color: #aa0d91">self</span><span style="color: #000000">];</span></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">                </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>[(</span><span style="color: #5c2699">DKObjectDrawingLayer</span><span style="color: #000000">*)layer </span>commitPendingObjectWithUndoActionName<span style="color: #000000">:[</span><span style="color: #aa0d91">self</span><span style="color: #000000"> </span>actionName<span style="color: #000000">]];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>[(<span style="color: #5c2699">DKObjectDrawingLayer</span>*)layer <span style="color: #2e0d6e">replaceSelectionWithObject</span>:objToInsert];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// return value is the partcode of the target that was hit</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// this tool does not operate on a target so return 0 (no object)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>return<span style="color: #000000"> </span><span style="color: #1c00cf">0</span><span style="color: #000000">;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">- (<span style="color: #aa0d91">void</span>)&nbsp;mouseDraggedToPoint:(<span style="color: #5c2699">NSPoint</span>) p partCode:(<span style="color: #aa0d91">int</span>) pc layer:(<span style="color: #5c2699">DKLayer</span>*) layer event:(<span style="color: #5c2699">NSEvent</span>*) event delegate:(<span style="color: #aa0d91">id</span>) aDel</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// dragging not supported by the stamp tool, so this method does nothing</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">- (<span style="color: #aa0d91">BOOL</span>)&nbsp;mouseUpAtPoint:(<span style="color: #5c2699">NSPoint</span>) p partCode:(<span style="color: #aa0d91">int</span>) pc layer:(<span style="color: #5c2699">DKLayer</span>*) layer event:(<span style="color: #5c2699">NSEvent</span>*) event delegate:(<span style="color: #aa0d91">id</span>) aDel</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>// return value tells app if the tool did something undoable</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>return<span style="color: #000000"> </span>YES<span style="color: #000000">;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(100, 56, 32); ">#pragma mark -</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(100, 56, 32); ">#pragma mark - As a DKObjectCreationTool</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">- (<span style="color: #aa0d91">id</span>)&nbsp;initWithPrototypeObject:(<span style="color: #aa0d91">id</span> &lt;<span style="color: #5c2699">NSObject</span>&gt;) aPrototype</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #aa0d91">self</span><span style="color: #000000"> = [</span><span style="color: #aa0d91">super</span><span style="color: #000000"> </span>initWithPrototypeObject<span style="color: #000000">:aPrototype];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #aa0d91">if</span> (<span style="color: #aa0d91">self</span> != <span style="color: #aa0d91">nil</span> )</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span></span>// set a default value for _cursorDim</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(38, 71, 75); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">                </span>[</span><span style="color: #aa0d91">self</span><span style="color: #000000"> </span>setCursorDimension<span style="color: #000000">:</span><span style="color: #1c00cf">50.0</span><span style="color: #000000">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span>return<span style="color: #000000"> </span>self<span style="color: #000000">;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); ">@end</div><div><font class="Apple-style-span" color="#AA0D91" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div><div><font class="Apple-style-span" color="#AA0D91" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div><div><font class="Apple-style-span" color="#AA0D91" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; "><div>Finally, for kicks and completeness here's the category on DKShapeFactory that makes this "center mark" shape.</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(196, 26, 22); "><span style="color: rgb(100, 56, 32); ">#import&nbsp;</span>"DKShapeFactory+NewShapes.h"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: rgb(170, 13, 145); ">@implementation</span>&nbsp;DKShapeFactory (NewShapes)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">+ (<span style="color: rgb(92, 38, 153); ">NSBezierPath</span>&nbsp;*) centerMark</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><span style="color: rgb(170, 13, 145); ">float</span>&nbsp;radius =&nbsp;<span style="color: rgb(28, 0, 207); ">0.25</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(92, 38, 153); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span></span>NSBezierPath<span style="color: rgb(0, 0, 0); ">&nbsp;* path = [</span>NSBezierPath<span style="color: rgb(0, 0, 0); ">&nbsp;</span><span style="color: rgb(46, 13, 110); ">bezierPath</span><span style="color: rgb(0, 0, 0); ">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;</span>setWindingRule<span style="color: rgb(0, 0, 0); ">:&nbsp;</span>NSEvenOddWindingRule<span style="color: rgb(0, 0, 0); ">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><br class="webkit-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><span style="color: rgb(92, 38, 153); ">NSPoint</span>&nbsp;pMiddle&nbsp;&nbsp;=&nbsp;<span style="color: rgb(46, 13, 110); ">NSMakePoint</span>(<span class="Apple-tab-span" style="white-space: pre; ">        </span>&nbsp;&nbsp;&nbsp;<span style="color: rgb(28, 0, 207); ">0.0</span>,&nbsp;&nbsp;&nbsp;<span style="color: rgb(28, 0, 207); ">0.0</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><span style="color: rgb(92, 38, 153); ">NSPoint</span>&nbsp;pRight&nbsp;&nbsp;&nbsp;=&nbsp;<span style="color: rgb(46, 13, 110); ">NSMakePoint</span>( radius,&nbsp;&nbsp;&nbsp;<span style="color: rgb(28, 0, 207); ">0.0</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><span style="color: rgb(92, 38, 153); ">NSPoint</span>&nbsp;pLeft&nbsp; &nbsp;&nbsp;=&nbsp;<span style="color: rgb(46, 13, 110); ">NSMakePoint</span>(-radius,&nbsp;&nbsp;&nbsp;<span style="color: rgb(28, 0, 207); ">0.0</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><br class="webkit-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span></span>// add the cross</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;</span>moveToPoint<span style="color: rgb(0, 0, 0); ">:&nbsp;</span>NSMakePoint<span style="color: rgb(0, 0, 0); ">(&nbsp; &nbsp;&nbsp;</span><span style="color: rgb(28, 0, 207); ">0</span><span style="color: rgb(0, 0, 0); ">, -</span><span style="color: rgb(28, 0, 207); ">0.5</span><span style="color: rgb(0, 0, 0); ">&nbsp;)];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;</span>lineToPoint<span style="color: rgb(0, 0, 0); ">:&nbsp;</span>NSMakePoint<span style="color: rgb(0, 0, 0); ">(&nbsp; &nbsp;&nbsp;</span><span style="color: rgb(28, 0, 207); ">0</span><span style="color: rgb(0, 0, 0); ">,&nbsp;&nbsp;</span><span style="color: rgb(28, 0, 207); ">0.5</span><span style="color: rgb(0, 0, 0); ">&nbsp;)];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;</span>moveToPoint<span style="color: rgb(0, 0, 0); ">:&nbsp;</span>NSMakePoint<span style="color: rgb(0, 0, 0); ">( -</span><span style="color: rgb(28, 0, 207); ">0.5</span><span style="color: rgb(0, 0, 0); ">,&nbsp; &nbsp;&nbsp;</span><span style="color: rgb(28, 0, 207); ">0</span><span style="color: rgb(0, 0, 0); ">&nbsp;)];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;</span>lineToPoint<span style="color: rgb(0, 0, 0); ">:&nbsp;</span>NSMakePoint<span style="color: rgb(0, 0, 0); ">(&nbsp;&nbsp;</span><span style="color: rgb(28, 0, 207); ">0.5</span><span style="color: rgb(0, 0, 0); ">,&nbsp; &nbsp;&nbsp;</span><span style="color: rgb(28, 0, 207); ">0</span><span style="color: rgb(0, 0, 0); ">&nbsp;)];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><br class="webkit-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><span class="Apple-style-span" style="color: rgb(0, 116, 0); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span></span>// add the circle</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;</span>appendBezierPathWithArcWithCenter<span style="color: rgb(0, 0, 0); ">:pMiddle&nbsp;</span>radius<span style="color: rgb(0, 0, 0); ">:radius&nbsp;</span>startAngle<span style="color: rgb(0, 0, 0); ">:</span><span style="color: rgb(28, 0, 207); ">0</span><span style="color: rgb(0, 0, 0); ">&nbsp;</span>endAngle<span style="color: rgb(0, 0, 0); ">:</span><span style="color: rgb(28, 0, 207); ">360</span><span style="color: rgb(0, 0, 0); ">&nbsp;</span>clockwise<span style="color: rgb(0, 0, 0); ">:</span><span style="color: rgb(170, 13, 145); ">NO</span><span style="color: rgb(0, 0, 0); ">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><br class="webkit-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span></span>// top right quadrant "hole"&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;<span style="color: rgb(46, 13, 110); ">moveToPoint</span>: pMiddle];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;<span style="color: rgb(46, 13, 110); ">lineToPoint</span>: pRight];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;</span>appendBezierPathWithArcWithCenter<span style="color: rgb(0, 0, 0); ">: pMiddle&nbsp;</span>radius<span style="color: rgb(0, 0, 0); ">: radius&nbsp;</span>startAngle<span style="color: rgb(0, 0, 0); ">:&nbsp;</span><span style="color: rgb(28, 0, 207); ">0.0</span><span style="color: rgb(0, 0, 0); ">&nbsp;</span>endAngle<span style="color: rgb(0, 0, 0); ">:&nbsp;</span><span style="color: rgb(28, 0, 207); ">90.0</span><span style="color: rgb(0, 0, 0); ">&nbsp;];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;<span style="color: rgb(46, 13, 110); ">lineToPoint</span>: pMiddle];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><br class="webkit-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span></span>// bottom left quadrant "hole"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;<span style="color: rgb(46, 13, 110); ">lineToPoint</span>: pLeft];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;</span>appendBezierPathWithArcWithCenter<span style="color: rgb(0, 0, 0); ">: pMiddle&nbsp;</span>radius<span style="color: rgb(0, 0, 0); ">: radius&nbsp;</span>startAngle<span style="color: rgb(0, 0, 0); ">:&nbsp;</span><span style="color: rgb(28, 0, 207); ">180.0</span><span style="color: rgb(0, 0, 0); ">&nbsp;</span>endAngle<span style="color: rgb(0, 0, 0); ">:&nbsp;</span><span style="color: rgb(28, 0, 207); ">270.0</span><span style="color: rgb(0, 0, 0); ">];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>[path&nbsp;<span style="color: rgb(46, 13, 110); ">closePath</span>];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; ">        </span><span style="color: rgb(170, 13, 145); ">return</span>&nbsp;path;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); ">@end</div><div><font class="Apple-style-span" color="#AA0D91" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px; "><br></span></font></div><div><font class="Apple-style-span" color="#AA0D91" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; "><div>Have fun with it, and happy 2010 everyone.</div><div><br></div><div>-Allan</div></span></span></font></div></div></span></span></font></div></div></div><div><br></div></body></html>