diff options
Diffstat (limited to 'drivers/gdisp/QImage/gdisp_lld_qimage.cpp')
-rw-r--r-- | drivers/gdisp/QImage/gdisp_lld_qimage.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/gdisp/QImage/gdisp_lld_qimage.cpp b/drivers/gdisp/QImage/gdisp_lld_qimage.cpp new file mode 100644 index 00000000..a133dfb4 --- /dev/null +++ b/drivers/gdisp/QImage/gdisp_lld_qimage.cpp @@ -0,0 +1,38 @@ +#include <QImage> +#include "../../../gfx.h" +#include "../../../src/gdisp/gdisp_driver.h" +#include "gdisp_lld_qimage.h" + +bool_t qimage_init(GDisplay* g, coord_t width, coord_t height) +{ + QImage* qimage = new QImage(width, height, QImage::Format_RGB888); + if (!qimage) { + return FALSE; + } + qimage->fill(Qt::gray); + + g->priv = qimage; + + return TRUE; +} + +void qimage_setPixel(GDisplay* g) +{ + QImage* qimage = static_cast<QImage*>(g->priv); + if (!qimage) { + return; + } + + QRgb rgbVal = qRgb(RED_OF(g->p.color), GREEN_OF(g->p.color), BLUE_OF(g->p.color)); + qimage->setPixel(g->p.x, g->p.y, rgbVal); +} + +color_t qimage_getPixel(GDisplay* g) +{ + const QImage* qimage = static_cast<const QImage*>(g->priv); + if (!qimage) { + return 0; + } + + return static_cast<color_t>(qimage->pixel(g->p.x, g->p.y)); +} |