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
);
57 /***********************************************************************
60 BOOL32
DPtoLP32( HDC32 hdc
, LPPOINT32 points
, INT32 count
)
62 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
63 if (!dc
) return FALSE
;
67 points
->x
= XDPTOLP( dc
, points
->x
);
68 points
->y
= YDPTOLP( dc
, points
->y
);
75 /***********************************************************************
78 BOOL16
LPtoDP16( HDC16 hdc
, LPPOINT16 points
, INT16 count
)
80 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
81 if (!dc
) return FALSE
;
85 points
->x
= XLPTODP( dc
, points
->x
);
86 points
->y
= YLPTODP( dc
, points
->y
);
93 /***********************************************************************
94 * LPtoDP32 (GDI32.247)
96 BOOL32
LPtoDP32( HDC32 hdc
, LPPOINT32 points
, INT32 count
)
98 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
99 if (!dc
) return FALSE
;
103 points
->x
= XLPTODP( dc
, points
->x
);
104 points
->y
= YLPTODP( dc
, points
->y
);
111 /***********************************************************************
114 WORD
SetMapMode( HDC16 hdc
, WORD mode
)
117 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
120 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
122 MF_MetaParam1(dc
, META_SETMAPMODE
, mode
);
126 dprintf_gdi(stddeb
, "SetMapMode: %04x %d\n", hdc
, mode
);
128 prevMode
= dc
->w
.MapMode
;
132 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
133 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
142 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
143 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
144 dc
->w
.WndExtX
= dc
->w
.devCaps
->horzSize
;
145 dc
->w
.WndExtY
= dc
->w
.devCaps
->vertSize
;
146 dc
->w
.VportExtX
= dc
->w
.devCaps
->horzRes
/ 10;
147 dc
->w
.VportExtY
= dc
->w
.devCaps
->vertRes
/ -10;
151 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
152 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
153 dc
->w
.WndExtX
= dc
->w
.devCaps
->horzSize
* 10;
154 dc
->w
.WndExtY
= dc
->w
.devCaps
->vertSize
* 10;
155 dc
->w
.VportExtX
= dc
->w
.devCaps
->horzRes
/ 10;
156 dc
->w
.VportExtY
= dc
->w
.devCaps
->vertRes
/ -10;
160 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
161 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
162 dc
->w
.WndExtX
= dc
->w
.devCaps
->horzSize
;
163 dc
->w
.WndExtY
= dc
->w
.devCaps
->vertSize
;
164 dc
->w
.VportExtX
= (short)(254L * dc
->w
.devCaps
->horzRes
/ 1000);
165 dc
->w
.VportExtY
= (short)(-254L * dc
->w
.devCaps
->vertRes
/ 1000);
169 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
170 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
171 dc
->w
.WndExtX
= dc
->w
.devCaps
->horzSize
* 10;
172 dc
->w
.WndExtY
= dc
->w
.devCaps
->vertSize
* 10;
173 dc
->w
.VportExtX
= (short)(254L * dc
->w
.devCaps
->horzRes
/ 1000);
174 dc
->w
.VportExtY
= (short)(-254L * dc
->w
.devCaps
->vertRes
/ 1000);
178 dc
->w
.WndOrgX
= dc
->w
.WndOrgY
= 0;
179 dc
->w
.VportOrgX
= dc
->w
.VportOrgY
= 0;
180 dc
->w
.WndExtX
= (short)(144L * dc
->w
.devCaps
->horzSize
/ 10);
181 dc
->w
.WndExtY
= (short)(144L * dc
->w
.devCaps
->vertSize
/ 10);
182 dc
->w
.VportExtX
= (short)(254L * dc
->w
.devCaps
->horzRes
/ 1000);
183 dc
->w
.VportExtY
= (short)(-254L * dc
->w
.devCaps
->vertRes
/ 1000);
192 dc
->w
.MapMode
= mode
;
197 /***********************************************************************
198 * SetViewportExt (GDI.14)
200 DWORD
SetViewportExt( HDC16 hdc
, INT16 x
, INT16 y
)
203 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
206 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
207 if (!dc
) return FALSE
;
208 MF_MetaParam2(dc
, META_SETVIEWPORTEXT
, x
, y
);
212 size
.cx
= dc
->w
.VportExtX
;
213 size
.cy
= dc
->w
.VportExtY
;
214 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
215 return MAKELONG( size
.cx
, size
.cy
);
216 if (!x
|| !y
) return 0;
219 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
220 return MAKELONG( size
.cx
, size
.cy
);
224 /***********************************************************************
225 * SetViewportExtEx16 (GDI.479)
227 BOOL16
SetViewportExtEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPSIZE16 size
)
229 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
230 if (!dc
) return FALSE
;
233 size
->cx
= dc
->w
.VportExtX
;
234 size
->cy
= dc
->w
.VportExtY
;
236 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
238 if (!x
|| !y
) return FALSE
;
241 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
246 /***********************************************************************
247 * SetViewportExtEx32 (GDI32.340)
249 BOOL32
SetViewportExtEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPSIZE32 size
)
252 BOOL16 ret
= SetViewportExtEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &size16
);
253 if (size
) CONV_SIZE16TO32( &size16
, size
);
258 /***********************************************************************
259 * SetViewportOrg (GDI.13)
261 DWORD
SetViewportOrg( HDC16 hdc
, INT16 x
, INT16 y
)
264 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
267 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
268 if (!dc
) return FALSE
;
269 MF_MetaParam2(dc
, META_SETVIEWPORTORG
, x
, y
);
273 pt
.x
= dc
->w
.VportOrgX
;
274 pt
.y
= dc
->w
.VportOrgY
;
277 return pt
.x
| (pt
.y
<< 16);
281 /***********************************************************************
282 * SetViewportOrgEx16 (GDI.480)
284 BOOL16
SetViewportOrgEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPPOINT16 pt
)
286 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
287 if (!dc
) return FALSE
;
290 pt
->x
= dc
->w
.VportOrgX
;
291 pt
->y
= dc
->w
.VportOrgY
;
299 /***********************************************************************
300 * SetViewportOrgEx32 (GDI32.341)
302 BOOL32
SetViewportOrgEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPPOINT32 pt
)
305 BOOL16 ret
= SetViewportOrgEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &pt16
);
306 if (pt
) CONV_POINT16TO32( &pt16
, pt
);
311 /***********************************************************************
312 * SetWindowExt (GDI.12)
314 DWORD
SetWindowExt( HDC16 hdc
, INT16 x
, INT16 y
)
317 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
320 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
321 if (!dc
) return FALSE
;
322 MF_MetaParam2(dc
, META_SETWINDOWEXT
, x
, y
);
326 size
.cx
= dc
->w
.WndExtX
;
327 size
.cy
= dc
->w
.WndExtY
;
328 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
329 return MAKELONG( size
.cx
, size
.cy
);
330 if (!x
|| !y
) return 0;
333 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
334 return MAKELONG( size
.cx
, size
.cy
);
338 /***********************************************************************
339 * SetWindowExtEx16 (GDI.481)
341 BOOL16
SetWindowExtEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPSIZE16 size
)
343 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
344 if (!dc
) return FALSE
;
347 size
->cx
= dc
->w
.WndExtX
;
348 size
->cy
= dc
->w
.WndExtY
;
350 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
352 if (!x
|| !y
) return FALSE
;
355 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
360 /***********************************************************************
361 * SetWindowExtEx32 (GDI32.344)
363 BOOL32
SetWindowExtEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPSIZE32 size
)
366 BOOL16 ret
= SetWindowExtEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &size16
);
367 if (size
) CONV_SIZE16TO32( &size16
, size
);
372 /***********************************************************************
373 * SetWindowOrg (GDI.11)
375 DWORD
SetWindowOrg( HDC16 hdc
, INT16 x
, INT16 y
)
378 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
381 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
382 if (!dc
) return FALSE
;
383 MF_MetaParam2(dc
, META_SETWINDOWORG
, x
, y
);
387 pt
.x
= dc
->w
.WndOrgX
;
388 pt
.y
= dc
->w
.WndOrgY
;
391 return MAKELONG( pt
.x
, pt
.y
);
395 /***********************************************************************
396 * SetWindowOrgEx16 (GDI.482)
398 BOOL16
SetWindowOrgEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPPOINT16 pt
)
400 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
401 if (!dc
) return FALSE
;
404 pt
->x
= dc
->w
.WndOrgX
;
405 pt
->y
= dc
->w
.WndOrgY
;
413 /***********************************************************************
414 * SetWindowOrgEx32 (GDI32.345)
416 BOOL32
SetWindowOrgEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPPOINT32 pt
)
419 BOOL16 ret
= SetWindowOrgEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &pt16
);
420 if (pt
) CONV_POINT16TO32( &pt16
, pt
);
425 /***********************************************************************
426 * OffsetViewportOrg (GDI.17)
428 DWORD
OffsetViewportOrg( HDC16 hdc
, INT16 x
, INT16 y
)
431 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
434 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
435 if (!dc
) return FALSE
;
436 MF_MetaParam2(dc
, META_OFFSETVIEWPORTORG
, x
, y
);
440 pt
.x
= dc
->w
.VportOrgX
;
441 pt
.y
= dc
->w
.VportOrgY
;
442 dc
->w
.VportOrgX
+= x
;
443 dc
->w
.VportOrgY
+= y
;
444 return pt
.x
| (pt
.y
<< 16);
448 /***********************************************************************
449 * OffsetViewportOrgEx16 (GDI.476)
451 BOOL16
OffsetViewportOrgEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPPOINT16 pt
)
453 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
454 if (!dc
) return FALSE
;
457 pt
->x
= dc
->w
.VportOrgX
;
458 pt
->y
= dc
->w
.VportOrgY
;
460 dc
->w
.VportOrgX
+= x
;
461 dc
->w
.VportOrgY
+= y
;
466 /***********************************************************************
467 * OffsetViewportOrgEx32 (GDI32.257)
469 BOOL32
OffsetViewportOrgEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPPOINT32 pt
)
472 BOOL16 ret
= OffsetViewportOrgEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &pt16
);
473 if (pt
) CONV_POINT16TO32( &pt16
, pt
);
478 /***********************************************************************
479 * OffsetWindowOrg (GDI.15)
481 DWORD
OffsetWindowOrg( HDC16 hdc
, INT16 x
, INT16 y
)
484 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
487 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
488 if (!dc
) return FALSE
;
489 MF_MetaParam2(dc
, META_OFFSETWINDOWORG
, x
, y
);
493 pt
.x
= dc
->w
.WndOrgX
;
494 pt
.y
= dc
->w
.WndOrgY
;
497 return pt
.x
| (pt
.y
<< 16);
501 /***********************************************************************
502 * OffsetWindowOrgEx16 (GDI.477)
504 BOOL16
OffsetWindowOrgEx16( HDC16 hdc
, INT16 x
, INT16 y
, LPPOINT16 pt
)
506 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
507 if (!dc
) return FALSE
;
510 pt
->x
= dc
->w
.WndOrgX
;
511 pt
->y
= dc
->w
.WndOrgY
;
519 /***********************************************************************
520 * OffsetWindowOrgEx32 (GDI32.258)
522 BOOL32
OffsetWindowOrgEx32( HDC32 hdc
, INT32 x
, INT32 y
, LPPOINT32 pt
)
525 BOOL16 ret
= OffsetWindowOrgEx16( (HDC16
)hdc
, (INT16
)x
, (INT16
)y
, &pt16
);
526 if (pt
) CONV_POINT16TO32( &pt16
, pt
);
531 /***********************************************************************
532 * ScaleViewportExt (GDI.18)
534 DWORD
ScaleViewportExt( HDC16 hdc
, INT16 xNum
, INT16 xDenom
,
535 INT16 yNum
, INT16 yDenom
)
538 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
541 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
542 if (!dc
) return FALSE
;
543 MF_MetaParam4(dc
, META_SCALEVIEWPORTEXT
, xNum
, xDenom
, yNum
, yDenom
);
547 size
.cx
= dc
->w
.VportExtX
;
548 size
.cy
= dc
->w
.VportExtY
;
549 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
550 return size
.cx
| (size
.cy
<< 16);
551 if (!xNum
|| !xDenom
|| !xNum
|| !yDenom
) return 0;
552 dc
->w
.VportExtX
= (dc
->w
.VportExtX
* xNum
) / xDenom
;
553 dc
->w
.VportExtY
= (dc
->w
.VportExtY
* yNum
) / yDenom
;
554 if (dc
->w
.VportExtX
== 0) dc
->w
.VportExtX
= 1;
555 if (dc
->w
.VportExtY
== 0) dc
->w
.VportExtY
= 1;
556 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
557 return size
.cx
| (size
.cy
<< 16);
561 /***********************************************************************
562 * ScaleViewportExtEx16 (GDI.484)
564 BOOL16
ScaleViewportExtEx16( HDC16 hdc
, INT16 xNum
, INT16 xDenom
,
565 INT16 yNum
, INT16 yDenom
, LPSIZE16 size
)
567 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
568 if (!dc
) return FALSE
;
571 size
->cx
= dc
->w
.VportExtX
;
572 size
->cy
= dc
->w
.VportExtY
;
574 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
576 if (!xNum
|| !xDenom
|| !xNum
|| !yDenom
) return FALSE
;
577 dc
->w
.VportExtX
= (dc
->w
.VportExtX
* xNum
) / xDenom
;
578 dc
->w
.VportExtY
= (dc
->w
.VportExtY
* yNum
) / yDenom
;
579 if (dc
->w
.VportExtX
== 0) dc
->w
.VportExtX
= 1;
580 if (dc
->w
.VportExtY
== 0) dc
->w
.VportExtY
= 1;
581 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
586 /***********************************************************************
587 * ScaleViewportExtEx32 (GDI32.293)
589 BOOL32
ScaleViewportExtEx32( HDC32 hdc
, INT32 xNum
, INT32 xDenom
,
590 INT32 yNum
, INT32 yDenom
, LPSIZE32 size
)
593 BOOL16 ret
= ScaleViewportExtEx16( (HDC16
)hdc
, (INT16
)xNum
, (INT16
)xDenom
,
594 (INT16
)yNum
, (INT16
)yDenom
, &size16
);
595 if (size
) CONV_SIZE16TO32( &size16
, size
);
600 /***********************************************************************
601 * ScaleWindowExt (GDI.16)
603 DWORD
ScaleWindowExt( HDC16 hdc
, INT16 xNum
, INT16 xDenom
,
604 INT16 yNum
, INT16 yDenom
)
607 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
610 dc
= (DC
*)GDI_GetObjPtr(hdc
, METAFILE_DC_MAGIC
);
611 if (!dc
) return FALSE
;
612 MF_MetaParam4(dc
, META_SCALEWINDOWEXT
, xNum
, xDenom
, yNum
, yDenom
);
616 size
.cx
= dc
->w
.WndExtX
;
617 size
.cy
= dc
->w
.WndExtY
;
618 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
619 return size
.cx
| (size
.cy
<< 16);
620 if (!xNum
|| !xDenom
|| !xNum
|| !yDenom
) return FALSE
;
621 dc
->w
.WndExtX
= (dc
->w
.WndExtX
* xNum
) / xDenom
;
622 dc
->w
.WndExtY
= (dc
->w
.WndExtY
* yNum
) / yDenom
;
623 if (dc
->w
.WndExtX
== 0) dc
->w
.WndExtX
= 1;
624 if (dc
->w
.WndExtY
== 0) dc
->w
.WndExtY
= 1;
625 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
626 return size
.cx
| (size
.cy
<< 16);
630 /***********************************************************************
631 * ScaleWindowExtEx16 (GDI.485)
633 BOOL16
ScaleWindowExtEx16( HDC16 hdc
, INT16 xNum
, INT16 xDenom
,
634 INT16 yNum
, INT16 yDenom
, LPSIZE16 size
)
636 DC
* dc
= (DC
*) GDI_GetObjPtr( hdc
, DC_MAGIC
);
637 if (!dc
) return FALSE
;
640 size
->cx
= dc
->w
.WndExtX
;
641 size
->cy
= dc
->w
.WndExtY
;
643 if ((dc
->w
.MapMode
!= MM_ISOTROPIC
) && (dc
->w
.MapMode
!= MM_ANISOTROPIC
))
645 if (!xNum
|| !xDenom
|| !xNum
|| !yDenom
) return FALSE
;
646 dc
->w
.WndExtX
= (dc
->w
.WndExtX
* xNum
) / xDenom
;
647 dc
->w
.WndExtY
= (dc
->w
.WndExtY
* yNum
) / yDenom
;
648 if (dc
->w
.WndExtX
== 0) dc
->w
.WndExtX
= 1;
649 if (dc
->w
.WndExtY
== 0) dc
->w
.WndExtY
= 1;
650 if (dc
->w
.MapMode
== MM_ISOTROPIC
) MAPPING_FixIsotropic( dc
);
655 /***********************************************************************
656 * ScaleWindowExtEx32 (GDI32.294)
658 BOOL32
ScaleWindowExtEx32( HDC32 hdc
, INT32 xNum
, INT32 xDenom
,
659 INT32 yNum
, INT32 yDenom
, LPSIZE32 size
)
662 BOOL16 ret
= ScaleWindowExtEx16( (HDC16
)hdc
, (INT16
)xNum
, (INT16
)xDenom
,
663 (INT16
)yNum
, (INT16
)yDenom
, &size16
);
664 if (size
) CONV_SIZE16TO32( &size16
, size
);