NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

perimeter.py (1379B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\drawingpolygon\components\perimeter.py
      2 from drawingpolygon.drawingelement import DrawingElement
      3 from carbonui.primitives.vectorlinetrace import VectorLineTrace, CORNERTYPE_NONE
      4 from signals import Signal
      5 import trinity
      6 
      7 class PolygonSegment(VectorLineTrace):
      8     default_cornerType = CORNERTYPE_NONE
      9     default_spriteEffect = trinity.TR2_SFX_FILL_AA
     10 
     11     def ApplyAttributes(self, attributes):
     12         super(PolygonSegment, self).ApplyAttributes(attributes)
     13         self.on_removed = Signal(signalName='on_removed')
     14 
     15     def Close(self):
     16         self.on_removed()
     17         super(PolygonSegment, self).Close()
     18 
     19     def is_available(self):
     20         return self.renderObject is not None
     21 
     22     def execute_only_if_available(function):
     23 
     24         def wrapper(self, *args, **kwargs):
     25             if self.is_available():
     26                 return function(self, *args, **kwargs)
     27 
     28         return wrapper
     29 
     30     @execute_only_if_available
     31     def add_vertex(self, x, y):
     32         self.AddPoint(pos=(x, y), color=self.color.GetRGBA())
     33 
     34     @execute_only_if_available
     35     def remove_vertex(self, index):
     36         self.RemovePoint(index)
     37 
     38     @execute_only_if_available
     39     def update_vertex(self, index, x, y):
     40         self.UpdatePoint(index, x, y)
     41 
     42 
     43 class PolygonPerimeter(DrawingElement, PolygonSegment):
     44     pass