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

#include <KisMemoryReportButton.h>

+ Inheritance diagram for KisMemoryReportButton:

Public Member Functions

 KisMemoryReportButton (QWidget *parent=0)
 
void paintEvent (QPaintEvent *e) override
 
void setCurrentMemory (qint64 memory)
 
void setImageWeight (qint64 memory)
 
void setMaximumMemory (qint64 max)
 

Private Attributes

qint64 m_curbytes
 
qint64 m_imgbytes
 
qint64 m_maxbytes
 

Detailed Description

Definition at line 13 of file KisMemoryReportButton.h.

Constructor & Destructor Documentation

◆ KisMemoryReportButton()

KisMemoryReportButton::KisMemoryReportButton ( QWidget * parent = 0)
explicit

Definition at line 13 of file KisMemoryReportButton.cpp.

13 :
14 QPushButton(parent)
15 , m_maxbytes(0)
16 , m_curbytes(0)
17 , m_imgbytes(0)
18{
19
20}

Member Function Documentation

◆ paintEvent()

void KisMemoryReportButton::paintEvent ( QPaintEvent * e)
override

Definition at line 37 of file KisMemoryReportButton.cpp.

38{
39 qreal ratioCur = qreal(m_curbytes)/qreal(m_maxbytes);
40 QStyleOptionButton buttonStyle;
41 buttonStyle.initFrom(this);
42 QRect area = this->style()->subElementRect(QStyle::SE_PushButtonFocusRect, &buttonStyle);
43
44 int totalWidth = area.width();
45
46 QStylePainter painter(this);
47
48 painter.setPen(Qt::transparent);
49 if (style()->objectName() == "breeze") {
50 painter.drawPrimitive(QStyle::PE_PanelButtonCommand, buttonStyle);
51 } else {
52 painter.drawPrimitive(QStyle::PE_Frame, buttonStyle);
53 }
54
55 QColor HL = this->palette().highlight().color();
56 QColor mid = QColor(220, 220, 0);
57 QColor warn = QColor(220, 0, 0);
58 if (ratioCur>=0.2 && ratioCur<0.4) {
59 qreal newRatio = (ratioCur-0.2)/0.2;
60 qreal negRatio = 1-newRatio;
61 HL.setRed( qMax(0, qMin(int(HL.red()*negRatio) + int(mid.red()*newRatio), 255)));
62 HL.setGreen( qMax(0, qMin(int(HL.green()*negRatio) + int(mid.green()*newRatio), 255)));
63 HL.setBlue( qMax(0, qMin(int(HL.blue()*negRatio) + int(mid.blue()*newRatio), 255)));
64 }
65 else if (ratioCur>=0.4 && ratioCur<0.8) {
66 qreal newRatio = (ratioCur-0.4)/0.4;
67 qreal negRatio = 1-newRatio;
68 HL.setRed( qMax(0, qMin(int(mid.red()*negRatio) + int(warn.red()*newRatio), 255)));
69 HL.setGreen( qMax(0, qMin(int(mid.green()*negRatio) + int(warn.green()*newRatio), 255)));
70 HL.setBlue( qMax(0, qMin(int(mid.blue()*negRatio) + int(warn.blue()*newRatio), 255)));
71 }
72 else if (ratioCur>0.8) {
73 HL = warn;
74 }
75
76 painter.setBrush(HL);
77 QRect currentBytes = area;
78 currentBytes.setWidth(int(ratioCur*totalWidth));
79 painter.setOpacity(0.5);
80
81 painter.drawRoundedRect(currentBytes, 2, 2);
82
84 QRect imageSize = area;
85 imageSize.setWidth(int((qreal(m_imgbytes)/qreal(m_maxbytes))*totalWidth));
86
87 painter.setOpacity(1.0);
88 painter.drawRoundedRect(imageSize, 2, 2);
89 }
90
91 QPushButton::paintEvent(e);
92
93}
rgba palette[MAX_PALETTE]
Definition palette.c:35

References m_curbytes, m_imgbytes, m_maxbytes, and palette.

◆ setCurrentMemory()

void KisMemoryReportButton::setCurrentMemory ( qint64 memory)

Definition at line 27 of file KisMemoryReportButton.cpp.

28{
29 m_curbytes = memory;
30}

References m_curbytes.

◆ setImageWeight()

void KisMemoryReportButton::setImageWeight ( qint64 memory)

Definition at line 32 of file KisMemoryReportButton.cpp.

33{
34 m_imgbytes = memory;
35}

References m_imgbytes.

◆ setMaximumMemory()

void KisMemoryReportButton::setMaximumMemory ( qint64 max)

Definition at line 22 of file KisMemoryReportButton.cpp.

23{
25}
constexpr std::enable_if< sizeof...(values)==0, size_t >::type max()

References m_maxbytes.

Member Data Documentation

◆ m_curbytes

qint64 KisMemoryReportButton::m_curbytes
private

Definition at line 30 of file KisMemoryReportButton.h.

◆ m_imgbytes

qint64 KisMemoryReportButton::m_imgbytes
private

Definition at line 31 of file KisMemoryReportButton.h.

◆ m_maxbytes

qint64 KisMemoryReportButton::m_maxbytes
private

Definition at line 29 of file KisMemoryReportButton.h.


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