52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
/*
|
|
* SPDX-FileCopyrightText: 2021 Arjen Hiemstra <ahiemstra@heimr.nl>
|
|
*
|
|
* SPDX-License-Identifier: LGPL-2.1-or-later
|
|
*/
|
|
|
|
#ifndef BACKGROUNDITEM_H
|
|
#define BACKGROUNDITEM_H
|
|
|
|
#include <QGraphicsItem>
|
|
|
|
#include <lib/gwenviewlib_export.h>
|
|
|
|
#include "abstractimageview.h"
|
|
|
|
namespace Gwenview
|
|
{
|
|
/**
|
|
* A QGraphicsItem subclass that draws the appropriate background for alpha images.
|
|
*/
|
|
class GWENVIEWLIB_EXPORT AlphaBackgroundItem : public QGraphicsItem
|
|
{
|
|
public:
|
|
AlphaBackgroundItem(AbstractImageView *parent);
|
|
~AlphaBackgroundItem() override;
|
|
|
|
AbstractImageView::AlphaBackgroundMode mode() const;
|
|
void setMode(AbstractImageView::AlphaBackgroundMode mode);
|
|
|
|
QColor color();
|
|
void setColor(const QColor &color);
|
|
|
|
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem * /*option*/, QWidget * /*widget*/) override;
|
|
|
|
virtual QRectF boundingRect() const override;
|
|
|
|
private:
|
|
void createCheckBoardTexture();
|
|
|
|
AbstractImageView *mParent;
|
|
AbstractImageView::AlphaBackgroundMode mMode = AbstractImageView::AlphaBackgroundCheckBoard;
|
|
QColor mColor = Qt::black;
|
|
|
|
// This pixmap will be used to fill the background when mMode is
|
|
// AlphaBackgroundCheckBoard.
|
|
std::unique_ptr<QPixmap> mCheckBoardTexture;
|
|
};
|
|
|
|
}
|
|
|
|
#endif // BACKGROUNDITEM_H
|