You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.7 KiB
83 lines
1.7 KiB
/**************************************************************************\
|
|
*
|
|
* Copyright (c) 1999-2000 Microsoft Corporation
|
|
*
|
|
* Module name:
|
|
*
|
|
* The "GammaConvert" scan operation.
|
|
*
|
|
* Abstract:
|
|
*
|
|
* See Gdiplus\Specs\ScanOperation.doc for an overview.
|
|
*
|
|
* These operations convert from one format to another, accounting
|
|
* for differing gamma ramps.
|
|
*
|
|
* Revision History:
|
|
*
|
|
* 12/06/1999 agodfrey
|
|
* Created it.
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#include "precomp.hpp"
|
|
|
|
/**************************************************************************\
|
|
*
|
|
* Operation Description:
|
|
*
|
|
* GammaConvert: Convert from one format to another, accounting
|
|
* for differing gamma ramps.
|
|
*
|
|
* Arguments:
|
|
*
|
|
* dst - The destination scan
|
|
* src - The source scan
|
|
* count - The length of the scan, in pixels
|
|
* otherParams - Additional conversion data.
|
|
*
|
|
* Return Value:
|
|
*
|
|
* None
|
|
*
|
|
* History:
|
|
*
|
|
* 12/07/1999 agodfrey
|
|
* Created it.
|
|
*
|
|
\**************************************************************************/
|
|
|
|
// 32bpp sRGB to 64bpp sRGB64
|
|
|
|
VOID FASTCALL
|
|
ScanOperation::GammaConvert_sRGB_sRGB64(
|
|
VOID *dst,
|
|
const VOID *src,
|
|
INT count,
|
|
const OtherParams *otherParams
|
|
)
|
|
{
|
|
DEFINE_POINTERS(ARGB, ARGB64)
|
|
while (count--)
|
|
{
|
|
sRGB::ConvertTosRGB64(*s++,d++);
|
|
}
|
|
}
|
|
|
|
// 64bpp sRGB64 to 32bpp sRGB
|
|
|
|
VOID FASTCALL
|
|
ScanOperation::GammaConvert_sRGB64_sRGB(
|
|
VOID *dst,
|
|
const VOID *src,
|
|
INT count,
|
|
const OtherParams *otherParams
|
|
)
|
|
{
|
|
DEFINE_POINTERS(ARGB64, ARGB)
|
|
while (count--)
|
|
{
|
|
*d++ = sRGB::ConvertTosRGB(*s++);
|
|
}
|
|
}
|
|
|