diff --git a/bin/sig/Color.class b/bin/sig/Color.class index f642ad4..35c63b2 100644 Binary files a/bin/sig/Color.class and b/bin/sig/Color.class differ diff --git a/bin/sig/Panel.class b/bin/sig/Panel.class index b5a3a60..14c9c42 100644 Binary files a/bin/sig/Panel.class and b/bin/sig/Panel.class differ diff --git a/bin/sig/PolygonFill.class b/bin/sig/PolygonFill.class index 8d5c046..b699018 100644 Binary files a/bin/sig/PolygonFill.class and b/bin/sig/PolygonFill.class differ diff --git a/src/sig/Color.java b/src/sig/Color.java index 48573c3..c6e0056 100644 --- a/src/sig/Color.java +++ b/src/sig/Color.java @@ -28,6 +28,6 @@ public class Color { } public int getColor() { - return (r<<16)+(g<<16)+b; + return (r<<16)+(g<<8)+b; } } diff --git a/src/sig/Panel.java b/src/sig/Panel.java index 2eb64f2..eb3c836 100644 --- a/src/sig/Panel.java +++ b/src/sig/Panel.java @@ -23,6 +23,7 @@ public class Panel extends JPanel implements Runnable { int nextScanLine=0; double x_offset=0; double y_offset=0; + int frameCount=0; public Panel() { super(true); @@ -64,7 +65,7 @@ public class Panel extends JPanel implements Runnable { // perform draws on pixels render(); // ask ImageProducer to update image - mImageProducer.newPixels(); + mImageProducer.newPixels(); // draw it on panel g.drawImage(this.imageBuffer, 0, 0, this); } @@ -91,10 +92,10 @@ public class Panel extends JPanel implements Runnable { } } - x_offset=50; + x_offset+=1; y_offset=50; - FillPolygon(p,Color.BLUE,new Point[] { + /*FillPolygon(p,Color.MAGENTA,new Point[] { new Point(135,2), new Point(166,96), new Point(265,97), @@ -105,7 +106,14 @@ public class Panel extends JPanel implements Runnable { new Point(84,156), new Point(4,97), new Point(103,96), - }); + });*/ + FillPolygon(p,Color.BRIGHT_CYAN,new Point[] { + new Point(28,29), + new Point(78,103), + new Point(120,31), + new Point(123,221), + new Point(30,218), + }); } public void FillPolygon(int[] p,Color col,Point...points) { @@ -113,56 +121,68 @@ public class Panel extends JPanel implements Runnable { List edges_sorted = new ArrayList(); for (int i=0;i=edges[i].min_y) { + edges_sorted.add(j,edges[i]); + inserted=true; + break; + } + } + if (!inserted) { + edges_sorted.add(edges[i]); + } + } + } + } + //System.out.println(edges_sorted); + List active_edges = new ArrayList(); + scanLine = edges_sorted.get(0).min_y-1; + nextScanLine = scanLine+1; + do { + for (int i=0;i=0) { + p[index]=col.getColor(); + } + } + } + List new_active_edges = new ArrayList(); + for (int i=0;iedges[i].min_y) { - edges_sorted.add(j,edges[i]); + for (int j=0;je.x_of_min_y) { + new_active_edges.add(j,e); inserted=true; break; - } else - if (e2.min_y==edges[i].min_y){ - if (e2.min_x>edges[i].min_x) { - edges_sorted.add(j,edges[i]); - inserted=true; - break; - } } } if (!inserted) { - edges_sorted.add(edges[i]); + new_active_edges.add(e); } } - } - List active_edges = new ArrayList(); - scanLine = edges_sorted.get(0).min_y-1; - nextScanLine = scanLine+1; - do { - if (active_edges.size()%2==0) { - for (int i=0;i=0) { - p[index]=col.getColor(); - } - } - } - for (int i=0;i0); } @@ -198,7 +218,8 @@ public class Panel extends JPanel implements Runnable { public void run() { while (true) { // request a JPanel re-drawing - repaint(); + repaint(); + //System.out.println("Repaint "+frameCount++); try {Thread.sleep(5);} catch (InterruptedException e) {} } } diff --git a/src/sig/PolygonFill.java b/src/sig/PolygonFill.java index ccfc6cc..47b7db6 100644 --- a/src/sig/PolygonFill.java +++ b/src/sig/PolygonFill.java @@ -14,9 +14,7 @@ public class PolygonFill { f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); - while (true) { - p.render(); - try {Thread.sleep(20);} catch (InterruptedException e) {} - } + int i=0; + p.render(); } }