[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/krita
From: Lukáš Tvrdý <lukast.dev () gmail ! com>
Date: 2009-11-03 22:30:25
Message-ID: 1257287425.626413.4848.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1044510 by lukast:
* Feature: Shift+Mouse Drag call the KisPaintOpSettings::changePaintopSize, every \
paintop can implement reaction
* Spray implements the KisPaintOpSettings::changePaintOpSize (changes the diameter of \
the brush)
* clean-up old unused code for 3D brush
* clean-up hidden methods in settings object
M +7 -0 image/brushengine/kis_paintop_settings.cpp
M +2 -0 image/brushengine/kis_paintop_settings.h
M +18 -21 plugins/paintops/spray/kis_spray_paintop_settings.cpp
M +2 -3 plugins/paintops/spray/kis_spray_paintop_settings.h
M +5 -0 plugins/paintops/spray/kis_sprayop_option.cpp
M +2 -0 plugins/paintops/spray/kis_sprayop_option.h
M +1 -1 plugins/paintops/spray/spray_brush.cpp
M +27 -31 ui/tool/kis_tool_freehand.cc
M +3 -0 ui/tool/kis_tool_freehand.h
M +2 -1 ui/tool/kis_tool_paint.h
--- trunk/koffice/krita/image/brushengine/kis_paintop_settings.cpp #1044509:1044510
@@ -126,6 +126,13 @@
Q_UNUSED(_mode);
}
+
+void KisPaintOpSettings::changePaintOpSize(qreal x, qreal y) const
+{
+ Q_UNUSED(x);
+ Q_UNUSED(y);
+}
+
#if defined(HAVE_OPENGL)
QString KisPaintOpSettings::modelName() const
{
--- trunk/koffice/krita/image/brushengine/kis_paintop_settings.h #1044509:1044510
@@ -139,6 +139,8 @@
*/
virtual void paintOutline(const QPointF& pos, KisImageWSP image, QPainter \
&painter, const KoViewConverter &converter, OutlineMode _mode) const;
+ virtual void changePaintOpSize(qreal x, qreal y) const;
+
#if defined(HAVE_OPENGL)
virtual QString modelName() const;
#endif
--- trunk/koffice/krita/plugins/paintops/spray/kis_spray_paintop_settings.cpp \
#1044509:1044510 @@ -58,25 +58,7 @@
delete settings;
}
-QRectF KisSprayPaintOpSettings::paintOutlineRect(const QPointF& pos, KisImageWSP \
image) const
-{
- qreal size = diameter();
- size += 2;
- return image->pixelToDocument(
- QRectF(0, 0, size, size)
- ).translated(pos - QPointF(size * 0.5 , size * 0.5));
-}
-void KisSprayPaintOpSettings::paintOutline(const QPointF& pos, KisImageWSP image, \
QPainter &painter, const KoViewConverter &converter) const
-{
- qreal size = diameter();
- QRectF brushSize(0, 0, size, size);
- painter.setPen(Qt::black);
- //painter.translate(converter.documentToView( pos - image->pixelToDocument( \
QPointF( size * 0.5,size * 0.5 ) + QPointF(0.5, 0.5) )) );
- painter.drawEllipse(converter.documentToView(image->pixelToDocument(brushSize).translated(pos \
- QPointF(size * 0.5, size * 0.5))));
- qDebug() << "pos:" << pos;
-}
-
int KisSprayPaintOpSettings::diameter() const
{
return m_options->m_sprayOption->diameter();
@@ -192,7 +174,7 @@
QRectF KisSprayPaintOpSettings::paintOutlineRect(const QPointF& pos, KisImageWSP \
image, OutlineMode _mode) const {
if (_mode != CURSOR_IS_OUTLINE) return QRectF();
- qreal size = diameter();
+ qreal size = diameter() * scale();
size += 10;
return image->pixelToDocument(QRectF(0, 0, size, size).translated(- QPoint(size \
* 0.5, size * 0.5))).translated(pos); }
@@ -200,8 +182,9 @@
void KisSprayPaintOpSettings::paintOutline(const QPointF& pos, KisImageWSP image, \
QPainter &painter, const KoViewConverter &converter, OutlineMode _mode) const {
if (_mode != CURSOR_IS_OUTLINE) return;
- qreal size = diameter();
- painter.setPen(Qt::black);
+ qreal size = diameter() * scale();
+ painter.setPen(QColor(255,128,255));
+ painter.setCompositionMode(QPainter::RasterOp_SourceXorDestination);
painter.drawEllipse(converter.documentToView(image->pixelToDocument(QRectF(0, 0, \
size, size).translated(- QPoint(size * 0.5, size * 0.5))).translated(pos))); }
@@ -234,3 +217,17 @@
{
return m_options->m_ColorOption->sampleInputColor();
}
+
+
+void KisSprayPaintOpSettings::changePaintOpSize(qreal x, qreal y) const
+{
+ if (qAbs(x) > qAbs(y)){
+ // recoginze the left/right movement
+ if (x > 0){
+ m_options->m_sprayOption->setDiamter( diameter() + qRound(x) );
+ }else{
+ m_options->m_sprayOption->setDiamter( diameter() + qRound(x) );
+ }
+ }else{
+ }
+}
--- trunk/koffice/krita/plugins/paintops/spray/kis_spray_paintop_settings.h \
#1044509:1044510 @@ -40,6 +40,8 @@
virtual QRectF paintOutlineRect(const QPointF& pos, KisImageWSP image, \
OutlineMode _mode) const;
virtual void paintOutline(const QPointF& pos, KisImageWSP image, QPainter \
&painter, const KoViewConverter &converter, OutlineMode _mode) const;
+ virtual void changePaintOpSize(qreal x, qreal y) const;
+
bool paintIncremental();
using KisPropertiesConfiguration::fromXML;
@@ -48,9 +50,6 @@
virtual void fromXML(const QDomElement&);
virtual void toXML(QDomDocument&, QDomElement&) const;
- QRectF paintOutlineRect(const QPointF& pos, KisImageWSP image) const;
- void paintOutline(const QPointF& pos, KisImageWSP image, QPainter &painter, \
const KoViewConverter &converter) const;
-
KisPaintOpSettingsSP clone() const;
/// brush settings
--- trunk/koffice/krita/plugins/paintops/spray/kis_sprayop_option.cpp \
#1044509:1044510 @@ -118,3 +118,8 @@
}
+void KisSprayOpOption::setDiamter(int diameter) const
+{
+ m_options->diameterSpinBox->setValue(diameter);
+}
+
--- trunk/koffice/krita/plugins/paintops/spray/kis_sprayop_option.h #1044509:1044510
@@ -30,6 +30,8 @@
~KisSprayOpOption();
int diameter() const;
+ void setDiamter(int diameter) const;
+
int particleCount() const;
qreal coverage() const;
--- trunk/koffice/krita/plugins/paintops/spray/spray_brush.cpp #1044509:1044510
@@ -96,7 +96,7 @@
qreal lengthX;
qreal lengthY;
- int steps = 36;
+ int steps = 118;
bool shouldColor = true;
if (m_settings->fillBackground()){
m_painter->setPaintColor(bgColor);
--- trunk/koffice/krita/ui/tool/kis_tool_freehand.cc #1044509:1044510
@@ -117,7 +117,7 @@
// dbgUI << "mousePressEvent" << m_mode;
// if (!currentImage())
// return;
-
+
if (!currentNode())
return;
@@ -132,6 +132,12 @@
}
}
+ if (e->modifiers() == Qt::ShiftModifier){
+ m_mode = EDIT_BRUSH;
+ m_prevMousePos = e->point;
+ m_originalPos = e->globalPos();
+ return;
+ }
if (e->button() == Qt::LeftButton) {
initPaint(e);
@@ -217,7 +223,14 @@
}
m_previousPaintInformation = info;
+ }else if (m_mode == EDIT_BRUSH){
+ qreal dx = m_prevMousePos.x() - e->point.x();
+ qreal dy = m_prevMousePos.y() - e->point.y();
+ currentPaintOpPreset()->settings()->changePaintOpSize(dx,dy);
}
+
+
+
KisConfig cfg;
KisPaintOpSettings::OutlineMode outlineMode;
if (m_mode != PAINT && cfg.cursorStyle() == CURSOR_STYLE_OUTLINE) {
@@ -247,6 +260,11 @@
if (!oldOutlineRect.isEmpty()) {
m_canvas->updateCanvas(oldOutlineRect); // erase the old guy
}
+
+ if (m_mode == EDIT_BRUSH){
+ // do not move the cursor
+ QCursor::setPos(m_originalPos);
+ }
}
void KisToolFreehand::mouseReleaseEvent(KoPointerEvent* e)
@@ -254,7 +272,10 @@
// dbgUI << "mouseReleaseEvent" << m_mode << " " << e->button() << " " << \
e->button(); if (e->button() == Qt::LeftButton && m_mode == PAINT) {
endPaint();
- } else {
+ } else if (m_mode == EDIT_BRUSH){
+ m_mode = HOVER;
+ } else
+ {
KisToolPaint::mouseReleaseEvent(e);
}
}
@@ -522,35 +543,8 @@
}
if (glIsList(m_displayList)) {
- dbgUI << "I have list to draw!";
QPointF pos = converter.documentToView(mousePos);
- /* KisImageWSP img = currentImage();
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHT1);
- glEnable(GL_LIGHT2);
- glEnable(GL_LIGHT3);
- glEnable(GL_LIGHT4);
-
- QPointF pos0(0,0); pos0 = converter.documentToView( pos0 );
- QPointF pos1(0,img->height()); pos1 = \
converter.documentToView( pos1 );
- QPointF pos2(img->width(),img->height()); pos2 = \
converter.documentToView( pos2 );
- QPointF pos3(img->width(),0); pos3 = \
converter.documentToView( pos3 );
-
- GLfloat position[] = { 0.0f, 0.0f, ZET };
- position[0] = pos.x();
- position[1] = pos.y();
- glLightfv(GL_LIGHT0, GL_POSITION, position);
- position[0] = pos1.x();
- position[1] = pos1.y();
- glLightfv(GL_LIGHT1, GL_POSITION, position);
- position[0] = pos2.x();
- position[1] = pos2.y();
- glLightfv(GL_LIGHT2, GL_POSITION, position);
- position[0] = pos3.x();
- position[1] = pos3.y();
- glLightfv(GL_LIGHT3, GL_POSITION, position);*/
-
glColor3f(0.0, 1.0, 0.0);
glShadeModel(GL_SMOOTH);
@@ -580,6 +574,7 @@
m_prevyTilt = m_yTilt;
} else {
+ dbgUI << "Warning: I don't have list to draw!";
dbgUI << "Default model will be used";
Kis3DObjectModel * model;
m_brushModelName = currentPaintOpPreset()->settings()->modelName();
@@ -587,13 +582,14 @@
// here is the default 3d model filename for brushes
if (m_brushModelName.isEmpty()) {
model = new Kis3DObjectModel("3d-deform-brush.obj" , \
"3d-deform-brush.mtl");
- dbgUI << "isEmpty()";
} else {
model = new Kis3DObjectModel(m_brushModelName + ".obj" , \
m_brushModelName + ".mtl"); }
m_displayList = model->displayList();
+ if (!glIsList(m_displayList)){
+ dbgUI << "Default model has not been found!";
+ }
delete model;
-
}
}
}
--- trunk/koffice/krita/ui/tool/kis_tool_freehand.h #1044509:1044510
@@ -131,6 +131,9 @@
#endif
QPointF mousePos;
+ QPointF m_prevMousePos;
+ QPoint m_originalPos;
+
QRectF oldOutlineRect;
bool m_paintedOutline;
QRegion m_incrementalDirtyRegion;
--- trunk/koffice/krita/ui/tool/kis_tool_paint.h #1044509:1044510
@@ -59,7 +59,8 @@
PAINT_STYLUS,
ERASE,
ERASE_STYLUS,
- HOVER
+ HOVER,
+ EDIT_BRUSH
};
class KRITAUI_EXPORT KisToolPaint
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic