1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
from PyQt4 import QtCore
from guide import Guide
class GuideLine(Guide):
def __init__(self, line_or_point, follows=None):
super(GuideLine, self).__init__(follows)
if isinstance(line_or_point, QtCore.QLineF):
self.line = line_or_point
elif follows is not None:
self.line = QtCore.QLineF(self.prevGuide.endPos(), line_or_point)
else:
self.line = QtCore.QLineF(QtCore.QPointF(0, 0), line_or_point)
def length(self):
return self.line.length()
def startPos(self):
return QtCore.QPointF(self.line.p1().x() * self.scaleX,
self.line.p1().y() * self.scaleY)
def endPos(self):
return QtCore.QPointF(self.line.p2().x() * self.scaleX,
self.line.p2().y() * self.scaleY)
def guide(self, item, moveSpeed):
frame = item.guideFrame - self.startLength
endX = (self.line.p1().x() + (frame * self.line.dx() / self.length())) * self.scaleX
endY = (self.line.p1().y() + (frame * self.line.dy() / self.length())) * self.scaleY
pos = QtCore.QPointF(endX, endY)
self.move(item, pos, moveSpeed)
|