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 if (event->
modifiers() == Qt::AltModifier) {
265 }
else if (event->
modifiers() == Qt::ShiftModifier) {
280 if (updateDistance > 10) {
291 if(event->
modifiers() == Qt::AltModifier) {
316 static_cast<KisCanvas2*
>(
canvas())->paintingAssistantsDecoration()->endStroke();
345 canvas()->resourceManager());
349 QTransform resolutionMatrix;
352 path->lineTo(resolutionMatrix.map(
m_endPoint));
356 path->setStroke(border);
387 qreal lineAngle = std::atan2(lineVector.y(), lineVector.x());
390 lineAngle += 2 *
M_PI;
393 const qreal ANGLE_BETWEEN_CONSTRAINED_LINES = (2 *
M_PI) / 24;
395 const quint32 constrainedLineIndex =
static_cast<quint32
>((lineAngle / ANGLE_BETWEEN_CONSTRAINED_LINES) + 0.5);
396 const qreal constrainedLineAngle = constrainedLineIndex * ANGLE_BETWEEN_CONSTRAINED_LINES;
398 const qreal lineLength = std::sqrt((lineVector.x() * lineVector.x()) + (lineVector.y() * lineVector.y()));
400 const QPointF constrainedLineVector(lineLength * std::cos(constrainedLineAngle), lineLength * std::sin(constrainedLineAngle));
402 const QPointF result =
m_startPoint + constrainedLineVector;
456 path.moveTo(viewStartPos);
457 path.lineTo(viewStartEnd);
464 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)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
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 load(const QString &cursorName, 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.
Qt::KeyboardModifiers modifiers() const
QPointF point
The point in document coordinates.
#define koIcon(name)
Use these macros for icons without any issues.
KUndo2MagicString kundo2_i18n(const char *text)