summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarti Maria <info@littlecms.com>2013-07-19 14:56:41 +0200
committerMarti Maria <info@littlecms.com>2013-07-19 14:56:41 +0200
commit8928bed23ce565a5c91ab70efa076cdf1c40f0c8 (patch)
tree3f19112d14ce1145a9e792fc4a722f3604b98004 /src
parentfefaaa43c382eee632ea3ad0cfa915335140e1db (diff)
downloadlcms2-8928bed23ce565a5c91ab70efa076cdf1c40f0c8.tar.gz
Added a function for IOhandler write
Diffstat (limited to 'src')
-rw-r--r--src/cmsio0.c35
1 files changed, 32 insertions, 3 deletions
diff --git a/src/cmsio0.c b/src/cmsio0.c
index b7aea72..180eee7 100644
--- a/src/cmsio0.c
+++ b/src/cmsio0.c
@@ -342,7 +342,7 @@ cmsBool FileSeek(cmsIOHANDLER* iohandler, cmsUInt32Number offset)
static
cmsUInt32Number FileTell(cmsIOHANDLER* iohandler)
{
- return ftell((FILE*)iohandler ->stream);
+ return (cmsUInt32Number) ftell((FILE*)iohandler ->stream);
}
// Writes data to stream, also keeps used space for further reference. Returns TRUE on success, FALSE on error
@@ -385,7 +385,7 @@ cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromFile(cmsContext ContextID, const cha
cmsSignalError(ContextID, cmsERROR_FILE, "File '%s' not found", FileName);
return NULL;
}
- iohandler -> ReportedSize = cmsfilelength(fm);
+ iohandler -> ReportedSize = (cmsUInt32Number) cmsfilelength(fm);
break;
case 'w':
@@ -432,7 +432,7 @@ cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromStream(cmsContext ContextID, FILE* S
iohandler -> ContextID = ContextID;
iohandler -> stream = (void*) Stream;
iohandler -> UsedSpace = 0;
- iohandler -> ReportedSize = cmsfilelength(Stream);
+ iohandler -> ReportedSize = (cmsUInt32Number) cmsfilelength(Stream);
iohandler -> PhysicalFile[0] = 0;
iohandler ->Read = FileRead;
@@ -957,6 +957,32 @@ Error:
return NULL;
}
+// Create profile from IOhandler
+cmsHPROFILE CMSEXPORT cmsOpenProfileFromIOhandler2THR(cmsContext ContextID, cmsIOHANDLER* io, cmsBool write)
+{
+ _cmsICCPROFILE* NewIcc;
+ cmsHPROFILE hEmpty = cmsCreateProfilePlaceholder(ContextID);
+
+ if (hEmpty == NULL) return NULL;
+
+ NewIcc = (_cmsICCPROFILE*) hEmpty;
+
+ NewIcc ->IOhandler = io;
+ if (write) {
+
+ NewIcc -> IsWrite = TRUE;
+ return hEmpty;
+ }
+
+ if (!_cmsReadHeader(NewIcc)) goto Error;
+ return hEmpty;
+
+Error:
+ cmsCloseProfile(hEmpty);
+ return NULL;
+}
+
+
// Create profile from disk file
cmsHPROFILE CMSEXPORT cmsOpenProfileFromFileTHR(cmsContext ContextID, const char *lpFileName, const char *sAccess)
{
@@ -1206,6 +1232,9 @@ cmsUInt32Number CMSEXPORT cmsSaveProfileToIOhandler(cmsHPROFILE hProfile, cmsIOH
cmsUInt32Number UsedSpace;
cmsContext ContextID;
+ _cmsAssert(hProfile != NULL);
+ _cmsAssert(io != NULL);
+
memmove(&Keep, Icc, sizeof(_cmsICCPROFILE));
ContextID = cmsGetProfileContextID(hProfile);