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