1 | <?xml version='1.0' encoding='UTF-8'?>
|
---|
2 | <?xml-stylesheet type="text/css"
|
---|
3 | href="eclipseos2-xxe.css"
|
---|
4 | ?>
|
---|
5 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
---|
6 | "xhtml1-strict.dtd">
|
---|
7 | <html>
|
---|
8 | <head>
|
---|
9 | <link type="text/css"
|
---|
10 | href="eclipseos2.css"
|
---|
11 | rel="stylesheet" />
|
---|
12 |
|
---|
13 | <title>Eclipse for OS/2 Transitional Project Notes</title>
|
---|
14 | </head>
|
---|
15 |
|
---|
16 | <body>
|
---|
17 | <h1>SWT Step 6. Image handling</h1>
|
---|
18 |
|
---|
19 | <h2>Objective</h2>
|
---|
20 |
|
---|
21 | <p>Implement image handling (including <code>o.e.swt.graphics.Image</code>
|
---|
22 | class). The test example of this step should draw images of different
|
---|
23 | formats in the SWT top window client area using corresponding methods of
|
---|
24 | <code>o.e.swt.graphics.GC</code> class.</p>
|
---|
25 |
|
---|
26 | <h2>Task notes</h2>
|
---|
27 |
|
---|
28 | <p>There is one issue with getting image data when the system (the
|
---|
29 | display) is in 256-color mode -- it is described <a href="diff.html#007">here</a>.</p>
|
---|
30 |
|
---|
31 | <p>Also we have a potential problem with icons, because OS/2 supports only
|
---|
32 | 32x32/16x16 px and 40x40/20x20 px icons. Although we made it possible to
|
---|
33 | create and draw icons of any size we cannot use non-standard ones in
|
---|
34 | places where OS/2 accepts standard icon/pointer handlers (for example, in
|
---|
35 | some controls).</p>
|
---|
36 |
|
---|
37 | <h2>Step checklist</h2>
|
---|
38 |
|
---|
39 | <table>
|
---|
40 | <col width="40%" />
|
---|
41 |
|
---|
42 | <col />
|
---|
43 |
|
---|
44 | <col width="50%" />
|
---|
45 |
|
---|
46 | <thead>
|
---|
47 | <tr>
|
---|
48 | <th>Operation</th>
|
---|
49 |
|
---|
50 | <th>Status</th>
|
---|
51 |
|
---|
52 | <th>Remarks</th>
|
---|
53 | </tr>
|
---|
54 | </thead>
|
---|
55 |
|
---|
56 | <tr>
|
---|
57 | <td>Add <code>OS.DevOpenDC()</code> and <code>OD_*</code> constants,
|
---|
58 | <code>DevCloseDC()</code>; <code>OS.GpiCreatePS()</code> and
|
---|
59 | <code>PU_*</code>, <code>GPIF_*</code>, <code>GPIT_*</code>,
|
---|
60 | <code>GPIA_*</code>, <code>GPIM_*</code> constants, GpiDestr</td>
|
---|
61 |
|
---|
62 | <td>Done [dmik]</td>
|
---|
63 |
|
---|
64 | <td>During to complicacy of one of its parameters <code>OS.DevOpenDC()</code>is
|
---|
65 | implemented in an unusual way, see the source</td>
|
---|
66 | </tr>
|
---|
67 |
|
---|
68 | <tr>
|
---|
69 | <td>Add <code>Display.internal_get_HAB()</code> method</td>
|
---|
70 |
|
---|
71 | <td>Done [dmik]</td>
|
---|
72 |
|
---|
73 | <td>This is a static and public method, not intended for use by
|
---|
74 | applications. It is intended for those classes inside SWT to obtain
|
---|
75 | the <code>HAB</code> which don't have the direct access to the
|
---|
76 | <code>Display</code> object but need it.</td>
|
---|
77 | </tr>
|
---|
78 |
|
---|
79 | <tr>
|
---|
80 | <td>Add <code>OS.GpiQueryDeviceBitmapFormats()</code>, <code>GpiCreateBitmap()</code>
|
---|
81 | and <code>CBM_INIT</code> constant, constants for <code>BITMAPINFOHEADER2</code>:
|
---|
82 | <code>OS.BCA_*</code>, <code>BRU_*</code>, <code>BRA_*</code>,
|
---|
83 | <code>BRH_*</code> and <code>BCE_*</code>, <code>OS.GpiSetBitmap()</code></td>
|
---|
84 |
|
---|
85 | <td>Done [dmik]</td>
|
---|
86 |
|
---|
87 | <td></td>
|
---|
88 | </tr>
|
---|
89 |
|
---|
90 | <tr>
|
---|
91 | <td>Add two static helper methods to <code>Image</code> class:
|
---|
92 | <code>new_compatible_GC()</code> and <code>dispose_compatible_GC()</code></td>
|
---|
93 |
|
---|
94 | <td>Done [dmik]</td>
|
---|
95 |
|
---|
96 | <td>Done for convenience</td>
|
---|
97 | </tr>
|
---|
98 |
|
---|
99 | <tr>
|
---|
100 | <td>Add <code>OS.GpiBitBlt()</code> and <code>CBM_*</code>,
|
---|
101 | <code>ROP_*</code>, <code>BBO_*</code> constants</td>
|
---|
102 |
|
---|
103 | <td>Done [dmik]</td>
|
---|
104 |
|
---|
105 | <td></td>
|
---|
106 | </tr>
|
---|
107 |
|
---|
108 | <tr>
|
---|
109 | <td>Implement <code>GC.fillGradientRectagle()</code></td>
|
---|
110 |
|
---|
111 | <td>Done [dmik]</td>
|
---|
112 |
|
---|
113 | <td></td>
|
---|
114 | </tr>
|
---|
115 |
|
---|
116 | <tr>
|
---|
117 | <td>Add <code>OS.GpiQueryPalette()</code>, <code>OS.GpiQueryBitmapBits()</code>,
|
---|
118 | <code>OS.GpiSetBitmapBits()</code>, <code>GpiDrawBits()</code>,
|
---|
119 | <code>GpiWCBitBlt()</code>, <code>GpiQueryDefaultViewMatrix()</code></td>
|
---|
120 |
|
---|
121 | <td>Done [dmik]</td>
|
---|
122 |
|
---|
123 | <td><code>GpiWCBitBlt()</code> is used now instead of <code>GpiBitBlt()</code>
|
---|
124 | when possible -- because it does blitting faster.</td>
|
---|
125 | </tr>
|
---|
126 |
|
---|
127 | <tr>
|
---|
128 | <td>Add the package static method <code>Image.createBitmap()</code>,
|
---|
129 | the protected field <code>Device.has32bitDepth</code></td>
|
---|
130 |
|
---|
131 | <td>Done [dmik]</td>
|
---|
132 |
|
---|
133 | <td>Used for convenience when dealing with bitmaps. <code>has32BitDepth</code>
|
---|
134 | is true when the device supports the 32-bit color depth.</td>
|
---|
135 | </tr>
|
---|
136 |
|
---|
137 | <tr>
|
---|
138 | <td>Add <code>OS.WinCreatePointerIndirect()</code>, <code>WinDestroyPointer()</code>,
|
---|
139 | <code>WinDrawPointer()</code>, <code>WinQueryPointerInfo()</code>,
|
---|
140 | <code>DP_*</code> constants and <code>POINTERINFO</code> class</td>
|
---|
141 |
|
---|
142 | <td>Done [dmik]</td>
|
---|
143 |
|
---|
144 | <td></td>
|
---|
145 | </tr>
|
---|
146 |
|
---|
147 | <tr>
|
---|
148 | <td>Implement <code>GC.drawImage()</code></td>
|
---|
149 |
|
---|
150 | <td>Done [dmik]</td>
|
---|
151 |
|
---|
152 | <td></td>
|
---|
153 | </tr>
|
---|
154 |
|
---|
155 | <tr>
|
---|
156 | <td>Implement <code>Image</code> class, add <code>SWT006_01</code>
|
---|
157 | testcase + different test images, add <code>SWT006_02</code> testcase</td>
|
---|
158 |
|
---|
159 | <td>Done [dmik]</td>
|
---|
160 |
|
---|
161 | <td></td>
|
---|
162 | </tr>
|
---|
163 |
|
---|
164 | <tr>
|
---|
165 | <td>Change the behavior of filled versions of some graphic primitives
|
---|
166 | in <code>GC</code> (rectangles and arcs) back to that one in Windows
|
---|
167 | (meaning that they are drawn 1 pixel narrower than their outlined
|
---|
168 | counterparts with the same width and height arguments)</td>
|
---|
169 |
|
---|
170 | <td>Done [dmik]</td>
|
---|
171 |
|
---|
172 | <td>This is done for compatibility reasons -- filling an area of a
|
---|
173 | client window with <code>GC.fillRectangle()</code> is quite a frequent
|
---|
174 | task and must work equally across platforms (see <a
|
---|
175 | href="swt003.html#GraphicPrimitives">here</a> for initial discussion
|
---|
176 | of this issue).</td>
|
---|
177 | </tr>
|
---|
178 |
|
---|
179 | <tr>
|
---|
180 | <td>Fix <code>Decorations</code>: redirect the call to <code>layout()</code>
|
---|
181 | to <code>client.layout()</code>; fix <code>Shell</code>: do implicit
|
---|
182 | layout upon the first <code>open()</code> or <code>setVisible()</code>
|
---|
183 | call as it done in Windows.</td>
|
---|
184 |
|
---|
185 | <td>Done [dmik]</td>
|
---|
186 |
|
---|
187 | <td></td>
|
---|
188 | </tr>
|
---|
189 |
|
---|
190 | <tr>
|
---|
191 | <td>Add <code>OS.WinScrollWindow()</code> and <code>SW_*</code>
|
---|
192 | constants, <code>HRGN_ERROR</code> constant; implement <code>GC.copyArea()</code></td>
|
---|
193 |
|
---|
194 | <td>Done [dmik]</td>
|
---|
195 |
|
---|
196 | <td>Note, that this item and the following ones are added after the
|
---|
197 | SWT006 Step was considered to be done and tagged in the repository.</td>
|
---|
198 | </tr>
|
---|
199 |
|
---|
200 | <tr>
|
---|
201 | <td>Add <code>OS.GpiSetRegion()</code>, <code>GpiQueryClipBox()</code>;
|
---|
202 | implement <code>GC.getClipping(Region)</code>, <code>isClipped()</code></td>
|
---|
203 |
|
---|
204 | <td>Done [dmik]</td>
|
---|
205 |
|
---|
206 | <td></td>
|
---|
207 | </tr>
|
---|
208 |
|
---|
209 | <tr>
|
---|
210 | <td>Add <code>SWT006_03</code> testcase</td>
|
---|
211 |
|
---|
212 | <td>Done [dmik]</td>
|
---|
213 |
|
---|
214 | <td>This testcase is for testing of two items above.</td>
|
---|
215 | </tr>
|
---|
216 | </table>
|
---|
217 | </body>
|
---|
218 | </html>
|
---|