42 lines
1 KiB
C
42 lines
1 KiB
C
|
#ifndef __eea5eb1f_2730_4617_a6e8_347ffd1068fa__
|
||
|
#define __eea5eb1f_2730_4617_a6e8_347ffd1068fa__
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include "simstr.h"
|
||
|
|
||
|
namespace PrintScanUtil
|
||
|
{
|
||
|
inline int MulDivNoRound( int nNumber, int nNumerator, int nDenominator )
|
||
|
{
|
||
|
return(int)(((LONGLONG)nNumber * nNumerator) / nDenominator);
|
||
|
}
|
||
|
|
||
|
inline SIZE ScalePreserveAspectRatio( int nAvailX, int nAvailY, int nItemX, int nItemY )
|
||
|
{
|
||
|
SIZE sizeResult = { nAvailX, nAvailY };
|
||
|
if (nItemX && nItemY)
|
||
|
{
|
||
|
//
|
||
|
// Width is greater than height. X is the constraining factor
|
||
|
//
|
||
|
if (nAvailY*nItemX > nAvailX*nItemY)
|
||
|
{
|
||
|
sizeResult.cy = MulDivNoRound(nItemY,nAvailX,nItemX);
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Height is greater than width. Y is the constraining factor
|
||
|
//
|
||
|
else
|
||
|
{
|
||
|
sizeResult.cx = MulDivNoRound(nItemX,nAvailY,nItemY);
|
||
|
}
|
||
|
}
|
||
|
return sizeResult;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif // __PSUTIL_H_INCLUDED
|
||
|
|