digiKam
Loading...
Searching...
No Matches
sketchwidget.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2008-05-19
7 * Description : a widget to draw sketch.
8 *
9 * SPDX-FileCopyrightText: 2008-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2008-2010 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QWidget>
21#include <QXmlStreamReader>
22#include <QXmlStreamWriter>
23
24namespace Digikam
25{
26
27class SketchWidget : public QWidget
28{
29 Q_OBJECT
30
31public:
32
33 explicit SketchWidget(QWidget* const parent = nullptr);
34 ~SketchWidget() override;
35
36 QColor penColor() const;
37 int penWidth() const;
38 bool isClear() const;
39
40 QImage sketchImage() const;
41 void setSketchImage(const QImage& image);
42
47 void sketchImageToXML(QXmlStreamWriter& writer);
48 QString sketchImageToXML();
49
55 bool setSketchImageFromXML(QXmlStreamReader& reader);
56 bool setSketchImageFromXML(const QString& xml);
57
58Q_SIGNALS:
59
60 void signalSketchChanged(const QImage&);
62 void signalPenColorChanged(const QColor&);
63 void signalUndoRedoStateChanged(bool hasUndo, bool hasRedo);
64
65public Q_SLOTS:
66
67 void setPenColor(const QColor& newColor);
68 void setPenWidth(int newWidth);
69 void slotClear();
70 void slotUndo();
71 void slotRedo();
72
73protected:
74
75 void mousePressEvent(QMouseEvent*) override;
76 void mouseMoveEvent(QMouseEvent*) override;
77 void wheelEvent(QWheelEvent*) override;
78 void mouseReleaseEvent(QMouseEvent*) override;
79 void keyPressEvent(QKeyEvent*) override;
80 void keyReleaseEvent(QKeyEvent*) override;
81 void paintEvent(QPaintEvent*) override;
82
83private:
84
85 void updateDrawCursor();
86 void replayEvents(int index);
87 void drawLineTo(const QPoint& endPoint);
88 void drawLineTo(int width, const QColor& color, const QPoint& start, const QPoint& end);
89 void drawPath(int width, const QColor& color, const QPainterPath& path);
90 void addPath(QXmlStreamReader& reader);
91/*
92 QDomElement addXmlTextElement(QDomDocument& document, QDomElement& target,
93 const QString& tag, const QString& text);
94*/
95private:
96
97 class Private;
98 Private* const d = nullptr;
99};
100
101} // namespace Digikam
Definition sketchwidget.h:28
void slotClear()
Definition sketchwidget.cpp:148
void wheelEvent(QWheelEvent *) override
Definition sketchwidget.cpp:555
void signalSketchChanged(const QImage &)
void setPenColor(const QColor &newColor)
Definition sketchwidget.cpp:164
~SketchWidget() override
Definition sketchwidget.cpp:143
QColor penColor() const
Definition sketchwidget.cpp:170
void mouseReleaseEvent(QMouseEvent *) override
Definition sketchwidget.cpp:580
void setPenWidth(int newWidth)
Definition sketchwidget.cpp:175
int penWidth() const
Definition sketchwidget.cpp:182
void signalPenColorChanged(const QColor &)
void setSketchImage(const QImage &image)
Definition sketchwidget.cpp:474
void slotUndo()
Definition sketchwidget.cpp:187
bool isClear() const
Definition sketchwidget.cpp:159
void paintEvent(QPaintEvent *) override
Definition sketchwidget.cpp:614
void keyPressEvent(QKeyEvent *) override
Definition sketchwidget.cpp:594
bool setSketchImageFromXML(QXmlStreamReader &reader)
Definition sketchwidget.cpp:335
void mousePressEvent(QMouseEvent *) override
Definition sketchwidget.cpp:486
QImage sketchImage() const
Definition sketchwidget.cpp:469
void mouseMoveEvent(QMouseEvent *) override
Definition sketchwidget.cpp:516
void signalUndoRedoStateChanged(bool hasUndo, bool hasRedo)
void slotRedo()
Definition sketchwidget.cpp:219
void keyReleaseEvent(QKeyEvent *) override
Definition sketchwidget.cpp:604
QString sketchImageToXML()
Definition sketchwidget.cpp:303
void signalPenSizeChanged(int)
Definition datefolderview.cpp:34