• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 
7 #ifndef DWRITE_2_H_INCLUDED
8 #define DWRITE_2_H_INCLUDED
9 
10 #include <dwrite_1.h>
11 
12 typedef enum DWRITE_GRID_FIT_MODE
13 {
14     DWRITE_GRID_FIT_MODE_DEFAULT,
15     DWRITE_GRID_FIT_MODE_DISABLED,
16     DWRITE_GRID_FIT_MODE_ENABLED
17 } DWRITE_GRID_FIT_MODE;
18 
19 #ifndef D3DCOLORVALUE_DEFINED
20 #define D3DCOLORVALUE_DEFINED
21 typedef struct _D3DCOLORVALUE {
22     union {
23         FLOAT r;
24         FLOAT dvR;
25     } DUMMYUNIONNAME1;
26     union {
27         FLOAT g;
28         FLOAT dvG;
29     } DUMMYUNIONNAME2;
30     union {
31         FLOAT b;
32         FLOAT dvB;
33     } DUMMYUNIONNAME3;
34     union {
35         FLOAT a;
36         FLOAT dvA;
37     } DUMMYUNIONNAME4;
38 } D3DCOLORVALUE,*LPD3DCOLORVALUE;
39 #endif /* D3DCOLORVALUE_DEFINED */
40 
41 typedef D3DCOLORVALUE DWRITE_COLOR_F;
42 
43 typedef struct DWRITE_COLOR_GLYPH_RUN
44 {
45     DWRITE_GLYPH_RUN glyphRun;
46     DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription;
47     FLOAT baselineOriginX;
48     FLOAT baselineOriginY;
49     DWRITE_COLOR_F runColor;
50     UINT16 paletteIndex;
51 } DWRITE_COLOR_GLYPH_RUN;
52 
53 #undef  INTERFACE
54 #define INTERFACE IDWriteFontFallback
DECLARE_INTERFACE_(IDWriteFontFallback,IUnknown)55 DECLARE_INTERFACE_(IDWriteFontFallback,IUnknown)
56 {
57     BEGIN_INTERFACE
58 
59 #ifndef __cplusplus
60     /* IUnknown methods */
61     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
62     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
63     STDMETHOD_(ULONG, Release)(THIS) PURE;
64 #endif
65 
66     STDMETHOD(MapCharacters)(THIS_
67         IDWriteTextAnalysisSource *analysisSource,
68         UINT32 textPosition,
69         UINT32 textLength,
70         IDWriteFontCollection *baseFontCollection,
71         wchar_t const *baseFamilyName,
72         DWRITE_FONT_WEIGHT baseWeight,
73         DWRITE_FONT_STYLE baseStyle,
74         DWRITE_FONT_STRETCH baseStretch,
75         UINT32 *mappedLength,
76         IDWriteFont **mappedFont,
77         FLOAT *scale) PURE;
78 
79     END_INTERFACE
80 };
81 
82 __CRT_UUID_DECL(IDWriteFontFallback, 0xefa008f9,0xf7a1,0x48bf,0xb0,0x5c,0xf2,0x24,0x71,0x3c,0xc0,0xff)
83 
84 #undef  INTERFACE
85 #define INTERFACE IDWriteFontFallbackBuilder
DECLARE_INTERFACE_(IDWriteFontFallbackBuilder,IUnknown)86 DECLARE_INTERFACE_(IDWriteFontFallbackBuilder,IUnknown)
87 {
88     BEGIN_INTERFACE
89 
90 #ifndef __cplusplus
91     /* IUnknown methods */
92     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
93     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
94     STDMETHOD_(ULONG, Release)(THIS) PURE;
95 #endif
96 
97     STDMETHOD(AddMapping)(THIS_
98         DWRITE_UNICODE_RANGE const *ranges,
99         UINT32 rangesCount,
100         WCHAR const **targetFamilyNames,
101         UINT32 targetFamilyNamesCount,
102         IDWriteFontCollection *fontCollection __MINGW_DEF_ARG_VAL(NULL),
103         WCHAR const *localeName __MINGW_DEF_ARG_VAL(NULL),
104         WCHAR const *baseFamilyName __MINGW_DEF_ARG_VAL(NULL),
105         FLOAT scale __MINGW_DEF_ARG_VAL(1.0f)) PURE;
106 
107     STDMETHOD(AddMappings)(THIS_
108         IDWriteFontFallback *fontFallback) PURE;
109 
110     STDMETHOD(CreateFontFallback)(THIS_
111         IDWriteFontFallback **fontFallback) PURE;
112 
113     END_INTERFACE
114 };
115 
116 __CRT_UUID_DECL(IDWriteFontFallbackBuilder, 0xfd882d06,0x8aba,0x4fb8,0xb8,0x49,0x8b,0xe8,0xb7,0x3e,0x14,0xde)
117 
118 #undef  INTERFACE
119 #define INTERFACE IDWriteColorGlyphRunEnumerator
DECLARE_INTERFACE_(IDWriteColorGlyphRunEnumerator,IUnknown)120 DECLARE_INTERFACE_(IDWriteColorGlyphRunEnumerator,IUnknown)
121 {
122     BEGIN_INTERFACE
123 
124 #ifndef __cplusplus
125     /* IUnknown methods */
126     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
127     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
128     STDMETHOD_(ULONG, Release)(THIS) PURE;
129 #endif
130 
131     STDMETHOD(MoveNext)(THIS_
132         BOOL *hasRun) PURE;
133 
134     STDMETHOD(GetCurrentRun)(THIS_
135         DWRITE_COLOR_GLYPH_RUN const **colorGlyphRun) PURE;
136 
137     END_INTERFACE
138 };
139 
140 __CRT_UUID_DECL(IDWriteColorGlyphRunEnumerator, 0xd31fbe17,0xf157,0x41a2,0x8d,0x24,0xcb,0x77,0x9e,0x05,0x60,0xe8)
141 
142 #undef  INTERFACE
143 #define INTERFACE IDWriteRenderingParams2
DECLARE_INTERFACE_(IDWriteRenderingParams2,IDWriteRenderingParams1)144 DECLARE_INTERFACE_(IDWriteRenderingParams2,IDWriteRenderingParams1)
145 {
146     BEGIN_INTERFACE
147 
148 #ifndef __cplusplus
149     /* IUnknown methods */
150     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
151     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
152     STDMETHOD_(ULONG, Release)(THIS) PURE;
153 
154     /* IDWriteRenderingParams methods */
155     STDMETHOD_(FLOAT, GetGamma)(THIS) PURE;
156     STDMETHOD_(FLOAT, GetEnhancedContrast)(THIS) PURE;
157     STDMETHOD_(FLOAT, GetClearTypeLevel)(THIS) PURE;
158     STDMETHOD_(DWRITE_PIXEL_GEOMETRY, GetPixelGeometry)(THIS) PURE;
159     STDMETHOD_(DWRITE_RENDERING_MODE, GetRenderingMode)(THIS) PURE;
160 
161     /* IDWriteRenderingParams1 methods */
162     STDMETHOD_(FLOAT, GetGrayscaleEnhancedContrast)(THIS) PURE;
163 #endif
164 
165     /* IDWriteRenderingParams2 methods */
166     STDMETHOD_(DWRITE_GRID_FIT_MODE, GetGridFitMode)(THIS) PURE;
167 
168     END_INTERFACE
169 };
170 
171 __CRT_UUID_DECL(IDWriteRenderingParams2, 0xf9d711c3,0x9777,0x40ae,0x87,0xe8,0x3e,0x5a,0xf9,0xbf,0x09,0x48)
172 
173 #undef  INTERFACE
174 #define INTERFACE IDWriteFactory2
DECLARE_INTERFACE_(IDWriteFactory2,IDWriteFactory1)175 DECLARE_INTERFACE_(IDWriteFactory2,IDWriteFactory1)
176 {
177     BEGIN_INTERFACE
178 
179 #ifndef __cplusplus
180     /* IUnknown methods */
181     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
182     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
183     STDMETHOD_(ULONG, Release)(THIS) PURE;
184 
185     /* IDWriteFactory methods */
186     STDMETHOD(GetSystemFontCollection)(THIS_
187         IDWriteFontCollection **fontCollection,
188         WINBOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
189 
190     STDMETHOD(CreateCustomFontCollection)(THIS_
191         IDWriteFontCollectionLoader *collectionLoader,
192         void const *collectionKey,
193         UINT32 collectionKeySize,
194         IDWriteFontCollection **fontCollection) PURE;
195 
196     STDMETHOD(RegisterFontCollectionLoader)(THIS_
197         IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
198 
199     STDMETHOD(UnregisterFontCollectionLoader)(THIS_
200         IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
201 
202     STDMETHOD(CreateFontFileReference)(THIS_
203         WCHAR const *filePath,
204         FILETIME const *lastWriteTime,
205         IDWriteFontFile **fontFile) PURE;
206 
207     STDMETHOD(CreateCustomFontFileReference)(THIS_
208         void const *fontFileReferenceKey,
209         UINT32 fontFileReferenceKeySize,
210         IDWriteFontFileLoader *fontFileLoader,
211         IDWriteFontFile **fontFile) PURE;
212 
213     STDMETHOD(CreateFontFace)(THIS_
214         DWRITE_FONT_FACE_TYPE fontFaceType,
215         UINT32 numberOfFiles,
216         IDWriteFontFile *const *fontFiles,
217         UINT32 faceIndex,
218         DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,
219         IDWriteFontFace **fontFace) PURE;
220 
221     STDMETHOD(CreateRenderingParams)(THIS_
222         IDWriteRenderingParams **renderingParams) PURE;
223 
224     STDMETHOD(CreateMonitorRenderingParams)(THIS_
225         HMONITOR monitor,
226         IDWriteRenderingParams **renderingParams) PURE;
227 
228     STDMETHOD(CreateCustomRenderingParams)(THIS_
229         FLOAT gamma,
230         FLOAT enhancedContrast,
231         FLOAT clearTypeLevel,
232         DWRITE_PIXEL_GEOMETRY pixelGeometry,
233         DWRITE_RENDERING_MODE renderingMode,
234         IDWriteRenderingParams **renderingParams) PURE;
235 
236     STDMETHOD(RegisterFontFileLoader)(THIS_
237         IDWriteFontFileLoader *fontFileLoader) PURE;
238 
239     STDMETHOD(UnregisterFontFileLoader)(THIS_
240         IDWriteFontFileLoader *fontFileLoader) PURE;
241 
242     STDMETHOD(CreateTextFormat)(THIS_
243         WCHAR const *fontFamilyName,
244         IDWriteFontCollection *fontCollection,
245         DWRITE_FONT_WEIGHT fontWeight,
246         DWRITE_FONT_STYLE fontStyle,
247         DWRITE_FONT_STRETCH fontStretch,
248         FLOAT fontSize,
249         WCHAR const *localeName,
250         IDWriteTextFormat **textFormat) PURE;
251 
252     STDMETHOD(CreateTypography)(THIS_
253         IDWriteTypography **typography) PURE;
254 
255     STDMETHOD(GetGdiInterop)(THIS_
256         IDWriteGdiInterop **gdiInterop) PURE;
257 
258     STDMETHOD(CreateTextLayout)(THIS_
259         WCHAR const *string,
260         UINT32 stringLength,
261         IDWriteTextFormat *textFormat,
262         FLOAT maxWidth,
263         FLOAT maxHeight,
264         IDWriteTextLayout **textLayout) PURE;
265 
266     STDMETHOD(CreateGdiCompatibleTextLayout)(THIS_
267         WCHAR const *string,
268         UINT32 stringLength,
269         IDWriteTextFormat *textFormat,
270         FLOAT layoutWidth,
271         FLOAT layoutHeight,
272         FLOAT pixelsPerDip,
273         DWRITE_MATRIX const *transform,
274         WINBOOL useGdiNatural,
275         IDWriteTextLayout **textLayout) PURE;
276 
277     STDMETHOD(CreateEllipsisTrimmingSign)(THIS_
278         IDWriteTextFormat *textFormat,
279         IDWriteInlineObject **trimmingSign) PURE;
280 
281     STDMETHOD(CreateTextAnalyzer)(THIS_
282         IDWriteTextAnalyzer **textAnalyzer) PURE;
283 
284     STDMETHOD(CreateNumberSubstitution)(THIS_
285         DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,
286         WCHAR const *localeName,
287         WINBOOL ignoreUserOverride,
288         IDWriteNumberSubstitution **numberSubstitution) PURE;
289 
290     STDMETHOD(CreateGlyphRunAnalysis)(THIS_
291         DWRITE_GLYPH_RUN const *glyphRun,
292         FLOAT pixelsPerDip,
293         DWRITE_MATRIX const *transform,
294         DWRITE_RENDERING_MODE renderingMode,
295         DWRITE_MEASURING_MODE measuringMode,
296         FLOAT baselineOriginX,
297         FLOAT baselineOriginY,
298         IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
299 
300     /* IDWriteFactory1 methods */
301     STDMETHOD(GetEudcFontCollection)(THIS_
302         IDWriteFontCollection **fontCollection,
303         BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
304 
305     STDMETHOD(CreateCustomRenderingParams)(THIS_
306         FLOAT gamma,
307         FLOAT enhancedContrast,
308         FLOAT enhancedContrastGrayscale,
309         FLOAT clearTypeLevel,
310         DWRITE_PIXEL_GEOMETRY pixelGeometry,
311         DWRITE_RENDERING_MODE renderingMode,
312         IDWriteRenderingParams1 **renderingParams) PURE;
313 #endif
314 
315     /* IDWriteFactory2 methods */
316     STDMETHOD(GetSystemFontFallback)(THIS_
317         IDWriteFontFallback **fontFallback) PURE;
318 
319     STDMETHOD(CreateFontFallbackBuilder)(THIS_
320         IDWriteFontFallbackBuilder **fontFallbackBuilder) PURE;
321 
322     STDMETHOD(TranslateColorGlyphRun)(THIS_
323         FLOAT baselineOriginX,
324         FLOAT baselineOriginY,
325         DWRITE_GLYPH_RUN const *glyphRun,
326         DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
327         DWRITE_MEASURING_MODE measuringMode,
328         DWRITE_MATRIX const *worldToDeviceTransform,
329         UINT32 colorPaletteIndex,
330         IDWriteColorGlyphRunEnumerator **colorLayers) PURE;
331 
332     STDMETHOD(CreateCustomRenderingParams)(THIS_
333         FLOAT gamma,
334         FLOAT enhancedContrast,
335         FLOAT grayscaleEnhancedContrast,
336         FLOAT clearTypeLevel,
337         DWRITE_PIXEL_GEOMETRY pixelGeometry,
338         DWRITE_RENDERING_MODE renderingMode,
339         DWRITE_GRID_FIT_MODE gridFitMode,
340         IDWriteRenderingParams2 **renderingParams) PURE;
341 
342 #ifdef __cplusplus
343     using IDWriteFactory::CreateCustomRenderingParams;
344     using IDWriteFactory1::CreateCustomRenderingParams;
345 #endif
346 
347     STDMETHOD(CreateGlyphRunAnalysis)(THIS_
348         DWRITE_GLYPH_RUN const *glyphRun,
349         DWRITE_MATRIX const *transform,
350         DWRITE_RENDERING_MODE renderingMode,
351         DWRITE_MEASURING_MODE measuringMode,
352         DWRITE_GRID_FIT_MODE gridFitMode,
353         DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
354         FLOAT baselineOriginX,
355         FLOAT baselineOriginY,
356         IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
357 
358 #ifdef __cplusplus
359     using IDWriteFactory::CreateGlyphRunAnalysis;
360 #endif
361 
362     END_INTERFACE
363 };
364 
365 __CRT_UUID_DECL(IDWriteFactory2, 0x0439fc60,0xca44,0x4994,0x8d,0xee,0x3a,0x9a,0xf7,0xb7,0x32,0xec)
366 
367 #undef  INTERFACE
368 #define INTERFACE IDWriteFontFace2
DECLARE_INTERFACE_(IDWriteFontFace2,IDWriteFontFace1)369 DECLARE_INTERFACE_(IDWriteFontFace2,IDWriteFontFace1)
370 {
371     BEGIN_INTERFACE
372 
373 #ifndef __cplusplus
374     /* IUnknown methods */
375     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
376     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
377     STDMETHOD_(ULONG, Release)(THIS) PURE;
378 
379     /* IDWriteFontFace methods */
380     STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)(THIS) PURE;
381 
382     STDMETHOD(GetFiles)(THIS_
383         UINT32 *numberOfFiles,
384         IDWriteFontFile **fontFiles) PURE;
385 
386     STDMETHOD_(UINT32, GetIndex)(THIS) PURE;
387     STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)(THIS) PURE;
388     STDMETHOD_(WINBOOL, IsSymbolFont)(THIS) PURE;
389 
390     STDMETHOD_(void, GetMetrics)(THIS_
391         DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
392 
393     STDMETHOD_(UINT16, GetGlyphCount)(THIS) PURE;
394 
395     STDMETHOD(GetDesignGlyphMetrics)(THIS_
396         UINT16 const *glyphIndices,
397         UINT32 glyphCount,
398         DWRITE_GLYPH_METRICS *glyphMetrics,
399         WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
400 
401     STDMETHOD(GetGlyphIndices)(THIS_
402         UINT32 const *codePoints,
403         UINT32 codePointCount,
404         UINT16 *glyphIndices) PURE;
405 
406     STDMETHOD(TryGetFontTable)(THIS_
407         UINT32 openTypeTableTag,
408         const void **tableData,
409         UINT32 *tableSize,
410         void **tableContext,
411         WINBOOL *exists) PURE;
412 
413     STDMETHOD_(void, ReleaseFontTable)(THIS_
414         void *tableContext) PURE;
415 
416     STDMETHOD(GetGlyphRunOutline)(THIS_
417         FLOAT emSize,
418         UINT16 const *glyphIndices,
419         FLOAT const *glyphAdvances,
420         DWRITE_GLYPH_OFFSET const *glyphOffsets,
421         UINT32 glyphCount,
422         WINBOOL isSideways,
423         WINBOOL isRightToLeft,
424         IDWriteGeometrySink *geometrySink) PURE;
425 
426     STDMETHOD(GetRecommendedRenderingMode)(THIS_
427         FLOAT emSize,
428         FLOAT pixelsPerDip,
429         DWRITE_MEASURING_MODE measuringMode,
430         IDWriteRenderingParams *renderingParams,
431         DWRITE_RENDERING_MODE *renderingMode) PURE;
432 
433     STDMETHOD(GetGdiCompatibleMetrics)(THIS_
434         FLOAT emSize,
435         FLOAT pixelsPerDip,
436         DWRITE_MATRIX const *transform,
437         DWRITE_FONT_METRICS *fontFaceMetrics) PURE;
438 
439     STDMETHOD(GetGdiCompatibleGlyphMetrics)(THIS_
440         FLOAT emSize,
441         FLOAT pixelsPerDip,
442         DWRITE_MATRIX const *transform,
443         WINBOOL useGdiNatural,
444         UINT16 const *glyphIndices,
445         UINT32 glyphCount,
446         DWRITE_GLYPH_METRICS *glyphMetrics,
447         WINBOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
448 
449     /* IDWriteFontFace1 methods */
450     STDMETHOD_(void, GetMetrics)(THIS_ DWRITE_FONT_METRICS1*) PURE;
451     STDMETHOD(GetGdiCompatibleMetrics)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,DWRITE_FONT_METRICS1*) PURE;
452     STDMETHOD_(void, GetCaretMetrics)(THIS_ DWRITE_CARET_METRICS*) PURE;
453     STDMETHOD(GetUnicodeRanges)(THIS_ UINT32, DWRITE_UNICODE_RANGE*,UINT32*) PURE;
454     STDMETHOD_(BOOL, IsMonospacedFont)(THIS) PURE;
455     STDMETHOD(GetDesignGlyphAdvances)(THIS_ UINT32,UINT16 const*,INT32*,BOOL isSideways __MINGW_DEF_ARG_VAL(FALSE)) PURE;
456     STDMETHOD(GetGdiCompatibleGlyphAdvances)(THIS_ FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,BOOL,UINT32,
457             UINT16 const*,INT32*) PURE;
458     STDMETHOD(GetKerningPairAdjustments)(THIS_ UINT32,UINT16 const*,INT32*) PURE;
459     STDMETHOD_(BOOL, HasKerningPairs)(THIS);
460     STDMETHOD(GetRecommendedRenderingMode)(FLOAT,FLOAT,FLOAT,DWRITE_MATRIX const*,BOOL,
461             DWRITE_OUTLINE_THRESHOLD,DWRITE_MEASURING_MODE,DWRITE_RENDERING_MODE*) PURE;
462     STDMETHOD(GetVerticalGlyphVariants)(THIS_ UINT32,UINT16 const*,UINT16*);
463     STDMETHOD_(BOOL, HasVerticalGlyphVariants)(THIS);
464 #endif
465 
466     /* IDWriteFontFace2 methods */
467     STDMETHOD_(BOOL, IsColorFont)(THIS) PURE;
468     STDMETHOD_(UINT32, GetColorPaletteCount)(THIS) PURE;
469     STDMETHOD_(UINT32, GetPaletteEntryCount)(THIS) PURE;
470         STDMETHOD(GetPaletteEntries)(THIS_
471         UINT32 colorPaletteIndex,
472         UINT32 firstEntryIndex,
473         UINT32 entryCount,
474         DWRITE_COLOR_F* paletteEntries
475         ) PURE;
476 
477     STDMETHOD(GetRecommendedRenderingMode)(THIS_
478         FLOAT fontEmSize,
479         FLOAT dpiX,
480         FLOAT dpiY,
481         DWRITE_MATRIX const* transform,
482         BOOL isSideways,
483         DWRITE_OUTLINE_THRESHOLD outlineThreshold,
484         DWRITE_MEASURING_MODE measuringMode,
485         IDWriteRenderingParams* renderingParams,
486         DWRITE_RENDERING_MODE* renderingMode,
487         DWRITE_GRID_FIT_MODE* gridFitMode
488         ) PURE;
489 
490     END_INTERFACE
491 };
492 
493 __CRT_UUID_DECL(IDWriteFontFace2, 0xd8b768ff,0x64bc,0x4e66,0x98,0x2b,0xec,0x8e,0x87,0xf6,0x93,0xf7)
494 
495 #endif /* DWRITE_2_H_INCLUDED */
496