class PolygonSelectionTool(EditingTool): def setup(self): self.pen = None self._oldPen = None def mouseDown(self, point, clickCount): if self.selection.hasSelection(): return if not self.optionDown: self.pen = CocoaPen(None) else: self.pen = self._oldPen self.pen.moveTo((point.x, point.y)) def mouseDragged(self, point, delta): if self.pen is None: return self.pen.lineTo((point.x, point.y)) def mouseUp(self, point): if self.pen is None: return self.pen.closePath() glyph = self.getGlyph() path = self.pen.path for contour in glyph: for point in contour.points: result = path.containsPoint_((point.x, point.y)) if self.controlDown: point.selected = not result else: point.selected = result self._oldPen = self.pen self.pen = None def draw(self, scale): if self.pen is None: return fill( 1 , 0 , 0 , .2 ) #stroke(0, .6) #strokeWidth(scale) drawPath(self.pen.path) def canSelectWithMarque(self): return False def getToolbarTip(self): return "Polygon Selection Tool" def getToolbarIcon(self): icon = NSImage.alloc().initWithContentsOfFile_("polygon-select.png") if icon : return icon
class PolygonSelectionTool(EditingTool): def setup(self): self.pen = None self._oldPen = None def mouseDown(self, point, clickCount): if self.selection.hasSelection(): return if not self.optionDown: self.pen = CocoaPen(None) else: self.pen = self._oldPen self.pen.moveTo((point.x, point.y)) def mouseDragged(self, point, delta): if self.pen is None: return self.pen.lineTo((point.x, point.y)) def mouseUp(self, point): if self.pen is None: return self.pen.closePath() glyph = self.getGlyph() path = self.pen.path for contour in glyph: for point in contour.points: result = path.containsPoint_((point.x, point.y)) if self.controlDown: point.selected = not result else: point.selected = result self._oldPen = self.pen self.pen = None def draw(self, scale): if self.pen is None: return fill(1, 0, 0, .2) #stroke(0, .6) #strokeWidth(scale) drawPath(self.pen.path) def canSelectWithMarque(self): return False def getToolbarTip(self): return "Polygon Selection Tool" def getToolbarIcon(self): icon = NSImage.alloc().initWithContentsOfFile_("polygon-select.pdf") if icon: return icon
def drawRotationPreview(self, info): # draw preview glyph outline = self.getRotatedGlyph() pen = CocoaPen(None) self.w.color.get().set() outline.draw(pen) pen.path.setLineWidth_(info['scale'] * .5) pen.path.stroke() # draw crosshair ch_pen = CocoaPen(None) center_x = self.xValue center_y = self.yValue strokeColor = NSColor.redColor() strokeColor.set() ch_pen.moveTo((center_x - 10, center_y)) ch_pen.lineTo((center_x + 10, center_y)) ch_pen.endPath() ch_pen.moveTo((center_x, center_y - 10)) ch_pen.lineTo((center_x, center_y + 10)) ch_pen.endPath() ch_pen.path.setLineWidth_(info['scale']) ch_pen.path.stroke()