Weitere JavaDoc Kommentare

This commit is contained in:
ngb 2022-01-03 17:27:01 +01:00
parent 83a62de99a
commit 97cc07a184
1 changed files with 76 additions and 13 deletions

View File

@ -1,64 +1,115 @@
package schule.ngb.zm;
/**
* Repräsentiert eine Farbe in der Zeichenmaschine.
* <p>
* Farben bestehen entweder aus einem Grauwert (zwischen <code>0</code> und
* <code>255</code>) oder einem Rot-, Grün- und Blauanteil (jeweils zwischen
* <code>0</code> und <code>255</code>).
* <p>
* Eine Farbe hat außerdem einen Transparenzwert zwischen <code>0</code>
* (unsichtbar) und <code>255</code> (deckend).
*/
public class Color {
//@formatter:off
public static final Color BLACK = new Color(java.awt.Color.BLACK);
public static final Color WHITE = new Color(java.awt.Color.WHITE);
public static final Color GRAY = new Color(java.awt.Color.GRAY);
public static final Color DARKGRAY = new Color(java.awt.Color.DARK_GRAY);
public static final Color LIGHTGRAY = new Color(java.awt.Color.LIGHT_GRAY);
public static final Color RED = new Color(java.awt.Color.RED);
public static final Color GREEN = new Color(java.awt.Color.GREEN);
public static final Color BLUE = new Color(java.awt.Color.BLUE);
public static final Color YELLOW = new Color(java.awt.Color.YELLOW);
public static final Color ORANGE = new Color(java.awt.Color.ORANGE);
public static final Color CYAN = new Color(java.awt.Color.CYAN);
public static final Color MAGENTA = new Color(java.awt.Color.MAGENTA);
public static final Color PINK = new Color(java.awt.Color.PINK);
public static final Color HGGREEN = new Color(0, 165, 81);
public static final Color HGRED = new Color(151, 54, 60);
//@formatter:on
/**
* RGBA Wert der Farbe als Integer kodiert.
*/
private int rgba;
/**
* Erstellt eine leere (schwarze) Farbe.
*/
public Color() {
rgba = 0xFF000000;
}
/**
* Erstellt eine graue Farbe entsprechend des Grauwertes <var>gray</var>.
*
* @param gray Ein Grauwert zwischen <code>0</code> und <code>255</code>.
*/
public Color( int gray ) {
this(gray, gray, gray, 255);
}
/**
* Erstellt eine graue Farbe entsprechend des Grauwertes <var>gray</var> und
* des Transparentwertes <var>alpha</var>.
*
* @param gray Ein Grauwert zwischen <code>0</code> und <code>255</code>.
*/
public Color( int gray, int alpha ) {
this(gray, gray, gray, alpha);
}
/**
* Erstellt eine Farbe. Die Parameter <var>red</var>, <var>green</var> und
* <var>blue</var> geben die Rot-, Grün- und Blauanteile der Farbe. Die Werte
* liegen zwischen <code>0</code> und <code>255</code>.
*
* @param red Rotwert zwischen <code>0</code> und <code>255</code>.
* @param green Grünwert zwischen <code>0</code> und <code>255</code>.
* @param blue Blauwert zwischen <code>0</code> und <code>255</code>.
* @return Ein passendes Farbobjekt.
*/
public Color( int red, int green, int blue ) {
this(red, green, blue, 255);
}
/**
* Erstellt eine Farbe. Die Parameter <var>red</var>, <var>green</var> und
* <var>blue</var> geben die Rot-, Grün- und Blauanteile der Farbe. Die Werte
* liegen zwischen <code>0</code> und <code>255</code>.
* <var>alpha</var> gibt den den Transparentwert an (auch zwischen
* code>0</code> und <code>255</code>), wobei
* <code>0</code> komplett durchsichtig ist und <code>255</code> komplett
* deckend.
*
* @param red Rotwert zwischen <code>0</code> und <code>255</code>.
* @param green Grünwert zwischen <code>0</code> und <code>255</code>.
* @param blue Blauwert zwischen <code>0</code> und <code>255</code>.
* @param alpha Transparentwert zwischen <code>0</code> und <code>255</code>.
* @return Ein passendes Farbobjekt.
*/
public Color( int red, int green, int blue, int alpha ) {
rgba = (alpha << 24) | (red << 16) | (green << 8) | blue;
}
/**
* Erstellt eine Farbe als Kopie von <var>color</var>.
* @param color
*/
public Color( Color color ) {
this(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha());
}
/**
* Erstellt eine Farbe als Kopie von <var>color</var> und ersetzt den
* Transparentwert durch <var>alpha</var>.
* @param color
* @param alpha
*/
public Color( Color color, int alpha ) {
this(color.getRed(), color.getGreen(), color.getBlue(), alpha);
}
@ -71,12 +122,24 @@ public class Color {
this(color.getRed(), color.getGreen(), color.getBlue(), alpha);
}
/**
* Erzeugt eine Farbe aus einem kodierten RGBA Integer-Wert.
* @param rgba
* @return
*/
public static Color parseRGB( int rgba ) {
Color c = new Color();
c.rgba = rgba;
return c;
}
/**
* Erzeugt eine Farbe aus einem hexadezimalen Code. Der Hexcode kann
* sechs- oder achtstellig sein (wenn ein Transparentwert vorhanden ist).
* Dem Code kann ein <code>#</code> Zeichen vorangestellt sein.
* @param hexcode
* @return
*/
public static Color parseHexcode( String hexcode ) {
if( hexcode.startsWith("#") ) {
hexcode = hexcode.substring(1);