GradientPaint durch MultipleGradientPaint ersetzt

This commit is contained in:
ngb
2022-08-01 10:08:11 +02:00
parent 537527e525
commit 782ce33540
4 changed files with 27 additions and 26 deletions

View File

@@ -1,9 +1,6 @@
package schule.ngb.zm; package schule.ngb.zm;
import java.awt.GradientPaint; import java.awt.*;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Stroke;
/** /**
* Basisimplementierung der {@link Strokeable} und {@link Fillable} APIs. * Basisimplementierung der {@link Strokeable} und {@link Fillable} APIs.
@@ -51,7 +48,7 @@ public abstract class BasicDrawable extends Constants implements Strokeable, Fil
* Der aktuelle Farbverlauf des Objektes oder {@code null}, wenn es keinen * Der aktuelle Farbverlauf des Objektes oder {@code null}, wenn es keinen
* Farbverlauf besitzt. * Farbverlauf besitzt.
*/ */
protected GradientPaint fill = null; protected MultipleGradientPaint fill = null;
// Implementierung Drawable Interface // Implementierung Drawable Interface
@@ -98,11 +95,14 @@ public abstract class BasicDrawable extends Constants implements Strokeable, Fil
*/ */
@Override @Override
public void setFill( Paint fill ) { public void setFill( Paint fill ) {
if( fill instanceof Color ) { if( fill == null ) {
this.setFillColor((Color) fill); this.fill = null;
} else if( fill instanceof GradientPaint ) { } else if( fill instanceof Color ) {
this.fillColor = ((Color) fill);
this.fill = null;
} else if( fill instanceof MultipleGradientPaint ) {
this.fillColor = null; this.fillColor = null;
this.fill = (GradientPaint) fill; this.fill = (MultipleGradientPaint) fill;
} }
} }
@@ -157,7 +157,7 @@ public abstract class BasicDrawable extends Constants implements Strokeable, Fil
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public GradientPaint getGradient() { public MultipleGradientPaint getGradient() {
return fill; return fill;
} }

View File

@@ -2,9 +2,7 @@ package schule.ngb.zm;
import schule.ngb.zm.shapes.Shape; import schule.ngb.zm.shapes.Shape;
import java.awt.GradientPaint; import java.awt.*;
import java.awt.Paint;
import java.awt.RadialGradientPaint;
/** /**
* {@link Drawable} Klassen, die mit einer Füllung versehen werden können. * {@link Drawable} Klassen, die mit einer Füllung versehen werden können.
@@ -78,7 +76,7 @@ public interface Fillable extends Drawable {
*/ */
default boolean hasGradient() { default boolean hasGradient() {
Paint fill = getFill(); Paint fill = getFill();
return fill instanceof GradientPaint; return fill instanceof MultipleGradientPaint;
} }
/** /**
@@ -195,9 +193,9 @@ public interface Fillable extends Drawable {
* *
* @return Der aktuelle Farbverlauf oder {@code null}. * @return Der aktuelle Farbverlauf oder {@code null}.
*/ */
default GradientPaint getGradient() { default MultipleGradientPaint getGradient() {
if( hasGradient() ) { if( hasGradient() ) {
return (GradientPaint) getFill(); return (MultipleGradientPaint) getFill();
} else { } else {
return null; return null;
} }
@@ -216,9 +214,11 @@ public interface Fillable extends Drawable {
* @param to Farbe am Endpunkt. * @param to Farbe am Endpunkt.
*/ */
default void setGradient( double fromX, double fromY, Color from, double toX, double toY, Color to ) { default void setGradient( double fromX, double fromY, Color from, double toX, double toY, Color to ) {
setFill(new GradientPaint( setFill(new LinearGradientPaint(
(float) fromX, (float) fromY, from.getJavaColor(), (float) fromX, (float) fromY,
(float) toX, (float) toY, to.getJavaColor() (float) toX, (float) toY,
new float[]{0f, 1f},
new java.awt.Color[]{from.getJavaColor(), to.getJavaColor()}
)); ));
} }

View File

@@ -617,8 +617,7 @@ public class DrawingLayer extends Layer implements Strokeable, Fillable {
} }
protected void drawShape( Shape shape ) { protected void drawShape( Shape shape ) {
if( shapeDelegate.getStrokeColor() != null && shapeDelegate.getStrokeColor().getAlpha() > 0 if( shapeDelegate.hasStroke() ) {
&& shapeDelegate.getStrokeWeight() > 0.0 ) {
drawing.setColor(shapeDelegate.getStrokeColor().getJavaColor()); drawing.setColor(shapeDelegate.getStrokeColor().getJavaColor());
drawing.setStroke(shapeDelegate.getStroke()); drawing.setStroke(shapeDelegate.getStroke());
drawing.draw(shape); drawing.draw(shape);
@@ -783,6 +782,10 @@ public class DrawingLayer extends Layer implements Strokeable, Fillable {
drawing.rotate(Math.toRadians(pAngle)); drawing.rotate(Math.toRadians(pAngle));
} }
public void rotate( double pAngle, double centerX, double centerY ) {
drawing.rotate(Math.toRadians(pAngle), centerX, centerY);
}
public void shear( double dx, double dy ) { public void shear( double dx, double dy ) {
drawing.shear(dx, dy); drawing.shear(dx, dy);
} }

View File

@@ -1,13 +1,11 @@
package schule.ngb.zm.layers; package schule.ngb.zm.layers;
import schule.ngb.zm.*; import schule.ngb.zm.*;
import schule.ngb.zm.Color;
import schule.ngb.zm.Fillable; import schule.ngb.zm.Fillable;
import schule.ngb.zm.Strokeable; import schule.ngb.zm.Strokeable;
import java.awt.GradientPaint; import java.awt.*;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Stroke;
import java.awt.geom.AffineTransform; import java.awt.geom.AffineTransform;
import java.awt.geom.Path2D; import java.awt.geom.Path2D;
import java.util.ArrayList; import java.util.ArrayList;
@@ -292,7 +290,7 @@ public class TurtleLayer extends Layer implements Strokeable, Fillable {
} }
@Override @Override
public GradientPaint getGradient() { public MultipleGradientPaint getGradient() {
return mainTurtle.getGradient(); return mainTurtle.getGradient();
} }