Skip to content

Commit

Permalink
Fixed CMS_NO_HALF_SUPPORT compilation errors
Browse files Browse the repository at this point in the history
Thanks to Dirk Lemstra for reporting this bug
  • Loading branch information
Marti committed Sep 11, 2016
1 parent 504e1cb commit 23aaa8c
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
43 changes: 43 additions & 0 deletions src/cmsalpha.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,13 @@ void from8toDBL(void* dst, const void* src)
static
void from8toHLF(void* dst, const void* src)
{
#ifndef CMS_NO_HALF_SUPPORT
cmsFloat32Number n = (*(cmsUInt8Number*)src) / 255.0f;
*(cmsUInt16Number*)dst = _cmsFloat2Half(n);
#else
cmsUNUSED_PARAMETER(dst);
cmsUNUSED_PARAMETER(src);
#endif
}

// From 16
Expand Down Expand Up @@ -122,8 +127,13 @@ void from16toDBL(void* dst, const void* src)
static
void from16toHLF(void* dst, const void* src)
{
#ifndef CMS_NO_HALF_SUPPORT
cmsFloat32Number n = (*(cmsUInt16Number*)src) / 65535.0f;
*(cmsUInt16Number*)dst = _cmsFloat2Half(n);
#else
cmsUNUSED_PARAMETER(dst);
cmsUNUSED_PARAMETER(src);
#endif
}

// From Float
Expand Down Expand Up @@ -158,8 +168,13 @@ void fromFLTtoDBL(void* dst, const void* src)
static
void fromFLTtoHLF(void* dst, const void* src)
{
#ifndef CMS_NO_HALF_SUPPORT
cmsFloat32Number n = *(cmsFloat32Number*)src;
*(cmsUInt16Number*)dst = _cmsFloat2Half(n);
#else
cmsUNUSED_PARAMETER(dst);
cmsUNUSED_PARAMETER(src);
#endif
}


Expand All @@ -168,27 +183,48 @@ void fromFLTtoHLF(void* dst, const void* src)
static
void fromHLFto8(void* dst, const void* src)
{
#ifndef CMS_NO_HALF_SUPPORT
cmsFloat32Number n = _cmsHalf2Float(*(cmsUInt16Number*)src);
*(cmsUInt8Number*)dst = _cmsQuickSaturateByte(n * 255.0f);
#else
cmsUNUSED_PARAMETER(dst);
cmsUNUSED_PARAMETER(src);
#endif

}

static
void fromHLFto16(void* dst, const void* src)
{
#ifndef CMS_NO_HALF_SUPPORT
cmsFloat32Number n = _cmsHalf2Float(*(cmsUInt16Number*)src);
*(cmsUInt16Number*)dst = _cmsQuickSaturateWord(n * 65535.0f);
#else
cmsUNUSED_PARAMETER(dst);
cmsUNUSED_PARAMETER(src);
#endif
}

static
void fromHLFtoFLT(void* dst, const void* src)
{
#ifndef CMS_NO_HALF_SUPPORT
*(cmsFloat32Number*)dst = _cmsHalf2Float(*(cmsUInt16Number*)src);
#else
cmsUNUSED_PARAMETER(dst);
cmsUNUSED_PARAMETER(src);
#endif
}

static
void fromHLFtoDBL(void* dst, const void* src)
{
#ifndef CMS_NO_HALF_SUPPORT
*(cmsFloat64Number*)dst = (cmsFloat64Number)_cmsHalf2Float(*(cmsUInt16Number*)src);
#else
cmsUNUSED_PARAMETER(dst);
cmsUNUSED_PARAMETER(src);
#endif
}

// From double
Expand Down Expand Up @@ -216,8 +252,13 @@ void fromDBLtoFLT(void* dst, const void* src)
static
void fromDBLtoHLF(void* dst, const void* src)
{
#ifndef CMS_NO_HALF_SUPPORT
cmsFloat32Number n = (cmsFloat32Number) *(cmsFloat64Number*)src;
*(cmsUInt16Number*)dst = _cmsFloat2Half(n);
#else
cmsUNUSED_PARAMETER(dst);
cmsUNUSED_PARAMETER(src);
#endif
}

static
Expand All @@ -235,8 +276,10 @@ int FormatterPos(cmsUInt32Number frm)

if (b == 0 && T_FLOAT(frm))
return 4; // DBL
#ifndef CMS_NO_HALF_SUPPORT
if (b == 2 && T_FLOAT(frm))
return 2; // HLF
#endif
if (b == 4 && T_FLOAT(frm))
return 3; // FLT
if (b == 2 && !T_FLOAT(frm))
Expand Down
8 changes: 7 additions & 1 deletion testbed/testcms2.c
Original file line number Diff line number Diff line change
Expand Up @@ -4000,6 +4000,8 @@ cmsInt32Number CheckFormatters16(void)
C( TYPE_ALabV2_8 );
C( TYPE_LabV2_16 );

#ifndef CMS_NO_HALF_SUPPORT

C( TYPE_GRAY_HALF_FLT );
C( TYPE_RGB_HALF_FLT );
C( TYPE_CMYK_HALF_FLT );
Expand All @@ -4011,6 +4013,7 @@ cmsInt32Number CheckFormatters16(void)
C( TYPE_BGRA_HALF_FLT );
C( TYPE_ABGR_HALF_FLT );

#endif

return FormatterFailed == 0 ? 1 : 0;
}
Expand Down Expand Up @@ -4106,7 +4109,9 @@ cmsInt32Number CheckFormattersFloat(void)
C( TYPE_RGB_DBL );
C( TYPE_BGR_DBL );
C( TYPE_CMYK_DBL );
C( TYPE_XYZ_FLT );

#ifndef CMS_NO_HALF_SUPPORT
C( TYPE_GRAY_HALF_FLT );
C( TYPE_RGB_HALF_FLT );
C( TYPE_CMYK_HALF_FLT );
Expand All @@ -4117,8 +4122,9 @@ cmsInt32Number CheckFormattersFloat(void)
C( TYPE_BGR_HALF_FLT );
C( TYPE_BGRA_HALF_FLT );
C( TYPE_ABGR_HALF_FLT );
#endif


C( TYPE_XYZ_FLT );


return FormatterFailed == 0 ? 1 : 0;
Expand Down

0 comments on commit 23aaa8c

Please sign in to comment.