aboutsummaryrefslogtreecommitdiffstats
path: root/Lib/defconQt/glyphView.py
diff options
context:
space:
mode:
authorAdrien Tétar2015-09-30 23:49:22 +0200
committerAdrien Tétar2015-09-30 23:49:22 +0200
commit738ea6d84855553061a6ddedda453c037330ca04 (patch)
tree6d000b4e30e5cbf918f1985e9a30eb5eb4172a89 /Lib/defconQt/glyphView.py
parent77cbb478dd9624968900f7e6eed1ec690e458fe8 (diff)
downloadtrufont-738ea6d84855553061a6ddedda453c037330ca04.tar.bz2
glyphView: touchup anchors
Diffstat (limited to 'Lib/defconQt/glyphView.py')
-rw-r--r--Lib/defconQt/glyphView.py59
1 files changed, 35 insertions, 24 deletions
diff --git a/Lib/defconQt/glyphView.py b/Lib/defconQt/glyphView.py
index ad5ab9f..1ab9c10 100644
--- a/Lib/defconQt/glyphView.py
+++ b/Lib/defconQt/glyphView.py
@@ -210,8 +210,9 @@ smoothHalf = smoothWidth / 2.0
onCurvePenWidth = 1.5
offCurvePenWidth = 1.0
-anchorSize = 15
-anchorPenWidth = 1.5
+anchorSize = 10
+anchorWidth = anchorHeight = roundPosition(anchorSize)
+anchorHalf = anchorWidth / 2.0
bezierHandleColor = QColor.fromRgbF(0, 0, 0, .2)
startPointColor = QColor.fromRgbF(0, 0, 0, .2)
@@ -221,6 +222,10 @@ offCurvePointStrokeColor = QColor.fromRgbF(.6, .6, .6, 1)
onCurvePointColor = offCurvePointStrokeColor
onCurvePointStrokeColor = offCurvePointColor
anchorColor = Qt.blue
+bluesColor = QColor.fromRgbF(.5, .7, 1, .3)
+fillColor = QColor(200, 200, 200, 120)#QColor.fromRgbF(0, 0, 0, .4)
+componentFillColor = QColor.fromRgbF(0, 0, 0, .4)#QColor.fromRgbF(.2, .2, .3, .4)
+metricsColor = QColor(70, 70, 70)
pointSelectionColor = Qt.red
class SceneTools(Enum):
@@ -520,10 +525,19 @@ class AnchorItem(QGraphicsPathItem):
def __init__(self, anchor, parent=None):
super(AnchorItem, self).__init__(parent)
self._anchor = anchor
+
+ textItem = QGraphicsSimpleTextItem(self._anchor.name, parent=self)
+ font = QFont()
+ font.setPointSize(9)
+ textItem.setFont(font)
+ textItem.setFlag(QGraphicsItem.ItemIgnoresTransformations)
self.setPointPath()
+ self.setPos(self._anchor.x, self._anchor.y)
self.setFlag(QGraphicsItem.ItemIsMovable)
self.setFlag(QGraphicsItem.ItemIsSelectable)
self.setFlag(QGraphicsItem.ItemSendsGeometryChanges)
+ self.setBrush(QBrush(anchorColor))
+ self.setPen(QPen(Qt.NoPen))
def itemChange(self, change, value):
if change == QGraphicsItem.ItemPositionChange:
@@ -551,25 +565,27 @@ class AnchorItem(QGraphicsPathItem):
if scale > 4: scale = 4
elif scale < .4: scale = .4
- path.addEllipse(-(anchorSize/2)/scale, -(anchorSize/2)/scale, anchorSize/scale, anchorSize/scale)
- path.moveTo(-anchorSize/scale, 0)
- path.lineTo(anchorSize/scale, 0)
- path.moveTo(0, anchorSize/scale)
- path.lineTo(0, -anchorSize/scale)
+ path.moveTo(-anchorHalf/scale, 0)
+ path.lineTo(0, anchorHalf/scale)
+ path.lineTo(anchorHalf/scale, 0)
+ path.lineTo(0, -anchorHalf/scale)
+ path.closeSubpath()
- textItem = QGraphicsSimpleTextItem(self._anchor.name, self)
- font = QFont()
- font.setPointSize(9)
- textItem.setFont(font)
- textItem.setBrush(anchorColor)
- textItem.setFlag(QGraphicsItem.ItemIgnoresTransformations)
- textItem.setPos(anchorSize/scale * 1.3, textItem.boundingRect().height()/2)
-
self.prepareGeometryChange()
self.setPath(path)
- self.setPos(self._anchor.x, self._anchor.y)
- self.setPen(QPen(anchorColor, anchorPenWidth/scale))
+ textItem = self.childItems()[0]
+ textItem.setPos(anchorHalf/scale, textItem.boundingRect().height()/2)
+ # http://www.qtfr.org/viewtopic.php?pid=21045#p21045
+ def paint(self, painter, option, widget):
+ newOption = QStyleOptionGraphicsItem(option)
+ newOption.state = QStyle.State_None
+ pen = self.pen()
+ if option.state & QStyle.State_Selected:
+ self.setPen(QPen(onCurvePointColor, 1.0))
+ else:
+ self.setPen(QPen(Qt.NoPen))
+ super(AnchorItem, self).paint(painter, newOption, widget)
class ComponentItem(QGraphicsPathItem):
def __init__(self, path, component, parent=None):
@@ -596,11 +612,6 @@ class ComponentItem(QGraphicsPathItem):
scene._blocked = False
return value
-bluesColor = QColor.fromRgbF(.5, .7, 1, .3)
-fillColor = QColor(200, 200, 200, 120)#QColor.fromRgbF(0, 0, 0, .4)
-componentFillColor = QColor.fromRgbF(0, 0, 0, .4)#QColor.fromRgbF(.2, .2, .3, .4)
-metricsColor = QColor(70, 70, 70)
-
class VGuidelinesTextItem(QGraphicsSimpleTextItem):
def __init__(self, text, font, parent=None):
super(VGuidelinesTextItem, self).__init__(text, parent)
@@ -1570,8 +1581,8 @@ class GlyphView(QGraphicsView):
scale = self.transform().m11()
if scale < 4:
for item in self.scene().items():
- if isinstance(item, OnCurvePointItem) or isinstance(item, OffCurvePointItem) or \
- isinstance(item, ResizeHandleItem):
+ if isinstance(item, (OnCurvePointItem, OffCurvePointItem, \
+ ResizeHandleItem, AnchorItem)):
item.setPointPath(scale)
self.update()
event.accept()