OSDN Git Service

first
[psychlops/cpp.git] / win32gl / test / ImageTest.cpp
1 #include <psychlops.h>
2 using namespace Psychlops;
3
4 void psychlops_main() {
5         Canvas d(Canvas::window);
6
7         Image img(100,100, Image::RGBA), ovalimg(200,200,Image::RGBA), copyimg, mtximg(100,100);
8         Image partialimg;
9         Psychlops::Rectangle rect(50,50);
10
11         Range row,col;
12         Matrix mtx_r(100,100), mtx_g(100,100), mtx_b(100,100);
13         mtx_b = 0.2;
14         mtx_g(1<=row<=50,1<=col<=50) = 0.6;
15         mtx_r(1,1) = 1.0;
16         mtximg.from(mtx_r, mtx_g, mtx_b);
17
18         ovalimg.clear(Color(0.0,0.0,0.0,0.1));
19         ovalimg.shift(150,150);
20         ovalimg.oval(rect.dup().shift(-50,-50).resize(200,200), Color(0.1,0.3,0.1,0.3));
21         ovalimg.oval(rect.shift(50,50), Color(0.5,0.2,0.8,0.5));
22         ovalimg.oval(rect.shift(50,50).resize(100,50), Color(0.5,0.2,0.8));
23         ovalimg.oval(rect.shift(50,50).resize(100,200), Color(0.8,0.2,0.1,0.4));
24
25         copyimg.from(ovalimg);
26         copyimg.shift(-100,-100).rect(rect.set(50,50).centering(copyimg), Color::red);
27         ovalimg.convert(Image::RGB);
28
29         copyimg.cache();
30         ovalimg.cache();
31
32         img.clear(Color(0.5,0.5,0.5,0.5));
33         img.rect(rect.set(50,100), Color(0.5));
34         img.line(-25, 50, 50, -25, Color::black);
35         img.line(50, -25, 125, 50, Color::black);
36         img.line(125, 50, 50, 125, Color::black);
37         img.line(50, 125, -25, 50, Color::black);
38         img.line(50, 50, -1, -1, Color::white);
39         img.line(50, 50, 0, 23, Color::red);
40         img.line(50, 50, 0, 25, Color::red);
41         img.line(50, 50, 0, 32, Color::red);
42         img.line(50, 50, 0, 50, Color::white);
43         img.line(50, 50, 0, 52, Color(1.0, 0.5, 0.0));
44         img.line(50, 50, 0, 75, Color(1.0, 0.5, 0.0));
45         img.line(50, 50, 0, 80, Color(1.0, 0.5, 0.0));
46         img.line(50, 50, 0, 100, Color::white);
47         img.line(50, 50, 15, 100, Color::yellow);
48         img.line(50, 50, 25, 100, Color::yellow);
49         img.line(50, 50, 30, 100, Color::yellow);
50         img.line(50, 50, 50, 100, Color::white);
51         img.line(50, 50, 70, 100, Color::green);
52         img.line(50, 50, 75, 100, Color::green);
53         img.line(50, 50, 85, 100, Color::green);
54         img.line(50, 50, 100, 100, Color::white);
55         img.line(50, 50, 100, 85, Color::cyan);
56         img.line(50, 50, 100, 75, Color::cyan);
57         img.line(50, 50, 100, 65, Color::cyan);
58         img.line(50, 50, 100, 50, Color::white);
59         img.line(50, 50, 100, 45, Color::blue);
60         img.line(50, 50, 100, 25, Color::blue);
61         img.line(50, 50, 100, 15, Color::blue);
62         img.line(50, 50, 100, 0, Color::white);
63         img.line(50, 50, 88, 0, Color(0.5,0.0,1.0));
64         img.line(50, 50, 75, 0, Color(0.5,0.0,1.0));
65         img.line(50, 50, 60, 0, Color(0.5,0.0,1.0));
66         img.line(50, 50, 50, 0, Color::white);
67         img.line(50, 50, 45, 0, Color::magenta);
68         img.line(50, 50, 25, 0, Color::magenta);
69         img.line(50, 50, 11, 0, Color::magenta);
70         img.line( 0,  0, 99,  0, Color::red);
71         img.line(99,  0, 99, 99, Color::blue);
72         img.line(99, 99,  0, 99, Color::green);
73         img.line( 0, 99,  0,  0, Color::yellow);
74         img.cache();
75
76
77         //img.save("hoge.png");
78         Psychlops::Rectangle targetarea(0,0,98,98), sourcearea(100,100);
79         targetarea.shift(400,200);
80
81         while(!Input::get(Keyboard::esc)){
82                 d.clear(0.5);
83                 mtximg.draw();
84                 ovalimg.draw();
85                 img.draw(Mouse::x, Mouse::y);
86                 copyimg.draw();
87                 d.image(img, targetarea, sourcearea);
88                 d.flip(1);
89         }
90 }