Refactoring
This commit is contained in:
parent
3e223f0e4b
commit
c9bc8aa8c1
23 changed files with 117 additions and 2280 deletions
|
|
@ -1,76 +0,0 @@
|
|||
#include "customshadoweffect.h"
|
||||
#include <QPainter>
|
||||
|
||||
CustomShadowEffect::CustomShadowEffect(QObject *parent) :
|
||||
QGraphicsEffect(parent),
|
||||
_distance(4.0f),
|
||||
_blurRadius(10.0f),
|
||||
_color(0, 0, 0, 80)
|
||||
{
|
||||
}
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
extern Q_WIDGETS_EXPORT void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0 );
|
||||
QT_END_NAMESPACE
|
||||
|
||||
void CustomShadowEffect::draw(QPainter* painter)
|
||||
{
|
||||
// if nothing to show outside the item, just draw source
|
||||
if ((blurRadius() + distance()) <= 0) {
|
||||
drawSource(painter);
|
||||
return;
|
||||
}
|
||||
|
||||
PixmapPadMode mode = QGraphicsEffect::PadToEffectiveBoundingRect;
|
||||
QPoint offset;
|
||||
const QPixmap px = sourcePixmap(Qt::DeviceCoordinates, &offset, mode);
|
||||
|
||||
// return if no source
|
||||
if (px.isNull())
|
||||
return;
|
||||
|
||||
// save world transform
|
||||
QTransform restoreTransform = painter->worldTransform();
|
||||
painter->setWorldTransform(QTransform());
|
||||
|
||||
// Calculate size for the background image
|
||||
QSize szi(px.size().width() + 2 * distance(), px.size().height() + 2 * distance());
|
||||
|
||||
QImage tmp(szi, QImage::Format_ARGB32_Premultiplied);
|
||||
QPixmap scaled = px.scaled(szi);
|
||||
tmp.fill(0);
|
||||
QPainter tmpPainter(&tmp);
|
||||
tmpPainter.setCompositionMode(QPainter::CompositionMode_Source);
|
||||
tmpPainter.drawPixmap(QPointF(-distance(), -distance()), scaled);
|
||||
tmpPainter.end();
|
||||
|
||||
// blur the alpha channel
|
||||
QImage blurred(tmp.size(), QImage::Format_ARGB32_Premultiplied);
|
||||
blurred.fill(0);
|
||||
QPainter blurPainter(&blurred);
|
||||
qt_blurImage(&blurPainter, tmp, blurRadius(), false, true);
|
||||
blurPainter.end();
|
||||
|
||||
tmp = blurred;
|
||||
|
||||
// blacken the image...
|
||||
tmpPainter.begin(&tmp);
|
||||
tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);
|
||||
tmpPainter.fillRect(tmp.rect(), color());
|
||||
tmpPainter.end();
|
||||
|
||||
// draw the blurred shadow...
|
||||
painter->drawImage(offset, tmp);
|
||||
|
||||
// draw the actual pixmap...
|
||||
painter->drawPixmap(offset, px, QRectF());
|
||||
|
||||
// restore world transform
|
||||
painter->setWorldTransform(restoreTransform);
|
||||
}
|
||||
|
||||
QRectF CustomShadowEffect::boundingRectFor(const QRectF& rect) const
|
||||
{
|
||||
qreal delta = blurRadius() + distance();
|
||||
return rect.united(rect.adjusted(-delta, -delta, delta, delta));
|
||||
}
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
#ifndef CUSTOMSHADOWEFFECT_H
|
||||
#define CUSTOMSHADOWEFFECT_H
|
||||
|
||||
#include <QGraphicsDropShadowEffect>
|
||||
#include <QGraphicsEffect>
|
||||
|
||||
class CustomShadowEffect : public QGraphicsEffect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CustomShadowEffect(QObject *parent = 0);
|
||||
|
||||
void draw(QPainter* painter);
|
||||
QRectF boundingRectFor(const QRectF& rect) const;
|
||||
|
||||
inline void setDistance(qreal distance) { _distance = distance; updateBoundingRect(); }
|
||||
inline qreal distance() const { return _distance; }
|
||||
|
||||
inline void setBlurRadius(qreal blurRadius) { _blurRadius = blurRadius; updateBoundingRect(); }
|
||||
inline qreal blurRadius() const { return _blurRadius; }
|
||||
|
||||
inline void setColor(const QColor& color) { _color = color; }
|
||||
inline QColor color() const { return _color; }
|
||||
|
||||
private:
|
||||
qreal _distance;
|
||||
qreal _blurRadius;
|
||||
QColor _color;
|
||||
};
|
||||
|
||||
#endif // CUSTOMSHADOWEFFECT_H
|
||||
|
|
@ -1,32 +1,13 @@
|
|||
#include <QMetaEnum>
|
||||
#include <QMovie>
|
||||
#include <QMessageBox>
|
||||
#include <QMouseEvent>
|
||||
#include <QScroller>
|
||||
#include <QScrollBar>
|
||||
#include <QDesktopWidget>
|
||||
#include <QDesktopServices>
|
||||
#include <QGridLayout>
|
||||
#include <QTime>
|
||||
|
||||
#include "mainwindow.h"
|
||||
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include "ui_mainwindow.h"
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#include "ui_mainwindow_mac.h"
|
||||
#include "publib/macos_functions.h"
|
||||
#endif
|
||||
|
||||
|
||||
MainWindow::MainWindow(bool useForceUseBrightIcons, QWidget *parent) : QMainWindow(parent),
|
||||
ui(new Ui::MainWindow),
|
||||
forceUseBrightIcons(useForceUseBrightIcons)
|
||||
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
// Post initialization
|
||||
ui->widget_tittlebar->hide();
|
||||
ui->stackedWidget_main->setCurrentIndex(2);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
|
|
|
|||
|
|
@ -2,18 +2,6 @@
|
|||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QSystemTrayIcon>
|
||||
#include <QAction>
|
||||
#include <QMenu>
|
||||
#include <QJsonDocument>
|
||||
#include <QClipboard>
|
||||
#include <QStringListModel>
|
||||
#include <QDataStream>
|
||||
|
||||
#include <QGraphicsBlurEffect>
|
||||
#include "customshadoweffect.h"
|
||||
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
|
|
@ -27,7 +15,7 @@ class MainWindow : public QMainWindow
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(bool setForceUseBrightIcons = false, QWidget *parent = nullptr);
|
||||
explicit MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
|
||||
public slots:
|
||||
|
|
@ -37,7 +25,6 @@ private slots:
|
|||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
bool forceUseBrightIcons = false;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue