}
case LogColorspace:
{
+#define DisplayGamma (1.0/1.7)
+#define FilmGamma 0.6
#define ReferenceBlack 95.0
#define ReferenceWhite 685.0
-#define DisplayGamma (1.0/1.7)
const char
*value;
double
black,
density,
+ film_gamma,
gamma,
reference_black,
reference_white;
value=GetImageProperty(image,"gamma");
if (value != (const char *) NULL)
gamma=1.0/StringToDouble(value) != 0.0 ? StringToDouble(value) : 1.0;
+ film_gamma=FilmGamma;
+ value=GetImageProperty(image,"film-gamma");
+ if (value != (const char *) NULL)
+ film_gamma=StringToDouble(value);
reference_black=ReferenceBlack;
value=GetImageProperty(image,"reference-black");
if (value != (const char *) NULL)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
black=pow(10.0,(reference_black-reference_white)*(gamma/density)*
- 0.002/0.6);
+ 0.002/film_gamma);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(dynamic,4)
#endif
for (i=0; i <= (long) MaxMap; i++)
logmap[i]=ScaleMapToQuantum((MagickRealType) (MaxMap*(reference_white+
log10(black+((MagickRealType) i/MaxMap)*(1.0-black))/((gamma/density)*
- 0.002/0.6))/1024.0+0.5));
+ 0.002/film_gamma))/1024.0+0.5));
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(dynamic,4) shared(status)