1 package org.woehlke.computer.kurzweil.tabs.dla.view;
2
3 import org.woehlke.computer.kurzweil.tabs.dla.DiffusionLimitedAggregation;
4 import org.woehlke.computer.kurzweil.tabs.dla.model.Particles;
5 import org.woehlke.computer.kurzweil.tabs.dla.model.Point;
6
7 import javax.swing.*;
8 import java.awt.*;
9
10
11
12
13
14
15
16
17
18
19
20
21 public class WorldCanvas extends JComponent implements DiffusionLimitedAggregation {
22
23 static final long serialVersionUID = 242L;
24
25
26 private Particles particles;
27 private Point worldDimensions;
28
29 private final Color MEDIUM = Color.BLACK;
30 private final Color PARTICLES = Color.BLUE;
31
32 public WorldCanvas(Point worldDimensions, Particles particles) {
33 this.worldDimensions = worldDimensions;
34 this.setBackground(MEDIUM);
35 this.setSize(this.worldDimensions.getX(), this.worldDimensions.getY());
36 this.particles=particles;
37 }
38
39 public void paint(Graphics g) {
40 super.paintComponent(g);
41 int width = worldDimensions.getX();
42 int height = worldDimensions.getY();
43 g.setColor(MEDIUM);
44 g.fillRect(0,0,width,height);
45 g.setColor(PARTICLES);
46 for(Point pixel:particles.getParticles()){
47 g.drawLine(pixel.getX(),pixel.getY(),pixel.getX(),pixel.getY());
48 }
49 for(int y=0;y<worldDimensions.getY();y++){
50 for(int x=0;x<worldDimensions.getX();x++){
51 int age = particles.getDendriteColor(x,y);
52 if(age>0){
53 age /= 25;
54 int blue = (age / 256) % (256*256);
55 int green = (age % 256);
56 int red = 255;
57 Color ageColor = new Color(red,green,blue);
58 g.setColor(ageColor);
59 g.drawLine(x,y,x,y);
60 }
61 }
62 }
63 }
64
65 public void update(Graphics g) {
66 paint(g);
67 }
68
69 public Point getWorldDimensions() {
70 return worldDimensions;
71 }
72 }