Changeset View
Changeset View
Standalone View
Standalone View
widgets/toolbars/options/kpToolWidgetEraserSize.cpp
Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | |||||
46 | 46 | | |||
47 | static int EraserSizes [] = {2, 3, 5, 9, 17, 29}; | 47 | static int EraserSizes [] = {2, 3, 5, 9, 17, 29}; | ||
48 | static const int NumEraserSizes = | 48 | static const int NumEraserSizes = | ||
49 | int (sizeof (::EraserSizes) / sizeof (::EraserSizes [0])); | 49 | int (sizeof (::EraserSizes) / sizeof (::EraserSizes [0])); | ||
50 | 50 | | |||
51 | 51 | | |||
52 | static void DrawImage (kpImage *destImage, const QPoint &topLeft, void *userData) | 52 | static void DrawImage (kpImage *destImage, const QPoint &topLeft, void *userData) | ||
53 | { | 53 | { | ||
54 | kpToolWidgetEraserSize::DrawPackage *pack = | 54 | auto *pack = static_cast <kpToolWidgetEraserSize::DrawPackage *> (userData); | ||
55 | static_cast <kpToolWidgetEraserSize::DrawPackage *> (userData); | | |||
56 | 55 | | |||
57 | const int size = ::EraserSizes [pack->selected]; | 56 | const int size = ::EraserSizes [pack->selected]; | ||
58 | 57 | | |||
59 | kpPainter::fillRect (destImage, | 58 | kpPainter::fillRect (destImage, | ||
60 | topLeft.x (), topLeft.y (), size, size, | 59 | topLeft.x (), topLeft.y (), size, size, | ||
61 | pack->color); | 60 | pack->color); | ||
62 | } | 61 | } | ||
63 | 62 | | |||
64 | static void DrawCursor (kpImage *destImage, const QPoint &topLeft, void *userData) | 63 | static void DrawCursor (kpImage *destImage, const QPoint &topLeft, void *userData) | ||
65 | { | 64 | { | ||
66 | ::DrawImage (destImage, topLeft, userData); | 65 | ::DrawImage (destImage, topLeft, userData); | ||
67 | 66 | | |||
68 | 67 | | |||
69 | kpToolWidgetEraserSize::DrawPackage *pack = | 68 | auto *pack = static_cast <kpToolWidgetEraserSize::DrawPackage *> (userData); | ||
70 | static_cast <kpToolWidgetEraserSize::DrawPackage *> (userData); | | |||
71 | 69 | | |||
72 | const int size = ::EraserSizes [pack->selected]; | 70 | const int size = ::EraserSizes [pack->selected]; | ||
73 | 71 | | |||
74 | // Would 1-pixel border on all sides completely cover the color of the | 72 | // Would 1-pixel border on all sides completely cover the color of the | ||
75 | // eraser? | 73 | // eraser? | ||
76 | if (size <= 2) | 74 | if (size <= 2) { | ||
77 | return; | 75 | return; | ||
76 | } | ||||
78 | 77 | | |||
79 | // Draw 1-pixel border on all sides. | 78 | // Draw 1-pixel border on all sides. | ||
80 | QPainter painter(destImage); | 79 | QPainter painter(destImage); | ||
81 | painter.drawRect(topLeft.x(), topLeft.y(), size - 1, size - 1); | 80 | painter.drawRect(topLeft.x(), topLeft.y(), size - 1, size - 1); | ||
82 | } | 81 | } | ||
83 | 82 | | |||
84 | //--------------------------------------------------------------------- | 83 | //--------------------------------------------------------------------- | ||
85 | 84 | | |||
86 | kpToolWidgetEraserSize::kpToolWidgetEraserSize (QWidget *parent, const QString &name) | 85 | kpToolWidgetEraserSize::kpToolWidgetEraserSize (QWidget *parent, const QString &name) | ||
87 | : kpToolWidgetBase (parent, name) | 86 | : kpToolWidgetBase (parent, name) | ||
88 | { | 87 | { | ||
89 | for (int i = 0; i < ::NumEraserSizes; i++) | 88 | for (int i = 0; i < ::NumEraserSizes; i++) | ||
90 | { | 89 | { | ||
91 | if (i == 3 || i == 5) | 90 | if (i == 3 || i == 5) { | ||
92 | startNewOptionRow (); | 91 | startNewOptionRow (); | ||
92 | } | ||||
93 | 93 | | |||
94 | const int s = ::EraserSizes [i]; | 94 | const int s = ::EraserSizes [i]; | ||
95 | 95 | | |||
96 | QImage previewPixmap (s, s, QImage::Format_ARGB32_Premultiplied); | 96 | QImage previewPixmap (s, s, QImage::Format_ARGB32_Premultiplied); | ||
97 | if (i < 3) | 97 | if (i < 3) | ||
98 | { | 98 | { | ||
99 | // HACK: kpToolWidgetBase's layout code sucks and gives uneven spacing | 99 | // HACK: kpToolWidgetBase's layout code sucks and gives uneven spacing | ||
100 | previewPixmap = QImage ((width () - 4) / 3, 9, QImage::Format_ARGB32_Premultiplied); | 100 | previewPixmap = QImage ((width () - 4) / 3, 9, QImage::Format_ARGB32_Premultiplied); | ||
Show All 13 Lines | |||||
114 | addOption (QPixmap::fromImage(previewPixmap), i18n ("%1x%2", s, s)/*tooltip*/); | 114 | addOption (QPixmap::fromImage(previewPixmap), i18n ("%1x%2", s, s)/*tooltip*/); | ||
115 | } | 115 | } | ||
116 | 116 | | |||
117 | finishConstruction (1, 0); | 117 | finishConstruction (1, 0); | ||
118 | } | 118 | } | ||
119 | 119 | | |||
120 | //--------------------------------------------------------------------- | 120 | //--------------------------------------------------------------------- | ||
121 | 121 | | |||
122 | kpToolWidgetEraserSize::~kpToolWidgetEraserSize () | 122 | kpToolWidgetEraserSize::~kpToolWidgetEraserSize () = default; | ||
123 | { | | |||
124 | } | | |||
125 | 123 | | |||
126 | //--------------------------------------------------------------------- | 124 | //--------------------------------------------------------------------- | ||
127 | 125 | | |||
128 | 126 | | |||
129 | // public | 127 | // public | ||
130 | int kpToolWidgetEraserSize::eraserSize () const | 128 | int kpToolWidgetEraserSize::eraserSize () const | ||
131 | { | 129 | { | ||
132 | return ::EraserSizes[selected() < 0 ? 0 : selected()]; | 130 | return ::EraserSizes[selected() < 0 ? 0 : selected()]; | ||
Show All 38 Lines | |||||
171 | 169 | | |||
172 | //--------------------------------------------------------------------- | 170 | //--------------------------------------------------------------------- | ||
173 | 171 | | |||
174 | 172 | | |||
175 | // protected slot virtual [base kpToolWidgetBase] | 173 | // protected slot virtual [base kpToolWidgetBase] | ||
176 | bool kpToolWidgetEraserSize::setSelected (int row, int col, bool saveAsDefault) | 174 | bool kpToolWidgetEraserSize::setSelected (int row, int col, bool saveAsDefault) | ||
177 | { | 175 | { | ||
178 | const bool ret = kpToolWidgetBase::setSelected (row, col, saveAsDefault); | 176 | const bool ret = kpToolWidgetBase::setSelected (row, col, saveAsDefault); | ||
179 | if (ret) | 177 | if (ret) { | ||
180 | emit eraserSizeChanged (eraserSize ()); | 178 | emit eraserSizeChanged (eraserSize ()); | ||
179 | } | ||||
181 | return ret; | 180 | return ret; | ||
182 | } | 181 | } | ||
183 | 182 | | |||
184 | //--------------------------------------------------------------------- | 183 | //--------------------------------------------------------------------- | ||
185 | 184 | | |||
186 | 185 | |