From cc2e3fd6c2c6bc75577dcaa6e59c3d8784ff118f Mon Sep 17 00:00:00 2001 From: Marco Callieri mcallieri Date: Thu, 17 Feb 2011 14:16:07 +0000 Subject: [PATCH] - now it is possible to map tablet pressure on different brush parameters (size, hardness, transparency) - when mouse is used, the brush params are initialized only once (and not at every mousemove event) - pressure mapping interface gets enabled only when using a tablet - pressure can also be mapped to smooth percentage (controlled by the same checkbox of displacement) --- src/fgt/editpaint/editpaint.cpp | 44 +- src/fgt/editpaint/paintbox.h | 12 +- src/fgt/editpaint/paintbox.ui | 1234 +++++++++++++++---------------- 3 files changed, 650 insertions(+), 640 deletions(-) diff --git a/src/fgt/editpaint/editpaint.cpp b/src/fgt/editpaint/editpaint.cpp index b2aa30e56..7fa5d374f 100644 --- a/src/fgt/editpaint/editpaint.cpp +++ b/src/fgt/editpaint/editpaint.cpp @@ -99,6 +99,10 @@ bool EditPaintPlugin::StartEdit(MeshModel& m, GLArea * parent) connect(this, SIGNAL(setSelectionRendering(bool)),glarea,SLOT(setSelectFaceRendering(bool)) ); parent->setCursor(QCursor(QPixmap(":/images/cursor_paint.png"),1,1)); + + // initialize once and for all the radius (will remain the same all the time) + current_brush.radius = (paintbox->getRadius() * m.cm.bbox.Diag() * 0.5); + return true; } @@ -115,7 +119,13 @@ void EditPaintPlugin::EndEdit(MeshModel &/*m*/, GLArea * /*parent*/) void EditPaintPlugin::mousePressEvent(QMouseEvent * event, MeshModel &, GLArea * gla) { + // start a new stroke: init zbuffer and update brush if (zbuffer != NULL) delete zbuffer; zbuffer = NULL; + + current_brush.size = paintbox->getSize(); + current_brush.opacity = paintbox->getOpacity(); + current_brush.hardness = paintbox->getHardness(); + pushInputEvent(event->type(), event->pos(), event->modifiers(), 1, event->button(), gla); gla->update(); } @@ -134,11 +144,19 @@ void EditPaintPlugin::mouseReleaseEvent(QMouseEvent * event, MeshModel &, GLArea void EditPaintPlugin::tabletEvent(QTabletEvent * event, MeshModel & , GLArea * gla) { + if(!(paintbox->getPressureFrameEnabled())) + paintbox->enablePressureFrame(); + event->accept(); - // if event is down, clean zbuff + // if event is down, start a new stroke: clean zbuff if(event->type() == QEvent::TabletPress) + { if (zbuffer != NULL) delete zbuffer; zbuffer = NULL; + current_brush.size = paintbox->getSize(); + current_brush.opacity = paintbox->getOpacity(); + current_brush.hardness = paintbox->getHardness(); + } pushInputEvent(event->type(), event->pos(), event->modifiers(), event->pressure(), (event->pointerType() == QTabletEvent::Eraser)? Qt::RightButton : Qt::LeftButton, gla); gla->update(); @@ -211,11 +229,19 @@ void EditPaintPlugin::Decorate(MeshModel &m, GLArea * gla) if (current_options & EPP_DRAW_CURSOR) { - //TODO Compute only when needed!!!!!!!!!!!!!! - current_brush.size = paintbox->getSize() * latest_event.pressure; - current_brush.radius = (paintbox->getRadius() * m.cm.bbox.Diag() * 0.5) * latest_event.pressure; - current_brush.opacity = paintbox->getOpacity() * latest_event.pressure; - current_brush.hardness = paintbox->getHardness() * latest_event.pressure; + + current_brush.radius = (paintbox->getRadius() * m.cm.bbox.Diag() * 0.5); + if((paintbox->getPressureFrameEnabled())) + { + if(paintbox->getPressureSize()) + current_brush.size = paintbox->getSize() * latest_event.pressure; + + if(paintbox->getPressureOpacity()) + current_brush.opacity = paintbox->getOpacity() * latest_event.pressure; + + if(paintbox->getPressureHardness()) + current_brush.hardness = paintbox->getHardness() * latest_event.pressure; + } if (paintbox->getSizeUnit() == 0) drawSimplePolyLine(gla, latest_event.position, paintbox->getSize(), @@ -455,6 +481,9 @@ inline void EditPaintPlugin::smooth(vector< pair > * ve float p_x, p_y, p_z; float newpos[3]; + if(paintbox->getPressureDisplacement()) + decrease_pos *= latest_event.pressure; + for (unsigned int k = 0; k < vertices->size(); k++) //forach selected vertices { pair data = vertices->at(k); @@ -554,6 +583,9 @@ inline void EditPaintPlugin::sculpt(MeshModel & m, vector< pairgetHardness() / 100.0; float strength = m.cm.bbox.Diag() * paintbox->getDisplacement() / 1000.0; + + if(paintbox->getPressureDisplacement()) + strength *= latest_event.pressure; if (latest_event.button == Qt::RightButton) strength = - strength; diff --git a/src/fgt/editpaint/paintbox.h b/src/fgt/editpaint/paintbox.h index e61d7ef43..96ed16601 100644 --- a/src/fgt/editpaint/paintbox.h +++ b/src/fgt/editpaint/paintbox.h @@ -94,14 +94,18 @@ public: inline int getGradientForm() { return gradient_form->currentIndex(); } inline int getPickMode() { return pick_mode->currentIndex(); } inline float getNoiseSize() {return noise_slider->value();} + inline int getDisplacement() {return mesh_displacement_slider->value();} + inline int getDirection() {return mesh_displacement_direction->currentIndex();} + + // pressure + inline bool getPressureFrameEnabled() {return pressure_frame->isEnabled();} + inline void enablePressureFrame() {pressure_frame->setEnabled(true);} inline bool getPressureDisplacement() {return displacement_box->isChecked();} inline bool getPressureHardness() {return hardness_box->isChecked();} inline bool getPressureSize() {return size_box->isChecked(); } inline bool getPressureOpacity() {return opacity_box->isChecked();} - inline int getDisplacement() {return mesh_displacement_slider->value();} - inline int getDirection() {return mesh_displacement_direction->currentIndex();} - inline QUndoStack * getUndoStack() {return stacks->activeStack();} - + + inline QUndoStack * getUndoStack() {return stacks->activeStack();} void setUndoStack(QWidget * parent); diff --git a/src/fgt/editpaint/paintbox.ui b/src/fgt/editpaint/paintbox.ui index 1ac62c053..ef12bfec7 100644 --- a/src/fgt/editpaint/paintbox.ui +++ b/src/fgt/editpaint/paintbox.ui @@ -1,94 +1,97 @@ - + + Paintbox - - + + 0 0 329 - 1107 + 1030 - - + + 0 0 - + Vertex Painting - - - - - + + + + + 0 0 - + QFrame::NoFrame - + QFrame::Raised - - + + 6 - + 0 - + 3 - + 0 - + 3 - - + + false - - + + 0 0 - + Undo - - :/images/undo-24.png + + + :/images/undo-24.png:/images/undo-24.png - + Qt::ToolButtonTextBesideIcon - - + + false - - + + 0 0 - + Redo - - :/images/redo-24.png + + + :/images/redo-24.png:/images/redo-24.png - + Qt::ToolButtonTextBesideIcon @@ -96,218 +99,225 @@ - - - + + + Qt::Horizontal - - - + + + true - - + + 0 0 - + QFrame::NoFrame - + QFrame::Raised - - + + 3 - + 0 - + 0 - + 0 - - + + ... - - :/images/paintbrush-22.png + + + :/images/paintbrush-22.png:/images/paintbrush-22.png - + 24 24 - + true - + true - + true - - + + ... - - :/images/bucket-fill-22.png + + + :/images/bucket-fill-22.png:/images/bucket-fill-22.png - + 24 24 - + true - + true - - + + ... - - :/images/blend-22.png + + + :/images/blend-22.png:/images/blend-22.png - + 24 24 - + true - + true - - + + true - + ... - - :/images/blur-22.png + + + :/images/blur-22.png:/images/blur-22.png - + 24 24 - + true - + true - - + + true - + ... - - :/images/clone-22.png + + + :/images/clone-22.png:/images/clone-22.png - + 24 24 - + true - + true - - + + true - + ... - - :/images/color-picker-22.png + + + :/images/color-picker-22.png:/images/color-picker-22.png - + 24 24 - + true - + true - - + + ... - - :/images/perlin.png + + + :/images/perlin.png:/images/perlin.png - + 24 24 - + true - + true - + Qt::Vertical - + QSizePolicy::Fixed - + 20 40 @@ -316,92 +326,95 @@ - - + + true - + ... - - :/images/pickbrush-22.png + + + :/images/pickbrush-22.png:/images/pickbrush-22.png - + 24 24 - + true - + false - + true - - + + true - + ... - - :/images/blur-22.png + + + :/images/blur-22.png:/images/blur-22.png - + 24 24 - + true - + true - - + + true - + ... - - :/images/add-24.png + + + :/images/add-24.png:/images/add-24.png - + 24 24 - + true - + true - + Qt::Vertical - + 20 - 185 + 50 @@ -409,37 +422,28 @@ - - - - + + + + 0 - - 0 - - - 0 - - - 0 - - - - + + + 0 90 - + QFrame::StyledPanel - + QFrame::Raised - - + + 20 60 @@ -447,24 +451,25 @@ 24 - + ... - - :/images/bw.png + + + :/images/bw.png:/images/bw.png - + 15 15 - + true - - + + 110 0 @@ -472,30 +477,31 @@ 24 - + ... - - :/images/swap-colors-12.png + + + :/images/swap-colors-12.png:/images/swap-colors-12.png - + 15 15 - + false - + true - + Qt::NoArrow - - + + 60 30 @@ -503,21 +509,21 @@ 41 - + - - - + + + 255 255 255 - - - + + + 255 255 255 @@ -526,18 +532,18 @@ - - - + + + 255 255 255 - - - + + + 255 255 255 @@ -546,18 +552,18 @@ - - - + + + 255 255 255 - - - + + + 255 255 255 @@ -567,21 +573,21 @@ - + true - + QFrame::StyledPanel - + QFrame::Plain - + 2 - - + + 40 20 @@ -589,21 +595,21 @@ 41 - + - - - + + + 255 255 255 - - - + + + 0 0 0 @@ -612,18 +618,18 @@ - - - + + + 255 255 255 - - - + + + 0 0 0 @@ -632,18 +638,18 @@ - - - + + + 0 0 0 - - - + + + 0 0 0 @@ -653,31 +659,31 @@ - + true - + QFrame::StyledPanel - + QFrame::Plain - + 2 - - - + + + QFrame::StyledPanel - + QFrame::Raised - - + + 34 4 @@ -685,52 +691,52 @@ 81 - + Qt::ScrollBarAlwaysOff - + Qt::ScrollBarAlwaysOff - - - + + + QFrame::StyledPanel - + QFrame::Raised - + - - - + + + 0 0 - + Qt::ScrollBarAlwaysOff - + Qt::ScrollBarAlwaysOff - + true - + QGraphicsView::ScrollHandDrag - - QGraphicsView::DontAdjustForAntialiasing + + QGraphicsView::DontAdjustForAntialiasing - - + + Load From File @@ -738,99 +744,87 @@ - - - - + + + + 0 0 - + QFrame::StyledPanel - + QFrame::Raised - - + + 9 - - 9 - - - 9 - - - 9 - - + 6 - - 6 - - - - + + + Change the opacity of the color (this is not the opengl alpha value) - + 100 - + 100 - - - + + + Opacity - - - + + + false - + Modus - - - + + + false - - + + 0 0 - + Normal - - - + + + Change the opacity of the color (this is not the opengl alpha value) - + 100 - + 100 - + Qt::Horizontal @@ -838,80 +832,68 @@ - - - - + + + + 0 0 - + QFrame::StyledPanel - + QFrame::Raised - - + + 9 - - 9 - - - 9 - - - 9 - - + 6 - - 6 - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + 100 - + 25 - + 25 - + Qt::Horizontal - - - + + + Percentual - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + 100 - + 24 @@ -919,61 +901,61 @@ p, li { white-space: pre-wrap; } - - - + + + true - + QFrame::StyledPanel - + QFrame::Raised - - - - + + + + Displacement - - - + + + 4 - + Qt::Horizontal - - - + + + 3 - - 4.000 + + 4.000000000000000 - - - + + + Direction - - + + - + Averaged Normals - + Per Vertex Normals @@ -982,196 +964,196 @@ p, li { white-space: pre-wrap; } - - - + + + true - - + + 0 0 - + QFrame::StyledPanel - + QFrame::Raised - - - - + + + + Brush - - - + + + true - - + + 0 0 - + false - + Circle - + Square - + Pixmap - - - + + + Hardness - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + 100 - + 50 - + 50 - + Qt::Horizontal - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + 100 - + 50 - - - + + + Size - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + 100 - + 20 - + 20 - + Qt::Horizontal - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + 100 - + 20 - - - + + + Units - - - - + + + + 0 0 - + pixel - + percentual of bounding box - - - + + + Paint on: - - - + + + backfaces - - - + + + hidden polygons @@ -1179,95 +1161,83 @@ p, li { white-space: pre-wrap; } - - - + + + QFrame::StyledPanel - + QFrame::Raised - + - - + + Noise Scale - - - Qt::Horizontal - - + + 2 + + Qt::Horizontal + - + 3 - - 2.000 + + 2.000000000000000 - - - + + + QFrame::StyledPanel - + QFrame::Raised - - + + 9 - - 9 - - - 9 - - - 9 - - + 6 - - 6 - - - - - + + + + 0 0 - + Nearest vertex color - + Pixel color - - - + + + Picking mode @@ -1275,82 +1245,70 @@ p, li { white-space: pre-wrap; } - - - - + + + + 0 0 - + QFrame::StyledPanel - + QFrame::Raised - - + + 9 - - 9 - - - 9 - - - 9 - - + 6 - - 6 - - - - + + + Type - - - - + + + + 0 0 - + Foreground to background (RGB) - + Foreground to transparency - - - + + + Form - - + + - + Linear - + Circular @@ -1359,37 +1317,37 @@ p, li { white-space: pre-wrap; } - - - + + + QFrame::StyledPanel - + QFrame::Raised - + - - + + Vertex search: - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">fast:</span> works better with big meshes, but can loose some vertexes when faces are not direct connected<br /><span style=" font-weight:600;">slow but accurate: </span>sholud be used with small meshes, because it finds every vertex during painting</p></body></html> +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">fast:</span> works better with big meshes, but can loose some vertexes when faces are not direct connected<br /><span style=" font-weight:600;">slow but accurate: </span>sholud be used with small meshes, because it finds every vertex during painting</p></body></html> - + fast - + slow but accurate @@ -1398,50 +1356,50 @@ p, li { white-space: pre-wrap; } - - - - false + + + + true - + QFrame::StyledPanel - + QFrame::Raised - - - - + + + + Pen pressure maps to: - - - + + + Opacity - - - + + + Size - - - - Displacement + + + + Hardness - - - - Hardness + + + + Displacement / Smooth % @@ -1457,17 +1415,17 @@ p, li { white-space: pre-wrap; } Colorframe QFrame -
colorframe.h
+
colorframe.h
1
CloneView QGraphicsView -
cloneview.h
+
cloneview.h
- + @@ -1476,11 +1434,11 @@ p, li { white-space: pre-wrap; } deck_box setValue(int) - + 251 399 - + 308 394 @@ -1492,11 +1450,11 @@ p, li { white-space: pre-wrap; } opacity_slider setValue(int) - + 308 394 - + 251 399 @@ -1508,11 +1466,11 @@ p, li { white-space: pre-wrap; } percentual_box setValue(int) - + 251 480 - + 308 477 @@ -1524,11 +1482,11 @@ p, li { white-space: pre-wrap; } percentual_slider setValue(int) - + 308 477 - + 251 480 @@ -1540,11 +1498,11 @@ p, li { white-space: pre-wrap; } decrease_box setValue(int) - + 248 660 - + 308 666 @@ -1556,11 +1514,11 @@ p, li { white-space: pre-wrap; } hardness_slider setValue(int) - + 308 666 - + 248 660 @@ -1572,11 +1530,11 @@ p, li { white-space: pre-wrap; } decrease_box_3 setValue(int) - + 248 692 - + 308 698 @@ -1588,11 +1546,11 @@ p, li { white-space: pre-wrap; } pen_frame setVisible(bool) - + 36 69 - + 135 383 @@ -1604,11 +1562,11 @@ p, li { white-space: pre-wrap; } pressure_frame setVisible(bool) - + 36 69 - + 139 1097 @@ -1620,11 +1578,11 @@ p, li { white-space: pre-wrap; } pen_extra_frame setVisible(bool) - + 36 69 - + 137 759 @@ -1636,11 +1594,11 @@ p, li { white-space: pre-wrap; } size_slider setValue(int) - + 308 698 - + 248 692 @@ -1652,11 +1610,11 @@ p, li { white-space: pre-wrap; } gradient_frame setVisible(bool) - + 36 135 - + 209 949 @@ -1668,11 +1626,11 @@ p, li { white-space: pre-wrap; } pen_frame setVisible(bool) - + 36 102 - + 160 383 @@ -1684,11 +1642,11 @@ p, li { white-space: pre-wrap; } pen_frame setVisible(bool) - + 36 135 - + 216 383 @@ -1700,11 +1658,11 @@ p, li { white-space: pre-wrap; } smooth_frame setVisible(bool) - + 36 168 - + 267 466 @@ -1716,11 +1674,11 @@ p, li { white-space: pre-wrap; } pen_extra_frame setVisible(bool) - + 36 168 - + 250 759 @@ -1732,11 +1690,11 @@ p, li { white-space: pre-wrap; } pressure_frame setVisible(bool) - + 36 168 - + 272 1097 @@ -1748,11 +1706,11 @@ p, li { white-space: pre-wrap; } pick_frame setVisible(bool) - + 36 234 - + 319 868 @@ -1764,11 +1722,11 @@ p, li { white-space: pre-wrap; } mesh_displacement_frame setVisible(bool) - + 36 442 - + 230 587 @@ -1780,11 +1738,11 @@ p, li { white-space: pre-wrap; } pen_extra_frame setVisible(bool) - + 25 343 - + 199 759 @@ -1796,27 +1754,43 @@ p, li { white-space: pre-wrap; } pen_extra_frame setVisible(bool) - + 28 376 - + 179 759 + + mesh_smooth_button + toggled(bool) + pressure_frame + setVisible(bool) + + + 24 + 373 + + + 182 + 981 + + + mesh_add_button toggled(bool) pen_extra_frame setVisible(bool) - + 36 442 - + 122 759 @@ -1828,11 +1802,11 @@ p, li { white-space: pre-wrap; } mesh_displacement_frame setVisible(bool) - + 28 442 - + 122 587 @@ -1844,11 +1818,11 @@ p, li { white-space: pre-wrap; } smooth_frame setVisible(bool) - + 19 371 - + 153 466 @@ -1860,11 +1834,11 @@ p, li { white-space: pre-wrap; } pressure_frame setVisible(bool) - + 31 343 - + 129 1097 @@ -1876,11 +1850,11 @@ p, li { white-space: pre-wrap; } pressure_frame setVisible(bool) - + 36 442 - + 129 1097 @@ -1892,11 +1866,11 @@ p, li { white-space: pre-wrap; } clone_source_frame setVisible(bool) - + 17 201 - + 319 136 @@ -1908,11 +1882,11 @@ p, li { white-space: pre-wrap; } pen_extra_frame setVisible(bool) - + 33 201 - + 319 759 @@ -1924,11 +1898,11 @@ p, li { white-space: pre-wrap; } pen_frame setVisible(bool) - + 28 201 - + 277 383 @@ -1940,11 +1914,11 @@ p, li { white-space: pre-wrap; } pressure_frame setVisible(bool) - + 27 201 - + 277 1097 @@ -1956,11 +1930,11 @@ p, li { white-space: pre-wrap; } pen_frame setVisible(bool) - + 36 267 - + 254 383 @@ -1972,11 +1946,11 @@ p, li { white-space: pre-wrap; } pen_extra_frame setVisible(bool) - + 28 267 - + 259 765 @@ -1988,11 +1962,11 @@ p, li { white-space: pre-wrap; } gradient_frame setVisible(bool) - + 17 267 - + 188 949 @@ -2004,11 +1978,11 @@ p, li { white-space: pre-wrap; } pressure_frame setVisible(bool) - + 21 267 - + 166 1097 @@ -2020,11 +1994,11 @@ p, li { white-space: pre-wrap; } gradient_form setDisabled(bool) - + 17 267 - + 308 938 @@ -2036,11 +2010,11 @@ p, li { white-space: pre-wrap; } gradient_form setEnabled(bool) - + 29 135 - + 308 938 @@ -2052,11 +2026,11 @@ p, li { white-space: pre-wrap; } noise_frame setVisible(bool) - + 28 267 - + 197 819