180 MyPaintBrushInput result = MYPAINT_BRUSH_INPUT_PRESSURE;
183 result = MYPAINT_BRUSH_INPUT_PRESSURE;
185 result = MYPAINT_BRUSH_INPUT_SPEED1;
187 result = MYPAINT_BRUSH_INPUT_SPEED2;
189 result = MYPAINT_BRUSH_INPUT_RANDOM;
191 result = MYPAINT_BRUSH_INPUT_STROKE;
193 result = MYPAINT_BRUSH_INPUT_DIRECTION;
195 result = MYPAINT_BRUSH_INPUT_TILT_DECLINATION;
197 result = MYPAINT_BRUSH_INPUT_TILT_ASCENSION;
199 result = MYPAINT_BRUSH_INPUT_CUSTOM;
201 qWarning() <<
"sensorIdToMyPaintBrushInput: unknown sensor id";
237 if (
id.
id() ==
"eraser")
238 return MYPAINT_BRUSH_SETTING_ERASER;
239 else if (
id.
id() ==
"opaque")
240 return MYPAINT_BRUSH_SETTING_OPAQUE;
241 else if (
id.
id() ==
"smudge")
242 return MYPAINT_BRUSH_SETTING_SMUDGE;
243 else if (
id.
id() ==
"color_h")
244 return MYPAINT_BRUSH_SETTING_COLOR_H;
245 else if (
id.
id() ==
"color_s")
246 return MYPAINT_BRUSH_SETTING_COLOR_S;
247 else if (
id.
id() ==
"color_v")
248 return MYPAINT_BRUSH_SETTING_COLOR_V;
249 else if (
id.
id() ==
"colorize")
250 return MYPAINT_BRUSH_SETTING_COLORIZE;
251 else if (
id.
id() ==
"hardness")
252 return MYPAINT_BRUSH_SETTING_HARDNESS;
253 else if (
id.
id() ==
"speed1_gamma")
254 return MYPAINT_BRUSH_SETTING_SPEED1_GAMMA;
255 else if (
id.
id() ==
"speed2_gamma")
256 return MYPAINT_BRUSH_SETTING_SPEED2_GAMMA;
257 else if (
id.
id() ==
"anti_aliasing")
258 return MYPAINT_BRUSH_SETTING_ANTI_ALIASING;
259 else if (
id.
id() ==
"restore_color")
260 return MYPAINT_BRUSH_SETTING_RESTORE_COLOR;
261 else if (
id.
id() ==
"slow_tracking")
262 return MYPAINT_BRUSH_SETTING_SLOW_TRACKING;
263 else if (
id.
id() ==
"smudge_length")
264 return MYPAINT_BRUSH_SETTING_SMUDGE_LENGTH;
265 else if (
id.
id() ==
"snap_to_pixel")
266 return MYPAINT_BRUSH_SETTING_SNAP_TO_PIXEL;
267 else if (
id.
id() ==
"change_color_h")
268 return MYPAINT_BRUSH_SETTING_CHANGE_COLOR_H;
269 else if (
id.
id() ==
"change_color_l")
270 return MYPAINT_BRUSH_SETTING_CHANGE_COLOR_L;
271 else if (
id.
id() ==
"change_color_v")
272 return MYPAINT_BRUSH_SETTING_CHANGE_COLOR_V;
273 else if (
id.
id() ==
"tracking_noise")
274 return MYPAINT_BRUSH_SETTING_TRACKING_NOISE;
275 else if (
id.
id() ==
"dabs_per_second")
276 return MYPAINT_BRUSH_SETTING_DABS_PER_SECOND;
277 else if (
id.
id() ==
"offset_by_speed")
278 return MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED;
279 else if (
id.
id() ==
"opaque_multiply")
280 return MYPAINT_BRUSH_SETTING_OPAQUE_MULTIPLY;
281 else if (
id.
id() ==
"speed1_slowness")
282 return MYPAINT_BRUSH_SETTING_SPEED1_SLOWNESS;
283 else if (
id.
id() ==
"speed2_slowness")
284 return MYPAINT_BRUSH_SETTING_SPEED2_SLOWNESS;
285 else if (
id.
id() ==
"stroke_holdtime")
286 return MYPAINT_BRUSH_SETTING_STROKE_HOLDTIME;
287 else if (
id.
id() ==
"direction_filter")
288 return MYPAINT_BRUSH_SETTING_DIRECTION_FILTER;
289 else if (
id.
id() ==
"offset_by_random")
290 return MYPAINT_BRUSH_SETTING_OFFSET_BY_RANDOM;
291 else if (
id.
id() ==
"opaque_linearize")
292 return MYPAINT_BRUSH_SETTING_OPAQUE_LINEARIZE;
293 else if (
id.
id() ==
"radius_by_random")
294 return MYPAINT_BRUSH_SETTING_RADIUS_BY_RANDOM;
295 else if (
id.
id() ==
"stroke_threshold")
296 return MYPAINT_BRUSH_SETTING_STROKE_THRESHOLD;
297 else if (
id.
id() ==
"pressure_gain_log")
298 return MYPAINT_BRUSH_SETTING_PRESSURE_GAIN_LOG;
299 else if (
id.
id() ==
"smudge_radius_log")
300 return MYPAINT_BRUSH_SETTING_SMUDGE_RADIUS_LOG;
301 else if (
id.
id() ==
"change_color_hsl_s")
302 return MYPAINT_BRUSH_SETTING_CHANGE_COLOR_HSL_S;
303 else if (
id.
id() ==
"change_color_hsv_s")
304 return MYPAINT_BRUSH_SETTING_CHANGE_COLOR_HSV_S;
305 else if (
id.
id() ==
"radius_logarithmic")
306 return MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC;
307 else if (
id.
id() ==
"elliptical_dab_angle")
308 return MYPAINT_BRUSH_SETTING_ELLIPTICAL_DAB_ANGLE;
309 else if (
id.
id() ==
"elliptical_dab_ratio")
310 return MYPAINT_BRUSH_SETTING_ELLIPTICAL_DAB_RATIO;
311 else if (
id.
id() ==
"custom_input_slowness")
312 return MYPAINT_BRUSH_SETTING_CUSTOM_INPUT_SLOWNESS;
313 else if (
id.
id() ==
"custom_input")
314 return MYPAINT_BRUSH_SETTING_CUSTOM_INPUT;
315 else if (
id.
id() ==
"dabs_per_basic_radius")
316 return MYPAINT_BRUSH_SETTING_DABS_PER_BASIC_RADIUS;
317 else if (
id.
id() ==
"slow_tracking_per_dab")
318 return MYPAINT_BRUSH_SETTING_SLOW_TRACKING_PER_DAB;
319 else if (
id.
id() ==
"dabs_per_actual_radius")
320 return MYPAINT_BRUSH_SETTING_DABS_PER_ACTUAL_RADIUS;
321 else if (
id.
id() ==
"offset_by_speed_slowness")
322 return MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED_SLOWNESS;
323 else if (
id.
id() ==
"stroke_duration_logarithmic")
324 return MYPAINT_BRUSH_SETTING_STROKE_DURATION_LOGARITHMIC;
325 else if (
id.
id() ==
"smudge_length_log")
326 return MYPAINT_BRUSH_SETTING_SMUDGE_LENGTH_LOG;
327 else if (
id.
id() ==
"smudge_bucket")
328 return MYPAINT_BRUSH_SETTING_SMUDGE_BUCKET;
329 else if (
id.
id() ==
"smudge_transparency")
330 return MYPAINT_BRUSH_SETTING_SMUDGE_TRANSPARENCY;
331 else if (
id.
id() ==
"posterize")
332 return MYPAINT_BRUSH_SETTING_POSTERIZE;
333 else if (
id.
id() ==
"posterize_num")
334 return MYPAINT_BRUSH_SETTING_POSTERIZE_NUM;
336 return MYPAINT_BRUSH_SETTING_ERASER;
346 std::unique_ptr<MyPaintBrush,
decltype(&mypaint_brush_unref)>
347 brush(mypaint_brush_new(), &mypaint_brush_unref);
354 const int numPoints = mypaint_brush_get_mapping_n(brush.get(), brushSetting, input);
357 for(
int i = 0; i < numPoints; i++) {
359 mypaint_brush_get_mapping_point(brush.get(), brushSetting, input, i, &x, &y);
360 points << QPointF(qreal(x), qreal(y));
363 if (points.size() > 1) {
364 (*it)->isActive =
true;
377 sensors.front()->isActive =
true;
383 data.
strengthValue = qreal(mypaint_brush_get_base_value(brush.get(), brushSetting));
399 activeSensors.append(sensor);
405 QJsonObject brush_json = doc.object();
406 QVariantMap map = brush_json.toVariantMap();
407 QVariantMap settings_map = map[
"settings"].toMap();
408 QVariantMap name_map = settings_map[data.
id.
id()].toMap();
409 QVariantMap inputs_map = name_map[
"inputs"].toMap();
418 inputs_map.remove(sensorJsonId);
423 QVariantList pointsList;
426 pointsList.push_back(QVariantList{pt.
x(), pt.
y()});
428 inputs_map[sensorJsonId] = pointsList;
432 name_map[
"inputs"] = inputs_map;
435 settings_map[data.
id.
id()] = name_map;
436 map[
"settings"] = settings_map;
438 doc = QJsonDocument(QJsonObject::fromVariantMap(map));