| OLD | NEW |
| 1 //------------------------------------------------------------------------------
--- | 1 //------------------------------------------------------------------------------
--- |
| 2 // | 2 // |
| 3 // Little Color Management System | 3 // Little Color Management System |
| 4 // Copyright (c) 1998-2014 Marti Maria Saguer | 4 // Copyright (c) 1998-2014 Marti Maria Saguer |
| 5 // | 5 // |
| 6 // Permission is hereby granted, free of charge, to any person obtaining | 6 // Permission is hereby granted, free of charge, to any person obtaining |
| 7 // a copy of this software and associated documentation files (the "Software"), | 7 // a copy of this software and associated documentation files (the "Software"), |
| 8 // to deal in the Software without restriction, including without limitation | 8 // to deal in the Software without restriction, including without limitation |
| 9 // the rights to use, copy, modify, merge, publish, distribute, sublicense, | 9 // the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| 10 // and/or sell copies of the Software, and to permit persons to whom the Softwar
e | 10 // and/or sell copies of the Software, and to permit persons to whom the Softwar
e |
| (...skipping 1737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1748 if (!_cmsReadUInt8Number(io, &InputChannels)) goto Error; | 1748 if (!_cmsReadUInt8Number(io, &InputChannels)) goto Error; |
| 1749 if (!_cmsReadUInt8Number(io, &OutputChannels)) goto Error; | 1749 if (!_cmsReadUInt8Number(io, &OutputChannels)) goto Error; |
| 1750 if (!_cmsReadUInt8Number(io, &CLUTpoints)) goto Error; | 1750 if (!_cmsReadUInt8Number(io, &CLUTpoints)) goto Error; |
| 1751 | 1751 |
| 1752 if (CLUTpoints == 1) goto Error; // Impossible value, 0 for no CLUT and the
n 2 at least | 1752 if (CLUTpoints == 1) goto Error; // Impossible value, 0 for no CLUT and the
n 2 at least |
| 1753 | 1753 |
| 1754 // Padding | 1754 // Padding |
| 1755 if (!_cmsReadUInt8Number(io, NULL)) goto Error; | 1755 if (!_cmsReadUInt8Number(io, NULL)) goto Error; |
| 1756 | 1756 |
| 1757 // Do some checking | 1757 // Do some checking |
| 1758 if (InputChannels > cmsMAXCHANNELS) goto Error; | 1758 if (InputChannels == 0 || InputChannels > cmsMAXCHANNELS) goto Error; |
| 1759 if (OutputChannels > cmsMAXCHANNELS) goto Error; | 1759 if (OutputChannels == 0 || OutputChannels > cmsMAXCHANNELS) goto Error; |
| 1760 | 1760 |
| 1761 // Allocates an empty Pipeline | 1761 // Allocates an empty Pipeline |
| 1762 NewLUT = cmsPipelineAlloc(self ->ContextID, InputChannels, OutputChannels); | 1762 NewLUT = cmsPipelineAlloc(self ->ContextID, InputChannels, OutputChannels); |
| 1763 if (NewLUT == NULL) goto Error; | 1763 if (NewLUT == NULL) goto Error; |
| 1764 | 1764 |
| 1765 // Read the Matrix | 1765 // Read the Matrix |
| 1766 if (!_cmsRead15Fixed16Number(io, &Matrix[0])) goto Error; | 1766 if (!_cmsRead15Fixed16Number(io, &Matrix[0])) goto Error; |
| 1767 if (!_cmsRead15Fixed16Number(io, &Matrix[1])) goto Error; | 1767 if (!_cmsRead15Fixed16Number(io, &Matrix[1])) goto Error; |
| 1768 if (!_cmsRead15Fixed16Number(io, &Matrix[2])) goto Error; | 1768 if (!_cmsRead15Fixed16Number(io, &Matrix[2])) goto Error; |
| 1769 if (!_cmsRead15Fixed16Number(io, &Matrix[3])) goto Error; | 1769 if (!_cmsRead15Fixed16Number(io, &Matrix[3])) goto Error; |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2041 *nItems = 0; | 2041 *nItems = 0; |
| 2042 | 2042 |
| 2043 if (!_cmsReadUInt8Number(io, &InputChannels)) return NULL; | 2043 if (!_cmsReadUInt8Number(io, &InputChannels)) return NULL; |
| 2044 if (!_cmsReadUInt8Number(io, &OutputChannels)) return NULL; | 2044 if (!_cmsReadUInt8Number(io, &OutputChannels)) return NULL; |
| 2045 if (!_cmsReadUInt8Number(io, &CLUTpoints)) return NULL; // 255 maximum | 2045 if (!_cmsReadUInt8Number(io, &CLUTpoints)) return NULL; // 255 maximum |
| 2046 | 2046 |
| 2047 // Padding | 2047 // Padding |
| 2048 if (!_cmsReadUInt8Number(io, NULL)) return NULL; | 2048 if (!_cmsReadUInt8Number(io, NULL)) return NULL; |
| 2049 | 2049 |
| 2050 // Do some checking | 2050 // Do some checking |
| 2051 if (InputChannels > cmsMAXCHANNELS) goto Error; | 2051 if (InputChannels == 0 || InputChannels > cmsMAXCHANNELS) goto Error; |
| 2052 if (OutputChannels > cmsMAXCHANNELS) goto Error; | 2052 if (OutputChannels == 0 || OutputChannels > cmsMAXCHANNELS) goto Error; |
| 2053 | 2053 |
| 2054 // Allocates an empty LUT | 2054 // Allocates an empty LUT |
| 2055 NewLUT = cmsPipelineAlloc(self ->ContextID, InputChannels, OutputChannels); | 2055 NewLUT = cmsPipelineAlloc(self ->ContextID, InputChannels, OutputChannels); |
| 2056 if (NewLUT == NULL) goto Error; | 2056 if (NewLUT == NULL) goto Error; |
| 2057 | 2057 |
| 2058 // Read the Matrix | 2058 // Read the Matrix |
| 2059 if (!_cmsRead15Fixed16Number(io, &Matrix[0])) goto Error; | 2059 if (!_cmsRead15Fixed16Number(io, &Matrix[0])) goto Error; |
| 2060 if (!_cmsRead15Fixed16Number(io, &Matrix[1])) goto Error; | 2060 if (!_cmsRead15Fixed16Number(io, &Matrix[1])) goto Error; |
| 2061 if (!_cmsRead15Fixed16Number(io, &Matrix[2])) goto Error; | 2061 if (!_cmsRead15Fixed16Number(io, &Matrix[2])) goto Error; |
| 2062 if (!_cmsRead15Fixed16Number(io, &Matrix[3])) goto Error; | 2062 if (!_cmsRead15Fixed16Number(io, &Matrix[3])) goto Error; |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2479 if (!_cmsReadUInt8Number(io, &outputChan)) return NULL; | 2479 if (!_cmsReadUInt8Number(io, &outputChan)) return NULL; |
| 2480 | 2480 |
| 2481 if (!_cmsReadUInt16Number(io, NULL)) return NULL; | 2481 if (!_cmsReadUInt16Number(io, NULL)) return NULL; |
| 2482 | 2482 |
| 2483 if (!_cmsReadUInt32Number(io, &offsetB)) return NULL; | 2483 if (!_cmsReadUInt32Number(io, &offsetB)) return NULL; |
| 2484 if (!_cmsReadUInt32Number(io, &offsetMat)) return NULL; | 2484 if (!_cmsReadUInt32Number(io, &offsetMat)) return NULL; |
| 2485 if (!_cmsReadUInt32Number(io, &offsetM)) return NULL; | 2485 if (!_cmsReadUInt32Number(io, &offsetM)) return NULL; |
| 2486 if (!_cmsReadUInt32Number(io, &offsetC)) return NULL; | 2486 if (!_cmsReadUInt32Number(io, &offsetC)) return NULL; |
| 2487 if (!_cmsReadUInt32Number(io, &offsetA)) return NULL; | 2487 if (!_cmsReadUInt32Number(io, &offsetA)) return NULL; |
| 2488 | 2488 |
| 2489 // Allocates an empty LUT | 2489 if (inputChan == 0 || inputChan >= cmsMAXCHANNELS) return NULL; |
| 2490 if (outputChan == 0 || outputChan >= cmsMAXCHANNELS) return NULL; |
| 2491 |
| 2492 // Allocates an empty LUT |
| 2490 NewLUT = cmsPipelineAlloc(self ->ContextID, inputChan, outputChan); | 2493 NewLUT = cmsPipelineAlloc(self ->ContextID, inputChan, outputChan); |
| 2491 if (NewLUT == NULL) return NULL; | 2494 if (NewLUT == NULL) return NULL; |
| 2492 | 2495 |
| 2493 if (offsetA!= 0) { | 2496 if (offsetA!= 0) { |
| 2494 if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadSetOfCurves(self, io,
BaseOffset + offsetA, inputChan))) | 2497 if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadSetOfCurves(self, io,
BaseOffset + offsetA, inputChan))) |
| 2495 goto Error; | 2498 goto Error; |
| 2496 } | 2499 } |
| 2497 | 2500 |
| 2498 if (offsetC != 0) { | 2501 if (offsetC != 0) { |
| 2499 if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadCLUT(self, io, BaseOf
fset + offsetC, inputChan, outputChan))) | 2502 if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadCLUT(self, io, BaseOf
fset + offsetC, inputChan, outputChan))) |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2787 cmsUInt32Number offsetC; // Offset to CLUT | 2790 cmsUInt32Number offsetC; // Offset to CLUT |
| 2788 cmsUInt32Number offsetA; // Offset to first "A" curve | 2791 cmsUInt32Number offsetA; // Offset to first "A" curve |
| 2789 cmsPipeline* NewLUT = NULL; | 2792 cmsPipeline* NewLUT = NULL; |
| 2790 | 2793 |
| 2791 | 2794 |
| 2792 BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); | 2795 BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); |
| 2793 | 2796 |
| 2794 if (!_cmsReadUInt8Number(io, &inputChan)) return NULL; | 2797 if (!_cmsReadUInt8Number(io, &inputChan)) return NULL; |
| 2795 if (!_cmsReadUInt8Number(io, &outputChan)) return NULL; | 2798 if (!_cmsReadUInt8Number(io, &outputChan)) return NULL; |
| 2796 | 2799 |
| 2800 if (inputChan == 0 || inputChan >= cmsMAXCHANNELS) return NULL; |
| 2801 if (outputChan == 0 || outputChan >= cmsMAXCHANNELS) return NULL; |
| 2802 |
| 2797 // Padding | 2803 // Padding |
| 2798 if (!_cmsReadUInt16Number(io, NULL)) return NULL; | 2804 if (!_cmsReadUInt16Number(io, NULL)) return NULL; |
| 2799 | 2805 |
| 2800 if (!_cmsReadUInt32Number(io, &offsetB)) return NULL; | 2806 if (!_cmsReadUInt32Number(io, &offsetB)) return NULL; |
| 2801 if (!_cmsReadUInt32Number(io, &offsetMat)) return NULL; | 2807 if (!_cmsReadUInt32Number(io, &offsetMat)) return NULL; |
| 2802 if (!_cmsReadUInt32Number(io, &offsetM)) return NULL; | 2808 if (!_cmsReadUInt32Number(io, &offsetM)) return NULL; |
| 2803 if (!_cmsReadUInt32Number(io, &offsetC)) return NULL; | 2809 if (!_cmsReadUInt32Number(io, &offsetC)) return NULL; |
| 2804 if (!_cmsReadUInt32Number(io, &offsetA)) return NULL; | 2810 if (!_cmsReadUInt32Number(io, &offsetA)) return NULL; |
| 2805 | 2811 |
| 2806 // Allocates an empty LUT | 2812 // Allocates an empty LUT |
| (...skipping 1629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4436 cmsPipeline *NewLUT = NULL; | 4442 cmsPipeline *NewLUT = NULL; |
| 4437 cmsUInt32Number BaseOffset; | 4443 cmsUInt32Number BaseOffset; |
| 4438 | 4444 |
| 4439 // Get actual position as a basis for element offsets | 4445 // Get actual position as a basis for element offsets |
| 4440 BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); | 4446 BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); |
| 4441 | 4447 |
| 4442 // Read channels and element count | 4448 // Read channels and element count |
| 4443 if (!_cmsReadUInt16Number(io, &InputChans)) return NULL; | 4449 if (!_cmsReadUInt16Number(io, &InputChans)) return NULL; |
| 4444 if (!_cmsReadUInt16Number(io, &OutputChans)) return NULL; | 4450 if (!_cmsReadUInt16Number(io, &OutputChans)) return NULL; |
| 4445 | 4451 |
| 4452 if (InputChans == 0 || InputChans >= cmsMAXCHANNELS) return NULL; |
| 4453 if (OutputChans == 0 || OutputChans >= cmsMAXCHANNELS) return NULL; |
| 4454 |
| 4446 // Allocates an empty LUT | 4455 // Allocates an empty LUT |
| 4447 NewLUT = cmsPipelineAlloc(self ->ContextID, InputChans, OutputChans); | 4456 NewLUT = cmsPipelineAlloc(self ->ContextID, InputChans, OutputChans); |
| 4448 if (NewLUT == NULL) return NULL; | 4457 if (NewLUT == NULL) return NULL; |
| 4449 | 4458 |
| 4450 if (!_cmsReadUInt32Number(io, &ElementCount)) return NULL; | 4459 if (!_cmsReadUInt32Number(io, &ElementCount)) return NULL; |
| 4451 | 4460 |
| 4452 if (!ReadPositionTable(self, io, ElementCount, BaseOffset, NewLUT, ReadMPEEl
em)) { | 4461 if (!ReadPositionTable(self, io, ElementCount, BaseOffset, NewLUT, ReadMPEEl
em)) { |
| 4453 if (NewLUT != NULL) cmsPipelineFree(NewLUT); | 4462 if (NewLUT != NULL) cmsPipelineFree(NewLUT); |
| 4454 *nItems = 0; | 4463 *nItems = 0; |
| 4455 return NULL; | 4464 return NULL; |
| (...skipping 1125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5581 | 5590 |
| 5582 for (pt = SupportedTags; | 5591 for (pt = SupportedTags; |
| 5583 pt != NULL; | 5592 pt != NULL; |
| 5584 pt = pt ->Next) { | 5593 pt = pt ->Next) { |
| 5585 | 5594 |
| 5586 if (sig == pt -> Signature) return &pt ->Descriptor; | 5595 if (sig == pt -> Signature) return &pt ->Descriptor; |
| 5587 } | 5596 } |
| 5588 | 5597 |
| 5589 return NULL; | 5598 return NULL; |
| 5590 } | 5599 } |
| OLD | NEW |