import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
+import org.simantics.scenegraph.g2d.G2DRenderingHints;
+import org.simantics.scenegraph.g2d.color.ColorFilter;
+import org.simantics.scenegraph.g2d.color.Graphics2DWithColorFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Override
public void paint(Graphics2D g) {
+ ColorFilter colorFilter = (ColorFilter) g.getRenderingHint(G2DRenderingHints.KEY_COLOR_FILTER);
+
// Quality rendering requested, do not render from cache
//QualityHints.HIGH_QUALITY_HINTS.setQuality(g);
if (g.getRenderingHint(RenderingHints.KEY_RENDERING) == RenderingHints.VALUE_RENDER_QUALITY)
{
try {
- source.render(g);
+ if (colorFilter != null) {
+ source.render(new Graphics2DWithColorFilter(g, colorFilter));
+ } else {
+ source.render(g);
+ }
} catch (Exception e) {
// NOTE: Catching Exception instead of SVGException due to an
// NPE when encountering invalid color SVG definitions (e.g.
Graphics2D g2d = (Graphics2D) g.create();
setupSourceRender(g2d);
try {
- source.render(g2d);
+ if (colorFilter != null) {
+ source.render(new Graphics2DWithColorFilter(g, colorFilter));
+ } else {
+ source.render(g);
+ }
} catch (Exception e) {
// NOTE: Catching Exception instead of SVGException due to an
// NPE when encountering invalid color SVG definitions (e.g.
java.awt.image.BufferedImage image;
//int widMargin, heiMargin;
int wid, hei;
+ private ColorFilter previousColorFilter = null;
BufferedRaster(double resolution) {
super(resolution);
// heiMargin = (int) (hei * resolution * (MARGIN_PERCENT/100)) +1;
}
- synchronized java.awt.image.BufferedImage getOrCreate()
+ synchronized java.awt.image.BufferedImage getOrCreate(ColorFilter colorFilter)
{
+ if (!Objects.equals(colorFilter, previousColorFilter)) {
+ previousColorFilter = colorFilter;
+ image = null;
+ }
if (image!=null) return image;
image = new java.awt.image.BufferedImage(
(wid+0*2+1),
target.scale(resolution, resolution);
target.translate(-imageBounds.getMinX(), -imageBounds.getMinY());
try {
- source.render(target);
+ if (colorFilter != null) {
+ source.render(new Graphics2DWithColorFilter(target, colorFilter));
+ } else {
+ source.render(target);
+ }
} catch (Exception e) {
// TODO Auto-generated catch block
// NOTE: Catching Exception instead of SVGException due to an
}
public void paint(Graphics2D g) {
- java.awt.image.BufferedImage image = getOrCreate();
+ ColorFilter colorFilter = (ColorFilter) g.getRenderingHint(G2DRenderingHints.KEY_COLOR_FILTER);
+ java.awt.image.BufferedImage image = getOrCreate(colorFilter);
if (image==null)
{
try {
- source.render(g);
+ source.render(new Graphics2DWithColorFilter(g, colorFilter));
} catch (Exception e) {
// TODO Auto-generated catch block
// NOTE: Catching Exception instead of SVGException due to an