removes an unused function
This commit is contained in:
parent
7dcccc223c
commit
a5a44ce9b2
@ -1151,102 +1151,6 @@ std::vector<Glib::ustring> rtengine::ICCStore::getWorkingProfiles()
|
||||
return implementation->getWorkingProfiles();
|
||||
}
|
||||
|
||||
// WARNING: the caller must lock lcmsMutex
|
||||
cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof)
|
||||
{
|
||||
// forgive me for the messy code, quick hack to change gamma of an ICC profile to the RT standard gamma
|
||||
if (!iprof) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
cmsUInt32Number bytesNeeded = 0;
|
||||
cmsSaveProfileToMem(iprof, nullptr, &bytesNeeded);
|
||||
|
||||
if (bytesNeeded == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
uint8_t *data = new uint8_t[bytesNeeded + 1];
|
||||
cmsSaveProfileToMem(iprof, data, &bytesNeeded);
|
||||
const uint8_t *p = &data[128]; // skip 128 byte header
|
||||
uint32_t tag_count;
|
||||
memcpy(&tag_count, p, 4);
|
||||
p += 4;
|
||||
tag_count = ntohl(tag_count);
|
||||
|
||||
struct icctag {
|
||||
uint32_t sig;
|
||||
uint32_t offset;
|
||||
uint32_t size;
|
||||
} tags[tag_count];
|
||||
|
||||
constexpr uint32_t gamma = 0x239;
|
||||
constexpr int gamma_size = 14;
|
||||
int data_size = (gamma_size + 3) & ~3;
|
||||
|
||||
for (uint32_t i = 0; i < tag_count; i++) {
|
||||
memcpy(&tags[i], p, 12);
|
||||
tags[i].sig = ntohl(tags[i].sig);
|
||||
tags[i].offset = ntohl(tags[i].offset);
|
||||
tags[i].size = ntohl(tags[i].size);
|
||||
p += 12;
|
||||
|
||||
if (tags[i].sig != 0x62545243 && // bTRC
|
||||
tags[i].sig != 0x67545243 && // gTRC
|
||||
tags[i].sig != 0x72545243 && // rTRC
|
||||
tags[i].sig != 0x6B545243) { // kTRC
|
||||
data_size += (tags[i].size + 3) & ~3;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t sz = 128 + 4 + tag_count * 12 + data_size;
|
||||
uint8_t *nd = new uint8_t[sz];
|
||||
memset(nd, 0, sz);
|
||||
memcpy(nd, data, 128 + 4);
|
||||
sz = htonl(sz);
|
||||
memcpy(nd, &sz, 4);
|
||||
uint32_t offset = 128 + 4 + tag_count * 12;
|
||||
uint32_t gamma_offset = 0;
|
||||
|
||||
for (uint32_t i = 0; i < tag_count; i++) {
|
||||
struct icctag tag;
|
||||
tag.sig = htonl(tags[i].sig);
|
||||
|
||||
if (tags[i].sig == 0x62545243 || // bTRC
|
||||
tags[i].sig == 0x67545243 || // gTRC
|
||||
tags[i].sig == 0x72545243 || // rTRC
|
||||
tags[i].sig == 0x6B545243) { // kTRC
|
||||
if (gamma_offset == 0) {
|
||||
gamma_offset = offset;
|
||||
uint32_t pcurve[] = { htonl(0x63757276), htonl(0), htonl(/*gamma_size == 12 ? 0U : */1U) };
|
||||
memcpy(&nd[offset], pcurve, 12);
|
||||
|
||||
//if (gamma_size == 14) {
|
||||
uint16_t gm = htons(gamma);
|
||||
memcpy(&nd[offset + 12], &gm, 2);
|
||||
//}
|
||||
|
||||
offset += (gamma_size + 3) & ~3;
|
||||
}
|
||||
|
||||
tag.offset = htonl(gamma_offset);
|
||||
tag.size = htonl(gamma_size);
|
||||
} else {
|
||||
tag.offset = htonl(offset);
|
||||
tag.size = htonl(tags[i].size);
|
||||
memcpy(&nd[offset], &data[tags[i].offset], tags[i].size);
|
||||
offset += (tags[i].size + 3) & ~3;
|
||||
}
|
||||
|
||||
memcpy(&nd[128 + 4 + i * 12], &tag, 12);
|
||||
}
|
||||
|
||||
cmsHPROFILE oprof = cmsOpenProfileFromMem(nd, ntohl(sz));
|
||||
delete [] nd;
|
||||
delete [] data;
|
||||
return oprof;
|
||||
}
|
||||
|
||||
cmsHPROFILE rtengine::ICCStore::createFromMatrix(const double matrix[3][3], bool gamma, const Glib::ustring& name)
|
||||
{
|
||||
|
||||
|
@ -96,7 +96,6 @@ public:
|
||||
|
||||
/*static*/ std::vector<Glib::ustring> getWorkingProfiles();
|
||||
|
||||
static cmsHPROFILE makeStdGammaProfile(cmsHPROFILE iprof);
|
||||
static cmsHPROFILE createFromMatrix(const double matrix[3][3], bool gamma = false, const Glib::ustring& name = Glib::ustring());
|
||||
|
||||
private:
|
||||
|
Loading…
x
Reference in New Issue
Block a user