2 * GDI mapping mode functions
4 * Copyright 1993 Alexandre Julliard
11 /* #define DEBUG_GDI */
15 /***********************************************************************
16 * MAPPING_FixIsotropic
18 * Fix viewport extensions for isotropic mode.
20 void MAPPING_FixIsotropic( DC
* dc
)
22 double xdim
= (double)dc
->w
.VportExtX
* dc
->w
.devCaps
->horzSize
/
23 (dc
->w
.devCaps
->horzRes
* dc
->w
.WndExtX
);
24 double ydim
= (double)dc
->w
.VportExtY
* dc
->w
.devCaps
->vertSize
/
25 (dc
->w
.devCaps
->vertRes
* dc
->w
.WndExtY
);
28 dc
->w
.VportExtX
= dc
->w
.VportExtX
* fabs( ydim
/ xdim
);
29 if (!dc
->w
.VportExtX
) dc
->w
.VportExtX
= 1;
33 dc
->w
.VportExtY
= dc
->w
.VportExtY
* fabs( xdim
/ ydim
);
34 if (!dc
->w
.VportExtY
) dc
->w
.VportExtY
= 1;
39 /***********************************************************************
42 BOOL16
DPtoLP16( HDC16 hdc
, LPPOINT16 points
, INT16 count
)
44 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
45 if (!dc
) return FALSE
;
49 points
->x
= XDPTOLP( dc
, points
->x
);
50 points
->y
= YDPTOLP( dc
, points
->y
);
56 /***********************************************************************
59 BOOL32
DPtoLP32( HDC32 hdc
, LPPOINT32 points
, INT32 count
)
61 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
62 if (!dc
) return FALSE
;
66 points
->x
= XDPTOLP( dc
, points
->x
);
67 points
->y
= YDPTOLP( dc
, points
->y
);
73 /***********************************************************************
76 BOOL16
LPtoDP16( HDC16 hdc
, LPPOINT16 points
, INT16 count
)
78 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
79 if (!dc
) return FALSE
;
83 points
->x
= XLPTODP( dc
, points
->x
);
84 points
->y
= YLPTODP( dc
, points
->y
);
90 /***********************************************************************
91 * LPtoDP32 (GDI32.247)
93 BOOL32
LPtoDP32( HDC32 hdc
, LPPOINT32 points
, INT32 count
)
95 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
96 if (!dc
) return FALSE
;
100 points
->x
= XLPTODP( dc
, points
->x
);
101 points
->y
= YLPTODP( dc
, points
->y
);
107 /***********************************************************************
110 WORD
SetMapMode( HDC hdc
, WORD mode
)
113 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
116 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
118 MF_MetaParam1(dc
, META_SETMAPMODE
, mode
);
122 dprintf_gdi(stddeb
, "SetMapMode: %04x %d\n", hdc
, mode
);
124 prevMode
= dc
->w
.MapMode
;
128 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
129 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
138 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
139 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
140 dc
->w
.WndExtX
= dc
->w
.devCaps
->horzSize
;
141 dc
->w
.WndExtY
= dc
->w
.devCaps
->vertSize
;
142 dc
->w
.VportExtX
= dc
->w
.devCaps
->horzRes
/ 10;
143 dc
->w
.VportExtY
= dc
->w
.devCaps
->vertRes
/ -10;
147 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
148 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
149 dc
->w
.WndExtX
= dc
->w
.devCaps
->horzSize
* 10;
150 dc
->w
.WndExtY
= dc
->w
.devCaps
->vertSize
* 10;
151 dc
->w
.VportExtX
= dc
->w
.devCaps
->horzRes
/ 10;
152 dc
->w
.VportExtY
= dc
->w
.devCaps
->vertRes
/ -10;
156 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
157 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
158 dc
->w
.WndExtX
= dc
->w
.devCaps
->horzSize
;
159 dc
->w
.WndExtY
= dc
->w
.devCaps
->vertSize
;
160 dc
->w
.VportExtX
= (short)(254L * dc
->w
.devCaps
->horzRes
/ 1000);
161 dc
->w
.VportExtY
= (short)(-254L * dc
->w
.devCaps
->vertRes
/ 1000);
165 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
166 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
167 dc
->w
.WndExtX
= dc
->w
.devCaps
->horzSize
* 10;
168 dc
->w
.WndExtY
= dc
->w
.devCaps
->vertSize
* 10;
169 dc
->w
.VportExtX
= (short)(254L * dc
->w
.devCaps
->horzRes
/ 1000);
170 dc
->w
.VportExtY
= (short)(-254L * dc
->w
.devCaps
->vertRes
/ 1000);
174 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
175 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
176 dc
->w
.WndExtX
= (short)(144L * dc
->w
.devCaps
->horzSize
/ 10);
177 dc
->w
.WndExtY
= (short)(144L * dc
->w
.devCaps
->vertSize
/ 10);
178 dc
->w
.VportExtX
= (short)(254L * dc
->w
.devCaps
->horzRes
/ 1000);
179 dc
->w
.VportExtY
= (short)(-254L * dc
->w
.devCaps
->vertRes
/ 1000);
188 dc
->w
.MapMode
= mode
;
193 /***********************************************************************
194 * SetViewportExt (GDI.14)
196 DWORD
SetViewportExt( HDC16 hdc
, INT16 x
, INT16 y
)
199 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
202 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
203 if (!dc
) return FALSE
;
204 MF_MetaParam2(dc
, META_SETVIEWPORTEXT
, x
, y
);
208 size
.cx
= dc
->w
.VportExtX
;
209 size
.cy
= dc
->w
.VportExtY
;
210 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
211 return MAKELONG( size
.cx
, size
.cy
);
212 if (!x
|| !y
) return 0;
215 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
216 return MAKELONG( size
.cx
, size
.cy
);
220 /***********************************************************************
221 * SetViewportExtEx16 (GDI.479)
223 BOOL16
SetViewportExtEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPSIZE16 size
)
225 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
226 if (!dc
) return FALSE
;
229 size
->cx
= dc
->w
.VportExtX
;
230 size
->cy
= dc
->w
.VportExtY
;
232 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
234 if (!x
|| !y
) return FALSE
;
237 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
242 /***********************************************************************
243 * SetViewportExtEx32 (GDI32.340)
245 BOOL32
SetViewportExtEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPSIZE32 size
)
248 BOOL16 ret
= SetViewportExtEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &size16
);
249 if (size
) CONV_SIZE16TO32( &size16
, size
);
254 /***********************************************************************
255 * SetViewportOrg (GDI.13)
257 DWORD
SetViewportOrg( HDC16 hdc
, INT16 x
, INT16 y
)
260 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
263 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
264 if (!dc
) return FALSE
;
265 MF_MetaParam2(dc
, META_SETVIEWPORTORG
, x
, y
);
269 pt
.x
= dc
->w
.VportOrgX
;
270 pt
.y
= dc
->w
.VportOrgY
;
273 return pt
.x
| (pt
.y
<< 16);
277 /***********************************************************************
278 * SetViewportOrgEx16 (GDI.480)
280 BOOL16
SetViewportOrgEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPPOINT16 pt
)
282 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
283 if (!dc
) return FALSE
;
286 pt
->x
= dc
->w
.VportOrgX
;
287 pt
->y
= dc
->w
.VportOrgY
;
295 /***********************************************************************
296 * SetViewportOrgEx32 (GDI32.341)
298 BOOL32
SetViewportOrgEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPPOINT32 pt
)
301 BOOL16 ret
= SetViewportOrgEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &pt16
);
302 if (pt
) CONV_POINT16TO32( &pt16
, pt
);
307 /***********************************************************************
308 * SetWindowExt (GDI.12)
310 DWORD
SetWindowExt( HDC16 hdc
, INT16 x
, INT16 y
)
313 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
316 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
317 if (!dc
) return FALSE
;
318 MF_MetaParam2(dc
, META_SETWINDOWEXT
, x
, y
);
322 size
.cx
= dc
->w
.WndExtX
;
323 size
.cy
= dc
->w
.WndExtY
;
324 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
325 return MAKELONG( size
.cx
, size
.cy
);
326 if (!x
|| !y
) return 0;
329 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
330 return MAKELONG( size
.cx
, size
.cy
);
334 /***********************************************************************
335 * SetWindowExtEx16 (GDI.481)
337 BOOL16
SetWindowExtEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPSIZE16 size
)
339 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
340 if (!dc
) return FALSE
;
343 size
->cx
= dc
->w
.WndExtX
;
344 size
->cy
= dc
->w
.WndExtY
;
346 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
348 if (!x
|| !y
) return FALSE
;
351 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
356 /***********************************************************************
357 * SetWindowExtEx32 (GDI32.344)
359 BOOL32
SetWindowExtEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPSIZE32 size
)
362 BOOL16 ret
= SetWindowExtEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &size16
);
363 if (size
) CONV_SIZE16TO32( &size16
, size
);
368 /***********************************************************************
369 * SetWindowOrg (GDI.11)
371 DWORD
SetWindowOrg( HDC16 hdc
, INT16 x
, INT16 y
)
374 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
377 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
378 if (!dc
) return FALSE
;
379 MF_MetaParam2(dc
, META_SETWINDOWORG
, x
, y
);
383 pt
.x
= dc
->w
.WndOrgX
;
384 pt
.y
= dc
->w
.WndOrgY
;
387 return MAKELONG( pt
.x
, pt
.y
);
391 /***********************************************************************
392 * SetWindowOrgEx16 (GDI.482)
394 BOOL16
SetWindowOrgEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPPOINT16 pt
)
396 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
397 if (!dc
) return FALSE
;
400 pt
->x
= dc
->w
.WndOrgX
;
401 pt
->y
= dc
->w
.WndOrgY
;
409 /***********************************************************************
410 * SetWindowOrgEx32 (GDI32.345)
412 BOOL32
SetWindowOrgEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPPOINT32 pt
)
415 BOOL16 ret
= SetWindowOrgEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &pt16
);
416 if (pt
) CONV_POINT16TO32( &pt16
, pt
);
421 /***********************************************************************
422 * OffsetViewportOrg (GDI.17)
424 DWORD
OffsetViewportOrg( HDC16 hdc
, INT16 x
, INT16 y
)
427 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
430 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
431 if (!dc
) return FALSE
;
432 MF_MetaParam2(dc
, META_OFFSETVIEWPORTORG
, x
, y
);
436 pt
.x
= dc
->w
.VportOrgX
;
437 pt
.y
= dc
->w
.VportOrgY
;
438 dc
->w
.VportOrgX
+= x
;
439 dc
->w
.VportOrgY
+= y
;
440 return pt
.x
| (pt
.y
<< 16);
444 /***********************************************************************
445 * OffsetViewportOrgEx16 (GDI.476)
447 BOOL16
OffsetViewportOrgEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPPOINT16 pt
)
449 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
450 if (!dc
) return FALSE
;
453 pt
->x
= dc
->w
.VportOrgX
;
454 pt
->y
= dc
->w
.VportOrgY
;
456 dc
->w
.VportOrgX
+= x
;
457 dc
->w
.VportOrgY
+= y
;
462 /***********************************************************************
463 * OffsetViewportOrgEx32 (GDI32.257)
465 BOOL32
OffsetViewportOrgEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPPOINT32 pt
)
468 BOOL16 ret
= OffsetViewportOrgEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &pt16
);
469 if (pt
) CONV_POINT16TO32( &pt16
, pt
);
474 /***********************************************************************
475 * OffsetWindowOrg (GDI.15)
477 DWORD
OffsetWindowOrg( HDC16 hdc
, INT16 x
, INT16 y
)
480 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
483 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
484 if (!dc
) return FALSE
;
485 MF_MetaParam2(dc
, META_OFFSETWINDOWORG
, x
, y
);
489 pt
.x
= dc
->w
.WndOrgX
;
490 pt
.y
= dc
->w
.WndOrgY
;
493 return pt
.x
| (pt
.y
<< 16);
497 /***********************************************************************
498 * OffsetWindowOrgEx16 (GDI.477)
500 BOOL16
OffsetWindowOrgEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPPOINT16 pt
)
502 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
503 if (!dc
) return FALSE
;
506 pt
->x
= dc
->w
.WndOrgX
;
507 pt
->y
= dc
->w
.WndOrgY
;
515 /***********************************************************************
516 * OffsetWindowOrgEx32 (GDI32.258)
518 BOOL32
OffsetWindowOrgEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPPOINT32 pt
)
521 BOOL16 ret
= OffsetWindowOrgEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &pt16
);
522 if (pt
) CONV_POINT16TO32( &pt16
, pt
);
527 /***********************************************************************
528 * ScaleViewportExt (GDI.18)
530 DWORD
ScaleViewportExt( HDC16 hdc
, INT16 xNum
, INT16 xDenom
,
531 INT16 yNum
, INT16 yDenom
)
534 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
537 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
538 if (!dc
) return FALSE
;
539 MF_MetaParam4(dc
, META_SCALEVIEWPORTEXT
, xNum
, xDenom
, yNum
, yDenom
);
543 size
.cx
= dc
->w
.VportExtX
;
544 size
.cy
= dc
->w
.VportExtY
;
545 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
546 return size
.cx
| (size
.cy
<< 16);
547 if (!xNum
|| !xDenom
|| !xNum
|| !yDenom
) return 0;
548 dc
->w
.VportExtX
= (dc
->w
.VportExtX
* xNum
) / xDenom
;
549 dc
->w
.VportExtY
= (dc
->w
.VportExtY
* yNum
) / yDenom
;
550 if (dc
->w
.VportExtX
== 0) dc
->w
.VportExtX
= 1;
551 if (dc
->w
.VportExtY
== 0) dc
->w
.VportExtY
= 1;
552 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
553 return size
.cx
| (size
.cy
<< 16);
557 /***********************************************************************
558 * ScaleViewportExtEx16 (GDI.484)
560 BOOL16
ScaleViewportExtEx16( HDC16 hdc
, INT16 xNum
, INT16 xDenom
,
561 INT16 yNum
, INT16 yDenom
, LPSIZE16 size
)
563 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
564 if (!dc
) return FALSE
;
567 size
->cx
= dc
->w
.VportExtX
;
568 size
->cy
= dc
->w
.VportExtY
;
570 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
572 if (!xNum
|| !xDenom
|| !xNum
|| !yDenom
) return FALSE
;
573 dc
->w
.VportExtX
= (dc
->w
.VportExtX
* xNum
) / xDenom
;
574 dc
->w
.VportExtY
= (dc
->w
.VportExtY
* yNum
) / yDenom
;
575 if (dc
->w
.VportExtX
== 0) dc
->w
.VportExtX
= 1;
576 if (dc
->w
.VportExtY
== 0) dc
->w
.VportExtY
= 1;
577 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
582 /***********************************************************************
583 * ScaleViewportExtEx32 (GDI32.293)
585 BOOL32
ScaleViewportExtEx32( HDC32 hdc
, INT32 xNum
, INT32 xDenom
,
586 INT32 yNum
, INT32 yDenom
, LPSIZE32 size
)
589 BOOL16 ret
= ScaleViewportExtEx16( (HDC16
)hdc
, (INT16
)xNum
, (INT16
)xDenom
,
590 (INT16
)yNum
, (INT16
)yDenom
, &size16
);
591 if (size
) CONV_SIZE16TO32( &size16
, size
);
596 /***********************************************************************
597 * ScaleWindowExt (GDI.16)
599 DWORD
ScaleWindowExt( HDC16 hdc
, INT16 xNum
, INT16 xDenom
,
600 INT16 yNum
, INT16 yDenom
)
603 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
606 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
607 if (!dc
) return FALSE
;
608 MF_MetaParam4(dc
, META_SCALEWINDOWEXT
, xNum
, xDenom
, yNum
, yDenom
);
612 size
.cx
= dc
->w
.WndExtX
;
613 size
.cy
= dc
->w
.WndExtY
;
614 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
615 return size
.cx
| (size
.cy
<< 16);
616 if (!xNum
|| !xDenom
|| !xNum
|| !yDenom
) return FALSE
;
617 dc
->w
.WndExtX
= (dc
->w
.WndExtX
* xNum
) / xDenom
;
618 dc
->w
.WndExtY
= (dc
->w
.WndExtY
* yNum
) / yDenom
;
619 if (dc
->w
.WndExtX
== 0) dc
->w
.WndExtX
= 1;
620 if (dc
->w
.WndExtY
== 0) dc
->w
.WndExtY
= 1;
621 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
622 return size
.cx
| (size
.cy
<< 16);
626 /***********************************************************************
627 * ScaleWindowExtEx16 (GDI.485)
629 BOOL16
ScaleWindowExtEx16( HDC16 hdc
, INT16 xNum
, INT16 xDenom
,
630 INT16 yNum
, INT16 yDenom
, LPSIZE16 size
)
632 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
633 if (!dc
) return FALSE
;
636 size
->cx
= dc
->w
.WndExtX
;
637 size
->cy
= dc
->w
.WndExtY
;
639 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
641 if (!xNum
|| !xDenom
|| !xNum
|| !yDenom
) return FALSE
;
642 dc
->w
.WndExtX
= (dc
->w
.WndExtX
* xNum
) / xDenom
;
643 dc
->w
.WndExtY
= (dc
->w
.WndExtY
* yNum
) / yDenom
;
644 if (dc
->w
.WndExtX
== 0) dc
->w
.WndExtX
= 1;
645 if (dc
->w
.WndExtY
== 0) dc
->w
.WndExtY
= 1;
646 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
651 /***********************************************************************
652 * ScaleWindowExtEx32 (GDI32.294)
654 BOOL32
ScaleWindowExtEx32( HDC32 hdc
, INT32 xNum
, INT32 xDenom
,
655 INT32 yNum
, INT32 yDenom
, LPSIZE32 size
)
658 BOOL16 ret
= ScaleWindowExtEx16( (HDC16
)hdc
, (INT16
)xNum
, (INT16
)xDenom
,
659 (INT16
)yNum
, (INT16
)yDenom
, &size16
);
660 if (size
) CONV_SIZE16TO32( &size16
, size
);