1   package fi.jyu.mit.graphics;
2   
3   /**
4    * Rajapinta "helpolle piirtämiselle".
5    * 
6    * @author Markus Kivioja
7    * 
8    */
9   public interface Easy { 
10      
11      /**
12       * Lisää olioon uuden viivan. Palauttaa viitteen lisättyyn
13       * viivaan, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
14       * <pre>
15       *     space.addLine(0,0,100,100).setColor(Color.RED);
16       * </pre>
17       * @param x1 viivan alkupisteen x
18       * @param y1 viivan alkupisteen y
19       * @param x2 viivan loppupisteen x
20       * @param y2 viivan loppupisteen y
21       * @return lisättyn viivaolion viite
22       */
23      Line addLine(double x1, double y1, double x2, double y2);
24      
25      /**
26       * Lisää olioon viivan. Palauttaa viitteen lisättyyn
27       * viivaan, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
28       * <pre>
29       *     space.addLine(0, 0, 0, 100, 100, 100).setColor(Color.RED);
30       * </pre>
31       * @param x1 lähtöpisteen x-koordinaatti
32       * @param y1 lähtöpisteen y-koordinaatti
33       * @param z1 lähtöpisteen z-koordinaatti
34       * @param x2 loppupisteen x-koordinaatti
35       * @param y2 loppupisteen y-koordinaatti
36       * @param z2 loppupisteen z-koordinaatti
37       * @return lisätty Line-olio
38       */
39      Line addLine(double x1, double y1, double z1, double x2, double y2, double z2);
40      
41      /**
42       * Lisää olioon monikulmion. Palauttaa viitteen lisättyyn
43       * monikulmioon, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
44       * <pre>
45       *      double[] xpoints = {-1, 2, 4};
46       *      double[] ypoints = [5, 6, 7};
47       *      space.addPolygon(xpoints, ypoints).setColor(Color.RED);
48       * </pre>
49       * @param xpoints monikulmion kärkipisteiden x-koordinaatit
50       * @param ypoints monikulmion käskipisteiden y-koordinaatit
51       * @return lisätty Polygon-olio
52       */
53      Polygon addPolygon(double[] xpoints, double[] ypoints);
54      
55      /**
56       * Lisää olioon monikulmion. Palauttaa viitteen lisättyyn
57       * monikulmioon, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
58       * <pre>
59       *      double[][] points = {{2, 6}, {5, 5}, {-1, 2.5}}
60       *      space.addPoylgon(points).setColor(Color.RED);
61       * </pre>
62       * @param points monikulmion kärkipisteiden koordinaatit
63       * @return lisätty Polygon-olio
64       */
65      Polygon addPolygon(double[][] points);
66      
67      /**
68       * Lisää olioon täytetyn monikulmion. Palauttaa viitteen lisättyyn
69       * täytettyyn monikulmioon, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
70       * <pre>
71       *      double[] xpoints = {-1, 2, 4};
72       *      double[] ypoints = [5, 6, 7};
73       *      space.addFillPolygon(xpoints, ypoints).setColor(Color.RED);
74       * </pre>
75       * @param xpoints monikulmion kärkipisteiden x-koordinaatit
76       * @param ypoints monikulmion käskipisteiden y-koordinaatit
77       * @return lisätty FillPolygon-olio
78       */
79      FillPolygon addFillPolygon(double[] xpoints, double[] ypoints);
80      
81      /**
82       * Lisää olioon täytetyn monikulmion. Palauttaa viitteen lisättyyn
83       * täytettyyn monikulmioon, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
84       * <pre>
85       *      double[][] points = {{2, 6}, {5, 5}, {-1, 2.5}}
86       *      space.addFillPoylgon(points).setColor(Color.RED);
87       * </pre>
88       * @param points monikulmion kärkipisteiden koordinaatit
89       * @return lisätty FillPolygon-olio
90       */
91      FillPolygon addFillPolygon(double[][] points);
92      
93      /**
94       * Lisää olioon ympyrän. Palauttaa viitteen lisättyyn
95       * ympyrään, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
96       * <pre>
97       *       space.addCircle(0, 0, 1).setColor(Color.RED);
98       * </pre>
99       * @param x ympyrän keskipisteen x-koordinaatti
100      * @param y ympyrän keskipisteen y-koordinaatti
101      * @param r ympyrän säde
102      * @return lisätty Circle-olio
103      */
104     Circle addCircle(double x, double y, double r);
105     
106     /**
107      * Lisää olioon ympyrän. Palauttaa viitteen lisättyyn
108      * ympyrään, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
109      * <pre>
110      *      space.addCircle(0, 0, 0, 1).setColor(Color.RED);
111      * </pre>
112      * @param x ympyrän keskipisteen x-koordinaatti
113      * @param y ympyrän keskipisteen y-koordinaatti
114      * @param z ympyrän keskipisteen z-koordinaatti
115      * @param r ympyrän säde
116      * @return lisätty Circle-olio
117      */
118     Circle addCircle(double x, double y, double z, double r);
119     
120     /**
121      * Lisää olioon koordinaatistoakselit. Palauttaa viitteen lisättyyn
122      * akselistoon, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
123      * <pre>
124      *      space.addAxis(5, 5, 5).setColor(Color.RED);
125      * </pre>
126      * @param xLength x-akselin pituus
127      * @param yLength y-akselin pituus
128      * @param zLength z-akselin pituus
129      * @return lisätty Axis-olio
130      */
131     Axis addAxis(double xLength, double yLength, double zLength);
132     
133     /**
134      * Lisää olioon koordinaatistoakselit. Palauttaa viitteen lisättyyn
135      * akselistoon, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
136      * <pre>
137      *     space.addAxis(5, 5, 5, 0, 0, 0).setColor(Color.RED);
138      * </pre>
139      * @param xLength x-akselin pituus
140      * @param yLength y-akselin pituus
141      * @param zLength z-akselin pituus
142      * @param x akselien leikkauspisteen x-koordinaatti
143      * @param y akselien leikkauspisteen y-koordinaatti
144      * @param z akselien leikkauspisteen z-koordinaatti
145      * @return lisätty Axis-olio
146      */
147     Axis addAxis(double xLength, double yLength, double zLength, double x, double y, double z);
148     
149     /**
150      * Lisää olioon kuvion joka on Drawable-olio. Palauttaa viitteen lisättyyn
151      * kuvioon, jolloin sille voidaan heti suorittaa jokin muukin operaatio, esimerkiksi:
152      * <pre>
153      *      space.addShape(new Line(0, 0, 10, 10)).setColor(Color.RED);
154      * </pre>
155      * @param shape lisättävä kuvio
156      * @return lisätty olio
157      */
158     Drawable addShape(Drawable shape);
159 }
160