- Implement TranslateBitmapBits.
authorHans Leidekker <hans@it.vu.nl>
Tue, 8 Mar 2005 19:00:14 +0000 (19:00 +0000)
committerAlexandre Julliard <julliard@winehq.org>
Tue, 8 Mar 2005 19:00:14 +0000 (19:00 +0000)
- Don't pass bogus intent values to lcms.

dlls/mscms/lcms_api.h
dlls/mscms/mscms_main.c
dlls/mscms/stub.c
dlls/mscms/transform.c

index f88f59743b823aa492472e158228dcd208c8fd25..4f071ba307bacdc97b1879f98ee16af4d0ef9eb0 100644 (file)
@@ -31,6 +31,7 @@ LCMS_API_FUNCTION(cmsCreate_sRGBProfile)
 LCMS_API_FUNCTION(cmsCreateMultiprofileTransform)
 LCMS_API_FUNCTION(cmsCreateTransform)
 LCMS_API_FUNCTION(cmsDeleteTransform)
+LCMS_API_FUNCTION(cmsDoTransform)
 LCMS_API_FUNCTION(cmsOpenProfileFromMem)
 
 #ifndef LCMS_API_NO_REDEFINE
@@ -39,6 +40,7 @@ LCMS_API_FUNCTION(cmsOpenProfileFromMem)
 #define cmsCreateMultiprofileTransform pcmsCreateMultiprofileTransform
 #define cmsCreateTransform pcmsCreateTransform
 #define cmsDeleteTransform pcmsDeleteTransform
+#define cmsDoTransform pcmsDoTransform
 #define cmsOpenProfileFromMem pcmsOpenProfileFromMem
 #endif /* LCMS_API_NO_REDEFINE */
 
index 689eed12900f588ebb1c7c7e7af038f8cfef8971..895a8af90bdeba2f9b480d5a13e678295830c67d 100644 (file)
@@ -77,6 +77,7 @@ static BOOL MSCMS_init_lcms()
     LOAD_FUNCPTR(cmsCreateMultiprofileTransform);
     LOAD_FUNCPTR(cmsCreateTransform);
     LOAD_FUNCPTR(cmsDeleteTransform);
+    LOAD_FUNCPTR(cmsDoTransform);
     LOAD_FUNCPTR(cmsOpenProfileFromMem);
     #undef LOAD_FUNCPTR
 
index 6a62c5c26f8f158d25255c89f3d25f2e1dbb41b7..46cc9a58cf1c805d83c858cbc10781958e204b9a 100644 (file)
@@ -202,18 +202,6 @@ BOOL WINAPI SetColorProfileElementSize( HPROFILE profile, TAGTYPE type, DWORD si
     return FALSE;
 }
 
-BOOL WINAPI TranslateBitmapBits( HTRANSFORM transform, PVOID srcbits, BMFORMAT input,
-                                 DWORD width, DWORD height, DWORD inputstride, PVOID destbits,
-                                 BMFORMAT output, DWORD outputstride, PBMCALLBACKFN callback,
-                                 ULONG data )
-{
-    FIXME( "( %p, %p, 0x%08x, 0x%08lx, 0x%08lx, 0x%08lx, %p, 0x%08x, 0x%08lx, %p, 0x%08lx ) stub\n",
-           transform, srcbits, input, width, height, inputstride, destbits, output, outputstride, 
-           callback, data );
-
-    return FALSE;
-}
-
 BOOL WINAPI TranslateColors( HTRANSFORM transform, PCOLOR inputcolors, DWORD number,
                              COLORTYPE input, PCOLOR outputcolors, COLORTYPE output )
 {
index 234a336c8e6a506f629bcbe3fb2cfc0ae50c5dc0..ab928172f96e6d59b855364d8a98b4b399dbd3ef 100644 (file)
@@ -62,11 +62,14 @@ HTRANSFORM WINAPI CreateColorTransformW( LPLOGCOLORSPACEW space, HPROFILE dest,
 #ifdef HAVE_LCMS_H
     cmsHTRANSFORM cmstransform;
     cmsHPROFILE cmsprofiles[3];
+    int intent;
 
     TRACE( "( %p, %p, %p, 0x%08lx )\n", space, dest, target, flags );
 
     if (!space || !dest) return FALSE;
 
+    intent = space->lcsIntent > 3 ? INTENT_PERCEPTUAL : space->lcsIntent;
+
     cmsprofiles[0] = cmsCreate_sRGBProfile(); /* FIXME: create from supplied color space */
     cmsprofiles[1] = MSCMS_hprofile2cmsprofile( dest ); 
 
@@ -74,14 +77,13 @@ HTRANSFORM WINAPI CreateColorTransformW( LPLOGCOLORSPACEW space, HPROFILE dest,
     {
         cmsprofiles[2] = MSCMS_hprofile2cmsprofile( target );
         cmstransform = cmsCreateMultiprofileTransform( cmsprofiles, 3, TYPE_BGR_8,
-                                                       TYPE_BGR_8, space->lcsIntent, 0 );
+                                                       TYPE_BGR_8, intent, 0 );
     }
     else
     {
         cmstransform = cmsCreateTransform( cmsprofiles[0], TYPE_BGR_8, cmsprofiles[1],
-                                           TYPE_BGR_8, space->lcsIntent, 0 );
+                                           TYPE_BGR_8, intent, 0 );
     }
-
     ret = MSCMS_create_htransform_handle( cmstransform );
 
 #endif /* HAVE_LCMS_H */
@@ -136,3 +138,24 @@ BOOL WINAPI DeleteColorTransform( HTRANSFORM transform )
 #endif /* HAVE_LCMS_H */
     return ret;
 }
+
+BOOL WINAPI TranslateBitmapBits( HTRANSFORM transform, PVOID srcbits, BMFORMAT input,
+    DWORD width, DWORD height, DWORD inputstride, PVOID destbits, BMFORMAT output,
+    DWORD outputstride, PBMCALLBACKFN callback, ULONG data )
+{
+    BOOL ret = FALSE;
+#ifdef HAVE_LCMS_H
+    cmsHTRANSFORM cmstransform;
+
+    TRACE( "( %p, %p, 0x%08x, 0x%08lx, 0x%08lx, 0x%08lx, %p, 0x%08x, 0x%08lx, %p, 0x%08lx )\n",
+           transform, srcbits, input, width, height, inputstride, destbits, output,
+           outputstride, callback, data );
+
+    cmstransform = MSCMS_htransform2cmstransform( transform );
+
+    cmsDoTransform( cmstransform, srcbits, destbits, width * height );
+    ret = TRUE;
+
+#endif /* HAVE_LCMS_H */
+    return ret;
+}