17#include <ksharedconfig.h>
48 m_showGuideline(true),
49 m_strokeIsRunning(false),
52 canvas->resourceManager(),
57 setObjectName(
"tool_line");
212 QString message = i18n(
"The MyPaint Brush Engine is not available for this colorspace");
259 Qt::KeyboardModifiers effectiveModifiers =
event->modifiers();
261 if (effectiveModifiers.testFlag(Qt::AltModifier)) {
265 effectiveModifiers.setFlag(Qt::AltModifier,
false);
278 if (effectiveModifiers == Qt::AltModifier) {
284 }
else if (effectiveModifiers == Qt::ShiftModifier) {
299 if (updateDistance > 10) {
310 if(effectiveModifiers == Qt::AltModifier) {
335 static_cast<KisCanvas2*
>(
canvas())->paintingAssistantsDecoration()->endStroke();
364 canvas()->resourceManager());
368 QTransform resolutionMatrix;
371 path->lineTo(resolutionMatrix.map(
m_endPoint));
375 path->setStroke(border);
406 qreal lineAngle = std::atan2(lineVector.y(), lineVector.x());
409 lineAngle += 2 *
M_PI;
412 const qreal ANGLE_BETWEEN_CONSTRAINED_LINES = (2 *
M_PI) / 24;
414 const quint32 constrainedLineIndex =
static_cast<quint32
>((lineAngle / ANGLE_BETWEEN_CONSTRAINED_LINES) + 0.5);
415 const qreal constrainedLineAngle = constrainedLineIndex * ANGLE_BETWEEN_CONSTRAINED_LINES;
417 const qreal lineLength = std::sqrt((lineVector.x() * lineVector.x()) + (lineVector.y() * lineVector.y()));
419 const QPointF constrainedLineVector(lineLength * std::cos(constrainedLineAngle), lineLength * std::sin(constrainedLineAngle));
421 const QPointF result =
m_startPoint + constrainedLineVector;
475 path.moveTo(viewStartPos);
476 path.lineTo(viewStartEnd);
483 return i18n(
"Alt+Drag will move the origin of the currently displayed line around, Shift+Drag will force you to draw straight lines");
qreal length(const QPointF &vec)
float value(const T *src, size_t ch)
KisCoordinatesConverter * coordinatesConverter
void addCommand(KUndo2Command *command) override
void updateCanvas(const QRectF &rc) override
KisViewManager * viewManager() const
KisPaintingAssistantsDecorationSP paintingAssistantsDecoration() const
_Private::Traits< T >::Result documentToImage(const T &obj) const
_Private::Traits< T >::Result imageToDocument(const T &obj) const
static QCursor loadWithSize(const QString &cursorName, int width, int height, int hotspotX=-1, int hotspotY=-1)
void setOnlyOneAssistantSnap(bool assistant)
sets whether we snap to only one assistant
void setAdjustedBrushPosition(const QPointF position)
void setEraserSnap(bool assistant)
sets whether eraser brushes snap
void adjustLine(QPointF &point, QPointF &strokeBegin)
The KisResourcesSnapshot class takes a snapshot of the various resources like colors and settings use...
KoColor currentFgColor() const
KisCanvasResourceProvider * canvasResourceProvider()
void showFloatingMessage(const QString &message, const QIcon &icon, int timeout=4500, KisFloatingMessage::Priority priority=KisFloatingMessage::Medium, int alignment=Qt::AlignCenter|Qt::TextWordWrap)
shows a floating message in the top right corner of the canvas
QPointer< KoShapeController > shapeController
void toQColor(QColor *c) const
a convenience method for the above.
The position of a path point within a path shape.
QPointF point
The point in document coordinates.
#define koIcon(name)
Use these macros for icons without any issues.
KUndo2MagicString kundo2_i18n(const char *text)