Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
d40c9126
Commit
d40c9126
authored
Jul 26, 2013
by
Hans Leidekker
Committed by
Alexandre Julliard
Jul 29, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mscms: Port to liblcms2.
parent
f5f04e8a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
151 additions
and
200 deletions
+151
-200
configure
configure
+35
-35
configure.ac
configure.ac
+10
-10
Makefile.in
dlls/mscms/Makefile.in
+2
-2
handle.c
dlls/mscms/handle.c
+7
-7
icc.c
dlls/mscms/icc.c
+54
-39
mscms_main.c
dlls/mscms/mscms_main.c
+6
-16
mscms_priv.h
dlls/mscms/mscms_priv.h
+11
-59
profile.c
dlls/mscms/profile.c
+0
-0
profile.c
dlls/mscms/tests/profile.c
+9
-12
transform.c
dlls/mscms/transform.c
+14
-14
config.h.in
include/config.h.in
+3
-6
No files found.
configure
View file @
d40c9126
...
...
@@ -653,8 +653,8 @@ LIBGETTEXTPO
ZLIB
FREETYPE_LIBS
FREETYPE_CFLAGS
LCMS_LIBS
LCMS_CFLAGS
LCMS
2
_LIBS
LCMS
2
_CFLAGS
RESOLVLIBS
GPHOTO2_PORT_LIBS
GPHOTO2_PORT_CFLAGS
...
...
@@ -880,8 +880,8 @@ GPHOTO2_CFLAGS
GPHOTO2_LIBS
GPHOTO2_PORT_CFLAGS
GPHOTO2_PORT_LIBS
LCMS_CFLAGS
LCMS_LIBS
LCMS
2
_CFLAGS
LCMS
2
_LIBS
FREETYPE_CFLAGS
FREETYPE_LIBS
GSTREAMER_CFLAGS
...
...
@@ -1596,8 +1596,9 @@ Some influential environment variables:
C compiler flags for libgphoto2_port, overriding pkg-config
GPHOTO2_PORT_LIBS
Linker flags for libgphoto2_port, overriding pkg-config
LCMS_CFLAGS C compiler flags for lcms, overriding pkg-config
LCMS_LIBS Linker flags for lcms, overriding pkg-config
LCMS2_CFLAGS
C compiler flags for lcms2, overriding pkg-config
LCMS2_LIBS Linker flags for lcms2, overriding pkg-config
FREETYPE_CFLAGS
C compiler flags for freetype2, overriding pkg-config
FREETYPE_LIBS
...
...
@@ -10758,45 +10759,44 @@ rm -f core conftest.err conftest.$ac_objext \
LIBS
=
"
$ac_save_LIBS
"
fi
if
test
"x
$with_lcms
"
!=
"xno"
if
test
"x
$with_lcms
2
"
!=
"xno"
then
ac_save_CPPFLAGS
=
"
$CPPFLAGS
"
if
test
-n
"
$LCMS_CFLAGS
"
;
then
:
if
test
-n
"
$LCMS
2
_CFLAGS
"
;
then
:
elif
test
-n
"
$PKG_CONFIG
"
;
then
:
LCMS
_CFLAGS
=
`
$PKG_CONFIG
--cflags
lcms
2>/dev/null
`
LCMS
2_CFLAGS
=
`
$PKG_CONFIG
--cflags
lcms2
2>/dev/null
`
fi
CPPFLAGS
=
"
$CPPFLAGS
$LCMS_CFLAGS
"
if
test
-n
"
$LCMS_LIBS
"
;
then
:
CPPFLAGS
=
"
$CPPFLAGS
$LCMS
2
_CFLAGS
"
if
test
-n
"
$LCMS
2
_LIBS
"
;
then
:
elif
test
-n
"
$PKG_CONFIG
"
;
then
:
LCMS
_LIBS
=
`
$PKG_CONFIG
--libs
lcms
2>/dev/null
`
LCMS
2_LIBS
=
`
$PKG_CONFIG
--libs
lcms2
2>/dev/null
`
fi
LCMS
_LIBS
=
${
LCMS_LIBS
:-
"-llcms
"
}
for
ac_header
in
lcms
.h lcms/lcms
.h
LCMS
2_LIBS
=
${
LCMS2_LIBS
:-
"-llcms2
"
}
for
ac_header
in
lcms
2
.h
do
:
as_ac_Header
=
`
$as_echo
"ac_cv_header_
$ac_header
"
|
$as_tr_sh
`
ac_fn_c_check_header_mongrel
"
$LINENO
"
"
$ac_header
"
"
$as_ac_Header
"
"
$ac_includes_default
"
if
eval test
\"
x
\$
"
$as_ac_Header
"
\"
=
x
"yes"
;
then
:
ac_fn_c_check_header_mongrel
"
$LINENO
"
"lcms2.h"
"ac_cv_header_lcms2_h"
"
$ac_includes_default
"
if
test
"x
$ac_cv_header_lcms2_h
"
=
xyes
;
then
:
cat
>>
confdefs.h
<<
_ACEOF
#define
`
$as_echo
"HAVE_
$ac_header
" |
$as_tr_cpp
`
1
#define
HAVE_LCMS2_H
1
_ACEOF
fi
done
if
test
"
$ac_cv_header_lcms
_h
"
=
"yes"
-o
"
$ac_cv_header_lcms_lcms
_h
"
=
"yes"
if
test
"
$ac_cv_header_lcms
2
_h
"
=
"yes"
then
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: checking for cmsOpenProfileFromFile in -llcms"
>
&5
$as_echo_n
"checking for cmsOpenProfileFromFile in -llcms... "
>
&6
;
}
if
${
ac_cv_lib_lcms_cmsOpenProfileFromFile
+
:
}
false
;
then
:
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: checking for cmsOpenProfileFromFile in -llcms
2
"
>
&5
$as_echo_n
"checking for cmsOpenProfileFromFile in -llcms
2
... "
>
&6
;
}
if
${
ac_cv_lib_lcms
2
_cmsOpenProfileFromFile
+
:
}
false
;
then
:
$as_echo_n
"(cached) "
>
&6
else
ac_check_lib_save_LIBS
=
$LIBS
LIBS
=
"-llcms
$LIBS
"
LIBS
=
"-llcms
2
$LIBS
"
cat
confdefs.h -
<<
_ACEOF
>conftest.
$ac_ext
/* end confdefs.h. */
...
...
@@ -10816,35 +10816,35 @@ return cmsOpenProfileFromFile ();
}
_ACEOF
if
ac_fn_c_try_link
"
$LINENO
"
;
then
:
ac_cv_lib_lcms_cmsOpenProfileFromFile
=
yes
ac_cv_lib_lcms
2
_cmsOpenProfileFromFile
=
yes
else
ac_cv_lib_lcms_cmsOpenProfileFromFile
=
no
ac_cv_lib_lcms
2
_cmsOpenProfileFromFile
=
no
fi
rm
-f
core conftest.err conftest.
$ac_objext
\
conftest
$ac_exeext
conftest.
$ac_ext
LIBS
=
$ac_check_lib_save_LIBS
fi
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result:
$ac_cv_lib_lcms_cmsOpenProfileFromFile
"
>
&5
$as_echo
"
$ac_cv_lib_lcms_cmsOpenProfileFromFile
"
>
&6
;
}
if
test
"x
$ac_cv_lib_lcms_cmsOpenProfileFromFile
"
=
xyes
;
then
:
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result:
$ac_cv_lib_lcms
2
_cmsOpenProfileFromFile
"
>
&5
$as_echo
"
$ac_cv_lib_lcms
2
_cmsOpenProfileFromFile
"
>
&6
;
}
if
test
"x
$ac_cv_lib_lcms
2
_cmsOpenProfileFromFile
"
=
xyes
;
then
:
$as_echo
"#define HAVE_LCMS 1"
>>
confdefs.h
$as_echo
"#define HAVE_LCMS
2
1"
>>
confdefs.h
else
LCMS_LIBS
=
""
LCMS
2
_LIBS
=
""
fi
else
LCMS_CFLAGS
=
""
LCMS_LIBS
=
""
LCMS
2
_CFLAGS
=
""
LCMS
2
_LIBS
=
""
fi
CPPFLAGS
=
"
$ac_save_CPPFLAGS
"
fi
if
test
"
$ac_cv_lib_lcms_cmsOpenProfileFromFile
"
!=
"yes"
;
then
:
if
test
"
$ac_cv_lib_lcms
2
_cmsOpenProfileFromFile
"
!=
"yes"
;
then
:
case
"x
$with_cms
"
in
x
)
as_fn_append wine_notices
"|liblcms
${
notice_platform
}
development files not found, Color Management won't be supported."
;;
x
)
as_fn_append wine_notices
"|liblcms
2
${
notice_platform
}
development files not found, Color Management won't be supported."
;;
xno
)
;;
*
)
as_fn_error
$?
"liblcms
${
notice_platform
}
development files not found, Color Management won't be supported.
*
)
as_fn_error
$?
"liblcms
2
${
notice_platform
}
development files not found, Color Management won't be supported.
This is an error since --with-cms was requested."
"
$LINENO
"
5
;;
esac
fi
...
...
configure.ac
View file @
d40c9126
...
...
@@ -1441,23 +1441,23 @@ then
fi
dnl **** Check for LittleCMS ***
if test "x$with_lcms" != "xno"
if test "x$with_lcms
2
" != "xno"
then
ac_save_CPPFLAGS="$CPPFLAGS"
WINE_PACKAGE_FLAGS(LCMS
,[lcms],[-llcms
])
AC_CHECK_HEADERS([lcms
.h lcms/lcms
.h])
if test "$ac_cv_header_lcms
_h" = "yes" -o "$ac_cv_header_lcms_lcms
_h" = "yes"
WINE_PACKAGE_FLAGS(LCMS
2,[lcms2],[-llcms2
])
AC_CHECK_HEADERS([lcms
2
.h])
if test "$ac_cv_header_lcms
2
_h" = "yes"
then
AC_CHECK_LIB(lcms, cmsOpenProfileFromFile,
[AC_DEFINE(HAVE_LCMS
, 1, [Define if you have the LittleCMS development environment])],[LCMS
_LIBS=""])
AC_CHECK_LIB(lcms
2
, cmsOpenProfileFromFile,
[AC_DEFINE(HAVE_LCMS
2, 1, [Define if you have the LittleCMS development environment])],[LCMS2
_LIBS=""])
else
LCMS_CFLAGS=""
LCMS_LIBS=""
LCMS
2
_CFLAGS=""
LCMS
2
_LIBS=""
fi
CPPFLAGS="$ac_save_CPPFLAGS"
fi
WINE_NOTICE_WITH(cms,[test "$ac_cv_lib_lcms_cmsOpenProfileFromFile" != "yes"],
[liblcms ${notice_platform}development files not found, Color Management won't be supported.])
WINE_NOTICE_WITH(cms,[test "$ac_cv_lib_lcms
2
_cmsOpenProfileFromFile" != "yes"],
[liblcms
2
${notice_platform}development files not found, Color Management won't be supported.])
dnl **** Check for FreeType 2 ****
if test "x$with_freetype" != "xno"
...
...
dlls/mscms/Makefile.in
View file @
d40c9126
MODULE
=
mscms.dll
IMPORTLIB
=
mscms
IMPORTS
=
shlwapi advapi32
EXTRAINCL
=
@LCMS_CFLAGS@
EXTRALIBS
=
@LCMS_LIBS@
EXTRAINCL
=
@LCMS
2
_CFLAGS@
EXTRALIBS
=
@LCMS
2
_LIBS@
C_SRCS
=
\
handle.c
\
...
...
dlls/mscms/handle.c
View file @
d40c9126
...
...
@@ -31,7 +31,7 @@
#include "mscms_priv.h"
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
static
CRITICAL_SECTION
MSCMS_handle_cs
;
static
CRITICAL_SECTION_DEBUG
MSCMS_handle_cs_debug
=
...
...
@@ -112,7 +112,7 @@ static HPROFILE alloc_profile_handle( void )
for
(
index
=
0
;
index
<
num_profile_handles
;
index
++
)
{
if
(
!
profiletable
[
index
].
iccprofile
)
return
(
HPROFILE
)(
index
+
1
);
if
(
!
profiletable
[
index
].
data
)
return
(
HPROFILE
)(
index
+
1
);
}
if
(
!
profiletable
)
{
...
...
@@ -165,11 +165,11 @@ BOOL close_profile( HPROFILE handle )
{
if
(
profile
->
access
&
PROFILE_READWRITE
)
{
DWORD
written
,
size
=
MSCMS_get_profile_size
(
profile
->
iccprofile
)
;
DWORD
written
;
if
(
SetFilePointer
(
profile
->
file
,
0
,
NULL
,
FILE_BEGIN
)
||
!
WriteFile
(
profile
->
file
,
profile
->
iccprofile
,
size
,
&
written
,
NULL
)
||
written
!=
size
)
!
WriteFile
(
profile
->
file
,
profile
->
data
,
profile
->
size
,
&
written
,
NULL
)
||
written
!=
profile
->
size
)
{
ERR
(
"Unable to write color profile
\n
"
);
}
...
...
@@ -177,7 +177,7 @@ BOOL close_profile( HPROFILE handle )
CloseHandle
(
profile
->
file
);
}
cmsCloseProfile
(
profile
->
cmsprofile
);
HeapFree
(
GetProcessHeap
(),
0
,
profile
->
iccprofile
);
HeapFree
(
GetProcessHeap
(),
0
,
profile
->
data
);
memset
(
profile
,
0
,
sizeof
(
struct
profile
)
);
...
...
@@ -249,4 +249,4 @@ BOOL close_transform( HTRANSFORM handle )
return
TRUE
;
}
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
dlls/mscms/icc.c
View file @
d40c9126
...
...
@@ -31,75 +31,90 @@
#include "mscms_priv.h"
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
static
inline
void
MSCMS_
adjust_endianness32
(
ULONG
*
ptr
)
static
inline
void
adjust_endianness32
(
ULONG
*
ptr
)
{
#ifndef WORDS_BIGENDIAN
*
ptr
=
RtlUlongByteSwap
(
*
ptr
);
#endif
}
void
MSCMS_get_profile_header
(
const
icProfile
*
icc
profile
,
PROFILEHEADER
*
header
)
void
get_profile_header
(
const
struct
profile
*
profile
,
PROFILEHEADER
*
header
)
{
unsigned
int
i
;
memcpy
(
header
,
iccprofile
,
sizeof
(
PROFILEHEADER
)
);
memcpy
(
header
,
profile
->
data
,
sizeof
(
PROFILEHEADER
)
);
/* ICC format is big-endian, swap bytes if necessary */
for
(
i
=
0
;
i
<
sizeof
(
PROFILEHEADER
)
/
sizeof
(
ULONG
);
i
++
)
MSCMS_
adjust_endianness32
(
(
ULONG
*
)
header
+
i
);
adjust_endianness32
(
(
ULONG
*
)
header
+
i
);
}
void
MSCMS_set_profile_header
(
icProfile
*
icc
profile
,
const
PROFILEHEADER
*
header
)
void
set_profile_header
(
const
struct
profile
*
profile
,
const
PROFILEHEADER
*
header
)
{
unsigned
int
i
;
icHeader
*
iccheader
=
(
icHeader
*
)
iccprofile
;
memcpy
(
iccheader
,
header
,
sizeof
(
icHeader
)
);
memcpy
(
profile
->
data
,
header
,
sizeof
(
PROFILEHEADER
)
);
/* ICC format is big-endian, swap bytes if necessary */
for
(
i
=
0
;
i
<
sizeof
(
icHeader
)
/
sizeof
(
ULONG
);
i
++
)
MSCMS_adjust_endianness32
(
(
ULONG
*
)
iccheader
+
i
);
for
(
i
=
0
;
i
<
sizeof
(
PROFILEHEADER
)
/
sizeof
(
ULONG
);
i
++
)
adjust_endianness32
(
(
ULONG
*
)
profile
->
data
+
i
);
}
DWORD
MSCMS_get_tag_count
(
const
icProfile
*
iccprofile
)
static
BOOL
get_adjusted_tag
(
const
struct
profile
*
profile
,
TAGTYPE
type
,
cmsTagEntry
*
tag
)
{
ULONG
count
=
iccprofile
->
count
;
MSCMS_adjust_endianness32
(
&
count
);
return
count
;
DWORD
i
,
num_tags
=
*
(
DWORD
*
)(
profile
->
data
+
sizeof
(
cmsICCHeader
));
cmsTagEntry
*
entry
;
ULONG
sig
;
adjust_endianness32
(
&
num_tags
);
for
(
i
=
0
;
i
<
num_tags
;
i
++
)
{
entry
=
(
cmsTagEntry
*
)(
profile
->
data
+
sizeof
(
cmsICCHeader
)
+
sizeof
(
DWORD
)
+
i
*
sizeof
(
*
tag
));
sig
=
entry
->
sig
;
adjust_endianness32
(
&
sig
);
if
(
sig
==
type
)
{
tag
->
sig
=
sig
;
tag
->
offset
=
entry
->
offset
;
tag
->
size
=
entry
->
size
;
adjust_endianness32
(
&
tag
->
offset
);
adjust_endianness32
(
&
tag
->
size
);
return
TRUE
;
}
}
return
FALSE
;
}
void
MSCMS_get_tag_by_index
(
icProfile
*
iccprofile
,
DWORD
index
,
icTag
*
tag
)
BOOL
get_tag_data
(
const
struct
profile
*
profile
,
TAGTYPE
type
,
DWORD
offset
,
void
*
buffer
,
DWORD
*
len
)
{
icTag
*
tmp
=
(
icTag
*
)((
char
*
)
iccprofile
->
data
+
index
*
sizeof
(
icTag
));
tag
->
sig
=
tmp
->
sig
;
tag
->
offset
=
tmp
->
offset
;
tag
->
size
=
tmp
->
size
;
MSCMS_adjust_endianness32
(
&
tag
->
sig
);
MSCMS_adjust_endianness32
(
&
tag
->
offset
);
MSCMS_adjust_endianness32
(
&
tag
->
size
);
cmsTagEntry
tag
;
if
(
!
get_adjusted_tag
(
profile
,
type
,
&
tag
))
return
FALSE
;
if
(
!
buffer
)
offset
=
0
;
if
(
offset
>
tag
.
size
)
return
FALSE
;
if
(
*
len
<
tag
.
size
-
offset
||
!
buffer
)
{
*
len
=
tag
.
size
-
offset
;
return
FALSE
;
}
memcpy
(
buffer
,
profile
->
data
+
tag
.
offset
+
offset
,
tag
.
size
-
offset
);
*
len
=
tag
.
size
-
offset
;
return
TRUE
;
}
void
MSCMS_get_tag_data
(
const
icProfile
*
iccprofile
,
const
icTag
*
tag
,
DWORD
offset
,
void
*
buffer
)
BOOL
set_tag_data
(
const
struct
profile
*
profile
,
TAGTYPE
type
,
DWORD
offset
,
const
void
*
buffer
,
DWORD
*
len
)
{
memcpy
(
buffer
,
(
const
char
*
)
iccprofile
+
tag
->
offset
+
offset
,
tag
->
size
-
offset
);
}
cmsTagEntry
tag
;
void
MSCMS_set_tag_data
(
icProfile
*
iccprofile
,
const
icTag
*
tag
,
DWORD
offset
,
const
void
*
buffer
)
{
memcpy
(
(
char
*
)
iccprofile
+
tag
->
offset
+
offset
,
buffer
,
tag
->
size
-
offset
);
}
DWORD
MSCMS_get_profile_size
(
const
icProfile
*
iccprofile
)
{
DWORD
size
=
((
const
icHeader
*
)
iccprofile
)
->
size
;
if
(
!
get_adjusted_tag
(
profile
,
type
,
&
tag
))
return
FALSE
;
MSCMS_adjust_endianness32
(
&
size
);
return
size
;
if
(
offset
>
tag
.
size
)
return
FALSE
;
*
len
=
min
(
tag
.
size
-
offset
,
*
len
);
memcpy
(
profile
->
data
+
tag
.
offset
+
offset
,
buffer
,
*
len
);
return
TRUE
;
}
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
dlls/mscms/mscms_main.c
View file @
d40c9126
...
...
@@ -36,20 +36,10 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
mscms
);
#ifdef HAVE_LCMS
static
int
lcms_error_handler
(
int
error
,
const
char
*
text
)
#ifdef HAVE_LCMS
2
static
void
lcms_error_handler
(
cmsContext
ctx
,
cmsUInt32Number
error
,
const
char
*
text
)
{
switch
(
error
)
{
case
LCMS_ERRC_WARNING
:
case
LCMS_ERRC_RECOVERABLE
:
case
LCMS_ERRC_ABORTED
:
WARN
(
"%d %s
\n
"
,
error
,
debugstr_a
(
text
));
return
1
;
default:
ERR
(
"unknown error %d %s
\n
"
,
error
,
debugstr_a
(
text
));
return
0
;
}
TRACE
(
"%u %s
\n
"
,
error
,
debugstr_a
(
text
));
}
#endif
...
...
@@ -61,13 +51,13 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
{
case
DLL_PROCESS_ATTACH
:
DisableThreadLibraryCalls
(
hinst
);
#ifdef HAVE_LCMS
cmsSetErrorHandler
(
lcms_error_handler
);
#ifdef HAVE_LCMS
2
cmsSet
Log
ErrorHandler
(
lcms_error_handler
);
#endif
break
;
case
DLL_PROCESS_DETACH
:
if
(
reserved
)
break
;
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
free_handle_tables
();
#endif
break
;
...
...
dlls/mscms/mscms_priv.h
View file @
d40c9126
...
...
@@ -18,54 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifdef HAVE_LCMS
/* These basic Windows types are defined in lcms.h when compiling on
* a non-Windows platform (why?), so they would normally not conflict
* with anything included earlier. But since we are building Wine they
* most certainly will have been defined before we include lcms.h.
* The preprocessor comes to the rescue.
*/
#define BYTE LCMS_BYTE
#define LPBYTE LCMS_LPBYTE
#define WORD LCMS_WORD
#define LPWORD LCMS_LPWORD
#define DWORD LCMS_DWORD
#define LPDWORD LCMS_LPDWORD
#define BOOL LCMS_BOOL
#define LPSTR LCMS_LPSTR
#define LPVOID LCMS_LPVOID
#undef cdecl
#undef FAR
#undef ZeroMemory
#undef CopyMemory
#undef LOWORD
#undef HIWORD
#undef MAX_PATH
#ifdef HAVE_LCMS_LCMS_H
#include <lcms/lcms.h>
#else
#include <lcms.h>
#endif
/* Funny thing is lcms.h defines DWORD as an 'unsigned long' whereas Wine
* defines it as an 'unsigned int'. To avoid compiler warnings we use a
* preprocessor define for DWORD and LPDWORD to get back Wine's original
* (typedef) definitions.
*/
#undef BOOL
#undef DWORD
#undef LPDWORD
#define BOOL BOOL
#define DWORD DWORD
#define LPDWORD LPDWORD
#ifdef HAVE_LCMS2
#include <lcms2.h>
/* A simple structure to tie together a pointer to an icc profile, an lcms
* color profile handle and a Windows file handle. If the profile is memory
...
...
@@ -76,9 +30,10 @@
struct
profile
{
HANDLE
file
;
DWORD
access
;
icProfile
*
iccprofile
;
HANDLE
file
;
DWORD
access
;
char
*
data
;
DWORD
size
;
cmsHPROFILE
cmsprofile
;
};
...
...
@@ -101,14 +56,11 @@ void release_transform( struct transform * ) DECLSPEC_HIDDEN;
extern
void
free_handle_tables
(
void
)
DECLSPEC_HIDDEN
;
extern
DWORD
MSCMS_get_tag_count
(
const
icProfile
*
iccprofile
)
DECLSPEC_HIDDEN
;
extern
void
MSCMS_get_tag_by_index
(
icProfile
*
iccprofile
,
DWORD
index
,
icTag
*
tag
)
DECLSPEC_HIDDEN
;
extern
void
MSCMS_get_tag_data
(
const
icProfile
*
iccprofile
,
const
icTag
*
tag
,
DWORD
offset
,
void
*
buffer
)
DECLSPEC_HIDDEN
;
extern
void
MSCMS_set_tag_data
(
icProfile
*
iccprofile
,
const
icTag
*
tag
,
DWORD
offset
,
const
void
*
buffer
)
DECLSPEC_HIDDEN
;
extern
void
MSCMS_get_profile_header
(
const
icProfile
*
iccprofile
,
PROFILEHEADER
*
header
)
DECLSPEC_HIDDEN
;
extern
void
MSCMS_set_profile_header
(
icProfile
*
iccprofile
,
const
PROFILEHEADER
*
header
)
DECLSPEC_HIDDEN
;
extern
DWORD
MSCMS_get_profile_size
(
const
icProfile
*
iccprofile
)
DECLSPEC_HIDDEN
;
extern
BOOL
get_tag_data
(
const
struct
profile
*
,
TAGTYPE
,
DWORD
,
void
*
,
DWORD
*
)
DECLSPEC_HIDDEN
;
extern
BOOL
set_tag_data
(
const
struct
profile
*
,
TAGTYPE
,
DWORD
,
const
void
*
,
DWORD
*
)
DECLSPEC_HIDDEN
;
extern
void
get_profile_header
(
const
struct
profile
*
,
PROFILEHEADER
*
)
DECLSPEC_HIDDEN
;
extern
void
set_profile_header
(
const
struct
profile
*
,
const
PROFILEHEADER
*
)
DECLSPEC_HIDDEN
;
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
extern
const
char
*
MSCMS_dbgstr_tag
(
DWORD
)
DECLSPEC_HIDDEN
;
dlls/mscms/profile.c
View file @
d40c9126
This diff is collapsed.
Click to expand it.
dlls/mscms/tests/profile.c
View file @
d40c9126
...
...
@@ -254,17 +254,16 @@ static void test_GetColorProfileElement( char *standardprofile )
ok
(
!
ret
,
"GetColorProfileElement() succeeded (%d)
\n
"
,
GetLastError
()
);
size
=
0
;
ret
=
pGetColorProfileElement
(
handle
,
tag
,
0
,
&
size
,
NULL
,
&
ref
);
ok
(
!
ret
&&
size
>
0
,
"GetColorProfileElement() succeeded (%d)
\n
"
,
GetLastError
()
);
size
=
sizeof
(
buffer
);
ok
(
!
ret
,
"GetColorProfileElement() succeeded
\n
"
);
ok
(
size
>
0
,
"wrong size
\n
"
);
/* Functional checks */
size
=
sizeof
(
buffer
);
ret
=
pGetColorProfileElement
(
handle
,
tag
,
0
,
&
size
,
buffer
,
&
ref
);
ok
(
ret
&&
size
>
0
,
"GetColorProfileElement() failed (%d)
\n
"
,
GetLastError
()
);
ok
(
ret
,
"GetColorProfileElement() failed %u
\n
"
,
GetLastError
()
);
ok
(
size
>
0
,
"wrong size
\n
"
);
ok
(
!
memcmp
(
buffer
,
expect
,
sizeof
(
expect
)
),
"Unexpected tag data
\n
"
);
pCloseColorProfile
(
handle
);
...
...
@@ -1054,18 +1053,16 @@ static void test_SetColorProfileElement( char *testprofile )
/* Functional checks */
size
=
sizeof
(
data
);
ret
=
pSetColorProfileElement
(
handle
,
tag
,
0
,
&
size
,
data
);
ok
(
ret
,
"SetColorProfileElement() failed
(%d)
\n
"
,
GetLastError
()
);
ok
(
ret
,
"SetColorProfileElement() failed
%u
\n
"
,
GetLastError
()
);
size
=
sizeof
(
buffer
);
ret
=
pGetColorProfileElement
(
handle
,
tag
,
0
,
&
size
,
buffer
,
&
ref
);
ok
(
ret
&&
size
>
0
,
"GetColorProfileElement() failed (%d)
\n
"
,
GetLastError
()
);
ok
(
ret
,
"GetColorProfileElement() failed %u
\n
"
,
GetLastError
()
);
ok
(
size
>
0
,
"wrong size
\n
"
);
ok
(
!
memcmp
(
data
,
buffer
,
sizeof
(
data
)
),
"Unexpected tag data, expected %s, got %s (%d)
\n
"
,
data
,
buffer
,
GetLastError
()
);
"Unexpected tag data, expected %s, got %s (%u)
\n
"
,
data
,
buffer
,
GetLastError
()
);
pCloseColorProfile
(
handle
);
}
...
...
dlls/mscms/transform.c
View file @
d40c9126
...
...
@@ -34,7 +34,7 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
mscms
);
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
static
DWORD
from_profile
(
HPROFILE
profile
)
{
...
...
@@ -96,7 +96,7 @@ static DWORD from_type( COLORTYPE type )
}
}
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
/******************************************************************************
* CreateColorTransformA [MSCMS.@]
...
...
@@ -141,7 +141,7 @@ HTRANSFORM WINAPI CreateColorTransformW( LPLOGCOLORSPACEW space, HPROFILE dest,
HPROFILE
target
,
DWORD
flags
)
{
HTRANSFORM
ret
=
NULL
;
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
struct
transform
transform
;
struct
profile
*
dst
,
*
tgt
=
NULL
;
cmsHPROFILE
cmsinput
,
cmsoutput
,
cmstarget
=
NULL
;
...
...
@@ -181,7 +181,7 @@ HTRANSFORM WINAPI CreateColorTransformW( LPLOGCOLORSPACEW space, HPROFILE dest,
if
(
tgt
)
release_profile
(
tgt
);
release_profile
(
dst
);
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
return
ret
;
}
...
...
@@ -205,7 +205,7 @@ HTRANSFORM WINAPI CreateMultiProfileTransform( PHPROFILE profiles, DWORD nprofil
PDWORD
intents
,
DWORD
nintents
,
DWORD
flags
,
DWORD
cmm
)
{
HTRANSFORM
ret
=
NULL
;
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
cmsHPROFILE
*
cmsprofiles
,
cmsconvert
=
NULL
;
struct
transform
transform
;
struct
profile
*
profile0
,
*
profile1
;
...
...
@@ -237,7 +237,7 @@ HTRANSFORM WINAPI CreateMultiProfileTransform( PHPROFILE profiles, DWORD nprofil
{
/* insert a conversion profile for pairings that lcms doesn't handle */
if
(
out_format
==
TYPE_RGB_16
)
cmsconvert
=
cmsCreate_sRGBProfile
();
if
(
out_format
==
TYPE_Lab_16
)
cmsconvert
=
cmsCreateLabProfile
(
NULL
);
if
(
out_format
==
TYPE_Lab_16
)
cmsconvert
=
cmsCreateLab
2
Profile
(
NULL
);
}
cmsprofiles
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
nprofiles
+
1
)
*
sizeof
(
cmsHPROFILE
)
);
...
...
@@ -263,7 +263,7 @@ HTRANSFORM WINAPI CreateMultiProfileTransform( PHPROFILE profiles, DWORD nprofil
release_profile
(
profile0
);
release_profile
(
profile1
);
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
return
ret
;
}
...
...
@@ -282,13 +282,13 @@ HTRANSFORM WINAPI CreateMultiProfileTransform( PHPROFILE profiles, DWORD nprofil
BOOL
WINAPI
DeleteColorTransform
(
HTRANSFORM
handle
)
{
BOOL
ret
=
FALSE
;
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
TRACE
(
"( %p )
\n
"
,
handle
);
ret
=
close_transform
(
handle
);
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
return
ret
;
}
...
...
@@ -319,7 +319,7 @@ BOOL WINAPI TranslateBitmapBits( HTRANSFORM handle, PVOID srcbits, BMFORMAT inpu
DWORD
outputstride
,
PBMCALLBACKFN
callback
,
ULONG
data
)
{
BOOL
ret
=
FALSE
;
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
struct
transform
*
transform
=
grab_transform
(
handle
);
TRACE
(
"( %p, %p, 0x%08x, 0x%08x, 0x%08x, 0x%08x, %p, 0x%08x, 0x%08x, %p, 0x%08x )
\n
"
,
...
...
@@ -333,7 +333,7 @@ BOOL WINAPI TranslateBitmapBits( HTRANSFORM handle, PVOID srcbits, BMFORMAT inpu
release_transform
(
transform
);
ret
=
TRUE
;
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
return
ret
;
}
...
...
@@ -357,7 +357,7 @@ BOOL WINAPI TranslateBitmapBits( HTRANSFORM handle, PVOID srcbits, BMFORMAT inpu
BOOL
WINAPI
TranslateColors
(
HTRANSFORM
handle
,
PCOLOR
in
,
DWORD
count
,
COLORTYPE
input_type
,
PCOLOR
out
,
COLORTYPE
output_type
)
{
#ifdef HAVE_LCMS
#ifdef HAVE_LCMS
2
BOOL
ret
=
TRUE
;
struct
transform
*
transform
=
grab_transform
(
handle
);
cmsHTRANSFORM
xfrm
;
...
...
@@ -462,7 +462,7 @@ done:
release_transform
(
transform
);
return
ret
;
#else
/* HAVE_LCMS */
#else
/* HAVE_LCMS
2
*/
return
FALSE
;
#endif
/* HAVE_LCMS */
#endif
/* HAVE_LCMS
2
*/
}
include/config.h.in
View file @
d40c9126
...
...
@@ -303,13 +303,10 @@
#undef HAVE_LBER_H
/* Define if you have the LittleCMS development environment */
#undef HAVE_LCMS
#undef HAVE_LCMS
2
/* Define to 1 if you have the <lcms.h> header file. */
#undef HAVE_LCMS_H
/* Define to 1 if you have the <lcms/lcms.h> header file. */
#undef HAVE_LCMS_LCMS_H
/* Define to 1 if you have the <lcms2.h> header file. */
#undef HAVE_LCMS2_H
/* Define if you have the OpenLDAP development environment */
#undef HAVE_LDAP
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment