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 
示例#2
0
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
示例#3
0
    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()