1 module armos.types.rectangle;
2 import armos.math;
3 /++
4 長方形を表すstructです.
5 +/
6 struct Rectangle {
7     armos.math.Vector2f position;
8     armos.math.Vector2f size;
9 
10     // this(){
11     // 	// auto position = new armos.math.Vector2f;
12     // 	// auto size = new armos.math.Vector2f;
13     // };
14 
15     /++
16         開始点と終了点を指定して初期化します.
17     +/
18     this(armos.math.Vector2f p, armos.math.Vector2f s){
19         position = p;
20         size = s;
21     }
22 
23     /++
24         開始点と終了点を指定します.
25     +/
26     void set(in float x, in float y, in float width, in float height){
27         position = armos.math.Vector2f(x, y);
28         size = armos.math.Vector2f(width, height);
29     }
30 
31     /++
32         開始点と終了点を指定します.
33     +/
34     void set(in armos.math.Vector2f p, in armos.math.Vector2f s){
35         position = cast( armos.math.Vector2f )p;
36         size = cast( armos.math.Vector2f )s;
37     }
38 
39     /++
40         開始点のX座標のプロパティです.
41     +/
42     float x(){return position[0];}
43     void x(float x_){position[0] = x_;}
44 
45     /++
46         開始点のY座標のプロパティです.
47     +/
48     float y(){return position[1];}
49     void y(float y_){position[1] = y_;}
50 
51 
52     /++
53         終了点のX座標のプロパティです.
54     +/
55     float width(){return size[0];}
56     void width(float width_){size[0] = width_;}
57 
58     /++
59         終了点のY座標のプロパティです.
60     +/
61     float height(){return size[1];}
62     void height(float height_){size[1] = height_;}
63 }
64