1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.scenegraph.utils;
\r
14 import java.awt.Graphics2D;
\r
15 import java.awt.RenderingHints;
\r
18 * Rendering quality hints
\r
20 * @author Toni Kalajainen
\r
22 public class QualityHints {
\r
24 public static final QualityHints HIGH_QUALITY_HINTS =
\r
25 new QualityHints(RenderingHints.VALUE_RENDER_QUALITY,
\r
26 RenderingHints.VALUE_ANTIALIAS_ON,
\r
27 RenderingHints.VALUE_TEXT_ANTIALIAS_ON,
\r
28 RenderingHints.VALUE_INTERPOLATION_BICUBIC);
\r
30 public static final QualityHints GOOD_QUALITY_HINTS =
\r
31 new QualityHints(RenderingHints.VALUE_RENDER_DEFAULT,
\r
32 RenderingHints.VALUE_ANTIALIAS_ON,
\r
33 RenderingHints.VALUE_TEXT_ANTIALIAS_ON,
\r
34 RenderingHints.VALUE_INTERPOLATION_BILINEAR);
\r
36 public static final QualityHints LOW_QUALITY_HINTS =
\r
37 new QualityHints(RenderingHints.VALUE_RENDER_SPEED,
\r
38 RenderingHints.VALUE_ANTIALIAS_OFF,
\r
39 RenderingHints.VALUE_TEXT_ANTIALIAS_OFF,
\r
40 RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
\r
42 public static QualityHints getHints(Quality forQuality) {
\r
43 if (forQuality == null)
\r
45 switch (forQuality) {
\r
46 case GOOD: return GOOD_QUALITY_HINTS;
\r
47 case HIGH: return HIGH_QUALITY_HINTS;
\r
48 case LOW: return LOW_QUALITY_HINTS;
\r
49 default: return HIGH_QUALITY_HINTS;
\r
53 public final Object rendering;
\r
54 public final Object antialiasing;
\r
55 public final Object textAntiAliasing;
\r
56 public final Object interpolation;
\r
58 public QualityHints(Object rendering, Object antialiasing, Object textAntiAliasing, Object interpolation) {
\r
59 this.rendering = rendering;
\r
60 this.antialiasing = antialiasing;
\r
61 this.textAntiAliasing = textAntiAliasing;
\r
62 this.interpolation = interpolation;
\r
65 public void setQuality(Graphics2D g) {
\r
66 if (rendering!=null)
\r
67 g.setRenderingHint(RenderingHints.KEY_RENDERING, rendering);
\r
68 if (antialiasing!=null)
\r
69 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, antialiasing);
\r
70 if (textAntiAliasing!=null)
\r
71 g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, textAntiAliasing);
\r
72 if (interpolation!=null)
\r
73 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, interpolation);
\r
76 public static QualityHints getQuality(Graphics2D g) {
\r
77 return new QualityHints(
\r
78 g.getRenderingHint(RenderingHints.KEY_RENDERING),
\r
79 g.getRenderingHint(RenderingHints.KEY_ANTIALIASING),
\r
80 g.getRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING),
\r
81 g.getRenderingHint(RenderingHints.KEY_INTERPOLATION)
\r