/******************************************************************************* ** ** Copyright (C) 2009 Pierre-Etienne Messier ** http://pemessier.hexpresso.org/ ** ** This library is free software: you can redistribute it and/or modify ** it under the terms of the GNU Lesser General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This library 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 Lesser General Public License for more details. ** ** You should have received a copy of the GNU Lesser General Public License ** along with this library. If not, see . ** *******************************************************************************/ #pragma once #ifndef QLEDMATRIX_EXPORT # ifdef BUILD_STATIC_LIBRARIES # define QLEDMATRIX_EXPORT # else # ifdef MAKE_QLEDMATRIX_LIB # define QLEDMATRIX_EXPORT Q_DECL_EXPORT # else # define QLEDMATRIX_EXPORT Q_DECL_IMPORT # endif # endif #endif #include class QLedMatrixPrivate; class QLEDMATRIX_EXPORT QLedMatrix : public QWidget { Q_OBJECT Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor) Q_PROPERTY(Qt::BGMode backgroundMode READ backgroundMode WRITE setBackgroundMode) Q_PROPERTY(QColor darkLedColor READ darkLedColor WRITE setDarkLedColor) Q_PROPERTY(int rows READ rowCount WRITE setRowCount) Q_PROPERTY(int columns READ columnCount WRITE setColumnCount) public: QLedMatrix(QWidget* parent = nullptr); virtual ~QLedMatrix(); enum LEDColor { NoColor = 0xFF222222, Red = 0xFFFF0000, Green = 0xFF00FF00, Blue = 0xFF0000FF, White = 0xFFFFFFFF, Orange = 0xFFFF8800, OrangeRed = 0xFFFF2200, Yellow = 0xFFFFFF00 }; Q_ENUM(LEDColor) void clear(); QColor backgroundColor() const; void setBackgroundColor(const QColor& color); Qt::BGMode backgroundMode() const; void setBackgroundMode(Qt::BGMode mode); QColor darkLedColor() const; void setDarkLedColor(const QColor& color); QRgb colorAt(int row, int col) const; void setColorAt(int row, int col, QRgb rgb); int rowCount() const; void setRowCount(int rows); int columnCount() const; void setColumnCount(int columns); inline void setSize(const QSize &s) { setRowCount(s.height()); setColumnCount(s.width()); } QSize sizeHint() const; protected: QLedMatrixPrivate* const d_ptr; void paintEvent(QPaintEvent*); private: Q_DISABLE_COPY(QLedMatrix) Q_DECLARE_PRIVATE(QLedMatrix) };