From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/106337 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: mf Newsgroups: gmane.comp.tex.context Subject: metapost: remapping colors of an SVG picture Date: Tue, 18 Feb 2020 12:18:16 +0100 Message-ID: <851949ba-cc76-e672-56d6-0a19c4085f22@fastwebnet.it> Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------A74D66667F8037972AFBAE2D" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="127228"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 To: ntg-context@ntg.nl Original-X-From: ntg-context-bounces@ntg.nl Tue Feb 18 12:18:55 2020 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1j40tz-000WzH-42 for gctc-ntg-context-518@m.gmane-mx.org; Tue, 18 Feb 2020 12:18:55 +0100 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 217D2181E84; Tue, 18 Feb 2020 12:18:32 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MnMmzOApkeEX; Tue, 18 Feb 2020 12:18:26 +0100 (CET) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id BB90F181C0E; Tue, 18 Feb 2020 12:18:26 +0100 (CET) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id C0742181BFD for ; Tue, 18 Feb 2020 12:18:25 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8e8B8fffSMFo for ; Tue, 18 Feb 2020 12:18:21 +0100 (CET) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=85.18.95.110; helo=mr014msr.fastwebnet.it; envelope-from=massifr@fastwebnet.it; receiver= Original-Received: from mr014msr.fastwebnet.it (mr014msr.fastwebnet.it [85.18.95.110]) by zapf.ntg.nl (Postfix) with ESMTP id 13BAB18412A for ; Tue, 18 Feb 2020 12:18:20 +0100 (CET) X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgedugedrjeekgddviecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhtefuvfghgfeupdcuqfgfvfenuceurghilhhouhhtmecufedttdenucenucfjughrpefvhffukffffgggtgesmhdtreertdefleenucfhrhhomhepmhhfuceomhgrshhsihhfrhesfhgrshhtfigvsghnvghtrdhitheqnecukfhppeekjedrvdejrddutdejrddvfeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehhvghloheplgduledvrdduieekrddurdehvdgnpdhinhgvthepkeejrddvjedruddtjedrvdefgedpmhgrihhlfhhrohhmpeeomhgrshhsihhfrhesfhgrshhtfigvsghnvghtrdhithequceuqfffjgepkeeukffvoffkoffgpdhrtghpthhtohepoehnthhgqdgtohhnthgvgihtsehnthhgrdhnlheq X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean Original-Received: from [192.168.1.52] (87.27.107.234) by mr014msr.fastwebnet.it (5.8.208) (authenticated as massifr@fastwebnet.it) id 5E31953D0185558A for ntg-context@ntg.nl; Tue, 18 Feb 2020 12:18:20 +0100 Content-Language: en-US X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:106337 Archived-At: This is a multi-part message in MIME format. --------------A74D66667F8037972AFBAE2D Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit Hello list, I tried this: \starttext \startMPcode picture p ; p := lmt_svg [ filename = "sample.svg" ] ; draw p ; color black_rgb ; black_rgb := ( 0, 0, 0 ) ; color red_rgb ; red_rgb := ( 1, 0, 0 ) ; remapcolor( black_rgb, red_rgb ) ; recolor p ; draw p shifted ( bbwidth(p) + 5mm, 0) ; \stopMPcode \stoptext but recolor gives an error: metapost log > >> picture metapost log > ! Wrong picture color model: redpart of grey object. metapost log > _f_:=(redpart(EXPR0), metapost log > greenpart(EXPR0),bluepart(EXPR0));if.bou... metapost log > metapost log > repathed->...fi;fi;else:addto._p_.also.i;fi;endfor metapost log > ;setbounds._p_.to._b_;_p_.... metapost log > metapost log > ; metapost log > <*> ...apcolor( black_rgb, red_rgb ) ; recolor p ; metapost log > draw grayed p shifted ( b... metapost log > My goal is to remap colors of an SVG image, like this: \starttext \startMPcode picture p ; p := lmt_svg [ filename = "sample.svg" ] ; draw p ; color black_rgb ; black_rgb := ( 0, 0, 0 ) ; cmykcolor black_cmyk ; black_cmyk := ( 0, 0, 0, 1 ) ; remapcolor( black_rgb, black_cmyk ) ; recolor p ; draw p shifted ( bbwidth(p) + 5mm, 0) ; \stopMPcode \stoptext It relates to a recent thread in the mailing list about color management. It's an attempt to use inkscape-made SVG graphics inside a CMYK workflow, without using color management. Naturally it would work under some constraints, but there's a lot of graphics you can do with Inkscape that falls inside these: - the number of colors in the input SVG should be limited, so that every color gets converted - no embedded bitmaps, only vector graphics - perhaps some other constraints on gradients, transparency, etc. A good alternative would be a remapper based on a custom lua function like this: function rgb2cmyk( r, g, b ) ... return c, m, y, k end Massi --------------A74D66667F8037972AFBAE2D Content-Type: image/svg+xml; name="sample.svg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sample.svg" PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+ CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8p IC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEu MS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHht bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIK ICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0 dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3Nv ZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlu a3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgog ICB3aWR0aD0iMjEwbW0iCiAgIGhlaWdodD0iMjk3bW0iCiAgIHZpZXdCb3g9IjAgMCAyMTAg Mjk3IgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc4IgogICBpbmtzY2FwZTp2ZXJzaW9u PSIwLjkyLjQgKDVkYTY4OWMzMTMsIDIwMTktMDEtMTQpIgogICBzb2RpcG9kaTpkb2NuYW1l PSJzYW1wbGUuc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzMiIgLz4KICA8c29kaXBvZGk6 bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAg IGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBp bmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIi CiAgICAgaW5rc2NhcGU6em9vbT0iMS45Nzk4OTkiCiAgICAgaW5rc2NhcGU6Y3g9IjI2Mi4z MTk1MyIKICAgICBpbmtzY2FwZTpjeT0iODEzLjg4NDY0IgogICAgIGlua3NjYXBlOmRvY3Vt ZW50LXVuaXRzPSJtbSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAg ICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIK ICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI5NzEiCiAgICAgaW5rc2NhcGU6d2luZG93 LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjMxIgogICAgIGlua3NjYXBlOndpbmRv dy1tYXhpbWl6ZWQ9IjEiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAg ICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAg ICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0 eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5 cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3Jr PgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJl bD0iTGl2ZWxsbyAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9 ImxheWVyMSI+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmYwMDtzdHJva2U6 IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMnB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7 c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICBkPSJNIDEw OC4xMDExOSw2NC4xNjY2NjcgMTY0LjA0MTY2LDQ1LjI2Nzg1NiAxNDEuMzYzMDksODIuMzA5 NTIyIDg5Ljk1ODMzMiw2NC45MjI2MTkgYyAwLDAgLTMwLjk5NDA0OCwtMTIuODUxMTkxIC0y OC43MjYxOSwtMS41MTE5MDYgMi4yNjc4NTcsMTEuMzM5Mjg3IDE3LjM4NjkwNSw0Ny42MjQ5 OTcgMjEuMTY2NjY2LDQ2Ljg2OTA0NyAzLjc3OTc2MywtMC43NTU5NSA2LjgwMzU3MywtNTku NzIwMjM4IDYuODAzNTczLC01OS43MjAyMzggTCAxMTcuMTcyNjIsMjAuMzIxNDI4IDEwOC4x MDExOSw2MS44OTg4MSBaIgogICAgICAgaWQ9InBhdGg4MTUiCiAgICAgICBpbmtzY2FwZTpj b25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPHRleHQKICAgICAgIHhtbDpzcGFjZT0i cHJlc2VydmUiCiAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50 Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LXNp emU6MTAuNTgzMzMzMDJweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OkZyZWVTYW5z Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246RnJlZVNhbnM7bGV0dGVyLXNwYWNpbmc6 MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9r ZTpub25lO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIgogICAgICAgeD0iOTMuMjc3MDY5Igog ICAgICAgeT0iOTIuNjcyNDQiCiAgICAgICBpZD0idGV4dDgxOSI+PHRzcGFuCiAgICAgICAg IHNvZGlwb2RpOnJvbGU9ImxpbmUiCiAgICAgICAgIGlkPSJ0c3BhbjgxNyIKICAgICAgICAg eD0iOTMuMjc3MDY5IgogICAgICAgICB5PSI5Mi42NzI0NCIKICAgICAgICAgc3R5bGU9ImZv bnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFs O2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6RnJlZVNhbnM7LWlua3NjYXBlLWZv bnQtc3BlY2lmaWNhdGlvbjpGcmVlU2FucztzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiI+dG8g YmUgcmVjb2xvcmVkPC90c3Bhbj48L3RleHQ+CiAgPC9nPgo8L3N2Zz4K --------------A74D66667F8037972AFBAE2D Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3dy5udGcubmwvbWFpbG1hbi9s aXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93d3cucHJhZ21hLWFkZS5ubCAv IGh0dHA6Ly9jb250ZXh0LmFhbmhldC5uZXQKYXJjaGl2ZSAgOiBodHRwczovL2JpdGJ1Y2tldC5v cmcvcGhnL2NvbnRleHQtbWlycm9yL2NvbW1pdHMvCndpa2kgICAgIDogaHR0cDovL2NvbnRleHRn YXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCg== --------------A74D66667F8037972AFBAE2D--