acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
image.h
1//
2// Created by camilo on 2024-09-27 18:10 <3ThomasBorregaardSorensen!!
3//
4#pragma once
5
6
7#include "acme/graphics/image/pixmap.h"
8
9#include <QPainter>
10
11
12class qimage_paintable_pixmap :
13 public pixmap
14{
15protected:
16
17
18 QImage * m_pqimage;
19 QImage m_qimageArgb32;
20 QImage * m_pqimageArgb32;
21
22 bool m_bConvert;
23
24
25public:
26
27 qimage_paintable_pixmap(QImage * pqimage)
28 {
29
30 m_pqimage = pqimage;
31
32 m_bConvert = pqimage->format() != QImage::Format_ARGB32_Premultiplied;
33
34 if(m_bConvert)
35 {
36
37 m_qimageArgb32 = pqimage->convertToFormat(QImage::Format_ARGB32_Premultiplied);
38
39 m_pqimageArgb32 = &m_qimageArgb32;
40
41 }
42 else
43 {
44
45 m_pqimageArgb32 = m_pqimage;
46
47 }
48
49 ::pixmap & pixmap = *this;
50
51 pixmap.m_pimage32Raw = (image32_t *) m_pqimageArgb32->bits();
52 pixmap.m_sizeRaw.cx = m_pqimageArgb32->width();
53 pixmap.m_sizeRaw.cy = m_pqimageArgb32->height();
54 pixmap.m_iScan = m_pqimageArgb32->bytesPerLine();
55
56 map({API_CHANGED_ARGUMENT, (::i32)m_pqimageArgb32->width(), (::i32)m_pqimageArgb32->height()});
57
58 }
59
60
61 ~qimage_paintable_pixmap()
62 {
63
64 if(m_bConvert)
65 {
66
67 auto qimage = m_pqimageArgb32->convertToFormat(m_pqimage->format());
68
69 QPainter painter(m_pqimage);
70
71 painter.drawImage(0, 0, qimage); // Paint at position (0, 0)
72
73 }
74
75 }
76
77
78};
79
80
Definition image32.h:30
Definition pixmap.h:25