[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-kimageshop
Subject: Patch: Brush Outline with Crosshair
From: Silvio Heinrich <plassy () web ! de>
Date: 2011-01-04 0:12:39
Message-ID: 4D2265F7.9070100 () web ! de
[Download RAW message or body]
Now i send the separated patches starting with the crosshair thing.
The crosshair is now painted and the invisible cursor is used.
["BrushOutlineCrosshair.patch" (text/x-diff)]
From 85875a0b55dff75b3fb1a7cbfd64e53094448b28 Mon Sep 17 00:00:00 2001
From: Silvio Heinrich <plassy@web.de>
Date: Tue, 28 Dec 2010 17:55:36 +0100
Subject: [PATCH 1/2] Add "Brush Outline and Crosshair" option to the general \
settings.
it will use the crosshair cursor and paints the brush outline simultaneously
this helps seeing the middle of the brush when using large brushes
---
krita/image/kis_global.h | 5 ++-
krita/ui/forms/wdggeneralsettings.ui | 5 ++++
krita/ui/tool/kis_tool_freehand.cc | 6 ++--
krita/ui/tool/kis_tool_paint.cc | 38 ++++++++++++++++++++++++++++++++-
4 files changed, 47 insertions(+), 7 deletions(-)
diff --git a/krita/image/kis_global.h b/krita/image/kis_global.h
index e66e806..beb8717 100644
--- a/krita/image/kis_global.h
+++ b/krita/image/kis_global.h
@@ -43,9 +43,10 @@ enum enumCursorStyle {
CURSOR_STYLE_CROSSHAIR = 1,
CURSOR_STYLE_POINTER = 2,
CURSOR_STYLE_OUTLINE = 3,
- CURSOR_STYLE_NO_CURSOR = 4
+ CURSOR_STYLE_CROSS_OUTLINE = 4,
+ CURSOR_STYLE_NO_CURSOR = 5
#if defined(HAVE_OPENGL)
- , CURSOR_STYLE_3D_MODEL = 5
+ , CURSOR_STYLE_3D_MODEL = 6
#endif
};
diff --git a/krita/ui/forms/wdggeneralsettings.ui \
b/krita/ui/forms/wdggeneralsettings.ui index aea9174..13e0e31 100644
--- a/krita/ui/forms/wdggeneralsettings.ui
+++ b/krita/ui/forms/wdggeneralsettings.ui
@@ -45,6 +45,11 @@
</item>
<item>
<property name="text">
+ <string>Brush Outline and Crosshair</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
<string>No Cursor</string>
</property>
</item>
diff --git a/krita/ui/tool/kis_tool_freehand.cc b/krita/ui/tool/kis_tool_freehand.cc
index a41e40e..7077bca 100644
--- a/krita/ui/tool/kis_tool_freehand.cc
+++ b/krita/ui/tool/kis_tool_freehand.cc
@@ -134,7 +134,7 @@ void KisToolFreehand::mousePressEvent(KoPointerEvent *e)
m_outlineDocPoint = e->point;
KisConfig cfg;
- if(cfg.cursorStyle() == CURSOR_STYLE_OUTLINE) {
+ if(cfg.cursorStyle() == CURSOR_STYLE_OUTLINE || cfg.cursorStyle() == \
CURSOR_STYLE_CROSS_OUTLINE) { updateOutlineRect();
}
@@ -197,7 +197,7 @@ void KisToolFreehand::mouseMoveEvent(KoPointerEvent *e)
m_outlineDocPoint = e->point;
KisConfig cfg;
- if(cfg.cursorStyle() == CURSOR_STYLE_OUTLINE) {
+ if(cfg.cursorStyle() == CURSOR_STYLE_OUTLINE || cfg.cursorStyle() == \
CURSOR_STYLE_CROSS_OUTLINE) { updateOutlineRect();
}
@@ -571,7 +571,7 @@ void KisToolFreehand::paint(QPainter& gc, const KoViewConverter \
&converter)
if(m_explicitShowOutline ||
mode() == KisTool::GESTURE_MODE ||
- (cfg.cursorStyle() == CURSOR_STYLE_OUTLINE &&
+ ((cfg.cursorStyle() == CURSOR_STYLE_OUTLINE || cfg.cursorStyle() == \
CURSOR_STYLE_CROSS_OUTLINE) && (mode() == HOVER_MODE ||
(mode() == PAINT_MODE && cfg.showOutlineWhilePainting())))) {
diff --git a/krita/ui/tool/kis_tool_paint.cc b/krita/ui/tool/kis_tool_paint.cc
index 7e0ef4a..1121985 100644
--- a/krita/ui/tool/kis_tool_paint.cc
+++ b/krita/ui/tool/kis_tool_paint.cc
@@ -353,10 +353,44 @@ void KisToolPaint::resetCursorStyle()
{
KisTool::resetCursorStyle();
KisConfig cfg;
- if (cfg.cursorStyle() == CURSOR_STYLE_OUTLINE) {
+
+ switch(cfg.cursorStyle())
+ {
+ case CURSOR_STYLE_OUTLINE:
+ if (m_supportOutline) {
+ useCursor(KisCursor::blankCursor());
+ break;
+ }
+
+ case CURSOR_STYLE_CROSS_OUTLINE:
+ if (m_supportOutline) {
+ useCursor(KisCursor::crossCursor());
+ break;
+ }
+
+#if defined(HAVE_OPENGL)
+ case CURSOR_STYLE_3D_MODEL:
+ if(isCanvasOpenGL()) {
+ if (m_supportOutline) {
+ useCursor(KisCursor::blankCursor());
+ break;
+ }
+ } else {
+ useCursor(KisCursor::arrowCursor());
+ break;
+ }
+#endif
+
+ default:
+ useCursor(cursor());
+ break;
+ }
+/*
+ if (cfg.cursorStyle() == CURSOR_STYLE_OUTLINE || cfg.cursorStyle() == \
CURSOR_STYLE_CROSS_OUTLINE) { if (m_supportOutline) {
// do not show cursor, tool will paint outline
useCursor(KisCursor::blankCursor());
+ useCursor(KisCursor::crossCursor());
} else {
// if the tool does not support outline, use tool icon cursor
useCursor(cursor());
@@ -377,7 +411,7 @@ void KisToolPaint::resetCursorStyle()
}
}
#endif
-
+//*/
}
--
1.7.1
From 89e165d60cf3ab9b9ea0b431517c7923bde8389c Mon Sep 17 00:00:00 2001
From: Silvio Heinrich <plassy@web.de>
Date: Mon, 3 Jan 2011 23:32:33 +0100
Subject: [PATCH 2/2] In "Brush Outline and Crosshair" mode Paint the crosshair \
instead of using the crosshair cursor
---
krita/image/kis_global.h | 1 +
krita/ui/tool/kis_tool_freehand.cc | 29 +++++++++++++++++++++--
krita/ui/tool/kis_tool_freehand.h | 4 ++-
krita/ui/tool/kis_tool_paint.cc | 43 +++--------------------------------
4 files changed, 34 insertions(+), 43 deletions(-)
diff --git a/krita/image/kis_global.h b/krita/image/kis_global.h
index beb8717..e74d7ef 100644
--- a/krita/image/kis_global.h
+++ b/krita/image/kis_global.h
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2000 Matthias Elter <elter@kde.org>
* Copyright (c) 2002 Patrick Julien <freak@codepimps.org>
+ * Copyright (c) 2011 Silvio Heinrich <plassy@web.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/krita/ui/tool/kis_tool_freehand.cc b/krita/ui/tool/kis_tool_freehand.cc
index 7077bca..7079fab 100644
--- a/krita/ui/tool/kis_tool_freehand.cc
+++ b/krita/ui/tool/kis_tool_freehand.cc
@@ -5,6 +5,7 @@
* Copyright (c) 2004 Bart Coppens <kde@bartcoppens.be>
* Copyright (c) 2007,2008,2010 Cyrille Berger <cberger@cberger.net>
* Copyright (c) 2009 Lukáš Tvrdý <lukast.dev@gmail.com>
+ * Copyright (c) 2011 Silvio Heinrich <plassy@web.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -578,7 +579,8 @@ void KisToolFreehand::paint(QPainter& gc, const KoViewConverter \
&converter) outlineMode = KisPaintOpSettings::CursorIsOutline;
}
- QPainterPath path = getOutlinePath(m_outlineDocPoint, outlineMode);
+ bool withCrossHair = (cfg.cursorStyle() == \
CURSOR_STYLE_CROSS_OUTLINE); + QPainterPath path = \
getOutlinePath(m_outlineDocPoint, outlineMode, withCrossHair); \
paintToolOutline(&gc,pixelToView(path)); }
}
@@ -593,8 +595,20 @@ QPointF KisToolFreehand::adjustPosition(const QPointF& point, \
const QPointF& str }
QPainterPath KisToolFreehand::getOutlinePath(const QPointF &documentPos,
- KisPaintOpSettings::OutlineMode \
outlineMode) + \
KisPaintOpSettings::OutlineMode outlineMode, + \
bool withCrossHair) {
+ static const int off = 1;
+ static const int len = 5;
+ static const int spc = 3;
+
+ static const QPointF crossHairPts[8] = {
+ QPointF(-off,0), QPointF(-len,0),
+ QPointF(+off,0), QPointF(+len,0),
+ QPointF(0,-off), QPointF(0,-len),
+ QPointF(0,+off), QPointF(0,+len)
+ };
+
qreal scale = 1.0;
qreal rotation = 0;
if (m_painter && m_painter->paintOp()){
@@ -605,6 +619,15 @@ QPainterPath KisToolFreehand::getOutlinePath(const QPointF \
&documentPos, QPointF imagePos = currentImage()->documentToPixel(documentPos);
QPainterPath path = currentPaintOpPreset()->settings()->
brushOutline(imagePos, outlineMode, scale, rotation);
+
+ qreal brushExtend = qMax(path.boundingRect().width(), \
path.boundingRect().height()); +
+ if(brushExtend >= (len+spc)*2 && withCrossHair) {
+ for(int i=0; i<8; i+=2) {
+ path.moveTo(imagePos + crossHairPts[i+0]);
+ path.lineTo(imagePos + crossHairPts[i+1]);
+ }
+ }
return path;
}
@@ -623,7 +646,7 @@ void KisToolFreehand::decreaseBrushSize()
void KisToolFreehand::updateOutlineRect()
{
- QRectF outlinePixelRect = getOutlinePath(m_outlineDocPoint, \
KisPaintOpSettings::CursorIsOutline).boundingRect(); + QRectF outlinePixelRect = \
getOutlinePath(m_outlineDocPoint, KisPaintOpSettings::CursorIsOutline, \
false).boundingRect();
QRectF outlineDocRect = currentImage()->pixelToDocument(outlinePixelRect);
if(!m_oldOutlineRect.isEmpty()) {
diff --git a/krita/ui/tool/kis_tool_freehand.h b/krita/ui/tool/kis_tool_freehand.h
index f03c577..0d820fc 100644
--- a/krita/ui/tool/kis_tool_freehand.h
+++ b/krita/ui/tool/kis_tool_freehand.h
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2003-2008 Boudewijn Rempt <boud@valdyas.org>
+ * Copyright (c) 2011 Silvio Heinrich <plassy@web.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -107,7 +108,8 @@ private:
void updateOutlineRect();
QPainterPath getOutlinePath(const QPointF &documentPos,
- KisPaintOpSettings::OutlineMode outlineMode);
+ KisPaintOpSettings::OutlineMode outlineMode,
+ bool withCrossHair);
private slots:
void increaseBrushSize();
diff --git a/krita/ui/tool/kis_tool_paint.cc b/krita/ui/tool/kis_tool_paint.cc
index 1121985..0d36d25 100644
--- a/krita/ui/tool/kis_tool_paint.cc
+++ b/krita/ui/tool/kis_tool_paint.cc
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2003-2009 Boudewijn Rempt <boud@valdyas.org>
+ * Copyright (c) 2011 Silvio Heinrich <plassy@web.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -353,51 +354,17 @@ void KisToolPaint::resetCursorStyle()
{
KisTool::resetCursorStyle();
KisConfig cfg;
-
- switch(cfg.cursorStyle())
- {
- case CURSOR_STYLE_OUTLINE:
- if (m_supportOutline) {
- useCursor(KisCursor::blankCursor());
- break;
- }
-
- case CURSOR_STYLE_CROSS_OUTLINE:
- if (m_supportOutline) {
- useCursor(KisCursor::crossCursor());
- break;
- }
-
-#if defined(HAVE_OPENGL)
- case CURSOR_STYLE_3D_MODEL:
- if(isCanvasOpenGL()) {
- if (m_supportOutline) {
- useCursor(KisCursor::blankCursor());
- break;
- }
- } else {
- useCursor(KisCursor::arrowCursor());
- break;
- }
-#endif
-
- default:
- useCursor(cursor());
- break;
- }
-/*
if (cfg.cursorStyle() == CURSOR_STYLE_OUTLINE || cfg.cursorStyle() == \
CURSOR_STYLE_CROSS_OUTLINE) { if (m_supportOutline) {
// do not show cursor, tool will paint outline
useCursor(KisCursor::blankCursor());
- useCursor(KisCursor::crossCursor());
} else {
// if the tool does not support outline, use tool icon cursor
useCursor(cursor());
}
}
-
-#if defined(HAVE_OPENGL)
+
+ #if defined(HAVE_OPENGL)
// TODO: maybe m_support 3D outline would be cooler. So far just freehand tool \
support 3D_MODEL cursor style if (cfg.cursorStyle() == CURSOR_STYLE_3D_MODEL) {
if(isCanvasOpenGL()) {
@@ -410,9 +377,7 @@ void KisToolPaint::resetCursorStyle()
useCursor(KisCursor::arrowCursor());
}
}
-#endif
-//*/
-
+ #endif
}
void KisToolPaint::updateTabletPressureSamples()
--
1.7.1
_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic