lcms-user Mailing List for Little cms color engine (Page 9)
An ICC-based CMM for color management
Brought to you by:
mm2
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(15) |
Jun
(24) |
Jul
(9) |
Aug
(14) |
Sep
|
Oct
(12) |
Nov
(17) |
Dec
(31) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(34) |
Feb
(7) |
Mar
(7) |
Apr
(16) |
May
(4) |
Jun
(14) |
Jul
(34) |
Aug
(54) |
Sep
(11) |
Oct
(25) |
Nov
(1) |
Dec
(6) |
2003 |
Jan
(27) |
Feb
(54) |
Mar
(23) |
Apr
(68) |
May
(82) |
Jun
(36) |
Jul
(45) |
Aug
(45) |
Sep
(49) |
Oct
(30) |
Nov
(65) |
Dec
(23) |
2004 |
Jan
(52) |
Feb
(52) |
Mar
(35) |
Apr
(38) |
May
(93) |
Jun
(22) |
Jul
(51) |
Aug
(50) |
Sep
(73) |
Oct
(28) |
Nov
(30) |
Dec
(51) |
2005 |
Jan
(22) |
Feb
(79) |
Mar
(38) |
Apr
(51) |
May
(95) |
Jun
(60) |
Jul
(56) |
Aug
(49) |
Sep
(22) |
Oct
(43) |
Nov
(15) |
Dec
(40) |
2006 |
Jan
(51) |
Feb
(31) |
Mar
(37) |
Apr
(25) |
May
(9) |
Jun
(13) |
Jul
(17) |
Aug
(66) |
Sep
(7) |
Oct
(12) |
Nov
(14) |
Dec
(31) |
2007 |
Jan
(18) |
Feb
(9) |
Mar
(22) |
Apr
(18) |
May
(5) |
Jun
(25) |
Jul
(2) |
Aug
(15) |
Sep
(12) |
Oct
(40) |
Nov
(10) |
Dec
(23) |
2008 |
Jan
(21) |
Feb
(56) |
Mar
(12) |
Apr
(23) |
May
(47) |
Jun
(75) |
Jul
(24) |
Aug
(2) |
Sep
(7) |
Oct
(26) |
Nov
(20) |
Dec
(16) |
2009 |
Jan
(14) |
Feb
(1) |
Mar
(29) |
Apr
(54) |
May
(18) |
Jun
(16) |
Jul
(5) |
Aug
(3) |
Sep
(38) |
Oct
(6) |
Nov
(25) |
Dec
(28) |
2010 |
Jan
(11) |
Feb
(26) |
Mar
(2) |
Apr
(10) |
May
(45) |
Jun
(94) |
Jul
(11) |
Aug
(32) |
Sep
(18) |
Oct
(37) |
Nov
(19) |
Dec
(34) |
2011 |
Jan
(21) |
Feb
(16) |
Mar
(16) |
Apr
(29) |
May
(17) |
Jun
(18) |
Jul
(7) |
Aug
(21) |
Sep
(10) |
Oct
(7) |
Nov
(15) |
Dec
(6) |
2012 |
Jan
(13) |
Feb
(16) |
Mar
(15) |
Apr
(12) |
May
(15) |
Jun
(31) |
Jul
(22) |
Aug
(15) |
Sep
(46) |
Oct
(21) |
Nov
(15) |
Dec
(33) |
2013 |
Jan
(19) |
Feb
(17) |
Mar
(31) |
Apr
(17) |
May
(27) |
Jun
(24) |
Jul
(26) |
Aug
(11) |
Sep
(9) |
Oct
(22) |
Nov
(14) |
Dec
(16) |
2014 |
Jan
(20) |
Feb
(66) |
Mar
(29) |
Apr
(13) |
May
(9) |
Jun
|
Jul
(11) |
Aug
(21) |
Sep
(15) |
Oct
(5) |
Nov
(5) |
Dec
(10) |
2015 |
Jan
(6) |
Feb
(26) |
Mar
(26) |
Apr
|
May
(9) |
Jun
(5) |
Jul
(5) |
Aug
(11) |
Sep
(8) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
(3) |
Feb
|
Mar
(9) |
Apr
(3) |
May
(16) |
Jun
(26) |
Jul
(32) |
Aug
(27) |
Sep
(9) |
Oct
|
Nov
(4) |
Dec
(10) |
2017 |
Jan
(11) |
Feb
(44) |
Mar
(6) |
Apr
(8) |
May
(1) |
Jun
(2) |
Jul
(34) |
Aug
(28) |
Sep
(3) |
Oct
(9) |
Nov
(3) |
Dec
|
2018 |
Jan
(1) |
Feb
(5) |
Mar
(6) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
|
Aug
(1) |
Sep
(6) |
Oct
|
Nov
(6) |
Dec
|
2019 |
Jan
(18) |
Feb
(16) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
(3) |
Oct
(10) |
Nov
(1) |
Dec
(3) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(17) |
Jun
(23) |
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
(10) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
(1) |
Dec
|
2022 |
Jan
(8) |
Feb
|
Mar
(9) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(13) |
Nov
(12) |
Dec
|
2023 |
Jan
|
Feb
(1) |
Mar
(9) |
Apr
|
May
(3) |
Jun
(5) |
Jul
(3) |
Aug
(8) |
Sep
|
Oct
|
Nov
(1) |
Dec
(9) |
2024 |
Jan
(8) |
Feb
|
Mar
(14) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(1) |
Feb
(1) |
Mar
(1) |
Apr
(2) |
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Jason C. <cam...@gm...> - 2019-02-15 11:24:30
|
Christian, Two things to add from my own efforts of similar intent: * Adobe uses their own ACE (Adobe Color Engine) which does differ from Apple CMM and LCMS and others. So even basic conversions I’ve tested will have some slight differences. * Usually Absolute Colorimetric is used to force a source whitepoint to be simulated in the destination space. I think LCMS has a whitepoint override but I don’t know the detail on where you need to insert that. Others on the list might have detail on that piece. * Preserving the numbers is an option on the handling of the file itself -- if it needs to, for some reason, NOT manage the RGB/CMYK build colors and preserve them in lieu of respecting the results of the transform. ---------------------------------------------------------------------- Date: Fri, 8 Feb 2019 11:50:40 +0100 From: Christian Schmitz <rea...@mo...<mailto:rea...@mo...>> To: lcm...@li...<mailto:lcm...@li...> Subject: [Lcms-user] LCMS questions for paper simulation Hello, We try to replicate here the display from Photoshop and there is an option for paper simulation. Does someone know how to achieve this with LCMS2? We already created a transform with CreateProofingTransform with image profile a source, monitor profile as destination and the device profile as transfer one with relative color metric intent (is that right?) and Flags Soft Proofing and BPC. The result looks close, but not exactly the same as in photoshop. Also the is an option to preserve RGB or CMYK numbers. I don't see an option for that. Black point compensation is also a checkbox, but for that we found a flag. |
From: Marti M. <mar...@li...> - 2019-02-09 08:55:39
|
<div dir='auto'>Hi,<div dir="auto">Try absolute colorimetric as proofing intent for paper simulation. </div><div dir="auto"><br></div><div dir="auto">To get same as photoshop, experiment with intents. Diferrent intents sometimes makes a big difference.</div><div dir="auto">Regards</div><div dir="auto">Marti</div></div> |
From: Sebastien L. <sl...@po...> - 2019-02-08 11:57:53
|
Hi guys, Edgar, the profile you sent me works fine ! Thank you all for your help :-) Best regards Sébastien Le 07/02/2019 à 12:09, Edgar Loser a écrit : > Hi Sébastien, > > or take this profile as output. It has a very small gamut, i.e. when > doing a transform from sRGB to fakeOut.icc > the output will be very saturated (values are either 0 or 255). > > Edgar |
From: Christian S. <rea...@mo...> - 2019-02-08 10:50:52
|
Hello, We try to replicate here the display from Photoshop and there is an option for paper simulation. Does someone know how to achieve this with LCMS2? We already created a transform with CreateProofingTransform with image profile a source, monitor profile as destination and the device profile as transfer one with relative color metric intent (is that right?) and Flags Soft Proofing and BPC. The result looks close, but not exactly the same as in photoshop. Also the is an option to preserve RGB or CMYK numbers. I don't see an option for that. Black point compensation is also a checkbox, but for that we found a flag. Sincerely Christian -- Read our blog about news on our plugins: http://www.mbsplugins.de/ |
From: Edgar L. <lo...@co...> - 2019-02-07 11:09:43
|
Hi Sébastien, or take this profile as output. It has a very small gamut, i.e. when doing a transform from sRGB to fakeOut.icc the output will be very saturated (values are either 0 or 255). Edgar > Hello, > > Edgar, Kai-Uwe, thanks a lot for taking the time to send me these profiles. > > Theoritically, they should be perfect and I have no problem to load them > (as they are in RGB color space). > > Unfortunately, when I try to use them (named "debugRGB") and create the > following 2 transforms, littlecms returns an error : > error 13: Couldn't link the profiles > > The transform are quite trivial (sRGB 8 bits -> debugRGB and Lab double > -> debugRGB ): > > t1 = cmsCreateTransform(sRGB, TYPE_QRGB_8, debugRGB, TYPE_BGRA_8, > intent, flags); > t2 = cmsCreateTransform(LabHandle, TYPE_Lab_DBL, debugRGB, > TYPE_BGRA_8, intent, flags); > > If I use ProPhoto or an icc profile from a screen, I don't have any > trouble :-( > > I'm a bit puzzled... > > May be the problem is obvious for you ? > > Best regards > > Sébastien > > > > > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > -- lakeBits Inh. Edgar Loser Haydnstr. 25 78464 Konstanz Tel 0049 7531 5844154 0 Fax 0049 7531 5844154 9 https://www.colymp.com/ mailto:lo...@co... |
From: Edgar L. <lo...@co...> - 2019-02-07 10:55:23
|
Hi Sébastien, can you swap the profiles in cmsCreateTransform? Going from "debugRGB" to sRGB? In this case they should be compatible with lcms... Edgar On 07.02.2019 10:01, Sébastien L. wrote: > Hello, > > Edgar, Kai-Uwe, thanks a lot for taking the time to send me these profiles. > > Theoritically, they should be perfect and I have no problem to load them > (as they are in RGB color space). > > Unfortunately, when I try to use them (named "debugRGB") and create the > following 2 transforms, littlecms returns an error : > error 13: Couldn't link the profiles > > The transform are quite trivial (sRGB 8 bits -> debugRGB and Lab double > -> debugRGB ): > > t1 = cmsCreateTransform(sRGB, TYPE_QRGB_8, debugRGB, TYPE_BGRA_8, > intent, flags); > t2 = cmsCreateTransform(LabHandle, TYPE_Lab_DBL, debugRGB, > TYPE_BGRA_8, intent, flags); > > If I use ProPhoto or an icc profile from a screen, I don't have any > trouble :-( > > I'm a bit puzzled... > > May be the problem is obvious for you ? > > Best regards > > Sébastien > > > > > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > -- lakeBits Inh. Edgar Loser Haydnstr. 25 78464 Konstanz Tel 0049 7531 5844154 0 Fax 0049 7531 5844154 9 https://www.colymp.com/ mailto:lo...@co... |
From: Sébastien L. <sl...@ma...> - 2019-02-07 09:01:14
|
Hello, Edgar, Kai-Uwe, thanks a lot for taking the time to send me these profiles. Theoritically, they should be perfect and I have no problem to load them (as they are in RGB color space). Unfortunately, when I try to use them (named "debugRGB") and create the following 2 transforms, littlecms returns an error : error 13: Couldn't link the profiles The transform are quite trivial (sRGB 8 bits -> debugRGB and Lab double -> debugRGB ): t1 = cmsCreateTransform(sRGB, TYPE_QRGB_8, debugRGB, TYPE_BGRA_8, intent, flags); t2 = cmsCreateTransform(LabHandle, TYPE_Lab_DBL, debugRGB, TYPE_BGRA_8, intent, flags); If I use ProPhoto or an icc profile from a screen, I don't have any trouble :-( I'm a bit puzzled... May be the problem is obvious for you ? Best regards Sébastien |
From: Edgar L. <lo...@co...> - 2019-02-06 18:21:09
|
Hi Sébastien, I've two RGB profiles for you (attached, hope that works in this list): one is "spinning" around rgb (rgb becomes brg) the other one is converting rgb to green (when used as input profile) Edgar On 06.02.2019 16:46, Sebastien Leon wrote: > Hi Marco, > Thank you for your answer. > >> Not sure I understand the way you are using them, but can't you just use >> something like an extreme wide gamut profile to see the differences? > ProPhoto or such? > > Yes, it is a solution. But it is visually less obvious that using a > profile that completely modify the colors (like switching channels or > turning everything black, ...) > I thought such profiles were easy to find (or easy to create for ICC > wizards) but it seems I am wrong. > > Sébastien > > > > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > -- lakeBits Inh. Edgar Loser Haydnstr. 25 78464 Konstanz Tel 0049 7531 5844154 0 Fax 0049 7531 5844154 9 https://www.colymp.com/ mailto:lo...@co... |
From: Sebastien L. <sl...@po...> - 2019-02-06 16:27:53
|
Hi guys, For some years I use littleCMS (and it is great, thanks Marti) and included it into a graphical software. Some of my dialog were color-matched, and some others were not (old architecture, lack of time, dev skill, etc...) Now, I'm searching an ICC profile (rgb color space) that I could substitute to the default screen profile so I could immediately see which dialog are color matched and which one are not... Does anyone here has such profile ? (for an example, a profile that turns everything to grayscale or darker or anything really different...) (of course, I could go to the code, but 250 dialog will take me a lot of time) Thanks for your help ! Sébastien Léon Pointcarré Textile Software |
From: Sebastien L. <sl...@po...> - 2019-02-06 16:23:37
|
Hi Marco, Thank you for your answer. > Not sure I understand the way you are using them, but can't you just use > something like an extreme wide gamut profile to see the differences? ProPhoto or such? Yes, it is a solution. But it is visually less obvious that using a profile that completely modify the colors (like switching channels or turning everything black, ...) I thought such profiles were easy to find (or easy to create for ICC wizards) but it seems I am wrong. Sébastien |
From: Marco F. <Mar...@en...> - 2019-02-06 15:32:33
|
Not sure I understand the way you are using them, but can't you just use something like an extreme wide gamut profile to see the differences? ProPhoto or such? Marco -----Ursprüngliche Nachricht----- Von: Sebastien Leon [mailto:sl...@po...] Gesendet: Mittwoch, 6. Februar 2019 09:07 An: lcm...@li... Betreff: [EXTERNAL]Re: [Lcms-user] fake ICC profile to visualize quickly color matched areas... WARNING: This email originated outside of Entrust Datacard. DO NOT CLICK links or attachments unless you trust the sender and know the content is safe. Hi Kai-Uwe, I replaced my screen profile by one of yours but it failed. After few tests I realized that your profiles were all in Lab color space (which is incompatible with screen correction code in RGB color space) Any idea to get the same profiles in RGB or to get some others in RGB ? Best regards Sébastien Le 06/02/2019 à 14:01, Sebastien Leon a écrit : > Hi Kai-Uwe, > > This looks perfect for my need ! > > Thanks a lot > > Sébastien > > Le 06/02/2019 à 13:53, Kai-Uwe Behrmann a écrit : >> Dear Sebastien, >> >> here are some effect profiles, which might be of use for your purpose: >> >> https://github.com/oyranos-cms/oyranos/files/1756684/vcgt-effects-icc.zip >> >> best regards >> Kai-Uwe >> >> Am 06.02.19 um 13:48 schrieb Sebastien Leon: >>> Hi guys, >>> >>> For some years I use littleCMS (and it is great, thanks Marti) and >>> included it into a graphical software. >>> >>> Some of my dialog were color-matched, and some others were not (old >>> architecture, lack of time, dev skill, etc...) >>> >>> Now, I'm searching an ICC profile (rgb color space) that I could >>> substitute to the default screen profile so I could immediately see >>> which dialog are color matched and which one are not... >>> Does anyone here has such profile ? (for an example, a profile that >>> turns everything to grayscale or darker or anything really different...) >>> (of course, I could go to the code, but 250 dialog will take me a lot of >>> time) >>> >>> Thanks for your help ! >>> >>> Sébastien Léon >>> Pointcarré Textile Software >>> _______________________________________________ Lcms-user mailing list Lcm...@li... https://lists.sourceforge.net/lists/listinfo/lcms-user |
From: Sebastien L. <sl...@po...> - 2019-02-06 15:22:54
|
Hi Kai-Uwe, I replaced my screen profile by one of yours but it failed. After few tests I realized that your profiles were all in Lab color space (which is incompatible with screen correction code in RGB color space) Any idea to get the same profiles in RGB or to get some others in RGB ? Best regards Sébastien Le 06/02/2019 à 14:01, Sebastien Leon a écrit : > Hi Kai-Uwe, > > This looks perfect for my need ! > > Thanks a lot > > Sébastien > > Le 06/02/2019 à 13:53, Kai-Uwe Behrmann a écrit : >> Dear Sebastien, >> >> here are some effect profiles, which might be of use for your purpose: >> >> https://github.com/oyranos-cms/oyranos/files/1756684/vcgt-effects-icc.zip >> >> best regards >> Kai-Uwe >> >> Am 06.02.19 um 13:48 schrieb Sebastien Leon: >>> Hi guys, >>> >>> For some years I use littleCMS (and it is great, thanks Marti) and >>> included it into a graphical software. >>> >>> Some of my dialog were color-matched, and some others were not (old >>> architecture, lack of time, dev skill, etc...) >>> >>> Now, I'm searching an ICC profile (rgb color space) that I could >>> substitute to the default screen profile so I could immediately see >>> which dialog are color matched and which one are not... >>> Does anyone here has such profile ? (for an example, a profile that >>> turns everything to grayscale or darker or anything really different...) >>> (of course, I could go to the code, but 250 dialog will take me a lot of >>> time) >>> >>> Thanks for your help ! >>> >>> Sébastien Léon >>> Pointcarré Textile Software >>> |
From: Sebastien L. <sl...@po...> - 2019-02-06 13:17:42
|
Hi Kai-Uwe, This looks perfect for my need ! Thanks a lot Sébastien Le 06/02/2019 à 13:53, Kai-Uwe Behrmann a écrit : > Dear Sebastien, > > here are some effect profiles, which might be of use for your purpose: > > https://github.com/oyranos-cms/oyranos/files/1756684/vcgt-effects-icc.zip > > best regards > Kai-Uwe > > Am 06.02.19 um 13:48 schrieb Sebastien Leon: >> Hi guys, >> >> For some years I use littleCMS (and it is great, thanks Marti) and >> included it into a graphical software. >> >> Some of my dialog were color-matched, and some others were not (old >> architecture, lack of time, dev skill, etc...) >> >> Now, I'm searching an ICC profile (rgb color space) that I could >> substitute to the default screen profile so I could immediately see >> which dialog are color matched and which one are not... >> Does anyone here has such profile ? (for an example, a profile that >> turns everything to grayscale or darker or anything really different...) >> (of course, I could go to the code, but 250 dialog will take me a lot of >> time) >> >> Thanks for your help ! >> >> Sébastien Léon >> Pointcarré Textile Software >> >> >> >> >> >> >> _______________________________________________ >> Lcms-user mailing list >> Lcm...@li... >> https://lists.sourceforge.net/lists/listinfo/lcms-user >> > > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > > |
From: Sébastien L. <sl...@ma...> - 2019-02-06 13:07:01
|
Hi guys, For some years I use littleCMS (and it is great, thanks Marti) and included it into a graphical software. Some of my dialog were color-matched, and some others were not (old architecture, lack of time, dev skill, etc...) Now, I'm searching an ICC profile (rgb color space) that I could substitute to the default screen profile so I could immediately see which dialog are color matched and which one are not... Does anyone here has such profile ? (for an example, a profile that turns everything to grayscale or darker or anything really different...) (of course, I could go to the code, but 250 dialog will take me a lot of time) Thanks for your help ! Sébastien Léon Pointcarré Textile Software |
From: Kai-Uwe B. <ku...@gm...> - 2019-02-06 12:53:55
|
Dear Sebastien, here are some effect profiles, which might be of use for your purpose: https://github.com/oyranos-cms/oyranos/files/1756684/vcgt-effects-icc.zip best regards Kai-Uwe Am 06.02.19 um 13:48 schrieb Sebastien Leon: > Hi guys, > > For some years I use littleCMS (and it is great, thanks Marti) and > included it into a graphical software. > > Some of my dialog were color-matched, and some others were not (old > architecture, lack of time, dev skill, etc...) > > Now, I'm searching an ICC profile (rgb color space) that I could > substitute to the default screen profile so I could immediately see > which dialog are color matched and which one are not... > Does anyone here has such profile ? (for an example, a profile that > turns everything to grayscale or darker or anything really different...) > (of course, I could go to the code, but 250 dialog will take me a lot of > time) > > Thanks for your help ! > > Sébastien Léon > Pointcarré Textile Software > > > > > > > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > |
From: Sebastien L. <sl...@po...> - 2019-02-06 12:48:30
|
Hi guys, For some years I use littleCMS (and it is great, thanks Marti) and included it into a graphical software. Some of my dialog were color-matched, and some others were not (old architecture, lack of time, dev skill, etc...) Now, I'm searching an ICC profile (rgb color space) that I could substitute to the default screen profile so I could immediately see which dialog are color matched and which one are not... Does anyone here has such profile ? (for an example, a profile that turns everything to grayscale or darker or anything really different...) (of course, I could go to the code, but 250 dialog will take me a lot of time) Thanks for your help ! Sébastien Léon Pointcarré Textile Software |
From: Bob F. <bfr...@si...> - 2019-01-23 14:01:40
|
On Tue, 22 Jan 2019, Marti Maria wrote: > > Yes, lcms2.h does that, as most libraries written in C. > > > Are people saying that with that, valid C99 is rejected by a C++17 > compiler? Is the idea that anything included must be valid C++17? That > seems like an unreasonably large requirement on dependencies. > > That seems to be the case. Microsoft has publically declared their intention to not support C language features beyond C90 except for those required to support C++. Their focus is on C++. Bob -- Bob Friesenhahn bfr...@si..., http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ Public Key, http://www.simplesystems.org/users/bfriesen/public-key.txt |
From: Marco F. <Mar...@en...> - 2019-01-22 20:41:11
|
Well... > Maybe I'm off base here, but I thought that when including a C header in >C++, one should use > > exterm "C" > >to specify C linkage. lcms2.h already has an extern "C" { ... } block around declarations when included in c++ compiled code.. In this regard, yeah, it might be debatable if the error MSVC17 throws is not a false one; actually, it's a warning only, but by (default) compiler settings, these warnings are an error. > Are people saying that with that, valid C99 is rejected by a C++17 > compiler? Is the idea that anything included must be valid C++17? That > seems like an unreasonably large requirement on dependencies. "register" as I know it is typically used within a function body to hint variables. It mainly guarantees, I think, that no-one will/can get the address of the variable, thus it could be heavily optimized by the compiler, including changing its address in memory (for example if it would optimize caching). I think it's a borderline use case to use it for a function parameter at all, as usually how parameters are passed (how many are in registers anyways) is up to the platform; I would think that 99% of the compilers ignore the keyword anyways, because the internal optimization is better. Maybe a few old embedded or microcontroller compilers don't... That's one of the reasons why the keyword was deprecated already in C++11 and guaranteed to be ignored by compiler (if not before, I'm not 100% sure). I think it's status just changed to "unused reserved keyword" with C++17 standard. The problem is, I agree, that it MIGHT break ABI for those compilers that do not ignore it, but I guess we talk C compilers only anyways. Marco -----Ursprüngliche Nachricht----- Von: Greg Troxel [mailto:gd...@le...] Gesendet: Dienstag, 22. Januar 2019 11:10 An: mar...@li... Cc: Lcm...@li...; Bob Friesenhahn Betreff: [EXTERNAL]Re: [Lcms-user] C++17 "register" warning when including lcms2.h WARNING: This email originated outside of Entrust Datacard. DO NOT CLICK links or attachments unless you trust the sender and know the content is safe. mar...@li... writes: > Hi, > >>> VS 2017 produces a warning when including lcms2.h from C++ code: >>> "warning C5033: 'register' is no longer a supported storage class". >> >> These declarations appear wrong to me, regardless of C++. > > This comes from the early days of lcms1. It is part of C99, which is > the standard required by lcms2: Maybe I'm off base here, but I thought that when including a C header in C++, one should use exterm "C" to specify C linkage. Are people saying that with that, valid C99 is rejected by a C++17 compiler? Is the idea that anything included must be valid C++17? That seems like an unreasonably large requirement on dependencies. _______________________________________________ Lcms-user mailing list Lcm...@li... https://lists.sourceforge.net/lists/listinfo/lcms-user |
From: Marti M. <mar...@li...> - 2019-01-22 20:14:01
|
<div dir='auto'>Hi,<br><div class="gmail_extra" dir="auto"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Maybe I'm off base here, but I thought that when including a C header in <br> C++, one should use <br> <br> exterm "C" <br> <br> to specify C linkage. <br> </p></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Yes, lcms2.h does that, as most libraries written in C.</div><div class="gmail_extra" dir="auto"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr"><br> Are people saying that with that, valid C99 is rejected by a C++17 <br> compiler? Is the idea that anything included must be valid C++17? That <br> seems like an unreasonably large requirement on dependencies. <br> </p></blockquote></div></div><div dir="auto">That seems to be the case.</div><div dir="auto"><br></div><div dir="auto">Anyway in the GIT there is a commit that implements the discussed changes. Next release will support it.</div><div dir="auto"><br></div><div dir="auto">Best regards,</div><div dir="auto">Marti</div></div> |
From: Greg T. <gd...@le...> - 2019-01-22 17:10:33
|
mar...@li... writes: > Hi, > >>> VS 2017 produces a warning when including lcms2.h from C++ code: >>> "warning C5033: 'register' is no longer a supported storage class". >> >> These declarations appear wrong to me, regardless of C++. > > This comes from the early days of lcms1. It is part of C99, which is > the standard required by lcms2: Maybe I'm off base here, but I thought that when including a C header in C++, one should use exterm "C" to specify C linkage. Are people saying that with that, valid C99 is rejected by a C++17 compiler? Is the idea that anything included must be valid C++17? That seems like an unreasonably large requirement on dependencies. |
From: Marti M. <mar...@li...> - 2019-01-21 15:14:36
|
<div dir='auto'><div>That would have a severe impact on some embedded, and break ABI compatibility as well. Sorry, the default has to be compatible with previous versions.<div dir="auto">Marti</div><br><div class="gmail_extra"><br><div class="gmail_quote">On Jan 21, 2019 13:14, Christian Schmitz <rea...@mo...> wrote:<blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr"> <br> <br> I would suggest to remove register as default. <br> <br> e.g. change register to __LCMS_REGISTER__ and than allow people to define <br> <br> #define __LCMS_REGISTER__ register <br> <br> If they need it. But default I should go with next update. <br> It has no big effect so far. And when people update to newer version, they probably rebuild all their static libs and their own source code. For DLL register had no effect as far as I know. <br> <br> So either remove it or keep a define as fallback for people who need it. <br> <br> Just my humble opinion. <br> <br> Sincerely <br> Christian <br> <br> -- <br> Read our blog about news on our plugins: <br> <br> http://www.mbsplugins.de/ <br> <br> <br> <br> <br> _______________________________________________ <br> Lcms-user mailing list <br> Lcm...@li... <br> https://lists.sourceforge.net/lists/listinfo/lcms-user <br> </p> </blockquote></div><br></div></div></div> |
From: Christian S. <rea...@mo...> - 2019-01-21 13:55:39
|
> Am 21.01.2019 um 13:01 schrieb Hanno Hoffstadt <Han...@gm...>: > > Sorry, too quick, that was only half the answer. > While both options (remove only in params / completely) for static libs should be OK for me, I would prefer to have "CMS_NO_REGISTER_KEYWORD" remove register completely. I would suggest to remove register as default. e.g. change register to __LCMS_REGISTER__ and than allow people to define #define __LCMS_REGISTER__ register If they need it. But default I should go with next update. It has no big effect so far. And when people update to newer version, they probably rebuild all their static libs and their own source code. For DLL register had no effect as far as I know. So either remove it or keep a define as fallback for people who need it. Just my humble opinion. Sincerely Christian -- Read our blog about news on our plugins: http://www.mbsplugins.de/ |
From: Marco F. <Mar...@en...> - 2019-01-21 12:48:13
|
Very stupid question ... I have simply circumvent this problem by using: #pragma warning(push) #pragma warning(disable:5033) // register variables #include <lcms2.h> #pragma warning(pop) in my C++17 code. Does anybody see a real Danger in that approach? Best regards, Marco -----Ursprüngliche Nachricht----- Von: Hanno Hoffstadt [mailto:Han...@gm...] Gesendet: Montag, 21. Januar 2019 06:01 An: mar...@li... Cc: Lcm...@li...; Bob Friesenhahn Betreff: [EXTERNAL]Re: [Lcms-user] C++17 "register" warning when including lcms2.h WARNING: This email originated outside of Entrust Datacard. DO NOT CLICK links or attachments unless you trust the sender and know the content is safe. Sorry, too quick, that was only half the answer. While both options (remove only in params / completely) for static libs should be OK for me, I would prefer to have "CMS_NO_REGISTER_KEYWORD" remove register completely. Best regards Hanno > Am 21.01.2019 um 12:47 schrieb Hanno Hoffstadt <han...@gm...>: > > Hi Marti, > > for me, CMS_NO_REGISTER_KEYWORD would be a perfect solution. > Thanks, > > Hanno > >> Am 21.01.2019 um 10:26 schrieb mar...@li...: >> >> >> Hi, >> >>>> VS 2017 produces a warning when including lcms2.h from C++ code: >>>> "warning C5033: 'register' is no longer a supported storage class". >>> >>> These declarations appear wrong to me, regardless of C++. >> >> This comes from the early days of lcms1. It is part of C99, which is the standard required by lcms2: >> >> "6.7.1 Storage-class specifiers >> 4 A declaration of an identifier for an object with storage-class specifier register suggests that access to the object be as fast as possible. The extent to which such suggestions are effective is implementation-defined >> >> 6.7.5.3 Function declarators (including prototypes) >> 2 The only storage-class specifier that shall occur in a parameter declaration is register >> >> 6.9.1 Function definitions >> 6 […] The declarations in the declaration list shall contain no storage-class specifier other than register and no initializations." >> >> Having said this, I don't see any evil on using a toggle in lcms to prevent register keyword, but set to off by default and disabled when .so/DLL is being used. As Bob says, the big issue here is ABI compatibility. >> On most compilers register does nothing when used in parameters of exported functions, but in some embedded it is implemented and it makes a difference. On these cases there are no shared objects involved. >> >> So, please let me know... should I add an hypothetical CMS_NO_REGISTER_KEYWORD, undefined by default, that would get rid of register on params? or maybe get rid of register completely when the option is selected? >> Please note in any case lcms2 will stay on C99 standard, and therefore register has to be supported. As said, on some embedded compilers proper use of register makes huge difference on throughput. >> >> Regards >> Marti >> > _______________________________________________ Lcms-user mailing list Lcm...@li... https://lists.sourceforge.net/lists/listinfo/lcms-user |
From: Hanno H. <Han...@gm...> - 2019-01-21 12:01:27
|
Sorry, too quick, that was only half the answer. While both options (remove only in params / completely) for static libs should be OK for me, I would prefer to have "CMS_NO_REGISTER_KEYWORD" remove register completely. Best regards Hanno > Am 21.01.2019 um 12:47 schrieb Hanno Hoffstadt <han...@gm...>: > > Hi Marti, > > for me, CMS_NO_REGISTER_KEYWORD would be a perfect solution. > Thanks, > > Hanno > >> Am 21.01.2019 um 10:26 schrieb mar...@li...: >> >> >> Hi, >> >>>> VS 2017 produces a warning when including lcms2.h from C++ code: >>>> "warning C5033: 'register' is no longer a supported storage class". >>> >>> These declarations appear wrong to me, regardless of C++. >> >> This comes from the early days of lcms1. It is part of C99, which is the standard required by lcms2: >> >> "6.7.1 Storage-class specifiers >> 4 A declaration of an identifier for an object with storage-class specifier register suggests that access to the object be as fast as possible. The extent to which such suggestions are effective is implementation-defined >> >> 6.7.5.3 Function declarators (including prototypes) >> 2 The only storage-class specifier that shall occur in a parameter declaration is register >> >> 6.9.1 Function definitions >> 6 […] The declarations in the declaration list shall contain no storage-class specifier other than register and no initializations." >> >> Having said this, I don't see any evil on using a toggle in lcms to prevent register keyword, but set to off by default and disabled when .so/DLL is being used. As Bob says, the big issue here is ABI compatibility. >> On most compilers register does nothing when used in parameters of exported functions, but in some embedded it is implemented and it makes a difference. On these cases there are no shared objects involved. >> >> So, please let me know... should I add an hypothetical CMS_NO_REGISTER_KEYWORD, undefined by default, that would get rid of register on params? or maybe get rid of register completely when the option is selected? >> Please note in any case lcms2 will stay on C99 standard, and therefore register has to be supported. As said, on some embedded compilers proper use of register makes huge difference on throughput. >> >> Regards >> Marti >> > |
From: Hanno H. <Han...@gm...> - 2019-01-21 11:48:03
|
Hi Marti, for me, CMS_NO_REGISTER_KEYWORD would be a perfect solution. Thanks, Hanno > Am 21.01.2019 um 10:26 schrieb mar...@li...: > > > Hi, > >>> VS 2017 produces a warning when including lcms2.h from C++ code: >>> "warning C5033: 'register' is no longer a supported storage class". >> >> These declarations appear wrong to me, regardless of C++. > > This comes from the early days of lcms1. It is part of C99, which is the standard required by lcms2: > > "6.7.1 Storage-class specifiers > 4 A declaration of an identifier for an object with storage-class specifier register suggests that access to the object be as fast as possible. The extent to which such suggestions are effective is implementation-defined > > 6.7.5.3 Function declarators (including prototypes) > 2 The only storage-class specifier that shall occur in a parameter declaration is register > > 6.9.1 Function definitions > 6 […] The declarations in the declaration list shall contain no storage-class specifier other than register and no initializations." > > Having said this, I don't see any evil on using a toggle in lcms to prevent register keyword, but set to off by default and disabled when .so/DLL is being used. As Bob says, the big issue here is ABI compatibility. > On most compilers register does nothing when used in parameters of exported functions, but in some embedded it is implemented and it makes a difference. On these cases there are no shared objects involved. > > So, please let me know... should I add an hypothetical CMS_NO_REGISTER_KEYWORD, undefined by default, that would get rid of register on params? or maybe get rid of register completely when the option is selected? > Please note in any case lcms2 will stay on C99 standard, and therefore register has to be supported. As said, on some embedded compilers proper use of register makes huge difference on throughput. > > Regards > Marti > |