-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathimageLoad.cpp
More file actions
67 lines (56 loc) · 2.04 KB
/
imageLoad.cpp
File metadata and controls
67 lines (56 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "die-tk.h"
#include "die-tk-image/convert.h"
#include <iostream>
#include <string>
using namespace std::literals::string_literals;
namespace {
#ifdef BAZEL_FOR_WINDOWS
std::string baseDir = "../../../../../../"s;
#else
std::string baseDir = "";
#endif
std::string imageDir = baseDir + "examples/ImageLoad/";
}
using namespace tk;
int main() {
Application app;
Window window(WindowParams("test image load and transparency!").dims({700,400}));
auto boss = convertImage(img::Image(imageDir + "boss.png"));
auto diego = convertImage(img::Image(imageDir + "DIEGO1.jpg"));
auto explosion = convertImage(img::Image(imageDir + "explosion0.png"));
auto explosion3 = convertImage(img::Image(imageDir + "explosion3.png"));
auto bugLeft = convertImage(img::Image(imageDir + "bugLeft.png"));
auto gameTitle = convertImage(img::Image(imageDir + "gameTitle.png"));
window.onPaint([&](Canvas & canvas, Rect) {
canvas.drawImage(diego,Point(0,0));
canvas.drawImage(explosion,Point(5,5));
canvas.drawImage(explosion3,Point(80,5));
canvas.drawImage(boss,Point(20,100));
canvas.drawImage(bugLeft,Point(300,15));
canvas.drawImage(gameTitle,Point(300,40));
});
PaintBox p(window, ControlParams().start({5,40}).dims({40,40}));
p.onPaint([&](Canvas & canvas, Rect rect) {
std::cout << rect << std::endl;
canvas.fillRect(Rect::open(Point(2,2),WDims(6,6)),RGBColor(100,0,0));
canvas.drawImage(explosion,Point(0,0));
// TODO X11 copy rect into fails with smaller rectangles
// TODO X11 PaintBox transparency fails
//explosion->copyRectInto(canvas,rect,rect.topLeft());
});
std::cout << p.rect() << std::endl;
// TODO remove this ifdef after implementing image in X11
#ifdef WIN32
// TODO make Image support transparent images - it is cloneBitmap()'s fault
Image i(window, ControlParams().start(p.pos().addY(32)).autosize());
i.setImage(explosion);
Image j = i.clone();
j.setBackground(RGBColor(120,0,0));
j.setPos(i.pos().addX(32));
j.setDims(WDims(40,40));
#endif
do {
app.waitForMessages();
app.processMessages();
} while( window.visible() );
}