Krita Source Code Documentation
Loading...
Searching...
No Matches
WGColorPreviewToolTip Class Reference

#include <WGColorPreviewToolTip.h>

+ Inheritance diagram for WGColorPreviewToolTip:

Public Member Functions

void setCurrentColor (const QColor &color)
 
void setLastUsedColor (const QColor &color)
 
void setPreviousColor (const QColor &color)
 
void show (const QWidget *focus=nullptr)
 
void updatePosition (const QWidget *focus)
 
 WGColorPreviewToolTip (QWidget *parent=nullptr)
 

Static Public Member Functions

static qreal estimateBrightness (QColor col)
 

Protected Member Functions

void paintEvent (QPaintEvent *e) override
 

Private Attributes

QIcon m_brushIcon
 
QColor m_color
 
QColor m_lastUsedColor
 
QColor m_previousColor
 

Detailed Description

Definition at line 17 of file WGColorPreviewToolTip.h.

Constructor & Destructor Documentation

◆ WGColorPreviewToolTip()

WGColorPreviewToolTip::WGColorPreviewToolTip ( QWidget * parent = nullptr)
explicit

Definition at line 18 of file WGColorPreviewToolTip.cpp.

19 : QWidget(parent)
20 , m_color(0, 0, 0)
21 , m_previousColor(0, 0, 0, 0)
22 , m_lastUsedColor(0, 0, 0, 0)
23{
24 setWindowFlags(Qt::ToolTip | Qt::NoDropShadowWindowHint);
25 setAttribute(Qt::WA_TranslucentBackground);
26 resize(100, 150);
27 QString iconFile(":/dark_krita_tool_freehand.svg");
28 if (QFile(iconFile).exists()) {
29 m_brushIcon.addFile(iconFile, QSize(16, 16));
30 }
31 iconFile = ":/light_krita_tool_freehand.svg";
32 if (QFile(iconFile).exists()) {
33 m_brushIcon.addFile(iconFile, QSize(16, 16), QIcon::Normal, QIcon::On);
34 }
35}

References m_brushIcon.

Member Function Documentation

◆ estimateBrightness()

qreal WGColorPreviewToolTip::estimateBrightness ( QColor col)
static

Definition at line 59 of file WGColorPreviewToolTip.cpp.

60{
61 // a cheap approximation of luma assuming sRGB with gamma = 2.0
62 return std::sqrt(col.redF() * col.redF() * 0.21 +
63 col.greenF() * col.greenF() * 0.71 +
64 col.blueF() * col.blueF() * 0.08);
65}

◆ paintEvent()

void WGColorPreviewToolTip::paintEvent ( QPaintEvent * e)
overrideprotected

Definition at line 67 of file WGColorPreviewToolTip.cpp.

67 {
68 Q_UNUSED(e)
69 QPainter painter(this);
70 painter.fillRect(0, 0, width(), width(), m_color);
71 painter.fillRect(0, width(), width()/2, height(), m_previousColor);
72 painter.fillRect(width()/2, width(), width(), height(), m_lastUsedColor);
73
74 QPixmap icon;
75 QWindow *window = windowHandle();
76 if (window && m_lastUsedColor.alpha() > 0) {
77 QIcon::State iconState;
78 iconState = estimateBrightness(m_lastUsedColor) > 0.5 ? QIcon::Off : QIcon::On;
79#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
80 icon = m_brushIcon.pixmap(window, QSize(16, 16), QIcon::Normal, iconState);
81#else
82 icon = m_brushIcon.pixmap(QSize(16, 16), window->devicePixelRatio(), QIcon::Normal, iconState);
83#endif
84 }
85 if (!icon.isNull()) {
86 painter.drawPixmap(width() - 18, height() - 18, icon);
87 }
88}
static qreal estimateBrightness(QColor col)

References estimateBrightness(), m_brushIcon, m_color, m_lastUsedColor, and m_previousColor.

◆ setCurrentColor()

void WGColorPreviewToolTip::setCurrentColor ( const QColor & color)
inline

Definition at line 31 of file WGColorPreviewToolTip.h.

32 {
33 m_color = color;
34 update();
35 }
bool update(QSpinBox *spinBox)

References m_color.

◆ setLastUsedColor()

void WGColorPreviewToolTip::setLastUsedColor ( const QColor & color)
inline

Definition at line 43 of file WGColorPreviewToolTip.h.

44 {
45 m_lastUsedColor = color;
46 update();
47 }

References m_lastUsedColor.

◆ setPreviousColor()

void WGColorPreviewToolTip::setPreviousColor ( const QColor & color)
inline

Definition at line 37 of file WGColorPreviewToolTip.h.

38 {
39 m_previousColor = color;
40 update();
41 }

References m_previousColor.

◆ show()

void WGColorPreviewToolTip::show ( const QWidget * focus = nullptr)
inline

Definition at line 23 of file WGColorPreviewToolTip.h.

24 {
25 updatePosition(focus);
26 QWidget::show();
27 }
void updatePosition(const QWidget *focus)

References updatePosition().

◆ updatePosition()

void WGColorPreviewToolTip::updatePosition ( const QWidget * focus)

Definition at line 37 of file WGColorPreviewToolTip.cpp.

38{
39 const QWidget *parent = focus ? focus : parentWidget();
40 if (!parent) {
41 return;
42 }
43
44 QPoint parentPos = parent->mapToGlobal(QPoint(0,0));
45 const QRect availRect = this->screen()->availableGeometry();
46 QPoint targetPos;
47 if (parentPos.x() - width() > availRect.x()) {
48 targetPos = QPoint(parentPos.x() - width(), parentPos.y());
49 } else if (parentPos.x() + parent->width() + width() < availRect.right()) {
50 targetPos = parent->mapToGlobal(QPoint(parent->width(), 0));
51 } else if (parentPos.y() - height() > availRect.y()) {
52 targetPos = QPoint(parentPos.x(), parentPos.y() - height());
53 } else {
54 targetPos = QPoint(parentPos.x(), parentPos.y() + parent->height());
55 }
56 move(targetPos);
57}
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327

Member Data Documentation

◆ m_brushIcon

QIcon WGColorPreviewToolTip::m_brushIcon
private

Definition at line 57 of file WGColorPreviewToolTip.h.

◆ m_color

QColor WGColorPreviewToolTip::m_color
private

Definition at line 54 of file WGColorPreviewToolTip.h.

◆ m_lastUsedColor

QColor WGColorPreviewToolTip::m_lastUsedColor
private

Definition at line 56 of file WGColorPreviewToolTip.h.

◆ m_previousColor

QColor WGColorPreviewToolTip::m_previousColor
private

Definition at line 55 of file WGColorPreviewToolTip.h.


The documentation for this class was generated from the following files: