Update of /cvsroot/ufraw/ufraw In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv10977
Modified Files: Makefile.am ufraw_developer.c ufraw_writer.c Added Files: ufraw_colorspaces.c ufraw_colorspaces.h Log Message: Use ICCv2 sRGB profile as embedded sRGB profile. Patch by Pascal de Bruijn. Index: ufraw_developer.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw_developer.c,v retrieving revision 1.99 retrieving revision 1.100 diff -u -d -r1.99 -r1.100 --- ufraw_developer.c 9 May 2015 03:00:17 -0000 1.99 +++ ufraw_developer.c 9 May 2015 04:00:25 -0000 1.100 @@ -18,6 +18,7 @@ #include <string.h> #include <lcms2.h> #include <lcms2_plugin.h> +#include "ufraw_colorspaces.h" static void lcms_message(cmsContext ContextID, cmsUInt32Number ErrorCode, @@ -136,14 +137,14 @@ g_strlcpy(d->profileFile[type], p->file, max_path); if (d->profile[type] != NULL) cmsCloseProfile(d->profile[type]); if (!strcmp(d->profileFile[type], "")) - d->profile[type] = cmsCreate_sRGBProfile(); + d->profile[type] = uf_colorspaces_create_srgb_profile(); else { char *filename = uf_win32_locale_filename_from_utf8(d->profileFile[type]); d->profile[type] = cmsOpenProfileFromFile(filename, "r"); uf_win32_locale_filename_free(filename); if (d->profile[type] == NULL) - d->profile[type] = cmsCreate_sRGBProfile(); + d->profile[type] = uf_colorspaces_create_srgb_profile(); } d->updateTransform = TRUE; } @@ -165,7 +166,7 @@ d->profile[type] = cmsOpenProfileFromMem(profile, size); // If embedded profile is invalid fall-back to sRGB if (d->profile[type] == NULL) - d->profile[type] = cmsCreate_sRGBProfile(); + d->profile[type] = uf_colorspaces_create_srgb_profile(); if (strcmp(d->profileFile[type], embedded_display_profile) != 0) { // start using embedded profile g_strlcpy(d->profileFile[type], embedded_display_profile, max_path); @@ -175,7 +176,7 @@ if (strcmp(d->profileFile[type], embedded_display_profile) == 0) { // embedded profile is no longer used if (d->profile[type] != NULL) cmsCloseProfile(d->profile[type]); - d->profile[type] = cmsCreate_sRGBProfile(); + d->profile[type] = uf_colorspaces_create_srgb_profile(); strcpy(d->profileFile[type], ""); d->updateTransform = TRUE; } Index: Makefile.am =================================================================== RCS file: /cvsroot/ufraw/ufraw/Makefile.am,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- Makefile.am 9 May 2015 03:00:17 -0000 1.64 +++ Makefile.am 9 May 2015 04:00:25 -0000 1.65 @@ -59,23 +59,22 @@ if MAKE_GTK libufraw_a_SOURCES = \ - dcraw.cc ufraw_ufraw.c ufraw_routines.c ufraw_developer.c \ - ufraw_conf.c ufraw_writer.c ufraw_embedded.c ufraw_message.c ufraw.h \ - ufobject.cc ufobject.h ufraw_settings.cc ufraw_lensfun.cc \ - wb_presets.c dcraw_api.cc dcraw_api.h dcraw_indi.c dcraw.h \ - nikon_curve.c nikon_curve.h uf_progress.h \ + dcraw.cc ufraw_ufraw.c ufraw_routines.c ufraw_colorspaces.c \ + ufraw_colorspaces.h ufraw_developer.c ufraw_conf.c ufraw_writer.c \ + ufraw_embedded.c ufraw_message.c ufraw.h ufobject.cc ufobject.h \ + ufraw_settings.cc ufraw_lensfun.cc wb_presets.c dcraw_api.cc dcraw_api.h \ + dcraw_indi.c dcraw.h nikon_curve.c nikon_curve.h uf_progress.h \ uf_glib.h uf_gtk.cc uf_gtk.h ufraw_exiv2.cc iccjpeg.c iccjpeg.h \ - ufraw_preview.c ufraw_saver.c ufraw_delete.c \ - ufraw_chooser.c ufraw_icons.c icons/ufraw_icons.h \ - curveeditor_widget.c curveeditor_widget.h \ - ufraw_lens_ui.c ufraw_ui.h + ufraw_preview.c ufraw_saver.c ufraw_delete.c ufraw_chooser.c \ + ufraw_icons.c icons/ufraw_icons.h curveeditor_widget.c \ + curveeditor_widget.h ufraw_lens_ui.c ufraw_ui.h else libufraw_a_SOURCES = \ - dcraw.cc ufraw_ufraw.c ufraw_routines.c ufraw_developer.c \ - ufraw_conf.c ufraw_writer.c ufraw_embedded.c ufraw_message.c ufraw.h \ - ufobject.cc ufobject.h ufraw_settings.cc ufraw_lensfun.cc \ - wb_presets.c dcraw_api.cc dcraw_api.h dcraw_indi.c dcraw.h \ - nikon_curve.c nikon_curve.h uf_progress.h \ + dcraw.cc ufraw_ufraw.c ufraw_routines.c ufraw_colorspaces.c \ + ufraw_colorspaces.h ufraw_developer.c ufraw_conf.c ufraw_writer.c \ + ufraw_embedded.c ufraw_message.c ufraw.h ufobject.cc ufobject.h \ + ufraw_settings.cc ufraw_lensfun.cc wb_presets.c dcraw_api.cc dcraw_api.h \ + dcraw_indi.c dcraw.h nikon_curve.c nikon_curve.h uf_progress.h \ uf_glib.h ufraw_exiv2.cc iccjpeg.c iccjpeg.h endif --- NEW FILE: ufraw_colorspaces.h --- /* * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_colorspaces.h - Built-in color profile declarations. * Copyright 2004-2015 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ /** create the ICC virtual profile for srgb space. */ cmsHPROFILE uf_colorspaces_create_srgb_profile(void); --- NEW FILE: ufraw_colorspaces.c --- /* * UFRaw - Unidentified Flying Raw converter for digital camera images * * ufraw_colorspaces.c - Functions and data to create built-in color profiles. * Copyright 2004-2015 by Udi Fuchs * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ #include <inttypes.h> #include <glib.h> #include <lcms2.h> static const uint16_t uf_srgb_tone_curve_values[] = { 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 59, 64, 69, 74, 79, 84, 89, 94, 99, 104, 109, 114, 119, 124, 129, 134, 139, 144, 149, 154, 159, 164, 169, 174, 178, 183, 188, 193, 198, 203, 208, 213, 219, 224, 229, 235, 240, 246, 251, 257, 263, 269, 275, 281, 287, 293, 299, 306, 312, 318, 325, 332, 338, 345, 352, 359, 366, 373, 380, 387, 395, 402, 410, 417, 425, 433, 441, 449, 457, 465, 473, 481, 489, 498, 506, 515, 524, 532, 541, 550, 559, 568, 577, 587, 596, 605, 615, 625, 634, 644, 654, 664, 674, 684, 694, 705, 715, 725, 736, 747, 757, 768, 779, 790, 801, 813, 824, 835, 847, 858, 870, 882, 894, 906, 918, 930, 942, 954, 967, 979, 992, 1004, 1017, 1030, 1043, 1056, 1069, 1083, 1096, 1109, 1123, 1137, 1150, 1164, 1178, 1192, 1206, 1220, 1235, 1249, 1264, 1278, 1293, 1308, 1323, 1338, 1353, 1368, 1383, 1399, 1414, 1430, 1446, 1461, 1477, 1493, 1509, 1526, 1542, 1558, 1575, 1591, 1608, 1625, 1642, 1659, 1676, 1693, 1711, 1728, 1745, 1763, 1781, 1799, 1817, 1835, 1853, 1871, 1889, 1908, 1926, 1945, 1964, 1983, 2002, 2021, 2040, 2059, 2079, 2098, 2118, 2138, 2158, 2178, 2198, 2218, 2238, 2258, 2279, 2299, 2320, 2341, 2362, 2383, 2404, 2425, 2447, 2468, 2490, 2511, 2533, 2555, 2577, 2599, 2621, 2644, 2666, 2689, 2712, 2734, 2757, 2780, 2803, 2827, 2850, 2873, 2897, 2921, 2944, 2968, 2992, 3016, 3041, 3065, 3090, 3114, 3139, 3164, 3189, 3214, 3239, 3264, 3289, 3315, 3341, 3366, 3392, 3418, 3444, 3470, 3497, 3523, 3550, 3576, 3603, 3630, 3657, 3684, 3711, 3739, 3766, 3794, 3822, 3849, 3877, 3905, 3934, 3962, 3990, 4019, 4047, 4076, 4105, 4134, 4163, 4193, 4222, 4251, 4281, 4311, 4341, 4371, 4401, 4431, 4461, 4492, 4522, 4553, 4584, 4615, 4646, 4677, 4708, 4740, 4771, 4803, 4835, 4867, 4899, 4931, 4963, 4995, 5028, 5061, 5093, 5126, 5159, 5193, 5226, 5259, 5293, 5326, 5360, 5394, 5428, 5462, 5496, 5531, 5565, 5600, 5635, 5670, 5705, 5740, 5775, 5810, 5846, 5882, 5917, 5953, 5989, 6025, 6062, 6098, 6135, 6171, 6208, 6245, 6282, 6319, 6357, 6394, 6432, 6469, 6507, 6545, 6583, 6621, 6660, 6698, 6737, 6775, 6814, 6853, 6892, 6932, 6971, 7011, 7050, 7090, 7130, 7170, 7210, 7250, 7291, 7331, 7372, 7413, 7454, 7495, 7536, 7577, 7619, 7660, 7702, 7744, 7786, 7828, 7870, 7913, 7955, 7998, 8041, 8084, 8127, 8170, 8213, 8257, 8300, 8344, 8388, 8432, 8476, 8520, 8565, 8609, 8654, 8699, 8743, 8789, 8834, 8879, 8925, 8970, 9016, 9062, 9108, 9154, 9200, 9247, 9293, 9340, 9387, 9434, 9481, 9528, 9576, 9623, 9671, 9719, 9767, 9815, 9863, 9911, 9960, 10008, 10057, 10106, 10155, 10204, 10253, 10303, 10353, 10402, 10452, 10502, 10552, 10603, 10653, 10704, 10754, 10805, 10856, 10907, 10959, 11010, 11062, 11113, 11165, 11217, 11269, 11321, 11374, 11426, 11479, 11532, 11585, 11638, 11691, 11745, 11798, 11852, 11906, 11959, 12014, 12068, 12122, 12177, 12231, 12286, 12341, 12396, 12452, 12507, 12562, 12618, 12674, 12730, 12786, 12842, 12899, 12955, 13012, 13069, 13126, 13183, 13240, 13297, 13355, 13413, 13470, 13528, 13587, 13645, 13703, 13762, 13821, 13879, 13938, 13998, 14057, 14116, 14176, 14236, 14295, 14356, 14416, 14476, 14536, 14597, 14658, 14719, 14780, 14841, 14902, 14964, 15026, 15087, 15149, 15211, 15274, 15336, 15399, 15461, 15524, 15587, 15650, 15713, 15777, 15840, 15904, 15968, 16032, 16096, 16161, 16225, 16290, 16354, 16419, 16484, 16550, 16615, 16681, 16746, 16812, 16878, 16944, 17010, 17077, 17143, 17210, 17277, 17344, 17411, 17479, 17546, 17614, 17682, 17749, 17818, 17886, 17954, 18023, 18091, 18160, 18229, 18299, 18368, 18437, 18507, 18577, 18647, 18717, 18787, 18857, 18928, 18999, 19069, 19140, 19212, 19283, 19354, 19426, 19498, 19570, 19642, 19714, 19786, 19859, 19932, 20005, 20078, 20151, 20224, 20297, 20371, 20445, 20519, 20593, 20667, 20742, 20816, 20891, 20966, 21041, 21116, 21191, 21267, 21343, 21418, 21494, 21570, 21647, 21723, 21800, 21877, 21954, 22031, 22108, 22185, 22263, 22340, 22418, 22496, 22575, 22653, 22731, 22810, 22889, 22968, 23047, 23126, 23206, 23285, 23365, 23445, 23525, 23605, 23686, 23766, 23847, 23928, 24009, 24090, 24172, 24253, 24335, 24417, 24499, 24581, 24663, 24746, 24828, 24911, 24994, 25077, 25161, 25244, 25328, 25411, 25495, 25579, 25664, 25748, 25833, 25917, 26002, 26087, 26173, 26258, 26344, 26429, 26515, 26601, 26687, 26774, 26860, 26947, 27034, 27121, 27208, 27295, 27383, 27471, 27559, 27647, 27735, 27823, 27912, 28000, 28089, 28178, 28267, 28356, 28446, 28536, 28625, 28715, 28806, 28896, 28986, 29077, 29168, 29259, 29350, 29441, 29533, 29624, 29716, 29808, 29900, 29992, 30085, 30177, 30270, 30363, 30456, 30550, 30643, 30737, 30830, 30924, 31018, 31113, 31207, 31302, 31397, 31492, 31587, 31682, 31777, 31873, 31969, 32065, 32161, 32257, 32354, 32450, 32547, 32644, 32741, 32839, 32936, 33034, 33131, 33229, 33328, 33426, 33524, 33623, 33722, 33821, 33920, 34019, 34119, 34219, 34318, 34418, 34519, 34619, 34719, 34820, 34921, 35022, 35123, 35225, 35326, 35428, 35530, 35632, 35734, 35836, 35939, 36042, 36145, 36248, 36351, 36454, 36558, 36662, 36766, 36870, 36974, 37078, 37183, 37288, 37393, 37498, 37603, 37709, 37814, 37920, 38026, 38132, 38239, 38345, 38452, 38559, 38666, 38773, 38880, 38988, 39096, 39204, 39312, 39420, 39528, 39637, 39746, 39855, 39964, 40073, 40183, 40292, 40402, 40512, 40622, 40733, 40843, 40954, 41065, 41176, 41287, 41398, 41510, 41622, 41734, 41846, 41958, 42070, 42183, 42296, 42409, 42522, 42635, 42749, 42862, 42976, 43090, 43204, 43319, 43433, 43548, 43663, 43778, 43893, 44009, 44124, 44240, 44356, 44472, 44589, 44705, 44822, 44939, 45056, 45173, 45290, 45408, 45526, 45643, 45762, 45880, 45998, 46117, 46236, 46355, 46474, 46593, 46713, 46832, 46952, 47072, 47193, 47313, 47434, 47554, 47675, 47797, 47918, 48039, 48161, 48283, 48405, 48527, 48650, 48772, 48895, 49018, 49141, 49264, 49388, 49511, 49635, 49759, 49883, 50008, 50132, 50257, 50382, 50507, 50632, 50758, 50883, 51009, 51135, 51261, 51388, 51514, 51641, 51768, 51895, 52022, 52150, 52277, 52405, 52533, 52661, 52790, 52918, 53047, 53176, 53305, 53434, 53564, 53694, 53823, 53953, 54084, 54214, 54345, 54475, 54606, 54737, 54869, 55000, 55132, 55264, 55396, 55528, 55660, 55793, 55926, 56059, 56192, 56325, 56458, 56592, 56726, 56860, 56994, 57129, 57263, 57398, 57533, 57668, 57804, 57939, 58075, 58211, 58347, 58483, 58620, 58756, 58893, 59030, 59167, 59305, 59442, 59580, 59718, 59856, 59995, 60133, 60272, 60411, 60550, 60689, 60828, 60968, 61108, 61248, 61388, 61528, 61669, 61810, 61951, 62092, 62233, 62375, 62516, 62658, 62800, 62942, 63085, 63227, 63370, 63513, 63656, 63800, 63943, 64087, 64231, 64375, 64519, 64664, 64809, 64954, 65099, 65244, 65389, 65535 }; static const guint uf_srgb_tone_curve_values_n = G_N_ELEMENTS(uf_srgb_tone_curve_values); cmsHPROFILE uf_colorspaces_create_srgb_profile() { cmsHPROFILE hsRGB; cmsCIEXYZTRIPLE Colorants = { { 0.436066, 0.222488, 0.013916 }, { 0.385147, 0.716873, 0.097076 }, { 0.143066, 0.060608, 0.714096 } }; cmsCIEXYZ black = { 0, 0, 0 }; cmsCIEXYZ D65 = { 0.95045, 1, 1.08905 }; cmsToneCurve *transferFunction; transferFunction = cmsBuildTabulatedToneCurve16(NULL, uf_srgb_tone_curve_values_n, uf_srgb_tone_curve_values); hsRGB = cmsCreateProfilePlaceholder(0); cmsSetProfileVersion(hsRGB, 2.1); cmsMLU *mlu0 = cmsMLUalloc(NULL, 1); cmsMLUsetASCII(mlu0, "en", "US", "Public Domain"); cmsMLU *mlu1 = cmsMLUalloc(NULL, 1); cmsMLUsetASCII(mlu1, "en", "US", "sRGB"); cmsMLU *mlu2 = cmsMLUalloc(NULL, 1); cmsMLUsetASCII(mlu2, "en", "US", "UFRaw"); cmsMLU *mlu3 = cmsMLUalloc(NULL, 1); cmsMLUsetASCII(mlu3, "en", "US", "sRGB"); // this will only be displayed when the embedded profile is read by for example GIMP cmsWriteTag(hsRGB, cmsSigCopyrightTag, mlu0); cmsWriteTag(hsRGB, cmsSigProfileDescriptionTag, mlu1); cmsWriteTag(hsRGB, cmsSigDeviceMfgDescTag, mlu2); cmsWriteTag(hsRGB, cmsSigDeviceModelDescTag, mlu3); cmsMLUfree(mlu0); cmsMLUfree(mlu1); cmsMLUfree(mlu2); cmsMLUfree(mlu3); cmsSetDeviceClass(hsRGB, cmsSigDisplayClass); cmsSetColorSpace(hsRGB, cmsSigRgbData); cmsSetPCS(hsRGB, cmsSigXYZData); cmsWriteTag(hsRGB, cmsSigMediaWhitePointTag, &D65); cmsWriteTag(hsRGB, cmsSigMediaBlackPointTag, &black); cmsWriteTag(hsRGB, cmsSigRedColorantTag, (void *)&Colorants.Red); cmsWriteTag(hsRGB, cmsSigGreenColorantTag, (void *)&Colorants.Green); cmsWriteTag(hsRGB, cmsSigBlueColorantTag, (void *)&Colorants.Blue); cmsWriteTag(hsRGB, cmsSigRedTRCTag, (void *)transferFunction); cmsLinkTag(hsRGB, cmsSigGreenTRCTag, cmsSigRedTRCTag); cmsLinkTag(hsRGB, cmsSigBlueTRCTag, cmsSigRedTRCTag); return hsRGB; } Index: ufraw_writer.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw_writer.c,v retrieving revision 1.99 retrieving revision 1.100 diff -u -d -r1.99 -r1.100 --- ufraw_writer.c 9 May 2015 03:00:17 -0000 1.99 +++ ufraw_writer.c 9 May 2015 04:00:25 -0000 1.100 @@ -15,6 +15,7 @@ #include <errno.h> /* for errno */ #include <string.h> #include <lcms2.h> +#include "ufraw_colorspaces.h" #ifdef HAVE_LIBTIFF #include <tiffio.h> #endif @@ -406,7 +407,7 @@ uf->conf->outputFilename); } } else if (uf->conf->profileIndex[out_profile] == 1) { // Embed sRGB. - cmsHPROFILE hOutProfile = cmsCreate_sRGBProfile(); + cmsHPROFILE hOutProfile = uf_colorspaces_create_srgb_profile(); cmsUInt32Number len = 0; cmsSaveProfileToMem(hOutProfile, 0, &len); // Calculate len. if (len > 0) { @@ -479,7 +480,7 @@ uf->conf->outputFilename); } } else if (uf->conf->profileIndex[out_profile] == 1) { // Embed sRGB. - cmsHPROFILE hOutProfile = cmsCreate_sRGBProfile(); + cmsHPROFILE hOutProfile = uf_colorspaces_create_srgb_profile(); cmsUInt32Number len = 0; cmsSaveProfileToMem(hOutProfile, 0, &len); // Calculate len. if (len > 0) { @@ -571,7 +572,7 @@ uf->conf->outputFilename); } } else if (uf->conf->profileIndex[out_profile] == 1) { // Embed sRGB. - cmsHPROFILE hOutProfile = cmsCreate_sRGBProfile(); + cmsHPROFILE hOutProfile = uf_colorspaces_create_srgb_profile(); cmsUInt32Number len = 0; cmsSaveProfileToMem(hOutProfile, 0, &len); // Calculate len. if (len > 0) { ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ ufraw-cvs mailing list ufraw-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ufraw-cvs