| Drawable.java |
1 package fi.jyu.mit.graphics;
2
3 import java.awt.*;
4
5 /**
6 * Rajapinta kaikille piirtokuvioille
7 * @author Markus Kivioja
8 *
9 */
10 public interface Drawable extends Transformable {
11
12 /**
13 * Piirtää kuvion annetulla Graphics-oliolla ja muunnosmatriisilla
14 * @param g Graphics-olio
15 * @param A muunnosmatriisi
16 */
17 void draw(Graphics g, Matrix A);
18
19 /**
20 * Asettaa kuvion värin annetuilla punaisen, vihreän ja sinisen arvoilla
21 * ja palauttaa kuvion itsensä
22 * @param r värin punaisen arvo
23 * @param g värin vihreän arvo
24 * @param b värin sinisen arvo
25 * @return kuvio
26 */
27 Drawable setColor(int r, int g, int b);
28
29 /**
30 * Asettaa kuvion värin annetuksi Color-olioksi ja paluttaa kuvion itsensä
31 * @param c väri Color-oliona
32 * @return kuvio
33 */
34 Drawable setColor(Color c);
35
36 /**
37 * Palautetaan väri jota käyteään piirtämiseen
38 * @return kuvion väri
39 */
40 public Color getColor();
41
42 /**
43 * Asettaa kuvion vanhemmat
44 * @param parent joukko kuvion vanhemmista
45 */
46 void setParent(BasicDrawableCollection parent);
47
48 /**
49 * Piirtää kuvion uudelleen
50 *
51 */
52 void redraw();
53
54 /**
55 * Muuntaa kuvion muunosmatriisilla m
56 * @param m matriisi jolla olion nykyinen muunnosmatrisi kerrotaan
57 * @return muutettu matriisi
58 */
59 @Override
60 Drawable transform(Matrix m);
61
62 /**
63 * Asettaa kuvion uudeksi muunnosmatriisiksi annetun matriisin
64 * @param m uusi muunnosmatriisi
65 * @return palauttaa muunnetun olion
66 */
67 Drawable setTransform(Matrix m);
68
69 /**
70 * Vaihtaa kuvion muunnosmatriisin annetuksi matriisiksi
71 * @param m uusi muunnosmatriisi
72 */
73 @Override
74 void changeTransform(Matrix m);
75
76 /**
77 * Skaalaa kuvion annettujen kertoimien mukaan
78 * <pre>
79 * shape.scale(2, 1, 1); venyttää kuviota kaksinkertaiseksi x-suunnassa
80 * </pre>
81 * @param dx kuvion x-suuntainen kerroin
82 * @param dy kuvion y-suuntainen kerroin
83 * @param dz kuvion z-suuntainen kerroin
84 * @return palauttaa muunnetun olion
85 */
86 Drawable scale(double dx, double dy, double dz);
87
88 /**
89 * Liikuttaa kuviota, esimerkiksi:
90 * <pre>
91 * shape.move(0, 1.5, -15);
92 * </pre>
93 * @param sx liikutettava matka x-akselin suunnassa
94 * @param sy liikutettava matka y-akselin suunnassa
95 * @param sz liikutettava matka z-akselin suunnassa
96 * @return palauttaa muunnetun olion
97 */
98 Drawable move(double sx, double sy, double sz);
99
100 /**
101 * Kiertää kuviota annetun akselin ympäri, esimerkiksi:
102 * <pre>
103 * shape.rotate(Axis.X, 45.2);
104 * </pre>
105 * @param axis akseli jonka ympäri pyöritetään (Axis.X/Axis.Y/Axis.Z)
106 * @param deg kierrettävän kulman suuruus asteina
107 * @return palauttaa muunnetun olion
108 */
109 Drawable rotate(int axis, double deg);
110
111 }
112