| 15 | } |
| 16 | |
| 17 | ArrowKey::ArrowKey(KeyConfig &config, const QRect &outer, const QRect &inner, |
| 18 | int offset, const QString &labelText, qreal gap) |
| 19 | : Key{config.next(), inner, outer, config.graphColor}, mLabelColor{config.blackColor}, |
| 20 | mOuter{outer}, mInner{inner}, mOffset{2 * offset} { |
| 21 | qreal innerAngle = computeAngle(inner, gap), |
| 22 | outerAngle = computeAngle(outer, gap); |
| 23 | int offsetAngle = 90 * offset; |
| 24 | mLabelText = labelText; |
| 25 | mKeyShape.arcMoveTo(inner, offsetAngle + innerAngle); |
| 26 | mKeyShape.arcTo(outer, offsetAngle + outerAngle, -2 * outerAngle); |
| 27 | mKeyShape.arcTo(inner, offsetAngle - innerAngle, 2 * innerAngle); |
| 28 | mArrow.moveTo(rotatePoint({2 * gap, 0}, offset)); |
| 29 | mArrow.lineTo(rotatePoint({gap, gap}, offset)); |
| 30 | mArrow.lineTo(rotatePoint({gap, -gap}, offset)); |
| 31 | mArrow.translate(QRectF{outer}.center() + rotatePoint({inner.width() * .5, 0}, offset) + QPointF{.5, .5}); |
| 32 | } |
| 33 | |
| 34 | void ArrowKey::paint(QPainter &painter) const { |
| 35 | Key::paint(painter); |