def _getEndPoints(self): return [ self.line.endPoint ] startPoints = property( _getStartPoints, _setStartPoints) endPoints = property( _getEndPoints, _setEndPoints) class LinesToLinesListAdapter(object): implements_interfaces = ILinesList def __init__(self, lines): self.lines = lines def _setLinesList(self, lines_list): assert len(lines_list) == 1 self.lines.points = numpy.array( lines_list[0] ) def _getLinesList(self): return [ self.lines.points ] lines_list = property( _getLinesList, _setLinesList) from common import registerModelAdapter registerModelAdapter( ILineLength, ILine, LineLengthToLineAdapter ) registerModelAdapter( ILineSegments, ILineSegmentsSeparate, LineSegmentsToLineSegmentsSeparateAdapter ) registerModelAdapter( ILine, ILineSegmentsSeparate, LineToLineSegmentsSeparateAdapter ) registerModelAdapter( ILines, ILinesList, LinesToLinesListAdapter )
def _getHeadSize(self): return self._headSize headSize = property(_getHeadSize, _setHeadSize) class AngleArrowToArrowAdapter(object): ''' Adapts AngleArrows to Arrows ''' implements_interfaces = IAngleArrow def __init__(self, angleArrow): self.angleArrow = angleArrow # let's implement them read-only properties just because for the fun of it startPoint = property(lambda self: self.angleArrow.startPoint) headSize = property(lambda self: self.angleArrow.headSize) def _getEndPoint(self): endPoint = self.startPoint + numpy.array([ numpy.cos(self.angleArrow.angle), numpy.sin(self.angleArrow.angle) ]) * self.angleArrow.length return endPoint endPoint = property(_getEndPoint) from common import registerModelAdapter registerModelAdapter(IAngleArrow, IArrow, AngleArrowToArrowAdapter)
startPoint = property( _getStartPoint, _setStartPoint ) def _setHeadSize(self, headSize): self._headSize = numpy.array( headSize ) def _getHeadSize(self): return self._headSize headSize = property( _getHeadSize, _setHeadSize ) class AngleArrowToArrowAdapter(object): ''' Adapts AngleArrows to Arrows ''' implements_interfaces = IAngleArrow def __init__(self, angleArrow): self.angleArrow = angleArrow # let's implement them read-only properties just because for the fun of it startPoint = property( lambda self: self.angleArrow.startPoint ) headSize = property( lambda self: self.angleArrow.headSize ) def _getEndPoint(self): endPoint = self.startPoint + numpy.array( [ numpy.cos(self.angleArrow.angle), numpy.sin(self.angleArrow.angle) ] ) * self.angleArrow.length return endPoint endPoint = property( _getEndPoint ) from common import registerModelAdapter registerModelAdapter( IAngleArrow, IArrow, AngleArrowToArrowAdapter )
implements_interfaces = IArc def __init__(self, radius, startAngle, endAngle, clockwise): self.radius = radius self.startAngle = startAngle self.endAngle = endAngle self.clockwise = clockwise # ----- adapters ------- class CircleToEllipseAdapter(object): implements_interfaces = IEllipse def __init__(self, circle): self.circle = circle def _getSize(self): return numpy.array((self.circle.radius, self.circle.radius)) * 2 def _setSize(self, value): assert value[0] == value[ 1], 'Circle objects need to the same size in x and y directions' self.circle.radius = value[0] size = property(_getSize, _setSize) registerModelAdapter(ICircle, IEllipse, CircleToEllipseAdapter)
to take and clockwise is a bool which specifies whether the clockwise or anticlockwise piece between startAngle and endAngle are taken. ''' implements_interfaces = IArc def __init__( self, radius, startAngle, endAngle, clockwise ): self.radius = radius self.startAngle = startAngle self.endAngle = endAngle self.clockwise = clockwise # ----- adapters ------- class CircleToEllipseAdapter(object): implements_interfaces = IEllipse def __init__(self, circle): self.circle = circle def _getSize(self): return numpy.array( (self.circle.radius, self.circle.radius) ) * 2 def _setSize(self, value): assert value[0] == value[1], 'Circle objects need to the same size in x and y directions' self.circle.radius = value[0] size = property( _getSize, _setSize ) registerModelAdapter( ICircle, IEllipse, CircleToEllipseAdapter )
return [self.line.endPoint] startPoints = property(_getStartPoints, _setStartPoints) endPoints = property(_getEndPoints, _setEndPoints) class LinesToLinesListAdapter(object): implements_interfaces = ILinesList def __init__(self, lines): self.lines = lines def _setLinesList(self, lines_list): assert len(lines_list) == 1 self.lines.points = numpy.array(lines_list[0]) def _getLinesList(self): return [self.lines.points] lines_list = property(_getLinesList, _setLinesList) from common import registerModelAdapter registerModelAdapter(ILineLength, ILine, LineLengthToLineAdapter) registerModelAdapter(ILineSegments, ILineSegmentsSeparate, LineSegmentsToLineSegmentsSeparateAdapter) registerModelAdapter(ILine, ILineSegmentsSeparate, LineToLineSegmentsSeparateAdapter) registerModelAdapter(ILines, ILinesList, LinesToLinesListAdapter)
def _setPolygonList(self, polygon_list): self._polygon_list = [ numpy.array([pnt for pnt in polygon]) for polygon in polygon_list ] def _getPolygonList(self): return self._polygon_list polygon_list = property(_getPolygonList, _setPolygonList) class PolygonToPolygonListAdapter(object): implements_interfaces = IPolygonList def __init__(self, polygon): self.polygon = polygon def _setPolygonList(self, polygon_list): assert len(polygon_list) == 1 self.polygon.points = numpy.array(polygon_list[0]) def _getPolygonList(self): return [self.polygon.points] polygon_list = property(_getPolygonList, _setPolygonList) from common import registerModelAdapter registerModelAdapter(IPolygon, IPolygonList, PolygonToPolygonListAdapter)
self.polygon_list = polygon_list def _setPolygonList(self, polygon_list): self._polygon_list = [ numpy.array( [ pnt for pnt in polygon] ) for polygon in polygon_list ] def _getPolygonList(self): return self._polygon_list polygon_list = property( _getPolygonList, _setPolygonList ) class PolygonToPolygonListAdapter(object): implements_interfaces = IPolygonList def __init__(self, polygon): self.polygon = polygon def _setPolygonList(self, polygon_list): assert len(polygon_list) == 1 self.polygon.points = numpy.array( polygon_list[0] ) def _getPolygonList(self): return [ self.polygon.points ] polygon_list = property( _getPolygonList, _setPolygonList) from common import registerModelAdapter registerModelAdapter( IPolygon, IPolygonList, PolygonToPolygonListAdapter )