1
2 package org.freehep.graphicsio.emf.gdi;
3
4 import java.io.IOException;
5 import java.awt.Image;
6
7 import org.freehep.graphicsio.emf.EMFConstants;
8 import org.freehep.graphicsio.emf.EMFInputStream;
9 import org.freehep.graphicsio.emf.EMFOutputStream;
10 import org.freehep.graphicsio.emf.EMFTag;
11 import org.freehep.graphicsio.emf.EMFRenderer;
12
13
14
15
16
17
18
19 public class SetStretchBltMode extends EMFTag implements EMFConstants {
20
21 private int mode;
22
23 public SetStretchBltMode() {
24 super(21, 1);
25 }
26
27 public SetStretchBltMode(int mode) {
28 this();
29 this.mode = mode;
30 }
31
32 public EMFTag read(int tagID, EMFInputStream emf, int len)
33 throws IOException {
34
35 return new SetStretchBltMode(emf.readDWORD());
36 }
37
38 public void write(int tagID, EMFOutputStream emf) throws IOException {
39 emf.writeDWORD(mode);
40 }
41
42 public String toString() {
43 return super.toString() + "\n mode: " + mode;
44 }
45
46
47
48
49
50
51 public void render(EMFRenderer renderer) {
52
53
54
55 renderer.setScaleMode(
56 getScaleMode(mode));
57 }
58
59
60
61
62
63
64 private int getScaleMode(int mode) {
65
66
67 if (
68 mode == EMFConstants.COLORONCOLOR
69 ) {
70 return Image.SCALE_FAST;
71 }
72
73
74
75 else if (
76 mode == EMFConstants.HALFTONE
77 ) {
78 return Image.SCALE_SMOOTH;
79 }
80
81
82
83
84 else if (
85 mode == EMFConstants.BLACKONWHITE
86 ) {
87
88 return Image.SCALE_REPLICATE;
89 }
90
91
92
93
94 else if (
95 mode == EMFConstants.WHITEONBLACK
96 ) {
97
98 return Image.SCALE_REPLICATE;
99 } else {
100 logger.warning("got unsupported SetStretchBltMode " + mode);
101 return Image.SCALE_DEFAULT;
102 }
103 }
104 }