Commit dc81e79e authored by Gustavo Carneiro's avatar Gustavo Carneiro

Move ColorSchemeWallpaper class to a new file.

parent 048f6868
......@@ -55,6 +55,7 @@ set(konsoleprivate_SRCS ${sessionadaptors_SRCS}
BookmarkHandler.cpp
BookmarkMenu.cpp
ColorScheme.cpp
ColorSchemeWallpaper.cpp
ColorSchemeManager.cpp
ColorSchemeEditor.cpp
CopyInputDialog.cpp
......
......@@ -34,7 +34,9 @@
// STL
#include <random>
// Konsole
#include "konsoledebug.h"
#include "ColorSchemeWallpaper.h"
namespace {
const int FGCOLOR_INDEX = 0;
......@@ -549,65 +551,3 @@ void ColorScheme::setWallpaper(const QString &path)
{
_wallpaper = new ColorSchemeWallpaper(path);
}
ColorSchemeWallpaper::Ptr ColorScheme::wallpaper() const
{
return _wallpaper;
}
ColorSchemeWallpaper::ColorSchemeWallpaper(const QString &path) :
_path(path),
_picture(nullptr)
{
}
ColorSchemeWallpaper::~ColorSchemeWallpaper()
{
delete _picture;
}
void ColorSchemeWallpaper::load()
{
if (_path.isEmpty()) {
return;
}
// Create and load original pixmap
if (_picture == nullptr) {
_picture = new QPixmap();
}
if (_picture->isNull()) {
_picture->load(_path);
}
}
bool ColorSchemeWallpaper::isNull() const
{
return _path.isEmpty();
}
bool ColorSchemeWallpaper::draw(QPainter &painter, const QRect rect, qreal opacity)
{
if ((_picture == nullptr) || _picture->isNull()) {
return false;
}
if (qFuzzyCompare(qreal(1.0), opacity)) {
painter.drawTiledPixmap(rect, *_picture, rect.topLeft());
return true;
}
painter.save();
painter.setCompositionMode(QPainter::CompositionMode_Source);
painter.fillRect(rect, QColor(0, 0, 0, 0));
painter.setOpacity(opacity);
painter.drawTiledPixmap(rect, *_picture, rect.topLeft());
painter.restore();
return true;
}
QString ColorSchemeWallpaper::path() const
{
return _path;
}
......@@ -28,39 +28,13 @@
// Konsole
#include "CharacterColor.h"
#include "ColorSchemeWallpaper.h"
class KConfig;
class QPixmap;
class QPainter;
namespace Konsole {
/**
* This class holds the wallpaper pixmap associated with a color scheme.
* The wallpaper object is shared between multiple TerminalDisplay.
*/
class ColorSchemeWallpaper : public QSharedData
{
public:
typedef QExplicitlySharedDataPointer<ColorSchemeWallpaper> Ptr;
explicit ColorSchemeWallpaper(const QString &path);
~ColorSchemeWallpaper();
void load();
/** Returns true if wallpaper available and drawn */
bool draw(QPainter &painter, const QRect rect, qreal opacity = 1.0);
bool isNull() const;
QString path() const;
private:
Q_DISABLE_COPY(ColorSchemeWallpaper)
QString _path;
QPixmap *_picture;
};
/**
* Represents a color scheme for a terminal display.
......
/*
This source file is part of Konsole, a terminal emulator.
Copyright 2007-2008 by Robert Knight <robertknight@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
*/
// Own
#include "ColorSchemeWallpaper.h"
// Konsole
#include "ColorScheme.h"
// Qt
#include <QPainter>
using namespace Konsole;
ColorSchemeWallpaper::Ptr ColorScheme::wallpaper() const
{
return _wallpaper;
}
ColorSchemeWallpaper::ColorSchemeWallpaper(const QString &path) :
_path(path),
_picture(nullptr)
{
}
ColorSchemeWallpaper::~ColorSchemeWallpaper()
{
delete _picture;
}
void ColorSchemeWallpaper::load()
{
if (_path.isEmpty()) {
return;
}
// Create and load original pixmap
if (_picture == nullptr) {
_picture = new QPixmap();
}
if (_picture->isNull()) {
_picture->load(_path);
}
}
bool ColorSchemeWallpaper::isNull() const
{
return _path.isEmpty();
}
bool ColorSchemeWallpaper::draw(QPainter &painter, const QRect rect, qreal opacity)
{
if ((_picture == nullptr) || _picture->isNull()) {
return false;
}
if (qFuzzyCompare(qreal(1.0), opacity)) {
painter.drawTiledPixmap(rect, *_picture, rect.topLeft());
return true;
}
painter.save();
painter.setCompositionMode(QPainter::CompositionMode_Source);
painter.fillRect(rect, QColor(0, 0, 0, 0));
painter.setOpacity(opacity);
painter.drawTiledPixmap(rect, *_picture, rect.topLeft());
painter.restore();
return true;
}
QString ColorSchemeWallpaper::path() const
{
return _path;
}
/*
This source file is part of Konsole, a terminal emulator.
Copyright 2007-2008 by Robert Knight <robertknight@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
*/
#ifndef COLORSCHEMEWALLPAPER_H
#define COLORSCHEMEWALLPAPER_H
// Qt
#include <QMetaType>
#include <QSharedData>
// Konsole
#include "CharacterColor.h"
class QPixmap;
class QPainter;
namespace Konsole
{
/**
* This class holds the wallpaper pixmap associated with a color scheme.
* The wallpaper object is shared between multiple TerminalDisplay.
*/
class ColorSchemeWallpaper : public QSharedData
{
public:
typedef QExplicitlySharedDataPointer<ColorSchemeWallpaper> Ptr;
explicit ColorSchemeWallpaper(const QString &path);
~ColorSchemeWallpaper();
void load();
/** Returns true if wallpaper available and drawn */
bool draw(QPainter &painter, const QRect rect, qreal opacity = 1.0);
bool isNull() const;
QString path() const;
private:
Q_DISABLE_COPY(ColorSchemeWallpaper)
QString _path;
QPixmap *_picture;
};
}
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment