From bff9b39a712f7c67689a1ac94274ce415db4eea2 Mon Sep 17 00:00:00 2001 From: Craig Watson Date: Wed, 9 Mar 2016 12:30:50 +0100 Subject: [PATCH] Improvements to display of eraser and highlighter preview circles - Defined constants in UBSettings for highlighter preview circle colors - Switch between light and dark colors when changing backgrounds - For eraser: use color settings that were defined in UBSettings (they were ignored since the preview circle was added) --- src/core/UBSettings.cpp | 6 +++ src/core/UBSettings.h | 6 +++ src/domain/UBGraphicsScene.cpp | 76 ++++++++++++++++++++++++---------- src/domain/UBGraphicsScene.h | 2 + 4 files changed, 68 insertions(+), 22 deletions(-) diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index b22f93c7..00c1e589 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -78,6 +78,12 @@ QBrush UBSettings::eraserBrushDarkBackground = QBrush(QColor(127, 127, 127, 30)) QPen UBSettings::eraserPenDarkBackground = QPen(QColor(255, 255, 255, 63)); QPen UBSettings::eraserPenLightBackground = QPen(QColor(0, 0, 0, 63)); +QColor UBSettings::markerCircleBrushColorDarkBackground = QColor(127, 127, 127, 30); +QColor UBSettings::markerCircleBrushColorLightBackground = QColor(255, 255, 255, 30); + +QColor UBSettings::markerCirclePenColorDarkBackground = QColor(255, 255, 255, 63); +QColor UBSettings::markerCirclePenColorLightBackground = QColor(0, 0, 0, 63); + QColor UBSettings::documentSizeMarkColorDarkBackground = QColor(44, 44, 44, 200); QColor UBSettings::documentSizeMarkColorLightBackground = QColor(241, 241, 241); diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index ab28fcd2..f395a70f 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -172,6 +172,12 @@ class UBSettings : public QObject static QPen eraserPenDarkBackground; static QPen eraserPenLightBackground; + static QColor markerCircleBrushColorDarkBackground; + static QColor markerCircleBrushColorLightBackground; + + static QColor markerCirclePenColorDarkBackground; + static QColor markerCirclePenColorLightBackground; + static QColor documentSizeMarkColorDarkBackground; static QColor documentSizeMarkColorLightBackground; diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index f230c754..e93b6bdc 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -660,14 +660,14 @@ bool UBGraphicsScene::inputDeviceRelease() void UBGraphicsScene::drawEraser(const QPointF &pPoint, bool pressed) { - qreal eraserWidth = UBSettings::settings()->currentEraserWidth(); - eraserWidth /= UBApplication::boardController->systemScaleFactor(); - eraserWidth /= UBApplication::boardController->currentZoom(); + if (mEraser) { + qreal eraserWidth = UBSettings::settings()->currentEraserWidth(); + eraserWidth /= UBApplication::boardController->systemScaleFactor(); + eraserWidth /= UBApplication::boardController->currentZoom(); - qreal eraserRadius = eraserWidth / 2; + qreal eraserRadius = eraserWidth / 2; // TODO UB 4.x optimize - no need to do that every time we move it - if (mEraser) { mEraser->setRect(QRectF(pPoint.x() - eraserRadius, pPoint.y() - eraserRadius, eraserWidth, eraserWidth)); redrawEraser(pressed); } @@ -676,11 +676,14 @@ void UBGraphicsScene::drawEraser(const QPointF &pPoint, bool pressed) void UBGraphicsScene::redrawEraser(bool pressed) { if (mEraser) { + QPen pen = mEraser->pen(); + if(pressed) - mEraser->setPen(QPen(Qt::SolidLine)); + pen.setStyle(Qt::SolidLine); else - mEraser->setPen(QPen(Qt::DotLine)); + pen.setStyle(Qt::DotLine); + mEraser->setPen(pen); mEraser->show(); } } @@ -947,20 +950,8 @@ void UBGraphicsScene::setBackground(bool pIsDark, bool pIsCrossed) { mDarkBackground = pIsDark; - if (mEraser) - { - if (mDarkBackground) - { - mEraser->setBrush(UBSettings::eraserBrushDarkBackground); - mEraser->setPen(UBSettings::eraserPenDarkBackground); - } - else - { - mEraser->setBrush(UBSettings::eraserBrushLightBackground); - mEraser->setPen(UBSettings::eraserPenLightBackground); - } - } - + updateEraserColor(mDarkBackground); + updateMarkerCircleColor(mDarkBackground); recolorAllItems(); needRepaint = true; @@ -2534,6 +2525,8 @@ void UBGraphicsScene::createEraiser() mEraser->setRect(QRect(0, 0, 0, 0)); mEraser->setVisible(false); + updateEraserColor(mDarkBackground); + mEraser->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control)); mEraser->setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Eraiser)); //Necessary to set if we want z value to be assigned correctly @@ -2566,7 +2559,8 @@ void UBGraphicsScene::createMarkerCircle() mMarkerCircle->setRect(QRect(0, 0, 0, 0)); mMarkerCircle->setVisible(false); - mMarkerCircle->setPen(Qt::DotLine); // TODO: set line color to black on white, or white on black + mMarkerCircle->setPen(Qt::DotLine); + updateMarkerCircleColor(mDarkBackground); mMarkerCircle->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control)); mMarkerCircle->setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Eraiser)); @@ -2576,6 +2570,44 @@ void UBGraphicsScene::createMarkerCircle() } } +void UBGraphicsScene::updateEraserColor(bool darkBackground) +{ + if (!mEraser) + return; + + if (darkBackground) { + mEraser->setBrush(UBSettings::eraserBrushDarkBackground); + mEraser->setPen(UBSettings::eraserPenDarkBackground); + } + + else { + mEraser->setBrush(UBSettings::eraserBrushLightBackground); + mEraser->setPen(UBSettings::eraserPenLightBackground); + } +} + +void UBGraphicsScene::updateMarkerCircleColor(bool darkBackground) +{ + if (!mMarkerCircle) + return; + + QBrush mcBrush = mMarkerCircle->brush(); + QPen mcPen = mMarkerCircle->pen(); + + if (darkBackground) { + mcBrush.setColor(UBSettings::markerCircleBrushColorDarkBackground); + mcPen.setColor(UBSettings::markerCirclePenColorDarkBackground); + } + + else { + mcBrush.setColor(UBSettings::markerCircleBrushColorLightBackground); + mcPen.setColor(UBSettings::markerCirclePenColorLightBackground); + } + + mMarkerCircle->setBrush(mcBrush); + mMarkerCircle->setPen(mcPen); +} + void UBGraphicsScene::setToolCursor(int tool) { if (tool == (int)UBStylusTool::Selector || diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index 6551a181..cc331569 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -385,6 +385,8 @@ public slots: void createEraiser(); void createPointer(); void createMarkerCircle(); + void updateEraserColor(bool darkBackground); + void updateMarkerCircleColor(bool darkBackground); bool hasTextItemWithFocus(UBGraphicsGroupContainerItem* item); QGraphicsEllipseItem* mEraser;