]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/utils/QualityHints.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / utils / QualityHints.java
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
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.scenegraph.utils;\r
13 \r
14 import java.awt.Graphics2D;\r
15 import java.awt.RenderingHints;\r
16 \r
17 /**\r
18  * Rendering quality hints\r
19  * \r
20  * @author Toni Kalajainen\r
21  */\r
22 public class QualityHints {\r
23 \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
29 \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
35 \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
41 \r
42     public static QualityHints getHints(Quality forQuality) {\r
43         if (forQuality == null)\r
44             return 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
50         }\r
51     }\r
52 \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
57 \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
63     }\r
64 \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
74     }\r
75 \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
82         );\r
83     }\r
84 \r
85 }\r