diff --git a/htroot/Network.html b/htroot/Network.html index 1347659cf..4d85a8fc7 100644 --- a/htroot/Network.html +++ b/htroot/Network.html @@ -183,7 +183,7 @@
- The yacy Network + The yacy Network
diff --git a/htroot/PeerLoadPicture.java b/htroot/PeerLoadPicture.java index cb9677383..82cd880db 100644 --- a/htroot/PeerLoadPicture.java +++ b/htroot/PeerLoadPicture.java @@ -73,9 +73,9 @@ public class PeerLoadPicture { // too small values lead to an error, too big to huge CPU/memory consumption, // resulting in possible DOS. - if (width < 400) width = 400; + if (width < 40) width = 40; if (width > 1920) width = 1920; - if (height < 300) height = 300; + if (height < 30) height = 30; if (height > 1440) height = 1440; return plasmaGrafics.getPeerLoadPicture( 5000, diff --git a/htroot/imagetest.java b/htroot/imagetest.java index 69277accf..b6151e5ff 100644 --- a/htroot/imagetest.java +++ b/htroot/imagetest.java @@ -51,7 +51,6 @@ import de.anomic.ymage.ymageToolPrint; public class imagetest { - public static ymageMatrix respond(httpHeader header, serverObjects post, serverSwitch env) { /* BufferedImage bi = new BufferedImage(640, 400, BufferedImage.TYPE_INT_RGB); @@ -84,24 +83,24 @@ public class imagetest { for (int i = 20; i < 100; i++) r.setPixel(i, 34, new int[]{0, 0, 255}); return bi; */ - ymageMatrix img = new ymageMatrix(800, 600, ymageMatrix.MODE_SUB, "000000"); - img.setColor(ymageMatrix.SUBTRACTIVE_BLACK); + ymageMatrix img = new ymageMatrix(800, 600, ymageMatrix.MODE_SUB, "FFFFFF"); + img.setColor(ymageMatrix.GREY); for (int y = 0; y < 600; y = y + 50) ymageToolPrint.print(img, 0, 6 + y, 0, "" + y, -1); for (int x = 0; x < 800; x = x + 50) ymageToolPrint.print(img, x, 6 , 0, "" + x, -1); - img.setColor(ymageMatrix.SUBTRACTIVE_RED); + img.setColor(ymageMatrix.RED); img.dot(550, 110, 90, true); - img.setColor(ymageMatrix.SUBTRACTIVE_GREEN); + img.setColor(ymageMatrix.GREEN); img.dot(480, 200, 90, true); - img.setColor(ymageMatrix.SUBTRACTIVE_BLUE); + img.setColor(ymageMatrix.BLUE); img.dot(620, 200, 90, true); - img.setColor(ymageMatrix.SUBTRACTIVE_RED); + img.setColor(ymageMatrix.RED); img.arc(300, 270, 30, 70, 0, 360); img.setColor("330000"); img.arc(220, 110, 50, 90, 30, 110); img.arc(210, 120, 50, 90, 30, 110); - img.setColor(ymageMatrix.SUBTRACTIVE_BLACK); - ymageToolPrint.print(img, 50, 110, 0, "BROADCAST MESSAGE #772: NODE %882 BLACK abcefghijklmnopqrstuvwxyz", -1); - img.setColor(ymageMatrix.SUBTRACTIVE_GREEN); + img.setColor(ymageMatrix.GREY); + ymageToolPrint.print(img, 50, 110, 0, "BROADCAST MESSAGE #772: NODE %882 GREY abcefghijklmnopqrstuvwxyz", -1); + img.setColor(ymageMatrix.GREEN); ymageToolPrint.print(img, 50, 120, 0, "BROADCAST MESSAGE #772: NODE %882 GREEN abcefghijklmnopqrstuvwxyz", -1); for (long i = 0; i < 256; i++) { img.setColor(i); @@ -124,7 +123,7 @@ public class imagetest { for (int i = 0; i <= 360; i++) { img.arc(550, 400, 40, 41 + i/9, 0, i); } - img.setColor(ymageMatrix.SUBTRACTIVE_BLACK); + img.setColor(ymageMatrix.GREY); int angle; for (byte c = (byte) 'A'; c <= 'Z'; c++) { angle = (c - (byte) 'A') * 360 / ((byte) 'Z' - (byte) 'A'); diff --git a/source/de/anomic/plasma/plasmaGrafics.java b/source/de/anomic/plasma/plasmaGrafics.java index 5e2da543d..33d9fe960 100644 --- a/source/de/anomic/plasma/plasmaGrafics.java +++ b/source/de/anomic/plasma/plasmaGrafics.java @@ -65,21 +65,21 @@ public class plasmaGrafics { private static int shortestName = 10; private static int longestName = 12; - public static final String COL_BACKGROUND = "080808"; /*"FFFFE0"*/ - private static final String COL_DHTCIRCLE = "400030"; /*"008020"*/ - private static final long COL_HEADLINE = ymageMatrix.SUBTRACTIVE_BLACK; - private static final String COL_ACTIVE_DOT = "181808"; - private static final String COL_ACTIVE_LINE = "604040"; - private static final String COL_ACTIVE_TEXT = "b080b0"; - private static final String COL_PASSIVE_DOT = "101010"; - private static final String COL_PASSIVE_LINE = "404040"; - private static final String COL_PASSIVE_TEXT = "a0a0a0"; - private static final String COL_POTENTIAL_DOT = "041010"; - private static final String COL_POTENTIAL_LINE = "104040"; - private static final String COL_POTENTIAL_TEXT = "80b0b0"; - private static final String COL_WE_DOT = "206060"; - private static final String COL_WE_LINE = "b0f0f0"; - private static final String COL_WE_TEXT = "f0f0f0"; + public static final String COL_BACKGROUND = "FFFFFF"; + private static final String COL_DHTCIRCLE = "006020"; + private static final String COL_HEADLINE = "FFFFFF"; + private static final String COL_ACTIVE_DOT = "000044"; + private static final String COL_ACTIVE_LINE = "335544"; + private static final String COL_ACTIVE_TEXT = "66AA88"; + private static final String COL_PASSIVE_DOT = "221111"; + private static final String COL_PASSIVE_LINE = "443333"; + private static final String COL_PASSIVE_TEXT = "663333"; + private static final String COL_POTENTIAL_DOT = "002200"; + private static final String COL_POTENTIAL_LINE = "224422"; + private static final String COL_POTENTIAL_TEXT = "336633"; + private static final String COL_WE_DOT = "FF0000"; + private static final String COL_WE_LINE = "FFAAAA"; + private static final String COL_WE_TEXT = "FFCCCC"; private static final Color COL_BORDER = new Color( 0, 0, 0); private static final Color COL_NORMAL_TEXT = new Color( 0, 0, 0); @@ -147,7 +147,7 @@ public class plasmaGrafics { // draw in the primary search peers for (int j = 0; j < primarySearches.length; j++) { - eventPicture.setColor((primarySearches[j].isAlive()) ? ymageMatrix.SUBTRACTIVE_RED : ymageMatrix.SUBTRACTIVE_GREEN); + eventPicture.setColor((primarySearches[j].isAlive()) ? ymageMatrix.RED : ymageMatrix.GREEN); hash = primarySearches[j].target().hash; angle = (int) (360 * yacySeed.dhtPosition(hash)); eventPicture.arcLine(cx, cy, cr - 20, cr, angle); @@ -156,7 +156,7 @@ public class plasmaGrafics { // draw in the secondary search peers if (secondarySearches != null) { for (int j = 0; j < secondarySearches.length; j++) { - eventPicture.setColor((secondarySearches[j].isAlive()) ? ymageMatrix.SUBTRACTIVE_RED : ymageMatrix.SUBTRACTIVE_GREEN); + eventPicture.setColor((secondarySearches[j].isAlive()) ? ymageMatrix.RED : ymageMatrix.GREEN); hash = secondarySearches[j].target().hash; angle = (int) (360 * yacySeed.dhtPosition(hash)); eventPicture.arcLine(cx, cy, cr - 10, cr, angle - 1); @@ -167,7 +167,7 @@ public class plasmaGrafics { // draw in the search target plasmaSearchQuery query = event.getQuery(); Iterator i = query.queryHashes.iterator(); - eventPicture.setColor(ymageMatrix.SUBTRACTIVE_BLACK); + eventPicture.setColor(ymageMatrix.GREY); while (i.hasNext()) { hash = (String) i.next(); angle = (int) (360 * yacySeed.dhtPosition(hash)); diff --git a/source/de/anomic/ymage/ymageCaptcha.java b/source/de/anomic/ymage/ymageCaptcha.java index 4e817027c..81323ee4f 100644 --- a/source/de/anomic/ymage/ymageCaptcha.java +++ b/source/de/anomic/ymage/ymageCaptcha.java @@ -48,7 +48,7 @@ import javax.imageio.ImageIO; public class ymageCaptcha extends ymageMatrix { public ymageCaptcha(int width, int height, byte displayMode, String code) { - super(width, height, displayMode, SUBTRACTIVE_WHITE); + super(width, height, displayMode, "FFFFFF"); this.create(code); } diff --git a/source/de/anomic/ymage/ymageChart.java b/source/de/anomic/ymage/ymageChart.java index 6f0e71be0..fb2fab040 100644 --- a/source/de/anomic/ymage/ymageChart.java +++ b/source/de/anomic/ymage/ymageChart.java @@ -155,24 +155,30 @@ public class ymageChart extends ymageMatrix { public static void main(String[] args) { System.setProperty("java.awt.headless", "true"); - ymageChart ip = new ymageChart(660, 240, "FFFFFF", "000000", 30, 30, 20, 20, "PEER PERFORMANCE GRAPH: PAGES/MINUTE and USED MEMORY"); - ip.declareDimension(DIMENSION_BOTTOM, 60, 60, -600, "000000", "CCCCCC", "TIME/SECONDS"); + boolean invers = false; + String bg = (invers) ? "000000" : "FFFFFF"; + String fg = (invers) ? "FFFFFF" : "000000"; + String scale = (invers) ? "333333" : "CCCCCC"; + String green = (invers) ? "008800" : "008800"; + String blue = (invers) ? "0000FF" : "0000FF"; + ymageChart ip = new ymageChart(660, 240, bg, fg, 30, 30, 20, 20, "PEER PERFORMANCE GRAPH: PAGES/MINUTE and USED MEMORY"); + ip.declareDimension(DIMENSION_BOTTOM, 60, 60, -600, fg, scale, "TIME/SECONDS"); //ip.declareDimension(DIMENSION_TOP, 10, 40, "000000", null, "count"); - ip.declareDimension(DIMENSION_LEFT, 50, 40, 0, "008800", null , "PPM [PAGES/MINUTE]"); - ip.declareDimension(DIMENSION_RIGHT, 100, 20, 0, "0000FF", "CCCCCC", "MEMORY/MEGABYTE"); - ip.setColor("008800"); + ip.declareDimension(DIMENSION_LEFT, 50, 40, 0, green, scale , "PPM [PAGES/MINUTE]"); + ip.declareDimension(DIMENSION_RIGHT, 100, 20, 0, blue, scale, "MEMORY/MEGABYTE"); + ip.setColor(green); ip.chartDot(DIMENSION_BOTTOM, DIMENSION_LEFT, -160, 100, 5); ip.chartLine(DIMENSION_BOTTOM, DIMENSION_LEFT, -160, 100, -130, 200); - ip.setColor("0000FF"); + ip.setColor(blue); ip.chartDot(DIMENSION_BOTTOM, DIMENSION_RIGHT, -50, 300, 2); ip.chartLine(DIMENSION_BOTTOM, DIMENSION_RIGHT, -80, 100, -50, 300); //ip.print(100, 100, 0, "TEXT", true); //ip.print(100, 100, 0, "1234", false); //ip.print(100, 100, 90, "TEXT", true); //ip.print(100, 100, 90, "1234", false); - + File file = new File("/Users/admin/Desktop/testimage.png"); try { - FileOutputStream fos = new FileOutputStream(new File("/Users/admin/Desktop/testimage.png")); + FileOutputStream fos = new FileOutputStream(file); ImageIO.write(ip.getImage(), "png", fos); fos.close(); } catch (IOException e) {} diff --git a/source/de/anomic/ymage/ymageDemoApplet.java b/source/de/anomic/ymage/ymageDemoApplet.java index 7b0a1e62c..298f9a24d 100644 --- a/source/de/anomic/ymage/ymageDemoApplet.java +++ b/source/de/anomic/ymage/ymageDemoApplet.java @@ -47,7 +47,7 @@ public class ymageDemoApplet extends Applet implements Runnable { public void update(Graphics g) { Dimension d = getSize(); - offGraphics = new ymageMatrix(d.width, d.height, ymageMatrix.MODE_REPLACE, ymageMatrix.SUBTRACTIVE_WHITE); + offGraphics = new ymageMatrix(d.width, d.height, ymageMatrix.MODE_REPLACE, "FFFFFF"); paintFrame(offGraphics); g.drawImage(offGraphics.getImage(), 0, 0, null); } @@ -61,7 +61,7 @@ public class ymageDemoApplet extends Applet implements Runnable { public void paintFrame(ymageMatrix m) { ymageMatrix.demoPaint(m); int y = (int) (System.currentTimeMillis() / 10 % 300); - m.setColor(ymageMatrix.SUBTRACTIVE_BLACK); + m.setColor(ymageMatrix.GREY); ymageToolPrint.print(m, 0, y, 0, "Hello World", -1); } diff --git a/source/de/anomic/ymage/ymageGraph.java b/source/de/anomic/ymage/ymageGraph.java index 1f9f93afa..3ab617391 100644 --- a/source/de/anomic/ymage/ymageGraph.java +++ b/source/de/anomic/ymage/ymageGraph.java @@ -124,11 +124,11 @@ public class ymageGraph { } } - public static final long color_back = ymageMatrix.SUBTRACTIVE_WHITE; - public static final long color_text = ymageMatrix.SUBTRACTIVE_BLACK; - private static final long color_dot = 0x6633AA; + public static final long color_back = 0xFFFFFF; + public static final long color_text = 0xAAAAAA; + private static final long color_dot = 0x11CC11; private static final long color_line = 0x333333; - private static final long color_lineend = 0x555555; + private static final long color_lineend = 0x666666; public ymageMatrix draw(int width, int height, int leftborder, int rightborder, int topborder, int bottomborder) { ymageMatrix image = new ymageMatrix(width, height, ymageMatrix.MODE_SUB, color_back); diff --git a/source/de/anomic/ymage/ymageMatrix.java b/source/de/anomic/ymage/ymageMatrix.java index b9787b1dd..4137bbe17 100644 --- a/source/de/anomic/ymage/ymageMatrix.java +++ b/source/de/anomic/ymage/ymageMatrix.java @@ -37,24 +37,24 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.WritableRaster; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; import javax.imageio.ImageIO; import de.anomic.server.serverMemory; -public class ymageMatrix /*implements Cloneable*/ { +public class ymageMatrix { - // colors regarding CMY Color Model - public static final long SUBTRACTIVE_CYAN = 0xFF0000; - public static final long SUBTRACTIVE_MAGENTA = 0x00FF00; - public static final long SUBTRACTIVE_YELLOW = 0x0000FF; - public static final long SUBTRACTIVE_BLACK = 0xFFFFFF; - public static final long SUBTRACTIVE_WHITE = 0x000000; - public static final long SUBTRACTIVE_RED = 0x007F7F; - public static final long SUBTRACTIVE_GREEN = 0x7F007F; - public static final long SUBTRACTIVE_BLUE = 0x7F7F00; + // colors regarding RGB Color Model + public static final long RED = 0xFF0000; + public static final long GREEN = 0x00FF00; + public static final long BLUE = 0x0000FF; + public static final long GREY = 0x888888; public static final byte MODE_REPLACE = 0; + public static final byte MODE_ADD = 1; public static final byte MODE_SUB = 2; @@ -65,7 +65,7 @@ public class ymageMatrix /*implements Cloneable*/ { private byte defaultMode; public ymageMatrix(int width, int height, byte drawMode, String backgroundColor) { - this(width, height, drawMode, colNum(backgroundColor)); + this(width, height, drawMode, Long.parseLong(backgroundColor, 16)); } public ymageMatrix(int width, int height, byte drawMode, long backgroundColor) { @@ -76,44 +76,35 @@ public class ymageMatrix /*implements Cloneable*/ { this.defaultMode = drawMode; image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); - Graphics2D gr = image.createGraphics(); - gr.setBackground(Color.white); - //gr.clearRect(0, 0, width, height); - grid = image.getRaster(); // fill grid with background color - byte bgR, bgG, bgB; - if (drawMode == MODE_SUB) { - bgR = (byte) (0xFF - (backgroundColor >> 16)); - bgG = (byte) (0xFF - ((backgroundColor >> 8) & 0xff)); - bgB = (byte) (0xFF - (backgroundColor & 0xff)); - } else { - bgR = (byte) (backgroundColor >> 16); - bgG = (byte) ((backgroundColor >> 8) & 0xff); - bgB = (byte) (backgroundColor & 0xff); - } + int bgR, bgG, bgB; + /*if (drawMode == MODE_SUB) { + bgR = (int) (0xFF - (backgroundColor >> 16)); + bgG = (int) (0xFF - ((backgroundColor >> 8) & 0xff)); + bgB = (int) (0xFF - (backgroundColor & 0xff)); + } else {*/ + bgR = (int) (backgroundColor >> 16); + bgG = (int) ((backgroundColor >> 8) & 0xff); + bgB = (int) (backgroundColor & 0xff); + //} + Graphics2D gr = image.createGraphics(); + gr.setBackground(new Color(bgR, bgG, bgB)); + gr.clearRect(0, 0, width, height); + /* int[] c = new int[]{bgR, bgG, bgB}; for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { grid.setPixel(i, j, c); } } + */ } public BufferedImage getImage() { return this.image; } - private static long colNum(String col) { - return Long.parseLong(col, 16); - //return Integer.parseInt(col.substring(0,2), 16) << 16 | Integer.parseInt(col.substring(2,4), 16) << 8 | Integer.parseInt(col.substring(4,6), 16); - } - - /* - public Object clone() { - return new ymageMatrix(this); - } - */ public int getWidth() { return width; } @@ -123,25 +114,38 @@ public class ymageMatrix /*implements Cloneable*/ { } public void setColor(long c) { - defaultCol[0] = (int) (c >> 16); - defaultCol[1] = (int) ((c >> 8) & 0xff); - defaultCol[2] = (int) (c & 0xff); + if (this.defaultMode == MODE_SUB) { + int r = (int) (c >> 16); + int g = (int) ((c >> 8) & 0xff); + int b = (int) (c & 0xff); + defaultCol[0] = (g + b) / 2; + defaultCol[1] = (r + b) / 2; + defaultCol[2] = (r + g) / 2; + } else { + defaultCol[0] = (int) (c >> 16); + defaultCol[1] = (int) ((c >> 8) & 0xff); + defaultCol[2] = (int) (c & 0xff); + } + } public void setColor(String s) { - setColor(colNum(s)); - } - /* - public void setMode(byte m) { - this.defaultMode = m; + setColor(Long.parseLong(s, 16)); } - */ + public void plot(int x, int y) { if ((x < 0) || (x >= width)) return; if ((y < 0) || (y >= height)) return; //int n = 3 * (x + y * width); if (this.defaultMode == MODE_REPLACE) { grid.setPixel(x, y, defaultCol); + } else if (this.defaultMode == MODE_ADD) { + int[] c = new int[3]; + c = grid.getPixel(x, y, c); + int r = (0xff & c[0]) + defaultCol[0]; if (r > 255) r = 255; + int g = (0xff & c[1]) + defaultCol[1]; if (g > 255) g = 255; + int b = (0xff & c[2]) + defaultCol[2]; if (b > 255) b = 255; + grid.setPixel(x, y, new int[]{r, g, b}); } else if (this.defaultMode == MODE_SUB) { int[] c = new int[3]; c = grid.getPixel(x, y, c); @@ -311,25 +315,16 @@ public class ymageMatrix /*implements Cloneable*/ { } public static void demoPaint(ymageMatrix m) { - m.setColor(SUBTRACTIVE_CYAN); - m.line(0, 10, 100, 10); ymageToolPrint.print(m, 0, 5, 0, "Cyan", -1); - m.line(50, 0, 50, 300); - m.setColor(SUBTRACTIVE_MAGENTA); - m.line(0, 30, 100, 30); ymageToolPrint.print(m, 0, 25, 0, "Magenta", -1); - m.line(55, 0, 55, 300); - m.setColor(SUBTRACTIVE_YELLOW); - m.line(0, 50, 100, 50); ymageToolPrint.print(m, 0, 45, 0, "Yellow", -1); - m.line(60, 0, 60, 300); - m.setColor(SUBTRACTIVE_BLACK); - m.line(0, 70, 100, 70); ymageToolPrint.print(m, 0, 65, 0, "Black", -1); + m.setColor(GREY); + m.line(0, 70, 100, 70); ymageToolPrint.print(m, 0, 65, 0, "Grey", -1); m.line(65, 0, 65, 300); - m.setColor(SUBTRACTIVE_RED); + m.setColor(RED); m.line(0, 90, 100, 90); ymageToolPrint.print(m, 0, 85, 0, "Red", -1); m.line(70, 0, 70, 300); - m.setColor(SUBTRACTIVE_GREEN); + m.setColor(GREEN); m.line(0, 110, 100, 110); ymageToolPrint.print(m, 0, 105, 0, "Green", -1); m.line(75, 0, 75, 300); - m.setColor(SUBTRACTIVE_BLUE); + m.setColor(BLUE); m.line(0, 130, 100, 130); ymageToolPrint.print(m, 0, 125, 0, "Blue", -1); m.line(80, 0, 80, 300); } @@ -338,13 +333,14 @@ public class ymageMatrix /*implements Cloneable*/ { // go into headless awt mode System.setProperty("java.awt.headless", "true"); - ymageMatrix m = new ymageMatrix(200, 300, MODE_SUB, SUBTRACTIVE_WHITE); + ymageMatrix m = new ymageMatrix(200, 300, MODE_SUB, "FFFFFF"); demoPaint(m); + File file = new File("/Users/admin/Desktop/testimage.png"); try { - ImageIO.write(m.getImage(), "png", new java.io.File(args[0])); - } catch (java.io.IOException e) { - e.printStackTrace(); - } + FileOutputStream fos = new FileOutputStream(file); + ImageIO.write(m.getImage(), "png", fos); + fos.close(); + } catch (IOException e) {} // open file automatically, works only on Mac OS X /*