mirror of
https://github.com/jneug/zeichenmaschine.git
synced 2026-04-14 06:33:34 +02:00
Bug: Linearer Farbverlauf wurde nicht korrekt berechnet
This commit is contained in:
@@ -1,13 +1,8 @@
|
|||||||
package schule.ngb.zm;
|
package schule.ngb.zm;
|
||||||
|
|
||||||
import schule.ngb.zm.shapes.Shape;
|
|
||||||
|
|
||||||
import java.awt.GradientPaint;
|
import java.awt.GradientPaint;
|
||||||
import java.awt.MultipleGradientPaint;
|
|
||||||
import java.awt.Paint;
|
import java.awt.Paint;
|
||||||
import java.awt.RadialGradientPaint;
|
import java.awt.RadialGradientPaint;
|
||||||
import java.awt.geom.Point2D;
|
|
||||||
import java.awt.geom.Rectangle2D;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Eine Ebene, die nur aus einer Farbe (oder einem Farbverlauf) besteht.
|
* Eine Ebene, die nur aus einer Farbe (oder einem Farbverlauf) besteht.
|
||||||
@@ -16,6 +11,7 @@ import java.awt.geom.Rectangle2D;
|
|||||||
* Hintergundfarbe für eine Szene dienen, oder als halbtransparente "Abdeckung",
|
* Hintergundfarbe für eine Szene dienen, oder als halbtransparente "Abdeckung",
|
||||||
* wenn ein {@code ColorLayer} über den anderen Ebenen eingefügt wird.
|
* wenn ein {@code ColorLayer} über den anderen Ebenen eingefügt wird.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings( "unused" )
|
||||||
public class ColorLayer extends Layer {
|
public class ColorLayer extends Layer {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,6 +26,7 @@ public class ColorLayer extends Layer {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Erstellt eine neue Farbebene mit der angegebenen Farbe.
|
* Erstellt eine neue Farbebene mit der angegebenen Farbe.
|
||||||
|
*
|
||||||
* @param color Die Hintergrundfarbe.
|
* @param color Die Hintergrundfarbe.
|
||||||
*/
|
*/
|
||||||
public ColorLayer( Color color ) {
|
public ColorLayer( Color color ) {
|
||||||
@@ -40,6 +37,7 @@ public class ColorLayer extends Layer {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Erstellt eine neue Farbebene mit der angegebenen Größe und Farbe.
|
* Erstellt eine neue Farbebene mit der angegebenen Größe und Farbe.
|
||||||
|
*
|
||||||
* @param width Breite der Ebene.
|
* @param width Breite der Ebene.
|
||||||
* @param height Höhe der Ebene.
|
* @param height Höhe der Ebene.
|
||||||
* @param color Die Hintergrundfarbe.
|
* @param color Die Hintergrundfarbe.
|
||||||
@@ -62,6 +60,7 @@ public class ColorLayer extends Layer {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gibt die Hintergrundfarbe der Ebene zurück.
|
* Gibt die Hintergrundfarbe der Ebene zurück.
|
||||||
|
*
|
||||||
* @return Die aktuelle Hintergrundfarbe.
|
* @return Die aktuelle Hintergrundfarbe.
|
||||||
*/
|
*/
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
@@ -70,6 +69,7 @@ public class ColorLayer extends Layer {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Setzt die Farbe der Ebene neu.
|
* Setzt die Farbe der Ebene neu.
|
||||||
|
*
|
||||||
* @param color Die neue Hintergrundfarbe.
|
* @param color Die neue Hintergrundfarbe.
|
||||||
*/
|
*/
|
||||||
public void setColor( Color color ) {
|
public void setColor( Color color ) {
|
||||||
@@ -95,15 +95,15 @@ public class ColorLayer extends Layer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setGradient( Color from, Color to, Options.Direction dir ) {
|
public void setGradient( Color from, Color to, Options.Direction dir ) {
|
||||||
double halfW = getWidth()*.5;
|
double halfW = getWidth() * .5;
|
||||||
double halfH = getHeight()*.5;
|
double halfH = getHeight() * .5;
|
||||||
|
|
||||||
Options.Direction inv = dir.inverse();
|
Options.Direction inv = dir.inverse();
|
||||||
int fromX = (int)(halfW + inv.x * halfW);
|
int fromX = (int) (halfW + inv.x * halfW);
|
||||||
int fromY = (int)(halfH + inv.x * halfH);
|
int fromY = (int) (halfH + inv.y * halfH);
|
||||||
|
|
||||||
int toX = (int)(halfW + dir.x * halfW);
|
int toX = (int) (halfW + dir.x * halfW);
|
||||||
int toY = (int)(halfH + dir.x * halfH);
|
int toY = (int) (halfH + dir.y * halfH);
|
||||||
|
|
||||||
setGradient(fromX, fromY, from, toX, toY, to);
|
setGradient(fromX, fromY, from, toX, toY, to);
|
||||||
}
|
}
|
||||||
@@ -111,20 +111,20 @@ public class ColorLayer extends Layer {
|
|||||||
public void setGradient( double fromX, double fromY, Color from, double toX, double toY, Color to ) {
|
public void setGradient( double fromX, double fromY, Color from, double toX, double toY, Color to ) {
|
||||||
this.color = from;
|
this.color = from;
|
||||||
background = new GradientPaint(
|
background = new GradientPaint(
|
||||||
(float)fromX, (float)fromY, from.getJavaColor(),
|
(float) fromX, (float) fromY, from.getJavaColor(),
|
||||||
(float)toX, (float)toY, to.getJavaColor()
|
(float) toX, (float) toY, to.getJavaColor()
|
||||||
);
|
);
|
||||||
clear();
|
clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGradient( Color from, Color to ) {
|
public void setGradient( Color from, Color to ) {
|
||||||
setGradient(getWidth()*.5, getHeight()*.5, Math.min(getWidth()*.5, getHeight()*.5), from, to);
|
setGradient(getWidth() * .5, getHeight() * .5, Math.min(getWidth() * .5, getHeight() * .5), from, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGradient( double centerX, double centerY, double radius, Color from, Color to ) {
|
public void setGradient( double centerX, double centerY, double radius, Color from, Color to ) {
|
||||||
this.color = from;
|
this.color = from;
|
||||||
background = new RadialGradientPaint(
|
background = new RadialGradientPaint(
|
||||||
(float)centerX, (float)centerY, (float)radius,
|
(float) centerX, (float) centerY, (float) radius,
|
||||||
new float[]{0f, 1f},
|
new float[]{0f, 1f},
|
||||||
new java.awt.Color[]{from.getJavaColor(), to.getJavaColor()});
|
new java.awt.Color[]{from.getJavaColor(), to.getJavaColor()});
|
||||||
clear();
|
clear();
|
||||||
|
|||||||
Reference in New Issue
Block a user