[PATCH] Implement CGColorSpaceRef support for cairo quartz image

Fred Bca <[email protected]> Mon, 26 Aug 2019 14:54:35 +0200
Newsgroups gmane.comp.lib.cairo
Message-ID <CAKTSDKb334M5bRoe02YmFcWQLrDMD34Vwo0ciuVrgHG0gUziOA@mail.gmail.com>
SGksCgpvbiByZWNlbnQgdmVyc2lvbnMgb2YgTWFjIE9TLCBDb3JlIEdyYXBoaWNzIHBlcmZvcm1z
IGNvbG9yIHNwYWNlCmNvbnZlcnNpb25zIHdoZW4gdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGFyZSB1
c2luZyBkaWZmZXJlbnQgY29sb3IKc3BhY2VzICh3aGljaCB0eXBpY2FsbHkgaGFwcGVucyB3aGVu
IGRyYXdpbmcgYW4gaW1hZ2UgbG9hZGVkIGZyb20gZmlsZQpvbiBzY3JlZW4pLiBUaGUgcGVyZm9y
bWFuY2UgaGl0IGlzIG5vdCBuZWdsaWdpYmxlIChhcm91bmQgMjAlKS4KCkhlcmUgaXMgYSBwYXRj
aCBwcm9wb3NhbCB0byBsZXQgeW91IHNwZWNpZnkgYW4gb3B0aW9uYWwgY29sb3Igc3BhY2UKd2hl
biBjcmVhdGluZyBhIHF1YXJ0eiBpbWFnZSBzdXJmYWNlIChpbnN0ZWFkIG9mIHVzaW5nIHRoZSBk
ZWZhdWx0IFJHQgpjb2xvciBzcGFjZSkuIEl0IGNoYW5nZXMgdGhlIEFQSSwgYnV0IGl0IGNvdWxk
IGFsc28gYmUgaW1wbGVtZW50ZWQgYXMKYSBzZXBhcmF0ZSBmdW5jdGlvbiBpZiBwcmVmZXJyZWQu
IFRoZSBwYXRjaCBhbHNvIGVuc3VyZXMgdGhhdCB0aGUKYXBwcm9wcmlhdGUgY29sb3Igc3BhY2Ug
aXMgdXNlZCB3aGVuIGNyZWF0aW5nIGEgc2ltaWxhciBzdXJmYWNlLgoKV291bGQgeW91IHBsZWFz
ZSBjb25zaWRlciBpbmNvcnBvcmF0aW5nIHRoaXMgY2hhbmdlIHRvIGNhaXJvPwoKSW5kZXg6IGNh
aXJvLXF1YXJ0ei1pbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNhaXJvLXF1YXJ0ei1pbWFnZS5oIChj
YWlybyAxNC4xMikKKysrIGNhaXJvLXF1YXJ0ei1pbWFnZS5oIChmaXgpCkBAIC00NSw3ICs0NSw3
IEBACiBDQUlST19CRUdJTl9ERUNMUwoKIGNhaXJvX3B1YmxpYyBjYWlyb19zdXJmYWNlX3QgKgot
Y2Fpcm9fcXVhcnR6X2ltYWdlX3N1cmZhY2VfY3JlYXRlIChjYWlyb19zdXJmYWNlX3QgKmltYWdl
X3N1cmZhY2UpOworY2Fpcm9fcXVhcnR6X2ltYWdlX3N1cmZhY2VfY3JlYXRlIChjYWlyb19zdXJm
YWNlX3QKKmltYWdlX3N1cmZhY2UsQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpOwoKIGNhaXJv
X3B1YmxpYyBjYWlyb19zdXJmYWNlX3QgKgogY2Fpcm9fcXVhcnR6X2ltYWdlX3N1cmZhY2VfZ2V0
X2ltYWdlIChjYWlyb19zdXJmYWNlX3QgKnN1cmZhY2UpOwpJbmRleDogY2Fpcm8tcXVhcnR6LWlt
YWdlLXN1cmZhY2UuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjYWlyby1xdWFydHotaW1hZ2Utc3VyZmFjZS5j
IChjYWlybyAxNC4xMikKKysrIGNhaXJvLXF1YXJ0ei1pbWFnZS1zdXJmYWNlLmMgKGZpeCkKQEAg
LTU2LDYgKzU2LDE1IEBACiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95IChzdXJmYWNlKTsKIH0K
CitzdGF0aWMgQ0dDb2xvclNwYWNlUmVmCl9jYWlyb19xdWFydHpfaW1hZ2Vfc3VyZmFjZV9nZXRf
Y29sb3Jfc3BhY2Uodm9pZCAqYXN1cmZhY2UpCit7CisgICAgY2Fpcm9fcXVhcnR6X2ltYWdlX3N1
cmZhY2VfdCAqc3VyZmFjZSA9CihjYWlyb19xdWFydHpfaW1hZ2Vfc3VyZmFjZV90ICopIGFzdXJm
YWNlOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlPU5VTEw7CisgICAgaWYoc3VyZmFj
ZS0+aW1hZ2UhPU5VTEwpCisgICAgICAgIGNvbG9yU3BhY2U9Q0dJbWFnZUdldENvbG9yU3BhY2Uo
c3VyZmFjZS0+aW1hZ2UpOworICAgIHJldHVybiBjb2xvclNwYWNlOworfQorCiBzdGF0aWMgY2Fp
cm9fc3VyZmFjZV90ICoKIF9jYWlyb19xdWFydHpfaW1hZ2Vfc3VyZmFjZV9jcmVhdGVfc2ltaWxh
ciAodm9pZCAqYXN1cmZhY2UsCiAgICAgIGNhaXJvX2NvbnRlbnRfdCBjb250ZW50LApAQCAtNjQs
NyArNzMsNyBAQAogewogICAgIGNhaXJvX3N1cmZhY2VfdCAqaXN1cmYgPQogIF9jYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZV93aXRoX2NvbnRlbnQgKGNvbnRlbnQsIHdpZHRoLCBoZWlnaHQpOwot
ICAgIGNhaXJvX3N1cmZhY2VfdCAqcmVzdWx0ID0gY2Fpcm9fcXVhcnR6X2ltYWdlX3N1cmZhY2Vf
Y3JlYXRlIChpc3VyZik7CisgICAgY2Fpcm9fc3VyZmFjZV90ICpyZXN1bHQgPSBjYWlyb19xdWFy
dHpfaW1hZ2Vfc3VyZmFjZV9jcmVhdGUKKGlzdXJmLF9jYWlyb19xdWFydHpfaW1hZ2Vfc3VyZmFj
ZV9nZXRfY29sb3Jfc3BhY2UoYXN1cmZhY2UpKTsKICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kg
KGlzdXJmKTsKCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc3LDcgKzg2LDcgQEAKICAgIGludCBo
ZWlnaHQpCiB7CiAgICAgY2Fpcm9fc3VyZmFjZV90ICppc3VyZiA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfY3JlYXRlIChmb3JtYXQsCndpZHRoLCBoZWlnaHQpOwotICAgIGNhaXJvX3N1cmZhY2VfdCAq
cmVzdWx0ID0gY2Fpcm9fcXVhcnR6X2ltYWdlX3N1cmZhY2VfY3JlYXRlIChpc3VyZik7CisgICAg
Y2Fpcm9fc3VyZmFjZV90ICpyZXN1bHQgPSBjYWlyb19xdWFydHpfaW1hZ2Vfc3VyZmFjZV9jcmVh
dGUKKGlzdXJmLF9jYWlyb19xdWFydHpfaW1hZ2Vfc3VyZmFjZV9nZXRfY29sb3Jfc3BhY2UoYXN1
cmZhY2UpKTsKICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kgKGlzdXJmKTsKCiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTE0NywxMCArMTU2LDEzIEBACiAgICAgY2Fpcm9fcXVhcnR6X2ltYWdlX3N1
cmZhY2VfdCAqc3VyZmFjZSA9CihjYWlyb19xdWFydHpfaW1hZ2Vfc3VyZmFjZV90ICopIGFzdXJm
YWNlOwogICAgIENHSW1hZ2VSZWYgb2xkSW1hZ2UgPSBzdXJmYWNlLT5pbWFnZTsKICAgICBDR0lt
YWdlUmVmIG5ld0ltYWdlID0gTlVMTDsKLQorICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
ID0gTlVMTDsKKwogICAgIGlmIChmbGFncykKICByZXR1cm4gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7
CgorICAgIGlmKG9sZEltYWdlKQorICAgICAgICBjb2xvclNwYWNlPUNHSW1hZ2VHZXRDb2xvclNw
YWNlKG9sZEltYWdlKTsKICAgICAvKiBYWFggb25seSBmbHVzaCBpZiB0aGUgaW1hZ2UgaGFzIGJl
ZW4gbW9kaWZpZWQuICovCgogICAgIC8qIFRvIGJlIHJlbGVhc2VkIGJ5IHRoZSBSZWxlYXNlQ2Fs
bGJhY2sgKi8KQEAgLTE2Miw3ICsxNzQsNyBAQAogIHN1cmZhY2UtPmltYWdlU3VyZmFjZS0+c3Ry
aWRlLAogIHN1cmZhY2UtPmltYWdlU3VyZmFjZS0+ZGF0YSwKICBUUlVFLAotIE5VTEwsCisgY29s
b3JTcGFjZSwKICBEYXRhUHJvdmlkZXJSZWxlYXNlQ2FsbGJhY2ssCiAgc3VyZmFjZS0+aW1hZ2VT
dXJmYWNlKTsKCkBAIC0yODYsNiArMjk4LDcgQEAKIC8qKgogICogY2Fpcm9fcXVhcnR6X2ltYWdl
X3N1cmZhY2VfY3JlYXRlOgogICogQGltYWdlX3N1cmZhY2U6IGEgY2Fpcm8gaW1hZ2Ugc3VyZmFj
ZSB0byB3cmFwIHdpdGggYSBxdWFydHogaW1hZ2Ugc3VyZmFjZQorICogQGNvbG9yU3BhY2U6IGFu
IG9wdGlvbmFsIENHQ29sb3JTcGFjZVJlZiB0byBkZWZpbmUgdGhlIGNvbG9yIHNwYWNlCnVzZWQg
YnkgdGhlIENHSW1hZ2VSZWYKICAqCiAgKiBDcmVhdGVzIGEgUXVhcnR6IHN1cmZhY2UgYmFja2Vk
IGJ5IGEgQ0dJbWFnZVJlZiB0aGF0IHJlZmVyZW5jZXMgdGhlCiAgKiBnaXZlbiBpbWFnZSBzdXJm
YWNlLiBUaGUgcmVzdWx0aW5nIHN1cmZhY2UgY2FuIGJlIHJlbmRlcmVkIHF1aWNrbHkKQEAgLTI5
OSw3ICszMTIsNyBAQAogICogU2luY2U6IDEuNgogICoqLwogY2Fpcm9fc3VyZmFjZV90ICoKLWNh
aXJvX3F1YXJ0el9pbWFnZV9zdXJmYWNlX2NyZWF0ZSAoY2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNl
KQorY2Fpcm9fcXVhcnR6X2ltYWdlX3N1cmZhY2VfY3JlYXRlIChjYWlyb19zdXJmYWNlX3QKKnN1
cmZhY2UsQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCiB7CiAgICAgY2Fpcm9fcXVhcnR6X2lt
YWdlX3N1cmZhY2VfdCAqcWlzdXJmOwoKQEAgLTM0OSw3ICszNjIsNyBAQAogICAgICAgIHN0cmlk
ZSwKICAgICAgICBkYXRhLAogICAgICAgIFRSVUUsCi0gICAgICAgTlVMTCwKKyAgICAgICBjb2xv
clNwYWNlLAogICAgICAgIERhdGFQcm92aWRlclJlbGVhc2VDYWxsYmFjaywKICAgICAgICBpbWFn
ZV9zdXJmYWNlKTsKLS0gCmNhaXJvIG1haWxpbmcgbGlzdApjYWlyb0BjYWlyb2dyYXBoaWNzLm9y
ZwpodHRwczovL2xpc3RzLmNhaXJvZ3JhcGhpY3Mub3JnL21haWxtYW4vbGlzdGluZm8vY2Fpcm8=