diff --git a/source/de/anomic/tools/ImagePainter.java b/source/de/anomic/tools/ImagePainter.java index f6d4a19f8..c966fc1c4 100644 --- a/source/de/anomic/tools/ImagePainter.java +++ b/source/de/anomic/tools/ImagePainter.java @@ -154,15 +154,11 @@ public class ImagePainter { } private void circle(int xc, int yc, int radius) { - int xp = xc + radius; - int yp = yc; int xn, yn; for (int i = 359; i >= 0; i--) { xn = xc + (int) (radius * Math.cos(Math.PI * 2 * i / 360)); yn = yc + (int) (radius * Math.sin(Math.PI * 2 * i / 360)); - line(xp, yp, xn, yn); - xp = xn; - yp = yn; + plot(xn, yn); } } @@ -194,124 +190,5 @@ public class ImagePainter { return bi; } - - /* - public String toHTML() { - String s = "\n\r"; - long c; - int x, i, l; - for (int y = height - 1; y >= 0; y--) { - s += ""; - x = 0; - while (x < width) { - i = x + 1; - c = grid[x + y * width]; - while ((i < width) && (grid[i * width + y] == c)) i++; - l = i - x; - x = i; - if (l == 1) - s += ""; - else - s += ""; - } - s += "\n\r"; - } - s += "
\n\r"; - return s; - } - */ -} - -/* -/============================================================================ -// b r e s l i n e . c -// -// VERSION 1: draws only from one end and calculates both x and y. -// -// Programmer: Kenny Hoff -// Date: 10/25/95 -// Purpose: To implement the Bresenham's line drawing algorithm for all -// slopes and line directions (using minimal routines). -//============================================================================ - -#include -// EXTERNALLY DEFINED FRAMEBUFFER AND FRAMEBUFFER DIMENSIONS (WIDTH)) -extern unsigned char far* FrameBuffer; -extern int WIDTH; -#define SetPixel(x,y,c) FrameBuffer[y*WIDTH+x]=c; - -//============================================================================ -// Fills the intermediate points along a line between the two given endpoints -// using Bresenham's line drawing algorithm. NOTE: this routine does no clipping -// so the coordinate values must be within the FrameBuffer bounds. -// NOTE: USE (Ax,Ay) as the starting point (values that are incremented) -//============================================================================ -void BresLine(int Ax, int Ay, int Bx, int By, unsigned char Color) -{ - //------------------------------------------------------------------------ - // INITIALIZE THE COMPONENTS OF THE ALGORITHM THAT ARE NOT AFFECTED BY THE - // SLOPE OR DIRECTION OF THE LINE - //------------------------------------------------------------------------ - int dX = abs(Bx-Ax); // store the change in X and Y of the line endpoints - int dY = abs(By-Ay); - - //------------------------------------------------------------------------ - // DETERMINE "DIRECTIONS" TO INCREMENT X AND Y (REGARDLESS OF DECISION) - //------------------------------------------------------------------------ - int Xincr, Yincr; - if (Ax > Bx) { Xincr=-1; } else { Xincr=1; } // which direction in X? - if (Ay > By) { Yincr=-1; } else { Yincr=1; } // which direction in Y? - - //------------------------------------------------------------------------ - // DETERMINE INDEPENDENT VARIABLE (ONE THAT ALWAYS INCREMENTS BY 1 (OR -1) ) - // AND INITIATE APPROPRIATE LINE DRAWING ROUTINE (BASED ON FIRST OCTANT - // ALWAYS). THE X AND Y'S MAY BE FLIPPED IF Y IS THE INDEPENDENT VARIABLE. - //------------------------------------------------------------------------ - if (dX >= dY) // if X is the independent variable - { - int dPr = dY<<1; // amount to increment decision if right is chosen (always) - int dPru = dPr - (d><<1); // amount to increment decision if up is chosen - int P = dPr - dX; // decision variable start value - - for (; dX>=0; dX--) // process each point in the line one at a time (just use dX) - { - SetPixel(Ax, Ay, Color); // plot the pixel - if (P > 0) // is the pixel going right AND up? - { - Ax+=Xincr; // increment independent variable - Ay+=Yincr; // increment dependent variable - P+=dPru; // increment decision (for up) - } - else // is the pixel just going right? - { - Ax+=Xincr; // increment independent variable - P+=dPr; // increment decision (for right) - } - } - } - else // if Y is the independent variable - { - int dPr = dX<<1; // amount to increment decision if right is chosen (always) - int dPru = dPr - (d><<1); // amount to increment decision if up is chosen - int P = dPr - dY; // decision variable start value - - for (; dY>=0; dY--) // process each point in the line one at a time (just use dY) - { - SetPixel(Ax, Ay, Color); // plot the pixel - if (P > 0) // is the pixel going up AND right? - { - Ax+=Xincr; // increment dependent variable - Ay+=Yincr; // increment independent variable - P+=dPru; // increment decision (for up) - } - else // is the pixel just going up? - { - Ay+=Yincr; // increment independent variable - P+=dPr; // increment decision (for right) - } - } - } } - -*/ \ No newline at end of file diff --git a/source/de/anomic/tools/htmlPlotter.java b/source/de/anomic/tools/htmlPlotter.java deleted file mode 100644 index 15db1f5ca..000000000 --- a/source/de/anomic/tools/htmlPlotter.java +++ /dev/null @@ -1,267 +0,0 @@ -// htmlPlotter.java -// --------------------------- -// (C) by Michael Peter Christen; mc@anomic.de -// first published on http://www.anomic.de -// Frankfurt, Germany, 2004 -// last major change: 16.09.2004 -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// Using this software in any meaning (reading, learning, copying, compiling, -// running) means that you agree that the Author(s) is (are) not responsible -// for cost, loss of data or any harm that may be caused directly or indirectly -// by usage of this softare or this documentation. The usage of this software -// is on your own risk. The installation and usage (starting/running) of this -// software may allow other people or application to access your computer and -// any attached devices and is highly dependent on the configuration of the -// software which must be done by the user of the software; the author(s) is -// (are) also not responsible for proper configuration and usage of the -// software, even if provoked by documentation provided together with -// the software. -// -// Any changes to this file according to the GPL as documented in the file -// gpl.txt aside this file in the shipment you received can be done to the -// lines that follows this copyright notice here, but changes must not be -// done inside the copyright notive above. A re-distribution must contain -// the intact and unchanged copyright notice. -// Contributions and changes to the program code must be marked as such. - -package de.anomic.tools; - -import java.io.File; -import java.io.IOException; - -import de.anomic.server.serverFileUtils; - -public class htmlPlotter { - - private byte[][][] grid; - int width, height; - byte[] defaultCol; - - public htmlPlotter(int width, int height, String defaultCol) { - this.width = width; - this.height = height; - this.defaultCol = parseCol(defaultCol); - grid = new byte[width][height][3]; - for (int x = 0; x < width; x++) - for (int y = 0; y < height; y++) grid[x][y] = null; - } - - private byte[] parseCol(String col) { - byte[] c = new byte[3]; - c[0] = (byte) Integer.parseInt(col.substring(0,2), 16); - c[1] = (byte) Integer.parseInt(col.substring(2,4), 16); - c[2] = (byte) Integer.parseInt(col.substring(4,6), 16); - return c; - } - - private String genCol(byte[] c) { - if (c == null) c = defaultCol; - return hex2(c[0]) + hex2(c[1]) + hex2(c[2]); - } - - private String hex2(byte b) { - String h = Integer.toHexString(((int) b) & 0xff); - if (h.length() == 1) return "0" + h; else return h; - } - - public void plot(int x, int y, String col) { - plot(x, y, parseCol(col)); - } - - public void plot(int x, int y, byte[] c) { - if ((x < 0) || (x >= width)) return; - if ((y < 0) || (y >= height)) return; - grid[x][y] = c; - } - - private boolean equalCol(byte[] a, byte[] b) { - if ((a == null) && (b == null)) return true; - if ((a == null) || (b == null)) return false; - return ((a[0] == b[0]) && (a[1] == b[1]) && (a[2] == b[2])); - } - - public String toHTML() { - String s = "\n\r"; - byte[] col; - int x, i, l; - for (int y = height - 1; y >= 0; y--) { - s += ""; - x = 0; - while (x < width) { - i = x + 1; - col = grid[x][y]; - while ((i < width) && (equalCol(grid[i][y], col))) i++; - l = i - x; - x = i; - if (l == 1) - s += ""; - else - s += ""; - } - s += "\n\r"; - } - s += "
\n\r"; - return s; - } - - public void draw(int Ax, int Ay, int Bx, int By, String col) { - // Bresenham's line drawing algorithm - byte[] Color = parseCol(col); - int dX = Math.abs(Bx-Ax); - int dY = Math.abs(By-Ay); - int Xincr, Yincr; - if (Ax > Bx) Xincr=-1; else Xincr=1; - if (Ay > By) Yincr=-1; else Yincr=1; - if (dX >= dY) { - int dPr = dY<<1; - int dPru = dPr - (dX<<1); - int P = dPr - dX; - for (; dX>=0; dX--) { - plot(Ax, Ay, Color); - if (P > 0) { - Ax+=Xincr; - Ay+=Yincr; - P+=dPru; - } else { - Ax+=Xincr; - P+=dPr; - } - } - } else { - int dPr = dX<<1; - int dPru = dPr - (dY<<1); - int P = dPr - dY; - for (; dY>=0; dY--) { - plot(Ax, Ay, Color); - if (P > 0) { - Ax+=Xincr; - Ay+=Yincr; - P+=dPru; - } else { - Ay+=Yincr; - P+=dPr; - } - } - } - } - - public static void main(String[] args) { - htmlPlotter plotter = new htmlPlotter(200, 100, "FFFFFF"); - plotter.plot(0,0,"000000"); plotter.plot(33,50,"000000"); plotter.plot(36,50,"000000"); - //plotter.draw(10,10,170,88,"AAAAAA"); - try { - serverFileUtils.write(("" + plotter.toHTML() + "").getBytes(), new File("D:\\bin\\test.html")); - } catch (IOException e) { - e.printStackTrace(); - } - System.out.println(plotter.toHTML()); - } -} - -/* -/============================================================================ -// b r e s l i n e . c -// -// VERSION 1: draws only from one end and calculates both x and y. -// -// Programmer: Kenny Hoff -// Date: 10/25/95 -// Purpose: To implement the Bresenham's line drawing algorithm for all -// slopes and line directions (using minimal routines). -//============================================================================ - -#include - -// EXTERNALLY DEFINED FRAMEBUFFER AND FRAMEBUFFER DIMENSIONS (WIDTH)) -extern unsigned char far* FrameBuffer; -extern int WIDTH; -#define SetPixel(x,y,c) FrameBuffer[y*WIDTH+x]=c; - -//============================================================================ -// Fills the intermediate points along a line between the two given endpoints -// using Bresenham's line drawing algorithm. NOTE: this routine does no clipping -// so the coordinate values must be within the FrameBuffer bounds. -// NOTE: USE (Ax,Ay) as the starting point (values that are incremented) -//============================================================================ -void BresLine(int Ax, int Ay, int Bx, int By, unsigned char Color) -{ - //------------------------------------------------------------------------ - // INITIALIZE THE COMPONENTS OF THE ALGORITHM THAT ARE NOT AFFECTED BY THE - // SLOPE OR DIRECTION OF THE LINE - //------------------------------------------------------------------------ - int dX = abs(Bx-Ax); // store the change in X and Y of the line endpoints - int dY = abs(By-Ay); - - //------------------------------------------------------------------------ - // DETERMINE "DIRECTIONS" TO INCREMENT X AND Y (REGARDLESS OF DECISION) - //------------------------------------------------------------------------ - int Xincr, Yincr; - if (Ax > Bx) { Xincr=-1; } else { Xincr=1; } // which direction in X? - if (Ay > By) { Yincr=-1; } else { Yincr=1; } // which direction in Y? - - //------------------------------------------------------------------------ - // DETERMINE INDEPENDENT VARIABLE (ONE THAT ALWAYS INCREMENTS BY 1 (OR -1) ) - // AND INITIATE APPROPRIATE LINE DRAWING ROUTINE (BASED ON FIRST OCTANT - // ALWAYS). THE X AND Y'S MAY BE FLIPPED IF Y IS THE INDEPENDENT VARIABLE. - //------------------------------------------------------------------------ - if (dX >= dY) // if X is the independent variable - { - int dPr = dY<<1; // amount to increment decision if right is chosen (always) - int dPru = dPr - (d><<1); // amount to increment decision if up is chosen - int P = dPr - dX; // decision variable start value - - for (; dX>=0; dX--) // process each point in the line one at a time (just use dX) - { - SetPixel(Ax, Ay, Color); // plot the pixel - if (P > 0) // is the pixel going right AND up? - { - Ax+=Xincr; // increment independent variable - Ay+=Yincr; // increment dependent variable - P+=dPru; // increment decision (for up) - } - else // is the pixel just going right? - { - Ax+=Xincr; // increment independent variable - P+=dPr; // increment decision (for right) - } - } - } - else // if Y is the independent variable - { - int dPr = dX<<1; // amount to increment decision if right is chosen (always) - int dPru = dPr - (d><<1); // amount to increment decision if up is chosen - int P = dPr - dY; // decision variable start value - - for (; dY>=0; dY--) // process each point in the line one at a time (just use dY) - { - SetPixel(Ax, Ay, Color); // plot the pixel - if (P > 0) // is the pixel going up AND right? - { - Ax+=Xincr; // increment dependent variable - Ay+=Yincr; // increment independent variable - P+=dPru; // increment decision (for up) - } - else // is the pixel just going up? - { - Ay+=Yincr; // increment independent variable - P+=dPr; // increment decision (for right) - } - } - } -} - -*/ \ No newline at end of file