@@ -24,7 +24,7 @@ import {
2424 qcms_drop_transformer ,
2525 qcms_transformer_from_memory ,
2626} from "../../external/qcms/qcms.js" ;
27- import { shadow , warn } from "../shared/util.js" ;
27+ import { shadow , Util , warn } from "../shared/util.js" ;
2828import { ColorSpace } from "./colorspace.js" ;
2929import { QCMS } from "../../external/qcms/qcms_utils.js" ;
3030
@@ -63,28 +63,30 @@ class IccColorSpace extends ColorSpace {
6363 switch ( numComps ) {
6464 case 1 :
6565 inType = DataType . Gray8 ;
66- this . #convertPixel = ( src , srcOffset ) =>
67- qcms_convert_one ( this . #transformer, src [ srcOffset ] * 255 ) ;
66+ this . #convertPixel = ( src , srcOffset , css ) =>
67+ qcms_convert_one ( this . #transformer, src [ srcOffset ] * 255 , css ) ;
6868 break ;
6969 case 3 :
7070 inType = DataType . RGB8 ;
71- this . #convertPixel = ( src , srcOffset ) =>
71+ this . #convertPixel = ( src , srcOffset , css ) =>
7272 qcms_convert_three (
7373 this . #transformer,
7474 src [ srcOffset ] * 255 ,
7575 src [ srcOffset + 1 ] * 255 ,
76- src [ srcOffset + 2 ] * 255
76+ src [ srcOffset + 2 ] * 255 ,
77+ css
7778 ) ;
7879 break ;
7980 case 4 :
8081 inType = DataType . CMYK ;
81- this . #convertPixel = ( src , srcOffset ) =>
82+ this . #convertPixel = ( src , srcOffset , css ) =>
8283 qcms_convert_four (
8384 this . #transformer,
8485 src [ srcOffset ] * 255 ,
8586 src [ srcOffset + 1 ] * 255 ,
8687 src [ srcOffset + 2 ] * 255 ,
87- src [ srcOffset + 3 ] * 255
88+ src [ srcOffset + 3 ] * 255 ,
89+ css
8890 ) ;
8991 break ;
9092 default :
@@ -101,9 +103,16 @@ class IccColorSpace extends ColorSpace {
101103 IccColorSpace . #finalizer. register ( this , this . #transformer) ;
102104 }
103105
106+ getRgbHex ( src , srcOffset ) {
107+ this . #convertPixel( src , srcOffset , /* css */ true ) ;
108+ return QCMS . _cssColor ;
109+ }
110+
104111 getRgbItem ( src , srcOffset , dest , destOffset ) {
105- QCMS . _destBuffer = dest . subarray ( destOffset , destOffset + 3 ) ;
106- this . #convertPixel( src , srcOffset ) ;
112+ QCMS . _destBuffer = dest ;
113+ QCMS . _destOffset = destOffset ;
114+ QCMS . _destLength = 3 ;
115+ this . #convertPixel( src , srcOffset , /* css */ false ) ;
107116 QCMS . _destBuffer = null ;
108117 }
109118
@@ -116,10 +125,9 @@ class IccColorSpace extends ColorSpace {
116125 }
117126 }
118127 QCMS . _mustAddAlpha = alpha01 && dest . buffer === src . buffer ;
119- QCMS . _destBuffer = dest . subarray (
120- destOffset ,
121- destOffset + count * ( 3 + alpha01 )
122- ) ;
128+ QCMS . _destBuffer = dest ;
129+ QCMS . _destOffset = destOffset ;
130+ QCMS . _destLength = count * ( 3 + alpha01 ) ;
123131 qcms_convert_array ( this . #transformer, src ) ;
124132 QCMS . _mustAddAlpha = false ;
125133 QCMS . _destBuffer = null ;
@@ -143,10 +151,12 @@ class IccColorSpace extends ColorSpace {
143151 if ( this . #useWasm) {
144152 if ( this . #wasmUrl) {
145153 try {
146- this . _module = QCMS . _module = initSync ( {
154+ this . _module = initSync ( {
147155 module : fetchSync ( `${ this . #wasmUrl} qcms_bg.wasm` ) ,
148156 } ) ;
149157 isUsable = ! ! this . _module ;
158+ QCMS . _memory = this . _module . memory ;
159+ QCMS . _makeHexColor = Util . makeHexColor ;
150160 } catch ( e ) {
151161 warn ( `ICCBased color space: "${ e } ".` ) ;
152162 }
0 commit comments