def __isub__(self, intersectWith): if (isinstance(intersectWith, Area)): a1 = Area(LineUtils().lineToGeneralPath(self.autoStroke())) a1.subtract(intersectWith) self.__dict__["line"] = self.maybeFix(LineUtils().piToCachedLine( a1.getPathIterator(None))) return self
def fixAreatreeArea(areatree): # Append a 1-pixel square area for nodes without any area # this will fix using findZDisplayables for finding areatree, # including connector.getTargets(), connector.getOrigins() etc. if not isinstance(areatree, AreaTree): print "Error: input must be an AreaTree" return root = areatree.getRoot() if root is None: return for nd in root.getSubtreeNodes(): a = nd.getArea() a.add(Area(Rectangle(int(nd.getX()), int(nd.getY()), 1, 1))) nd.setData(a)
layerset = areatree.getLayerSet() calibration = layerset.getCalibration() affine = areatree.getAffineTransform() # outAndInArray = areatree.findConnectors() for nd in root.getSubtreeNodes(): # get node coordinates, from tut on web fp = array([nd.getX(), nd.getY()], 'f') affine.transform(fp, 0, fp, 0, 1) x = fp[0] * calibration.pixelWidth y = fp[1] * calibration.pixelHeight z = nd.getLayer().getZ( ) * calibration.pixelWidth # a TrakEM2 oddity # get node connections, in/out synapse number, synapse id # NOTE: this method seems to be affected by display zoom value area = Area(Rectangle(int(fp[0]), int(fp[1]), 1, 1)) # area.transform(affine) inAndOuts = layerset.findZDisplayables(Connector, nd.getLayer(), area, False, False) outgoing = [] incoming = [] for connector in inAndOuts: if connector is None: break if connector.intersectsOrigin(area, nd.getLayer()): outgoing.append(connector) else: incoming.append(connector) nInputs = len(incoming) nOutputs = len(outgoing) outgoingIds = [oc.getId() for oc in outgoing]
def squarea( self, offset ): #This is the default area generator. It will be overridden by certain shapes. return Area(Rectangle2D.Double(-offset.x, -offset.y, 1, 1))
def area(self): return Area(LineUtils().lineToGeneralPath(self.__dict__["line"]))
def toArea2(self): """Convert this line to a java.geom.Area""" return Area(LineUtils().lineToGeneralPath(self))