Benutzung von diagram-Java-Applets
Wie alle Java-Applets werden auch Diagramm-Applets in die JavaScript-Objekthierarchie eingebaut. Sie lassen sich als document.applets[#] ansprechen oder unter ihrem Namen. (siehe Objektreferenz Applets)


Funktionen von diagram-Applets
FunktionBedeutung
Info
getAppletInfo() gibt den String "DROEPPEZ diagram v1.0 (c) 2001 Ulrich Kritzner" zurück
Einstellungen
diagramBGColor(r,g,b) setzt die Farbe des Hintergrundes
r: Rotanteil (0-255)
g: Grünanteil (0-255)
b: Blauanteil (0-255)
diagramBorderColor(r,g,b) setzt die Farbe der Randes
r: Rotanteil (0-255)
g: Grünanteil (0-255)
b: Blauanteil (0-255)
diagramFGColor(r,g,b) setzt die Farbe der Nullinie
r: Rotanteil (0-255)
g: Grünanteil (0-255)
b: Blauanteil (0-255)
Diagramm-Werte
diagramInit(num) bereitet das Diagramm auf die Aufnahme von num Werten vor
diagramAdd(value,r,g,b) fügt einen Wert hinzu und setzt die Darstellungsfarbe
value: Wert
r: Rotanteil (0-255)
g: Grünanteil (0-255)
b: Blauanteil (0-255)
Diagramm-Einzelbalken
diagramHorzBars() horizontale Balken
diagramVertBars() vertikale Balken
diagramCircleBars() kreisförmig angeordnete Balken
Diagramm-Absolutwert-Gesamtbalken
diagramHorzAbs() horizontale Balken
diagramVertAbs() vertikale Balken
diagramCircleAbs() kreisförmig angeordnete Balken


Quelltext von diagram.java
/*+---------------------------------------------------------+
  | DROEPPEZ Diagram Version 1.0                            |
  | (c) 2001 Ulrich Kritzner                                |
  +---------------------------------------------------------+*/

import java.lang.*;
import java.applet.*;
import java.awt.*;
import java.net.*;

public class diagram
       extends Applet
{
  Dimension dim=null;
  Image img=null;
  Graphics ig=null;
  Color colors[]=null;
  Color bgcolor=Color.white;
  Color bordercolor=Color.white;
  Color fgcolor=Color.black;
  double values[]=null;
  double maxvalue=0;
  double minvalue=0;
  double addvalue=0;
  int count=0;
  int maxcount=0;

/* Info ----------------------------------------------- */

  public String getAppletInfo()
  /* stellt sich vor */
  {
    return "DROEPPEZ diagram v1.0 (c) 2001 Ulrich Kritzner";
  }
  
/* Appletsteuerung ------------------------------------ */

  public void init()
  /* einmalige Initialisierung */
  {
    dim=getSize();
    img=createImage(dim.width,dim.height);
    openCanvas();
    if (ig!=null)
      ig.drawString(getAppletInfo(),5,20);
    closeCanvas();
    System.out.println(getAppletInfo());
  }

  public void destroy()
  /* Aufraeumen */
  {
    closeCanvas();
    if (img!=null)
      img.flush();
    img=null;
  }

/* Anzeige -------------------------------------------- */

  public void paint(Graphics g)
  {
    if (img!=null)
      g.drawImage(img,0,0,this);
  }

/* Leinwand ------------------------------------------- */

  public void openCanvas()
  {
    if (img!=null)
      if (ig==null)
        ig=img.getGraphics();
  }

  public void closeCanvas()
  {
    Graphics g;
    if (img!=null)
    {
      if (ig!=null)
        ig.dispose();
      ig=null;
    }
    g=getGraphics();
    paint(g);
    g.dispose();
  }

  public int canvasWidth()
  {
    return dim.width;
  }

  public int canvasHeight()
  {
    return dim.height;
  }

/* Diagramm ------------------------------------------- */

  public void diagramInit(int num)
  {
    count=0;
    maxcount=num;
    minvalue=0;
    maxvalue=0;
    addvalue=0;
    colors=new Color[num];
    values=new double[num];
    if ((colors==null)||(values==null))
    {
      maxcount=0;
      colors=null;
      values=null;
    }
  }

  public void diagramBGColor(int r,int g,int b)
  {
    bgcolor=new Color(r,g,b);
  }

  public void diagramBorderColor(int r,int g,int b)
  {
    bordercolor=new Color(r,g,b);
  }

  public void diagramFGColor(int r,int g,int b)
  {
    fgcolor=new Color(r,g,b);
  }

  public void diagramAdd(double value,int r,int g,int b)
  {
    if (count<maxcount)
    {
      colors[count]=new Color(r,g,b);
      values[count]=value;
      if (value>maxvalue)
        maxvalue=value;
      if (value<minvalue)
        minvalue=value;
      addvalue+=Math.abs(value);
      count++;
    }
  }

  public void diagramHorzBars()
  {
    openCanvas();
    if (ig!=null)
    {
      double xa,xe,ya,ye;
      double yf=(double)(dim.width-10)/(maxvalue-minvalue);
      double xf=(double)(dim.height-10)/(count);
      double y=5-minvalue*yf;
      ig.setColor(bgcolor);
      ig.fillRect(0,0,dim.width,dim.height);
      ig.setColor(fgcolor);
      ig.drawLine((int)y,0,(int)y,dim.height);
      for (int i=0;i<count;i++)
      {
	xa=i*xf+6;
	xe=(i+1)*xf+5;
	ya=y;
	ye=y;
	if (values[i]<0)
	  ya=values[i]*yf+y;
	if (values[i]>0)
	  ye=values[i]*yf+y;
        ig.setColor(colors[i]);
	ig.fillRect((int)ya,(int)xa,(int)ye-(int)ya,(int)xe-(int)xa);
      }
    }
    closeCanvas();
  }

  public void diagramVertBars()
  {
    openCanvas();
    if (ig!=null)
    {
      double xa,xe,ya,ye;
      double yf=(double)(dim.height-10)/(maxvalue-minvalue);
      double xf=(double)(dim.width-10)/(count);
      double y=maxvalue*yf+5;
      ig.setColor(bgcolor);
      ig.fillRect(0,0,dim.width,dim.height);
      ig.setColor(fgcolor);
      ig.drawLine(0,(int)y,dim.width,(int)y);
      for (int i=0;i<count;i++)
      {
	xa=i*xf+6;
	xe=(i+1)*xf+5;
	ya=y;
	ye=y;
	if (values[i]>0)
	  ya=y-values[i]*yf;
	if (values[i]<0)
	  ye=y-values[i]*yf;
        ig.setColor(colors[i]);
	ig.fillRect((int)xa,(int)ya,(int)xe-(int)xa,(int)ye-(int)ya);
      }
    }
    closeCanvas();
  }

  public void diagramCircleBars()
  {
    openCanvas();
    if (ig!=null)
    {
      double minimum=minvalue+(minvalue-maxvalue)/16;
      double x=dim.width/2;
      double y=dim.height/2;
      double rax=(dim.width-10)/2;
      double ray=(dim.height-10)/2;
      double rixsqr=0;
      double riysqr=0;
      rixsqr=(double)(rax*rax)/(1.0-((double)maxvalue/minimum));
      riysqr=(double)(ray*ray)/(1.0-((double)maxvalue/minimum));
      double rix=Math.sqrt(rixsqr);
      double riy=Math.sqrt(riysqr);
      double fif=(double)360.0/count;
      double rx,ry;
      ig.setColor(bordercolor);
      ig.fillRect(0,0,dim.width,dim.height);
      ig.setColor(bgcolor);
      ig.fillOval(0,0,dim.width,dim.height);
      for (int i=0;i<count;i++)
      {
        if (values[i]>0)
	{
          rx=Math.sqrt(rixsqr*(1-(values[i]/minimum)));
          ry=Math.sqrt(riysqr*(1-(values[i]/minimum)));
          ig.setColor(colors[i]);
          ig.fillArc((int)(x-rx),(int)(y-ry),(int)(rx*2),(int)(ry*2),(int)(i*fif)+1,(int)fif-2);
	}
      }
      ig.setColor(bgcolor);
      ig.fillOval((int)(x-rix),(int)(y-riy),(int)(rix*2),(int)(riy*2));
      for (int i=0;i<count;i++)
      {
        if (values[i]<0)
	{
          rx=Math.sqrt(rixsqr*(1-(values[i]/minimum)));
          ry=Math.sqrt(riysqr*(1-(values[i]/minimum)));
          ig.setColor(colors[i]);
          ig.fillArc((int)(x-rix),(int)(y-riy),(int)(rix*2),(int)(riy*2),(int)(i*fif)+1,(int)fif-2);
          ig.setColor(bgcolor);
          ig.fillArc((int)(x-rx),(int)(y-ry),(int)(rx*2),(int)(ry*2),(int)(i*fif),(int)fif);
	}
      }
      ig.setColor(fgcolor);
      ig.drawOval((int)(x-rix),(int)(y-riy),(int)(rix*2),(int)(riy*2));
      rx=Math.sqrt(rixsqr*(1-(minvalue/minimum)))-5;
      ry=Math.sqrt(riysqr*(1-(minvalue/minimum)))-5;
      ig.setColor(bordercolor);
      ig.fillOval((int)(x-rx),(int)(y-ry),(int)(rx*2),(int)(ry*2));
    }
    closeCanvas();
  }

  public void diagramHorzAbs()
  {
    openCanvas();
    if (ig!=null)
    {
      double xf=(double)(dim.width-10)/addvalue;
      double x=5,xp;
      ig.setColor(bgcolor);
      ig.fillRect(0,0,dim.width,dim.height);
      for (int i=0;i<count;i++)
      {
        xp=Math.abs(values[i]*xf);
        ig.setColor(colors[i]);
	ig.fillRect((int)x,5,dim.width-5-(int)x,dim.height-10);
	x+=xp;
      }
    }
    closeCanvas();
  }

  public void diagramVertAbs()
  {
    openCanvas();
    if (ig!=null)
    {
      double xf=(double)(dim.height-10)/addvalue;
      double x=5,xp;
      ig.setColor(bgcolor);
      ig.fillRect(0,0,dim.width,dim.height);
      for (int i=count-1;i>=0;i--)
      {
        xp=Math.abs(values[i]*xf);
        ig.setColor(colors[i]);
	ig.fillRect(5,(int)x,dim.width-10,dim.height-5-(int)x);
	x+=xp;
      }
    }
    closeCanvas();
  }

  public void diagramCircleAbs()
  {
    openCanvas();
    if (ig!=null)
    {
      double fif=(double)360.0/addvalue;
      double fi=0,fia,fig;
      ig.setColor(bordercolor);
      ig.fillRect(0,0,dim.width,dim.height);
      ig.setColor(bgcolor);
      ig.fillOval(0,0,dim.width,dim.height);
      for (int i=0;i<count;i++)
      {
        fia=Math.abs(values[i]*fif);
	fig=fia+3;
        ig.setColor(colors[i]);
	ig.fillArc(5,5,dim.width-10,dim.height-10,(int)fi,(int)fig);
	fi+=fia;
      }
      for (int i=0;i<count;i++)
      {
        fia=Math.abs(values[i]*fif);
        ig.setColor(colors[i]);
	ig.fillArc(5,5,dim.width-10,dim.height-10,(int)fi,(int)fia);
	fi+=fia;
      }
      ig.setColor(bgcolor);
      ig.fillOval(dim.width/4,dim.height/4,dim.width/2,dim.height/2);
      ig.setColor(bordercolor);
      ig.fillOval(dim.width/4+5,dim.height/4+5,dim.width/2-10,dim.height/2-10);
    }
    closeCanvas();
  }
}