Cell[CellGroupData[{Cell[BoxData[ RowBox[{ "Manipulate", "[", " ", " ", RowBox[{ RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"prevs", "=!=", "s"}], ",", RowBox[{ RowBox[{"g", "=", RowBox[{ RowBox[{"(", RowBox[{"s", "/.", "", "colorSpaces"}], ")"}], "[[", RowBox[{"-", "1"}], "]]"}]}], ";", RowBox[{"prevs", "=", "s"}]}]}], "]"}], ";", " ", RowBox[{"Framed", "[", RowBox[{ RowBox[{"Show", "[", " ", RowBox[{ RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"ep", "=", RowBox[{"GraphicsGroup", "[", RowBox[{"Join", "[", " ", RowBox[{ RowBox[{"If", "[", RowBox[{"wlt", ",", RowBox[{"epWavelengthTicks", "[", "y", "]"}], ",", RowBox[{"{", "}"}]}], "]"}], ",", " ", RowBox[{"If", "[", RowBox[{"m", ",", RowBox[{"epMeshes", "[", "]"}], ",", RowBox[{"{", "}"}]}], "]"}], ",", " ", RowBox[{"If", "[", RowBox[{"wp", ",", RowBox[{"epWhitePoint", "[", "s", "]"}], ",", RowBox[{"{", "}"}]}], "]"}], ",", " ", RowBox[{"If", "[", RowBox[{"pr", ",", RowBox[{"epPrimaries", "[", "s", "]"}], ",", RowBox[{"{", "}"}]}], "]"}]}], "]"}], "]"}]}], "}"}], ",", " ", RowBox[{"Switch", "[", RowBox[{"ptype", ",", " ", "1", ",", RowBox[{"displayColorGamut", "[", RowBox[{"s", ",", "g", ",", RowBox[{"Epilog", "->", "ep"}]}], "]"}], ",", " ", "2", ",", RowBox[{"displayColorGamutRaster", "[", RowBox[{"s", ",", "g", ",", RowBox[{"Epilog", "->", "ep"}]}], "]"}], ",", " ", "3", ",", RowBox[{"Graphics", "[", RowBox[{ RowBox[{"{", "}"}], ",", RowBox[{"Epilog", "->", "ep"}]}], "]"}]}], "]"}]}], " ", "]"}], ",", " ", RowBox[{"displayGamutMask", "[", RowBox[{"y", ",", "Black"}], "]"}], ",", " ", RowBox[{"displaySystemGamutMask", "[", RowBox[{"s", ",", RowBox[{"Directive", "[", RowBox[{"Black", ",", RowBox[{"Opacity", "[", "sgop", "]"}]}], "]"}]}], "]"}], ",", " ", RowBox[{"displayGamutBoundary", "[", RowBox[{"y", ",", RowBox[{"Directive", "[", RowBox[{"White", ",", RowBox[{"Opacity", "[", ".7", "]"}]}], "]"}]}], "]"}], ",", " ", RowBox[{"displaySystemGamutBoundary", "[", RowBox[{"s", ",", RowBox[{"Directive", "[", RowBox[{"White", ",", RowBox[{"Opacity", "[", RowBox[{"Min", "[", RowBox[{"sgop", ",", ".7"}], "]"}], "]"}]}], "]"}]}], "]"}], ",", " ", RowBox[{"displayInfo", "[", "s", "]"}], ",", " ", RowBox[{"Frame", "->", "True"}], ",", RowBox[{"FrameStyle", "->", RowBox[{"GrayLevel", "[", ".6", "]"}]}], ",", RowBox[{"FrameLabel", "->", RowBox[{"{", RowBox[{"\"\\"", ",", "\"\\""}], "}"}]}], ",", RowBox[{"FrameTicks", "->", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"Automatic", ",", "None"}], "}"}], ",", RowBox[{"{", RowBox[{"Automatic", ",", "None"}], "}"}]}], "}"}]}], ",", RowBox[{"PlotRange", "->", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", ".8"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", ".9"}], "}"}]}], "}"}]}], ",", RowBox[{"PlotRangePadding", "->", RowBox[{"Scaled", "[", ".02", "]"}]}], ",", RowBox[{"ImageSize", "->", "350"}]}], "]"}], ",", " ", RowBox[{"Background", "->", "Black"}], ",", RowBox[{"FrameMargins", "->", "10"}]}], "]"}]}], ",", " ", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ "s", ",", "\"\\"", ",", "\"\\""}], "}"}], ",", RowBox[{"Dynamic", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"#", "->", RowBox[{"First", "[", RowBox[{"#", "/.", "colorSpaces"}], "]"}]}], "&"}], "/@", RowBox[{"colorSpaces", "[[", RowBox[{"All", ",", "1"}], "]]"}]}], ",", RowBox[{"SynchronousUpdating", "->", "False"}]}], "]"}], ",", RowBox[{"ControlType", "->", "PopupMenu"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"y", ",", "\"\<1931\>\"", ",", RowBox[{"Column", "[", RowBox[{ RowBox[{"{", RowBox[{ "\"\\"", ",", "\"\\""}], "}"}], ",", RowBox[{"Alignment", "->", "Right"}], ",", RowBox[{"Spacings", "->", ".1"}]}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{ "\"\<1931\>\"", "->", "\"\< 1931 2Degree \>\""}], ",", RowBox[{ "\"\<1964\>\"", "->", "\"\< 1964 10Degree \>\""}]}], "}"}]}], "}"}], ",", " ", RowBox[{"Item", "[", RowBox[{"Style", "[", RowBox[{ RowBox[{"Column", "[", RowBox[{"{", RowBox[{"\"\<\>\"", ",", "\"\\""}], "}"}], "]"}], ",", "Bold"}], "]"}], "]"}], ",", " ", "Delimiter", ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"wlt", ",", "True", ",", "\"\\""}], "}"}], ",", RowBox[{"{", RowBox[{"True", ",", "False"}], "}"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"m", ",", "False", ",", "\"\\""}], "}"}], ",", RowBox[{"{", RowBox[{"True", ",", "False"}], "}"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"pr", ",", "False", ",", "\"\\""}], "}"}], ",", RowBox[{"{", RowBox[{"True", ",", "False"}], "}"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"wp", ",", "False", ",", "\"\\""}], "}"}], ",", RowBox[{"{", RowBox[{"True", ",", "False"}], "}"}]}], "}"}], ",", " ", "Delimiter", ",", " ", RowBox[{"Item", "[", RowBox[{"Style", "[", RowBox[{ RowBox[{"Column", "[", RowBox[{"{", RowBox[{"\"\<\>\"", ",", "\"\\""}], "}"}], "]"}], ",", "Bold"}], "]"}], "]"}], ",", " ", RowBox[{"Item", "[", " ", RowBox[{"Column", "[", RowBox[{"{", " ", RowBox[{ RowBox[{"Dynamic", "@", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"gg", "=", RowBox[{"g", "/.", RowBox[{"\"\\"", "->", "2.2"}]}]}], "}"}], ",", " ", RowBox[{"Plot", "[", RowBox[{ RowBox[{"{", RowBox[{"x", ",", RowBox[{"x", "^", "gg"}]}], "}"}], ",", RowBox[{"{", RowBox[{"x", ",", "0", ",", "1"}], "}"}], ",", RowBox[{"ImageSize", "->", "75"}], ",", RowBox[{"PlotStyle", "->", RowBox[{"{", RowBox[{ RowBox[{"Dashing", "[", RowBox[{"{", RowBox[{"Tiny", ",", "Tiny"}], "}"}], "]"}], ",", RowBox[{"Dashing", "[", RowBox[{"{", "}"}], "]"}]}], "}"}]}], ",", RowBox[{"Axes", "->", "False"}], ",", RowBox[{"Frame", "->", "True"}], ",", RowBox[{"FrameTicks", "->", "None"}], ",", RowBox[{"LabelStyle", "->", "8"}], ",", RowBox[{"GridLines", "->", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{".25", ",", ".5", ",", ".75"}], "}"}], ",", RowBox[{"{", ".5", "}"}]}], "}"}]}], ",", RowBox[{"GridLinesStyle", "->", RowBox[{"Directive", "[", RowBox[{"Gray", ",", RowBox[{"Dashing", "[", RowBox[{"{", RowBox[{"0", ",", "Tiny"}], "}"}], "]"}]}], "]"}]}], ",", RowBox[{"FrameStyle", "->", "Gray"}], ",", RowBox[{"Background", "->", RowBox[{"GrayLevel", "[", ".95", "]"}]}], ",", RowBox[{"Epilog", "->", RowBox[{"Inset", "[", RowBox[{ RowBox[{"Style", "[", RowBox[{ RowBox[{"g", "/.", RowBox[{ "\"\\"", "->", "\"\<~ 2.2\>\""}]}], ",", "8", ",", "\"\\""}], "]"}], ",", RowBox[{"{", RowBox[{".5", ",", RowBox[{".5", "^", "gg"}]}], "}"}], ",", RowBox[{"Background", "->", RowBox[{"GrayLevel", "[", ".95", "]"}]}]}], "]"}]}]}], "]"}]}], "]"}]}], ",", " ", RowBox[{"Slider", "[", RowBox[{ RowBox[{"Dynamic", "[", "g", "]"}], ",", RowBox[{"{", RowBox[{".5", ",", "3.", ",", ".1"}], "}"}], ",", RowBox[{"ImageSize", "->", "75"}], ",", RowBox[{"Appearance", "->", "\"\\""}]}], "]"}]}], " ", "}"}], "]"}], " ", "]"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"sgop", ",", "0", ",", RowBox[{"Column", "[", RowBox[{ RowBox[{"{", RowBox[{"\"\\"", ",", "\"\\""}], "}"}], ",", RowBox[{"Alignment", "->", "Right"}]}], "]"}]}], "}"}], ",", "0", ",", "1"}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"ptype", ",", "1", ",", "\"\\""}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"1", "->", "\"\\""}], ",", RowBox[{"2", "->", "\"\\""}], ",", RowBox[{"3", "->", "\"\\""}]}], "}"}], ",", RowBox[{"ControlType", "->", "RadioButton"}]}], "}"}], ",", " ", RowBox[{"(*", " ", RowBox[{ "Dummy", " ", "controls", " ", "for", " ", "dynamic", " ", "variables"}], " ", "*)"}], " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"g", ",", "2.2"}], "}"}], ",", RowBox[{"ControlType", "->", "None"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"prevs", ",", "\"\<\>\""}], "}"}], ",", RowBox[{"ControlType", "->", "None"}]}], "}"}], ",", " ", RowBox[{"ControlPlacement", "->", RowBox[{"{", RowBox[{ "Top", ",", "Top", ",", "Left", ",", "Left", ",", "Left", ",", "Left", ",", "Left", ",", "Left", ",", "Left", ",", "Bottom", ",", "Bottom"}], "}"}]}], ",", " ", RowBox[{"AutorunSequencing", "->", RowBox[{"{", RowBox[{"2", ",", "7", ",", "8"}], "}"}]}], ",", " ", RowBox[{"SynchronousInitialization", "->", "False"}], ",", " ", RowBox[{"Initialization", ":>", RowBox[{"(", " ", RowBox[{"(*", " ", RowBox[{ RowBox[{"1931", " ", "2"}], "-", RowBox[{ "degree", " ", "CIE", " ", "Standard", " ", "Colormetric", " ", "Observer", " ", "Data"}]}], " ", "*)"}], "\n", RowBox[{ RowBox[{"CIE1931", " ", "=", " ", RowBox[{ "Uncompress", "[", "\"\<1:eJytmHlYzVkYx3MtMRjLIEaEsY00lrGLFxEiItM0RNYSjXRKtiyhQiF\ LGEuZ\\nkSWUZMmSJYSEKZVQkrQ3Ehpji3nf8+vc+3t+97l/hP\\\n \ tHz9NdPuecd/m+3/Nr\\nOdVlrMMYPT09tyr4Z6STm7uDvvw/J89Kenrs+\ tnT66qV2ADTK3+x3idueFwI\\nXgRsZ26zA/nDrgFb3CB86JNF7\\\n \ sA6dwj9LmFwIShAXgTqNGdvpeiqU4GZmBkW\\nZfX4HljTTo9aV/PyBlZ/\ 5aWbfw6Rg6R3tEA+BGrob1FYpZurDHSh8x8dGgdu\\nAaaKrlq/\\\n \ ASCIr1UfQWdw842GaYH8CBS7oct8k5bLBKgDsGXv+8y9s/ovYC9K\\\ nLX7z6SUHLYHuk84O1wIFEKjW5tAVY4avE6A+wPzKZvyXPeUYMNubX\\\n \ a8e+wlB\\nU7r+gtFxA1Z176Y+lSy1QIEEytxVb9/5mG3i22bARuBR6/WIxjMGf4/\ hkoOO\\nhN239xitBdpBICl++8W3rYHp228f2dD/JrDd\\\n \ tISBHIQLmJ4fqwUKJlD+LOPX\\n2x4dB0369o0a8N2UK6nAXhnddbHXl4OCbx/\ 6O8VGCxSiyVoMsA+hL+5aTp0L\\nrMQ7blzMwWxgvRwHO7m\\\n \ UxAJb7T0+KfopBrtdl+pHDMdrgUIJ5N5626eApfG4\\\ nmmnH5B25S4AdmjxubLs9JcDsWgx8Me0WgqQ4zgd2dMuM1dMmaoHCCfS3Q0re\\nLO\\\n\ O74tu+UP7Oa2C54W2yVwYhyHnBon0dzTyB2QQfxnBrgY4TaA9lploKlJ9x\\\ nIzBj30YP7vz3Flj//AdH3tkhqFXZ63mZu7zE8bVApwnEU2R\\\n \ xD9j46X0fj16H\\nddAVC9So9D2wfzqda1enZqxIlg+\ wSxPotFqg8wRK7fa815ChCOoqnQQYJnGz\\nr/cHYL9OOHbxn6Cr4mj+wIZdXNKsl6\\\n\ MW6DKBeK2uwqOlvV06K9p9L7DtxBmP\\noInp5pUX1EQQW7s++\ 6XRJmCByTVmtnLWAl0n0KraozEXycDeEWfzQWAvB1K4\\n8Wg8VtZXgG2ss\\\n \ 6jH4f546qyCwMharlqgWwQ6ZjV7x/xdmLXTzb2LxpwOR9Gh\\nyJx8B4zHbM5lYM/\ jrgwKcwrSCUokkNTZCcAoDIZFkcAMhll9aOz2BreGGa\\\n \ pr\\ni7WKGnAv9vcQYBmqGmuNtIN9j0AGUYl6Gao4YJG7nx+4NiIKWE3zNvNUO0qB\\\ nOem5eFWJvQiM19W2MGAerk1rZ5pogdIIZOhJnYT7z\\\n \ 6AQJ2HTV++385fgw1jZ\\nuRDy+MK30UKYTgGb0STL1iCqQAnKJFDU1GUP+\ i08jcmaQ0KAB6GYN65SCCzn\\nJXUt7lEfZdHqwyVgfw059aos\\\n \ OV8JyiFQkyo235pEhomNYPkNZW/rFEQ9BcbL\\\ ncCsqHPXemgg8fmgIKUOeElRIIKnq90D58EAZGsFj+0hk/QCwJ4tI/TGzW1uu\\nn+\ faNEc\\\n \ Jek4gCmz1puuBFUQdrZznj+mTCgJr/RAtUXe7SP9DHCcrO43c/02W\\\ nElSqST9qzcKCtqg2WJm7rraIYDMTgdVoGjTpx/jlwNpak1g/AZY+\\\n \ kxL5SAl6\\nSyBJ/aYB481fD5dtxVsLFSrDlVrDRbQxSt2ZD76laakpStBHAt1ZfTcjs+\ ZK\\nnEI8W5nAshs0i8sBbLGXEXRI7FWcJbjxfNQ\\\n \ sk4A9b7rcUYIqqxAkyeBuVEjS\\nLA9MlvmW19Xst2P51Hi7x/F4IbbxVjM/\ 57z3BcBmHi90O9nwihJUnUC8+rtF\\niF7LBWbJJe4EjqMYA4\\\n \ wOzgWjUmebJeFYWcN3L2972SdKCapNIHX5SnMRl6V4\\nONtgZfH5Znoe/\ cXGpTh9C4VmhStB9QkU50FzEOuQW4fAImCTRtzQ77dzH0rt\\nQ\\\n \ tuD3W+jjJxs+D6+OA7XIKEz7RiiBBkQSBo1t4A54HxIN38mk8rYj5GLX0bc\\\ ngPLGRhCvEMMdSpAhgbD2nxQEYtWeHV5LZexbDIyGmXccup\\\n \ HRfPrcRs17VnSp\\n9w+YNbiWfnKVZ4AS1JJAUkRxrlKBB016DsyaN4Kf2AhWZlVuWfKA/\ ZuW6uVm\\nvkoJakugLVw80oCl7p3b75tUBGFc+\\\n \ o5KxOHjMbp5o1mWSagefGbmChlYoAQZ\\nE0gSvUxh/\ VCGko1JduaL7k8R5ZMD5WbKRQnqrFIPyKeyHak7Yy6v+lRRkE9B\\n3U8KUHcC/elI\\\n\ y+FqnyhFVggKJw/U3AGFCYdR6/bYfb/xaGUBs9e/02TMwwlK\\nUB/\ N0TAjdW1JkYrF7J4iplg6MG4uLz3ReCgFCAj0ur3dhsv/YtUmDL5fU\\\n \ mqB\\ndbQpfhlO1InAfMjehGRgjLggZIrZb6UEDSbQlemUkmciRkWa/TMH/sLfW75a\\\ nb+3e+rFYw1IJGk4gdWgCKCFGuDW1hT/il4ZChify\\\n \ oeJv8EgYVgslaBSBWrdf\\\ n6n9mNmY9iaZh73zhAceiv2lMUcIY1ycv2TZNY1gVIGsCTSseP6h/PoK49TDN\\\ n1QSiPGqY9esjeq4ZOPmBTpA\\\n \ tgcLe2f0e+xFBH5MXYE9ma/ZfLv7ZInypYo0B\\nStBEAtn/GF/3+tkS0ZlZMsOd59/+\ We0LCOICteSextQrQFMJJE2YEplmS6Cf\\n0fnzrs\\\n \ sRR0vRXDMUIEcCSWa6WMQoXXYpkQw3gn761BJdZLJOkDOB6tI0/bVI\\nnP++\ DDTu6b6dV1tg+BNSbNBPJukEuRJI8neY9TYotGZ+ybL71nG\\\n \ qsNkIukec\\ndkmajxQgD541J97tUN4rCbKrJBn4ZgcQxHcWcVcnaLHmaFi+\ JtxpxctAJL2N\\nHiDoBwtKiW7QcgKd7Pnm8vRD6aKzrslAdM\\\n \ mrpUKFTdxo99HsXaJOkDeBOnIX\\\ nlipMUIwMhCnPSWiFoGJPujkmaj5SgNZy8ee3O9w2v/hMPycD8Tf6IqgEzWXP\\\ nNbpBGwhkOoo2Hi/uU\\\n \ idkIKkg88Rc0g3aQiDJhOGkldY/KgNRFtvbIWgYt2y6\\nQX8QaIUbuQ/\ 0wKuC6Hq4XwbCsk4ynoEgdKu4O92gIAJJV7BToDGTahCvUGcE\\n\\\n \ lZaRMugG7SWQ9EwgAjTXbU366d7E8oQH1Q06SCBHbusPCOu4UQaaztsHQb2H\\\ nkGXWDQojEH9sch9P5M6d2moZiLjPPBEkDVHdoEgCqa9Qa\\\n \ g+rBvUmL7ccQRus\\n6QqdoBMURSDpnhIgG/lqUBlZWK884R10g6IJJP3eV+\ xorgz0OLPm5tAVCBrE\\nr8m6QTG8jrKubz+3dbnImuPngK6p\\\n \ 1A9Z5stGfsVB8QRSn0i609p+DihBsyNH\\n2VysOChFpb5mTRYj3/xzQA9V8qd+Yop+\ BuixZkdWskdjFQdla3ZkLhtnFQcV\\naHY04ItAxSr\\\n \ 1xe9n2VysOOgVgdQb+QLQm68FKtOA5L+vOEhV+SuB9L8WqFZl\\n+c8qAvofqvNWVA==\>\ \"", "]"}]}], ";", "\n", RowBox[{"(*", " ", RowBox[{ RowBox[{"1964", " ", "10"}], "-", RowBox[{ "degree", " ", "CIE", " ", "Standard", " ", "Colormetric", " ", "Observer", " ", "Data"}]}], " ", "*)"}], "\n", RowBox[{"CIE1964", " ", "=", " ", RowBox[{ "Uncompress", "[", "\"\<1:eJydmHlczdkbx2+3RqgsWbIO+\ dlGdolflmMbZGzJmAYNsmaMOJJ9F8ZWyE6y\\na2hRCGUpk1BIUilRqXsrWgnJ8nue8+\ 3czut7fX/zek\\\n \ 1/eF0v7rtznvN5Ps/n\\nHEtn1zEz7FUq1QIj+\ GO4ywK3Gcbi31yWG6hUtMPAJq8ybdoRqqr4odFXL2+r\\nUjSY0PdZU44mWkcTev7Ga5/\ e7\\\n \ b0JjWoeRGftyCUy0BoD8WsSsRGh6Ydqn7wW\\\ nMZPQxHGvO4W1AZDVxvpPH7zfRWhtm97XxuzRA21A0JSuP3du5zeVVHzoRmjj\\\ nTmktq6zx\\\n \ IPS4Qfh35nUBlDPb6t3eNAD1O/Hieo1DeqAtCNoZs2rojRUr+IqG\\nAXHsmDa+f/\ oSOjk7rkVq2W1CU8tWzg53AxCsy+HlST2QF4K+rz97x\\\n \ Jvt8J8+\\n+RXHj3CeTCh+p4HRJULX+9z/6+ETAJnDVi1aw/+\ xOdv3lwnn9UC7EVT8dtiv\\nG3qeIrTXi1Hb9s6lhLZ2+O74Ttu7hO71qrnU\\\n \ 5iyAho7+1GBB0k5CHf974Y77\\ndT3QAQR5+\ X7oogm4SGinuViTtYQ6fRn4Mf9VMqG12PcAtKrcdt6DTQBqHu86\\\ nyfiBHugI29rpnKEdv0Y\\\n \ Q2tBoXI0OwdsIfTZL5brGKJvQhzOeaGdbAejiqSXR\\\ nP9gCyIIVSQ90AkFQDgDcIxQKHJSRu5vQZh6v7C9/X0hoKW46MYrQD5HT/po8\\ndi\\\n\ fXgR7ID0F+deIGJRfFERBa/nLS3YdQxvF4SyoONEoo9ptmuLc8OSgAQc8G\\\ nGy42aZlA6O1nF9cvjztO6AB27B/40gA0yMW1yOMuKJuV0Vw\\\n \ PFIKg2c/nb96e\\nlUhonSm3HltN9wNBBR8uPH37E6HWxy70+\ BD5N6HVk47P61N9L6Fh2AX19UCX\\nEeTvgiQ4o6VYz5hAQveH7YFz/wpV61\\\n \ L1XJPxAJoHR9XQ/oAi6BqCmMRuAMjg\\\ nubra5mYhhA6hZTVze6j60TLQRausW4RCyWCTUL6tw/KMrGvrgSIRZNKy7cqt\\\ nV5IIvfTmc8LiX\\\n \ BB0tTLfmSF5sCJ2RA4AirRAkR4jNNPRIvSRSg8UjaCIe0d/\\\ nvPTmCaHhuCGbMEJXNu05c5DLF0InDOib8/RcJKHQQw5uLU8TOkbSiBwUi6\\\n \ AE\\nq+kNMx0fE2o2/9yW1Fk3CQ0y1G5tm19OaE0TVCJodQgebNsAQqv2OfjzkbN6\\\ noEcImrN46cn2A0FHUvfCRqAb4p+nw/F/ZD0P6EY3J\\\n \ zTvXwzlwxV+nKgHSkQQ\\nVuj3atCiN2oc6nbsArjPhvGPw1/\ WLeWCvEbomt0Dt8zRwq6f79roMf5xjhyU\\niqBstNNC+LVHsXlbxULT/hH1\\\n \ JXhZEaFMD6suExroPX3TVCfQAW7MP1krB6Uj\\\ n6CFa1cELYBpfvVaW28IeO4e1gerk8MMKBolaNns7Z9x9OBB0qnEaOSgbQWjL\\\ nNU1OErr\\\n \ L1mDEejOoevOpBeMH9M0UDutd24mekaXQRsyXzLPkoDwErc2M3gdS\\\ nJjQNWy0EdPAsac2Cwd4p3LzBD/LNrnfe3+4ZoTvQ6fpmyEGFCNrk\\\n \ gbV1A/c7\\n0/1+\ r5FPCd2XxkpK6JHe7RMOaFbwSQVrrDEKy5UqB71FUJRnl0UdLF35GaVx\\\ n04khFZPKHcyTrQysLtR51dM+SxLkoDIExau\\\n \ wxzwJZU5tkEFoT+ZjcEaLWJH3\\nwKSsMmnf8HpQ/q+Wn98tTI+\ Vg74gqBv7ARua7D4KNPmS0CW5raHtwwktgalS\\nyxGMJW93sOn8c7mEot\\\n \ LAWeQgQzWAkqwLe/44JJjLF9YvnSOMg1uleFrw4fqR\\\ nRrC7PEKHmaph41fkoKoIYkPY8jrfUQ4fsGBMtVmRdN2Xy2dnkBxkhiDpt8Go\\nm\\\n \ Ip1dMzjpgOTzvsd1gas9hIK41cA2ac0Xj6l60k5yBxB5utugpE8IPTv8x3B\\\ nkl9Di4MtTut1BBzaenVov7UwYHDwb/SAxdZCGf1yUA6yQN\\\n \ A0J7R/UA0OsyjP\\nfBALqq8B6FDbFGfeQ0JjC+7eGuCvJXR4jz/\ 7T872koOaICgW1dMUrNaZDdYC\\nQjUEM8dWQrsgL+ERnwIasGNoolGB6\\\n \ +UgSwTVyg0NNNSC/O91xc3BXHSf39gs\\nvcNqsAE2qqDF+\ i5B2cOBXrXDY3OXg1ojqCuTXTqUFvsivJDHknl8UsOkCmyV\\ntc7nfhYv/3Q5\\\n \ yApBaLQWoaBDWAUEikKeJsZArDHD1oJdF0+Ndfrpzkuii3cy\\nUGcEjXVrCU6k4bO/\ UAiT0qmBDdzNxrJlVv6TDNSdKdu8pP/DGaARz6wSm\\\n \ Owi\\nyGRwq4XqA1C+8olomhmKIFsEBSRPgiZ7zW2oQADVYMP7Oe++dEUQQZBqBxjs\\\ nPPi+6S6/tfZ2+QLo3tiIMydGwvf/GLci4JLzC0XQ\\\n \ IARJR1PE09grAYSdYtMb\\ndsQy7cY0RZAdgposx1xcTGjIspKg0b/\ nCaDDmLctMnniSVUEjUSQpPpiblo5\\nAihjad2AIRkA6sNyTYoiyIE\\\n \ 1LUtjJXyKaAXQaZYcQT4hpjjOkxVBjgjag0O0\\\ nHFbU2Oe3H2JqZQsgqVdA0PWaopKSFEFOCJKMuZh79ksBJE1KAEkxNVER5Iyg\\\ nIJZCi7\\\n \ hFCGKhlwPRGWGNUhZ/ogiaiaDdCdVmtZgDOmKWu10444oBk80jfIIi\\\ naE5li4B8qgNv8dKnAkiKDACSlKkMmo8gKUTBqQej04YL66+Y9ND\\\n \ PLIumPFYE\\nuSNICppZfObEC6Azt3+\ CugFIqqMyaBmCpDALfeCMOannfQEk3ZcAhKcQ10IZ\\\ ntBpBd4wxF4L8IROD6UYLICmoAIhdjuLjFU\\\n \ Eeat3tCErDClISIYAmgUCjrwLI\\nGEf/\ VmXQZgT1Y1cHGBV7cL5vCRNAM9g1G0DW7FKsDPJE0Dp7u8OrW9/jN5cL\\\ nAqgjEyKA2JW4mzLIG\\\n \ 0FSdoJUzPrpRYDeAwCAKFx7wIcVQfsRdGDRoWP/uRLO\\\ nrfaUAGLBuQxARpghzJRBPgjCy36dONjRFbz4DPUVQJ4OOGE0/AqiDDqOoPcL\\n\\\n \ 8eXBn2fYvQJIutyCQ9l1RNd7pAg6o9ZdRU/wFXkJIDaNqgLI7WK98pgCZZA/\\\ ngqThcZjQ/kx/GwSQdHEE0Gu85L5SBgUjSApqcF+VTGOVA\\\n \ GKXGxMAsQSfowwK\\\ nVetuRxBipEnpLoDOgy0Gm2p54FYGhat1rzXrCD3nj6S5Akg3DlI3f57+PksZ\\\ nFKHWVXRZZWT5Fyu6jSDpAYXy5O/0\\\n \ b2oUgyDpuu/CH6IcBJAUuLU88SiD4hAk\\nxSpn4SFKB5Iul1qes5VBTxAkXVwd+\ YoGCqBpmNOMAYS3btciZVAKgqTEOJqv\\nyFYA+aKJVwG\\\n \ QB+b1UmXQC7X46qd7rNOBJPPV8nipDMqqXFE/8o0HSWmIA2h8\\n6ZWUzZ+\ VQblq3YOmrfAOqQP5f8TsCDZyqjqqTdlGCiqV3e1bIGNwg9Gf\\\n \ NPz9\\nSRn0pnJF7b4Fkt4hAUS6/waZXxn0oRIkfl/3IRm9952G39KVQZ//ATSKPZcA\\\ niIm/oTJIbfj/QZJ5arjDKIOMDcWv6X+wZOFB841\\\n \ 8IQOZ/gMI5/SwPA1/2RRA\\n/wPDPNzw\>\"", "]"}]}], ";", "\n", RowBox[{"(*", " ", RowBox[{"CIE", " ", "data", " ", "retrival", " ", "function"}], " ", "*)"}], "\n", RowBox[{ RowBox[{"CIEData", "[", "\"\<1931\>\"", "]"}], " ", "=", " ", "CIE1931"}], ";", "\n", RowBox[{ RowBox[{"CIEData", "[", RowBox[{"\"\<1931\>\"", ",", " ", "\"\\""}], "]"}], " ", "=", " ", RowBox[{"CIE1931", "[", RowBox[{"[", RowBox[{"All", ",", " ", "1"}], "]"}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"CIEData", "[", RowBox[{ "\"\<1931\>\"", ",", " ", "\"\\""}], "]"}], " ", "=", " ", RowBox[{"CIE1931", "[", RowBox[{"[", RowBox[{"All", ",", " ", RowBox[{"2", " ", ";;", " ", "4"}]}], "]"}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"CIEData", "[", RowBox[{ "\"\<1931\>\"", ",", " ", "\"\\""}], "]"}], " ", "=", " ", RowBox[{"CIE1931", "[", RowBox[{"[", RowBox[{"All", ",", " ", RowBox[{"5", " ", ";;", " ", "7"}]}], "]"}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"CIEData", "[", "\"\<1964\>\"", "]"}], " ", "=", " ", "CIE1964"}], ";", "\n", RowBox[{ RowBox[{"CIEData", "[", RowBox[{"\"\<1964\>\"", ",", " ", "\"\\""}], "]"}], " ", "=", " ", RowBox[{"CIE1964", "[", RowBox[{"[", RowBox[{"All", ",", " ", "1"}], "]"}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"CIEData", "[", RowBox[{ "\"\<1964\>\"", ",", " ", "\"\\""}], "]"}], " ", "=", " ", RowBox[{"CIE1964", "[", RowBox[{"[", RowBox[{"All", ",", " ", RowBox[{"2", " ", ";;", " ", "4"}]}], "]"}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"CIEData", "[", RowBox[{ "\"\<1964\>\"", ",", " ", "\"\\""}], "]"}], " ", "=", " ", RowBox[{"CIE1964", "[", RowBox[{"[", RowBox[{"All", ",", " ", RowBox[{"5", " ", ";;", " ", "7"}]}], "]"}], "]"}]}], ";", "\n", RowBox[{"(*", " ", RowBox[{"CIE", " ", "gamut", " ", "boundary"}], " ", "*)"}], "\n", RowBox[{ RowBox[{"CIEGamutBoundaryCurve", "[", RowBox[{"y", " ", ":", " ", RowBox[{"\"\<1931\>\"", " ", "|", " ", "\"\<1964\>\""}]}], "]"}], " ", ":=", " ", RowBox[{ RowBox[{"CIEGamutBoundaryCurve", "[", "y", "]"}], " ", "=", " ", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"xx", " ", "=", " ", RowBox[{"ListInterpolation", "[", RowBox[{ RowBox[{ RowBox[{"CIEData", "[", "y", "]"}], "[", RowBox[{"[", RowBox[{"All", ",", " ", "5"}], "]"}], "]"}], ",", " ", RowBox[{"{", RowBox[{"{", RowBox[{"0", ",", " ", "1"}], "}"}], "}"}]}], "]"}]}], ",", " ", RowBox[{"yy", " ", "=", " ", RowBox[{"ListInterpolation", "[", RowBox[{ RowBox[{ RowBox[{"CIEData", "[", "y", "]"}], "[", RowBox[{"[", RowBox[{"All", ",", " ", "6"}], "]"}], "]"}], ",", " ", RowBox[{"{", RowBox[{"{", RowBox[{"0", ",", " ", "1"}], "}"}], "}"}]}], "]"}]}]}], "}"}], ",", " ", RowBox[{"Function", "[", RowBox[{ RowBox[{"{", "t", "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"xx", "[", "t", "]"}], ",", " ", RowBox[{"yy", "[", "t", "]"}]}], "}"}]}], "]"}]}], "]"}]}]}], ";", "\n", RowBox[{"(*", " ", RowBox[{"White", " ", "point", " ", "chromaticities"}], " ", "*)"}], "\n", RowBox[{"whitePoints", " ", "=", " ", RowBox[{"Sort", "@", RowBox[{"{", "\n", " ", RowBox[{ RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"0.3101", ",", " ", "0.3162"}], "}"}]}], ",", RowBox[{"(*", " ", RowBox[{"NTSC", " ", "television"}], " ", "*)"}], "\n", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"0.3457", ",", " ", "0.3585"}], "}"}]}], ",", "\n", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"0.3127", ",", " ", "0.3290"}], "}"}]}], ",", RowBox[{"(*", " ", RowBox[{ RowBox[{"EBU", " ", "and", " ", "SMPTE"}], ",", " ", RowBox[{"6500", "K", " ", RowBox[{"(", RowBox[{ "modified", " ", "according", " ", "to", " ", "Adobe"}], ")"}]}]}], " ", "*)"}], "\n", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{ RowBox[{"1.", "/", "3."}], ",", " ", RowBox[{"1.", "/", "3."}]}], "}"}]}]}], RowBox[{"(*", " ", RowBox[{ RowBox[{"CIE", " ", "equal"}], "-", RowBox[{"energy", " ", "illuminant"}]}], " ", "*)"}], "\n", " ", "}"}]}]}], ";", "\n", RowBox[{ RowBox[{"whitePointsQ", "[", "s_String", "]"}], " ", ":=", " ", RowBox[{"MemberQ", "[", RowBox[{ RowBox[{"whitePoints", "[", RowBox[{"[", RowBox[{"All", ",", " ", "1"}], "]"}], "]"}], ",", " ", "s"}], "]"}]}], ";", "\n", RowBox[{"(*", " ", RowBox[{"Color", " ", "spaces"}], " ", "*)"}], "\n", RowBox[{"(*", " ", RowBox[{"StandardName", ",", " ", RowBox[{"{", RowBox[{"xRed", ",", " ", "yRed"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"xGreen", ",", " ", "yGreen"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"xBlue", ",", " ", "yBlue"}], "}"}], ",", " ", RowBox[{"White", " ", "point"}], ",", " ", "Gamma"}], " ", "*)"}], "\n", RowBox[{"colorSpaces", " ", "=", " ", RowBox[{"Sort", "@", RowBox[{"{", "\n", " ", RowBox[{ RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.6700", ",", " ", "0.3300"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.2100", ",", " ", "0.7100"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1400", ",", " ", "0.0800"}], "}"}], ",", " ", "\"\\"", ",", " ", "2.2"}], "}"}]}], ",", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.6400", ",", " ", "0.3300"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.2900", ",", " ", "0.6000"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1500", ",", " ", "0.0600"}], "}"}], ",", " ", "\"\\"", ",", " ", "2.2"}], "}"}]}], ",", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.6300", ",", " ", "0.3400"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.3100", ",", " ", "0.5950"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1550", ",", " ", "0.0700"}], "}"}], ",", " ", "\"\\"", ",", " ", "2.2"}], "}"}]}], ",", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.6700", ",", " ", "0.3300"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.2100", ",", " ", "0.7100"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1500", ",", " ", "0.0600"}], "}"}], ",", " ", "\"\\"", ",", " ", "2.2"}], "}"}]}], ",", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.7355", ",", " ", "0.2645"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.2658", ",", " ", "0.7243"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1669", ",", " ", "0.0085"}], "}"}], ",", " ", "\"\\"", ",", " ", "2.2"}], "}"}]}], ",", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.6400", ",", " ", "0.3300"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.3000", ",", " ", "0.6000"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1500", ",", " ", "0.0600"}], "}"}], ",", " ", "\"\\"", ",", " ", "\"\\""}], "}"}]}], ",", "\n", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.6400", ",", " ", "0.3300"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.2100", ",", " ", "0.7150"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1500", ",", " ", "0.0600"}], "}"}], ",", " ", "\"\\"", ",", " ", "2.2"}], "}"}]}], ",", "\n", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.6300", ",", " ", "0.3400"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.2950", ",", " ", "0.6050"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1500", ",", " ", "0.0750"}], "}"}], ",", " ", "\"\\"", ",", " ", "1.8"}], "}"}]}], ",", "\n", " ", RowBox[{"\"\\"", " ", "->", " ", RowBox[{"{", RowBox[{"\"\\"", ",", " ", RowBox[{"{", RowBox[{"0.7347", ",", " ", "0.2653"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.1596", ",", " ", "0.8404"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"0.0366", ",", " ", "0.0001"}], "}"}], ",", " ", "\"\\"", ",", " ", "1.8"}], "}"}]}]}], "\n", " ", "}"}]}]}], ";", "\n", RowBox[{ RowBox[{"colorSpacesQ", "[", "s_String", "]"}], " ", ":=", " ", RowBox[{"MemberQ", "[", RowBox[{ RowBox[{"colorSpaces", "[", RowBox[{"[", RowBox[{"All", ",", " ", "1"}], "]"}], "]"}], ",", " ", "s"}], "]"}]}], ";", "\n", RowBox[{"(*", " ", RowBox[{ "CIE", " ", "xyz", " ", "to", " ", "RGB", " ", "conversion", " ", "matrix"}], " ", "*)"}], "\n", RowBox[{ RowBox[{"xyzToRGB", "[", RowBox[{"s_", "?", "colorSpacesQ"}], "]"}], " ", ":=", " ", RowBox[{ RowBox[{"xyzToRGB", "[", "s", "]"}], " ", "=", " ", RowBox[{"Block", "[", RowBox[{ RowBox[{"{", RowBox[{ "cs", ",", " ", "xr", ",", " ", "yr", ",", " ", "zr", ",", " ", "xg", ",", " ", "yg", ",", " ", "zg", ",", " ", "xb", ",", " ", "yb", ",", " ", "zb", ",", " ", "xw", ",", " ", "yw", ",", " ", "zw", ",", " ", "M", ",", " ", "W", ",", " ", "InvM", ",", " ", "ScaleW", ",", " ", "ConvM"}], "}"}], ",", "\n", " ", RowBox[{ RowBox[{"cs", " ", "=", " ", RowBox[{"s", " ", "/.", " ", "colorSpaces"}]}], ";", "\n", " ", RowBox[{"cs", " ", "=", " ", RowBox[{"cs", " ", "/.", " ", "whitePoints"}]}], ";", "\n", " ", RowBox[{"M", " ", "=", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"xr", ",", " ", "yr", ",", " ", "zr"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"xg", ",", " ", "yg", ",", " ", "zg"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"xb", ",", " ", "yb", ",", " ", "zb"}], "}"}]}], "}"}]}], ";", "\n", " ", RowBox[{"W", " ", "=", " ", RowBox[{"{", RowBox[{"xw", ",", " ", "yw", ",", " ", "zw"}], "}"}]}], ";", "\n", " ", RowBox[{"InvM", " ", "=", " ", RowBox[{"Transpose", "@", RowBox[{"(", RowBox[{ RowBox[{"Inverse", "[", "M", "]"}], " ", RowBox[{"Det", "[", "M", "]"}]}], ")"}]}]}], ";", "\n", " ", RowBox[{"ScaleW", " ", "=", " ", RowBox[{"Simplify", "@", RowBox[{"(", RowBox[{"InvM", ".", RowBox[{"(", RowBox[{"W", "/", "yw"}], ")"}]}], ")"}]}]}], ";", "\n", " ", RowBox[{"ConvM", " ", "=", " ", RowBox[{"InvM", "/", "ScaleW"}]}], ";", "\n", " ", RowBox[{"ConvM", " ", "=", " ", RowBox[{"ConvM", " ", "/.", " ", RowBox[{"{", RowBox[{ RowBox[{"zr", " ", "->", " ", RowBox[{"1", " ", "-", " ", RowBox[{"(", RowBox[{"xr", " ", "+", " ", "yr"}], ")"}]}]}], ",", " ", RowBox[{"zg", " ", "->", " ", RowBox[{"1", " ", "-", " ", RowBox[{"(", RowBox[{"xg", " ", "+", " ", "yg"}], ")"}]}]}], ",", " ", RowBox[{"zb", " ", "->", " ", RowBox[{"1", " ", "-", " ", RowBox[{"(", RowBox[{"xb", " ", "+", " ", "yb"}], ")"}]}]}], ",", " ", RowBox[{"zw", " ", "->", " ", RowBox[{"1", " ", "-", " ", RowBox[{"(", RowBox[{"xw", " ", "+", " ", "yw"}], ")"}]}]}]}], "}"}]}]}], ";", "\n", " ", RowBox[{"ConvM", " ", "=", " ", RowBox[{"ConvM", " ", "/.", " ", RowBox[{"{", RowBox[{ RowBox[{"xr", " ", "->", " ", RowBox[{"cs", "[", RowBox[{"[", RowBox[{"2", ",", " ", "1"}], "]"}], "]"}]}], ",", " ", RowBox[{"yr", " ", "->", " ", RowBox[{"cs", "[", RowBox[{"[", RowBox[{"2", ",", " ", "2"}], "]"}], "]"}]}], ",", " ", RowBox[{"xg", " ", "->", " ", RowBox[{"cs", "[", RowBox[{"[", RowBox[{"3", ",", " ", "1"}], "]"}], "]"}]}], ",", " ", RowBox[{"yg", " ", "->", " ", RowBox[{"cs", "[", RowBox[{"[", RowBox[{"3", ",", " ", "2"}], "]"}], "]"}]}], ",", " ", RowBox[{"xb", " ", "->", " ", RowBox[{"cs", "[", RowBox[{"[", RowBox[{"4", ",", " ", "1"}], "]"}], "]"}]}], ",", " ", RowBox[{"yb", " ", "->", " ", RowBox[{"cs", "[", RowBox[{"[", RowBox[{"4", ",", " ", "2"}], "]"}], "]"}]}], ",", " ", RowBox[{"xw", " ", "->", " ", RowBox[{"cs", "[", RowBox[{"[", RowBox[{"5", ",", " ", "1"}], "]"}], "]"}]}], ",", " ", RowBox[{"yw", " ", "->", " ", RowBox[{"cs", "[", RowBox[{"[", RowBox[{"5", ",", " ", "2"}], "]"}], "]"}]}]}], "}"}]}]}]}]}], "\n", " ", "]"}]}]}], ";", " ", RowBox[{"(*", " ", RowBox[{"Gamma", " ", "correction", " ", RowBox[{"(", RowBox[{ RowBox[{"sRGB", "/", "Rec"}], ".709"}], ")"}]}], " ", "*)"}], RowBox[{ RowBox[{"gammaCorrect", "[", "\"\\"", "]"}], ":=", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"cc", "=", "0.018"}], "}"}], ",", RowBox[{"Function", "[", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"#", "<", "cc"}], ",", RowBox[{"#", RowBox[{"(", FractionBox[ RowBox[{ RowBox[{"1.099", " ", SuperscriptBox["cc", "0.45"]}], "-", "0.099"}], "cc"], ")"}]}], ",", RowBox[{ RowBox[{"1.099", SuperscriptBox["#", "0.45"]}], "-", "0.099"}]}], "]"}], "&"}], ")"}], "/@", "##"}], "]"}]}], "]"}]}], ";", " ", RowBox[{ RowBox[{"gammaCorrect", "[", RowBox[{"\[Gamma]_", "?", "NumericQ"}], "]"}], ":=", RowBox[{ SuperscriptBox["##", RowBox[{"1", "/", "\[Gamma]"}]], "&"}]}], ";", " ", RowBox[{ RowBox[{"gammaCorrect", "[", "None", "]"}], ":=", RowBox[{"##", "&"}]}], ";", " ", RowBox[{"(*", " ", RowBox[{"Normalize", " ", "RGB"}], " ", "*)"}], " ", RowBox[{"normalizeRGB", " ", ":=", " ", RowBox[{"Function", "[", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"max", " ", "=", " ", RowBox[{"Max", "[", "##", "]"}]}], "}"}], ",", " ", RowBox[{"If", "[", RowBox[{ RowBox[{"max", " ", "<=", " ", "0."}], ",", " ", "##", ",", " ", RowBox[{"##", "/", "max"}]}], "]"}]}], "]"}], "]"}]}], ";", " ", RowBox[{"clipRGB", " ", ":=", " ", RowBox[{"Function", "[", RowBox[{"Clip", "[", RowBox[{"##", ",", " ", RowBox[{"{", RowBox[{"0", ",", " ", "1"}], "}"}]}], "]"}], "]"}]}], ";", "\n", RowBox[{"(*", " ", RowBox[{"Display", " ", "functions"}], " ", "*)"}], "\n", RowBox[{ RowBox[{"displayGamutMask", "[", RowBox[{ RowBox[{"y", " ", ":", " ", RowBox[{"\"\<1931\>\"", " ", "|", " ", "\"\<1964\>\""}]}], ",", " ", RowBox[{"style_:", " ", "Black"}]}], "]"}], " ", ":=", " ", RowBox[{"Graphics", "[", RowBox[{"{", RowBox[{"style", ",", " ", RowBox[{"Polygon", "@", RowBox[{"Join", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", " ", RowBox[{"-", "1"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{"2", ",", " ", RowBox[{"-", "1"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{"2", ",", " ", "2"}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", " ", "2"}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", " ", RowBox[{"-", "1"}]}], "}"}]}], "}"}], ",", " ", RowBox[{"Table", "[", RowBox[{ RowBox[{ RowBox[{"CIEGamutBoundaryCurve", "[", "y", "]"}], "[", "t", "]"}], ",", " ", RowBox[{"{", RowBox[{ "t", ",", " ", "0", ",", " ", "1", ",", " ", ".005"}], "}"}]}], "]"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"CIEData", "[", "y", "]"}], "[", RowBox[{"[", RowBox[{"1", ",", " ", RowBox[{"5", " ", ";;", " ", "6"}]}], "]"}], "]"}], "}"}]}], "]"}]}]}], "}"}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"displaySystemGamutMask", "[", RowBox[{ RowBox[{"s_", "?", "colorSpacesQ"}], ",", " ", RowBox[{"style_:", " ", "Black"}]}], "]"}], " ", ":=", "\n", " ", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"cs", " ", "=", " ", RowBox[{"s", " ", "/.", " ", "colorSpaces"}]}], "}"}], ",", "\n", " ", RowBox[{"Graphics", "[", RowBox[{"{", RowBox[{"style", ",", " ", RowBox[{"Polygon", "@", RowBox[{"Join", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", " ", RowBox[{"-", "1"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{"2", ",", " ", RowBox[{"-", "1"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{"2", ",", " ", "2"}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", " ", "2"}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"-", "1"}], ",", " ", RowBox[{"-", "1"}]}], "}"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"cs", "[", RowBox[{"[", "2", "]"}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "3", "]"}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "4", "]"}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "2", "]"}], "]"}]}], "}"}]}], "]"}]}]}], "}"}], "]"}]}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"displayGamutBoundary", "[", RowBox[{ RowBox[{"y", " ", ":", " ", RowBox[{"\"\<1931\>\"", " ", "|", " ", "\"\<1964\>\""}]}], ",", " ", RowBox[{"style_:", " ", "White"}]}], "]"}], " ", ":=", "\n", " ", RowBox[{"Graphics", "[", RowBox[{"{", RowBox[{"style", ",", " ", RowBox[{"Line", "[", RowBox[{"Append", "[", RowBox[{ RowBox[{"Table", "[", RowBox[{ RowBox[{ RowBox[{"CIEGamutBoundaryCurve", "[", "y", "]"}], "[", "t", "]"}], ",", " ", RowBox[{"{", RowBox[{ "t", ",", " ", "0", ",", " ", "1", ",", " ", ".005"}], "}"}]}], "]"}], ",", " ", RowBox[{ RowBox[{"CIEData", "[", "y", "]"}], "[", RowBox[{"[", RowBox[{"1", ",", " ", RowBox[{"5", " ", ";;", " ", "6"}]}], "]"}], "]"}]}], "]"}], "]"}]}], "}"}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"displaySystemGamutBoundary", "[", RowBox[{ RowBox[{"s_", "?", "colorSpacesQ"}], ",", " ", RowBox[{"style_:", " ", "White"}]}], "]"}], " ", ":=", "\n", " ", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"cs", " ", "=", " ", RowBox[{"s", " ", "/.", " ", "colorSpaces"}]}], "}"}], ",", "\n", " ", RowBox[{"Graphics", "[", RowBox[{"{", RowBox[{"style", ",", " ", RowBox[{"Line", "[", RowBox[{"{", RowBox[{ RowBox[{"cs", "[", RowBox[{"[", "2", "]"}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "3", "]"}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "4", "]"}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "2", "]"}], "]"}]}], "}"}], "]"}]}], "}"}], "]"}]}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"displayInfo", "[", RowBox[{"s_", "?", "colorSpacesQ"}], "]"}], " ", ":=", " ", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"cs", " ", "=", " ", RowBox[{ RowBox[{"s", " ", "/.", " ", "colorSpaces"}], " ", "/.", " ", "whitePoints"}]}], "}"}], ",", "\n", " ", RowBox[{"Graphics", "[", RowBox[{"Inset", "[", RowBox[{ RowBox[{"Style", "[", RowBox[{ RowBox[{"Column", "[", RowBox[{ RowBox[{"{", RowBox[{ "\"\\"", ",", "\n", " ", RowBox[{"Grid", "[", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ "\"\<\>\"", ",", " ", "\"\\"", ",", " ", "\"\\"", ",", " ", "\"\\"", ",", " ", "\"\\""}], "}"}], ",", "\n", " ", RowBox[{"Prepend", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"NumberForm", "[", RowBox[{ RowBox[{"cs", "[", RowBox[{"[", RowBox[{"#1", ",", " ", "1"}], "]"}], "]"}], ",", " ", "4"}], "]"}], " ", "&"}], " ", "/@", " ", RowBox[{"Range", "[", RowBox[{"2", ",", " ", "5"}], "]"}]}], ",", " ", "\"\\""}], "]"}], ",", "\n", " ", RowBox[{"Prepend", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"NumberForm", "[", RowBox[{ RowBox[{"cs", "[", RowBox[{"[", RowBox[{"#1", ",", " ", "2"}], "]"}], "]"}], ",", " ", "4"}], "]"}], " ", "&"}], " ", "/@", " ", RowBox[{"Range", "[", RowBox[{"2", ",", " ", "5"}], "]"}]}], ",", " ", "\"\\""}], "]"}]}], "\n", " ", "}"}], "]"}]}], "}"}], ",", " ", RowBox[{ "Alignment", " ", "->", " ", "Center"}]}], "]"}], ",", " ", "White", ",", " ", "\"\\""}], "]"}], ",", " ", RowBox[{"Scaled", "[", RowBox[{"{", RowBox[{".99", ",", " ", ".99"}], "}"}], "]"}], ",", " ", RowBox[{"{", RowBox[{"Right", ",", " ", "Top"}], "}"}]}], "]"}], "]"}]}], "\n", " ", "]"}]}], ";", "\n", RowBox[{ RowBox[{"displayColorGamut", "[", RowBox[{ RowBox[{"s_", "?", "colorSpacesQ"}], ",", " ", "g_", ",", " ", RowBox[{"opts__:", " ", RowBox[{"{", "}"}]}]}], "]"}], " ", ":=", " ", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"gc", " ", "=", " ", RowBox[{"gammaCorrect", "[", "g", "]"}]}], ",", " ", RowBox[{"m", " ", "=", " ", RowBox[{"xyzToRGB", "[", "s", "]"}]}]}], "}"}], ",", " ", RowBox[{"ParametricPlot", "[", RowBox[{ RowBox[{"{", RowBox[{"x", ",", " ", "y"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"x", ",", " ", "0", ",", " ", ".8"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"y", ",", " ", "0", ",", " ", ".9"}], "}"}], ",", " ", RowBox[{"ColorFunction", " ", "->", " ", RowBox[{"(", RowBox[{ RowBox[{"RGBColor", "@", RowBox[{"gc", "@", RowBox[{"clipRGB", "@", RowBox[{"normalizeRGB", "@", RowBox[{"(", RowBox[{"m", ".", RowBox[{"{", RowBox[{"#1", ",", " ", "#2", ",", " ", RowBox[{"1.", " ", "-", " ", RowBox[{"(", RowBox[{"#1", " ", "+", " ", "#2"}], ")"}]}]}], "}"}]}], ")"}]}]}]}]}], " ", "&"}], ")"}]}], ",", " ", RowBox[{ "ColorFunctionScaling", " ", "->", " ", "False"}], ",", " ", RowBox[{"Mesh", " ", "->", " ", "None"}], ",", " ", "opts", ",", " ", RowBox[{"PlotPoints", " ", "->", " ", RowBox[{"ControlActive", "[", RowBox[{"15", ",", " ", "50"}], "]"}]}], ",", " ", RowBox[{ "PlotRangeClipping", " ", "->", " ", "False"}], ",", " ", RowBox[{"ImagePadding", " ", "->", " ", "All"}]}], "]"}]}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"displayColorGamutRaster", "[", RowBox[{ RowBox[{"s_", "?", "colorSpacesQ"}], ",", " ", "g_", ",", " ", RowBox[{"opts__:", " ", RowBox[{"{", "}"}]}]}], "]"}], " ", ":=", " ", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"gc", " ", "=", " ", RowBox[{"gammaCorrect", "[", "g", "]"}]}], ",", " ", RowBox[{"m", " ", "=", " ", RowBox[{"xyzToRGB", "[", "s", "]"}]}]}], "}"}], ",", " ", RowBox[{"Graphics", "[", RowBox[{ RowBox[{"Raster", "[", RowBox[{ RowBox[{"Table", "[", RowBox[{ RowBox[{"gc", "@", RowBox[{"clipRGB", "@", RowBox[{"normalizeRGB", "@", RowBox[{"(", RowBox[{"m", ".", RowBox[{"{", RowBox[{"x", ",", " ", "y", ",", " ", RowBox[{ "1.", " ", "-", " ", "x", " ", "-", " ", "y"}]}], "}"}]}], ")"}]}]}]}], ",", " ", RowBox[{"{", RowBox[{ "y", ",", " ", "0", ",", " ", ".9", ",", " ", RowBox[{"ControlActive", "[", RowBox[{".05", ",", " ", ".01"}], "]"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ "x", ",", " ", "0", ",", " ", ".8", ",", " ", RowBox[{"ControlActive", "[", RowBox[{".05", ",", " ", ".01"}], "]"}]}], "}"}]}], "]"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", " ", "0"}], "}"}], ",", " ", RowBox[{"{", RowBox[{".8", ",", " ", ".9"}], "}"}]}], "}"}]}], "]"}], ",", " ", "opts", ",", " ", RowBox[{ "PlotRangeClipping", " ", "->", " ", "False"}], ",", " ", RowBox[{"ImagePadding", " ", "->", " ", "All"}]}], "]"}]}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"epWhitePoint", "[", RowBox[{"s_", "?", "colorSpacesQ"}], "]"}], " ", ":=", " ", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"cs", " ", "=", " ", RowBox[{"s", " ", "/.", " ", "colorSpaces"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"Opacity", "[", "1", "]"}], ",", " ", "White", ",", " ", RowBox[{"EdgeForm", "[", RowBox[{"Opacity", "[", ".9", "]"}], "]"}], ",", " ", RowBox[{"Tooltip", "[", RowBox[{ RowBox[{"Disk", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"cs", " ", "/.", " ", "whitePoints"}], ")"}], "[", RowBox[{"[", RowBox[{"-", "2"}], "]"}], "]"}], ",", " ", RowBox[{"Offset", "[", RowBox[{"{", RowBox[{"3", ",", " ", "3"}], "}"}], "]"}]}], "]"}], ",", " ", RowBox[{ RowBox[{"(", RowBox[{"cs", " ", "/.", " ", "whitePoints"}], ")"}], "[", RowBox[{"[", RowBox[{"-", "2"}], "]"}], "]"}]}], "]"}], ",", " ", RowBox[{"Text", "[", RowBox[{ RowBox[{"Style", "[", RowBox[{ RowBox[{"cs", "[", RowBox[{"[", RowBox[{"-", "2"}], "]"}], "]"}], ",", " ", "\"\\"", ",", " ", "Black"}], "]"}], ",", " ", RowBox[{"Offset", "[", RowBox[{ RowBox[{"{", RowBox[{"4", ",", " ", "2"}], "}"}], ",", " ", RowBox[{ RowBox[{"(", RowBox[{"cs", " ", "/.", " ", "whitePoints"}], ")"}], "[", RowBox[{"[", RowBox[{"-", "2"}], "]"}], "]"}]}], "]"}], ",", " ", RowBox[{"{", RowBox[{"Left", ",", " ", "Bottom"}], "}"}]}], "]"}]}], "}"}]}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"epPrimaries", "[", RowBox[{"s_", "?", "colorSpacesQ"}], "]"}], " ", ":=", " ", RowBox[{"With", "[", RowBox[{ RowBox[{"{", RowBox[{"cs", " ", "=", " ", RowBox[{"s", " ", "/.", " ", "colorSpaces"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"Opacity", "[", "1", "]"}], ",", " ", RowBox[{"Lighter", "@", "Red"}], ",", " ", RowBox[{"EdgeForm", "[", RowBox[{"Opacity", "[", ".9", "]"}], "]"}], ",", " ", RowBox[{"Tooltip", "[", RowBox[{ RowBox[{"Disk", "[", RowBox[{ RowBox[{"cs", "[", RowBox[{"[", "2", "]"}], "]"}], ",", " ", RowBox[{"Offset", "[", RowBox[{"{", RowBox[{"3", ",", " ", "3"}], "}"}], "]"}]}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "2", "]"}], "]"}]}], "]"}], ",", " ", RowBox[{"Lighter", "@", "Green"}], ",", " ", RowBox[{"Tooltip", "[", RowBox[{ RowBox[{"Disk", "[", RowBox[{ RowBox[{"cs", "[", RowBox[{"[", "3", "]"}], "]"}], ",", " ", RowBox[{"Offset", "[", RowBox[{"{", RowBox[{"3", ",", " ", "3"}], "}"}], "]"}]}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "3", "]"}], "]"}]}], "]"}], ",", " ", RowBox[{"Lighter", "@", "Blue"}], ",", " ", RowBox[{"Tooltip", "[", RowBox[{ RowBox[{"Disk", "[", RowBox[{ RowBox[{"cs", "[", RowBox[{"[", "4", "]"}], "]"}], ",", " ", RowBox[{"Offset", "[", RowBox[{"{", RowBox[{"3", ",", " ", "3"}], "}"}], "]"}]}], "]"}], ",", " ", RowBox[{"cs", "[", RowBox[{"[", "4", "]"}], "]"}]}], "]"}]}], "}"}]}], "]"}]}], ";", "\n", RowBox[{ RowBox[{"epWavelengthTicks", "[", RowBox[{ RowBox[{"y", " ", ":", " ", RowBox[{"\"\<1931\>\"", " ", "|", " ", "\"\<1964\>\""}]}], ",", " ", RowBox[{"style_:", " ", "White"}]}], "]"}], " ", ":=", "\n", " ", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"White", ",", " ", RowBox[{"EdgeForm", "[", RowBox[{"Opacity", "[", ".5", "]"}], "]"}], ",", "\n", " ", RowBox[{"Disk", "[", RowBox[{ RowBox[{"#1", "[", RowBox[{"[", RowBox[{"5", " ", ";;", " ", "6"}], "]"}], "]"}], ",", " ", RowBox[{"Offset", "[", RowBox[{"{", RowBox[{"2", ",", " ", "2"}], "}"}], "]"}]}], "]"}], ",", "\n", " ", RowBox[{"Text", "[", RowBox[{ RowBox[{"Style", "[", RowBox[{ RowBox[{"#1", "[", RowBox[{"[", "1", "]"}], "]"}], ",", " ", "style"}], "]"}], ",", " ", RowBox[{"Offset", "[", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"#1", "[", RowBox[{"[", "1", "]"}], "]"}], " ", "<", " ", "520"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"-", "4"}], ",", " ", "0"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"2", ",", " ", "2"}], "}"}]}], "]"}], ",", " ", RowBox[{"#1", "[", RowBox[{"[", RowBox[{"5", " ", ";;", " ", "6"}], "]"}], "]"}]}], "]"}], ",", " ", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"#1", "[", RowBox[{"[", "1", "]"}], "]"}], " ", "<", " ", "520"}], ",", " ", RowBox[{"{", RowBox[{"Right", ",", " ", "Center"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"Left", ",", " ", "Bottom"}], "}"}]}], "]"}]}], "]"}]}], "}"}], " ", "&"}], " ", "/@", " ", RowBox[{"(", RowBox[{"Join", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"CIEData", "[", "y", "]"}], "[", RowBox[{"[", "1", "]"}], "]"}], "}"}], ",", " ", RowBox[{ RowBox[{"CIEData", "[", "y", "]"}], "[", RowBox[{"[", RowBox[{ "17", " ", ";;", " ", "50", " ", ";;", " ", "2"}], "]"}], "]"}], ",", " ", RowBox[{"{", RowBox[{ RowBox[{"CIEData", "[", "y", "]"}], "[", RowBox[{"[", RowBox[{"-", "21"}], "]"}], "]"}], "}"}]}], "]"}], ")"}]}]}], ";", "\n", RowBox[{ RowBox[{"epMeshes", "[", RowBox[{"style_:", " ", RowBox[{"Directive", "[", RowBox[{"Dotted", ",", " ", "White", ",", " ", RowBox[{"Opacity", "[", ".3", "]"}]}], "]"}]}], "]"}], " ", ":=", " ", RowBox[{"{", RowBox[{"style", ",", " ", RowBox[{"Line", "[", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"#", ",", " ", "0"}], "}"}], ",", " ", RowBox[{"{", RowBox[{"#", ",", " ", ".9"}], "}"}]}], "}"}], " ", "&"}], " ", "/@", " ", RowBox[{"Range", "[", RowBox[{"0", ",", " ", "1", ",", " ", ".1"}], "]"}]}], "]"}], ",", " ", RowBox[{"Line", "[", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", " ", "#"}], "}"}], ",", " ", RowBox[{"{", RowBox[{".8", ",", " ", "#"}], "}"}]}], "}"}], " ", "&"}], " ", "/@", " ", RowBox[{"Range", "[", RowBox[{"0", ",", " ", "1", ",", " ", ".1"}], "]"}]}], "]"}]}], "}"}]}], ";"}], " ", ")"}]}]}], "]"}]], "Input", CellGroupingRules->{"GroupTogetherGrouping", 10000.}, CellChangeTimes->{ 3.35696210375764*^9, 3.3895268600625*^9, {3.3895269631875*^9, 3.389526964796875*^9}, {3.3895271976875*^9, 3.389527199765625*^9}, {3.38952723140625*^9, 3.3895272326875*^9}, { 3.389527325015625*^9, 3.38952734878125*^9}, {3.389527649359375*^9, 3.389527675390625*^9}, {3.389528060671875*^9, 3.389528061859375*^9}, 3.38963046779224*^9, { 3.3897151238915167`*^9, 3.3897151309849033`*^9}, { 3.389715165373768*^9, 3.389715169811041*^9}, { 3.3897157992035856`*^9, 3.3897158018751698`*^9}, { 3.3899613127780495`*^9, 3.389961324824847*^9}, { 3.389961417183631*^9, 3.389961456511504*^9}, { 3.3899615156986256`*^9, 3.3899615165111203`*^9}, { 3.389961964258255*^9, 3.389962018336034*^9}, {3.389962479254959*^9, 3.3899624796768312`*^9}, {3.3899625350983515`*^9, 3.3899627920029573`*^9}, {3.3899628372370424`*^9, 3.3899628407057705`*^9}, {3.389962919674015*^9, 3.389962980095503*^9}, {3.3899630202514963`*^9, 3.389963273093628*^9}, {3.389963346202535*^9, 3.3899633592180767`*^9}, {3.3899633977022057`*^9, 3.3899634022178016`*^9}, {3.3899634536393476`*^9, 3.389963469951743*^9}, {3.3899635244201446`*^9, 3.389963594966568*^9}, {3.389963780293507*^9, 3.389963999745228*^9}, {3.3899641369474745`*^9, 3.389964279009065*^9}, {3.389964315133834*^9, 3.3899644290393553`*^9}, {3.389965052582239*^9, 3.38996519703444*^9}, {3.3899652555340652`*^9, 3.3899653278461027`*^9}, {3.3899653594084005`*^9, 3.389965387142598*^9}, {3.3899663715581727`*^9, 3.389966428292185*^9}, {3.389966516338496*^9, 3.3899665754631176`*^9}, {3.389967230224552*^9, 3.3899672303183017`*^9}, 3.3899672811461015`*^9, { 3.3899673274270554`*^9, 3.3899673556456246`*^9}, { 3.3899673984422255`*^9, 3.389967399004722*^9}, { 3.389967606097147*^9, 3.38996760636277*^9}, { 3.3899679873447065`*^9, 3.3899680195007505`*^9}, { 3.389968293077125*^9, 3.3899682970770993`*^9}, { 3.389968346029911*^9, 3.3899683490611415`*^9}, { 3.389968728464964*^9, 3.3899687401523886`*^9}, {3.3899774218937*^9, 3.389977427096792*^9}, {3.3899775152368526`*^9, 3.3899775474085217`*^9}, {3.3899786473233576`*^9, 3.389978650354588*^9}, {3.3899794175779266`*^9, 3.389979478348219*^9}, {3.3899799775691032`*^9, 3.3899800057411585`*^9}, {3.3899800383976173`*^9, 3.389980065960294*^9}, {3.517254038634971*^9, 3.517254171530259*^9}, 3.517254247206826*^9, { 3.5172542941515207`*^9, 3.517254294316537*^9}, 3.760734842245895*^9}], Cell[BoxData[ TagBox[ StyleBox[ DynamicModuleBox[{$CellContext`g$$ = 2.2, $CellContext`m$$ = False, $CellContext`pr$$ = False, $CellContext`prevs$$ = "EBU", $CellContext`ptype$$ = 1, $CellContext`s$$ = "EBU", $CellContext`sgop$$ = 0, $CellContext`wlt$$ = True, $CellContext`wp$$ = False, $CellContext`y$$ = "1931", Typeset`show$$ = True, Typeset`bookmarkList$$ = {}, Typeset`bookmarkMode$$ = "Menu", Typeset`animator$$, Typeset`animvar$$ = 1, Typeset`name$$ = "\"untitled\"", Typeset`specs$$ = {{{ Hold[$CellContext`s$$], "EBU", "working color space"}, Dynamic[ Map[# -> First[ ReplaceAll[#, $CellContext`colorSpaces]]& , Part[$CellContext`colorSpaces, All, 1]], SynchronousUpdating -> False]}, {{ Hold[$CellContext`y$$], "1931", Column[{"standard colorimetric", "observer data"}, Alignment -> Right, Spacings -> 0.1]}, { "1931" -> " 1931 2Degree ", "1964" -> " 1964 10Degree "}}, { Hold[ Item[ Style[ Column[{"", "visual control"}], Bold]]], Manipulate`Dump`ThisIsNotAControl}, {{ Hold[$CellContext`wlt$$], True, "wavelengths"}, { True, False}}, {{ Hold[$CellContext`m$$], False, "meshes"}, {True, False}}, {{ Hold[$CellContext`pr$$], False, "primaries"}, {True, False}}, {{ Hold[$CellContext`wp$$], False, "white point"}, { True, False}}, { Hold[ Item[ Style[ Column[{"", "gamma"}], Bold]]], Manipulate`Dump`ThisIsNotAControl}, { Hold[ Item[ Column[{ Dynamic[ With[{$CellContext`gg$ = ReplaceAll[$CellContext`g$$, "sRGB" -> 2.2]}, Plot[{$CellContext`x, $CellContext`x^$CellContext`gg$}, \ {$CellContext`x, 0, 1}, ImageSize -> 75, PlotStyle -> { Dashing[{Tiny, Tiny}], Dashing[{}]}, Axes -> False, Frame -> True, FrameTicks -> None, LabelStyle -> 8, GridLines -> {{0.25, 0.5, 0.75}, {0.5}}, GridLinesStyle -> Directive[Gray, Dashing[{0, Tiny}]], FrameStyle -> Gray, Background -> GrayLevel[0.95], Epilog -> Inset[ Style[ ReplaceAll[$CellContext`g$$, "sRGB" -> "~ 2.2"], 8, "SmallText"], {0.5, 0.5^$CellContext`gg$}, Background -> GrayLevel[0.95]]]]], Slider[ Dynamic[$CellContext`g$$], {0.5, 3., 0.1}, ImageSize -> 75, Appearance -> "UpArrow"]}]]], Manipulate`Dump`ThisIsNotAControl}, {{ Hold[$CellContext`sgop$$], 0, Column[{"system gamut", "contrast"}, Alignment -> Right]}, 0, 1}, {{ Hold[$CellContext`ptype$$], 1, "plot type"}, { 1 -> "parametric", 2 -> "raster", 3 -> "boundaries only"}}, {{ Hold[$CellContext`g$$], 2.2}}, {{ Hold[$CellContext`prevs$$], "EBU"}}}, Typeset`size$$ = Automatic, Typeset`update$$ = 0, Typeset`initDone$$, Typeset`skipInitDone$$ = False, $CellContext`y$39234$$ = False, $CellContext`wlt$39235$$ = False, $CellContext`m$39236$$ = False, $CellContext`pr$39237$$ = False, $CellContext`wp$39238$$ = False, $CellContext`sgop$39239$$ = 0, $CellContext`ptype$39240$$ = False}, DynamicBox[Manipulate`ManipulateBoxes[ 1, StandardForm, "Variables" :> {$CellContext`g$$ = 2.2, $CellContext`m$$ = False, $CellContext`pr$$ = False, $CellContext`prevs$$ = "EBU", $CellContext`ptype$$ = 1, $CellContext`s$$ = "EBU", $CellContext`sgop$$ = 0, $CellContext`wlt$$ = True, $CellContext`wp$$ = False, $CellContext`y$$ = "1931"}, "ControllerVariables" :> { Hold[$CellContext`y$$, $CellContext`y$39234$$, False], Hold[$CellContext`wlt$$, $CellContext`wlt$39235$$, False], Hold[$CellContext`m$$, $CellContext`m$39236$$, False], Hold[$CellContext`pr$$, $CellContext`pr$39237$$, False], Hold[$CellContext`wp$$, $CellContext`wp$39238$$, False], Hold[$CellContext`sgop$$, $CellContext`sgop$39239$$, 0], Hold[$CellContext`ptype$$, $CellContext`ptype$39240$$, False]}, "OtherVariables" :> { Typeset`show$$, Typeset`bookmarkList$$, Typeset`bookmarkMode$$, Typeset`animator$$, Typeset`animvar$$, Typeset`name$$, Typeset`specs$$, Typeset`size$$, Typeset`update$$, Typeset`initDone$$, Typeset`skipInitDone$$}, "Body" :> ( If[$CellContext`prevs$$ =!= $CellContext`s$$, $CellContext`g$$ = Part[ ReplaceAll[$CellContext`s$$, $CellContext`colorSpaces], \ -1]; $CellContext`prevs$$ = $CellContext`s$$]; Framed[ Show[ With[{$CellContext`ep$ = GraphicsGroup[ Join[ If[$CellContext`wlt$$, $CellContext`epWavelengthTicks[$CellContext`y$$], {}], If[$CellContext`m$$, $CellContext`epMeshes[], {}], If[$CellContext`wp$$, $CellContext`epWhitePoint[$CellContext`s$$], {}], If[$CellContext`pr$$, $CellContext`epPrimaries[$CellContext`s$$], {}]]]}, Switch[$CellContext`ptype$$, 1, $CellContext`displayColorGamut[$CellContext`s$$, \ $CellContext`g$$, Epilog -> $CellContext`ep$], 2, $CellContext`displayColorGamutRaster[$CellContext`s$$, \ $CellContext`g$$, Epilog -> $CellContext`ep$], 3, Graphics[{}, Epilog -> $CellContext`ep$]]], $CellContext`displayGamutMask[$CellContext`y$$, Black], $CellContext`displaySystemGamutMask[$CellContext`s$$, Directive[Black, Opacity[$CellContext`sgop$$]]], $CellContext`displayGamutBoundary[$CellContext`y$$, Directive[White, Opacity[0.7]]], $CellContext`displaySystemGamutBoundary[$CellContext`s$$, Directive[White, Opacity[ Min[$CellContext`sgop$$, 0.7]]]], $CellContext`displayInfo[$CellContext`s$$], Frame -> True, FrameStyle -> GrayLevel[0.6], FrameLabel -> {"x", "y"}, FrameTicks -> {{Automatic, None}, {Automatic, None}}, PlotRange -> {{0, 0.8}, {0, 0.9}}, PlotRangePadding -> Scaled[0.02], ImageSize -> 350], Background -> Black, FrameMargins -> 10]), "Specifications" :> {{{$CellContext`s$$, "EBU", "working color space"}, Dynamic[ Map[# -> First[ ReplaceAll[#, $CellContext`colorSpaces]]& , Part[$CellContext`colorSpaces, All, 1]], SynchronousUpdating -> False], ControlType -> PopupMenu}, {{$CellContext`y$$, "1931", Column[{"standard colorimetric", "observer data"}, Alignment -> Right, Spacings -> 0.1]}, { "1931" -> " 1931 2Degree ", "1964" -> " 1964 10Degree "}}, Item[ Style[ Column[{"", "visual control"}], Bold]], Delimiter, {{$CellContext`wlt$$, True, "wavelengths"}, { True, False}}, {{$CellContext`m$$, False, "meshes"}, { True, False}}, {{$CellContext`pr$$, False, "primaries"}, { True, False}}, {{$CellContext`wp$$, False, "white point"}, { True, False}}, Delimiter, Item[ Style[ Column[{"", "gamma"}], Bold]], Item[ Column[{ Dynamic[ With[{$CellContext`gg$ = ReplaceAll[$CellContext`g$$, "sRGB" -> 2.2]}, Plot[{$CellContext`x, $CellContext`x^$CellContext`gg$}, \ {$CellContext`x, 0, 1}, ImageSize -> 75, PlotStyle -> { Dashing[{Tiny, Tiny}], Dashing[{}]}, Axes -> False, Frame -> True, FrameTicks -> None, LabelStyle -> 8, GridLines -> {{0.25, 0.5, 0.75}, {0.5}}, GridLinesStyle -> Directive[Gray, Dashing[{0, Tiny}]], FrameStyle -> Gray, Background -> GrayLevel[0.95], Epilog -> Inset[ Style[ ReplaceAll[$CellContext`g$$, "sRGB" -> "~ 2.2"], 8, "SmallText"], {0.5, 0.5^$CellContext`gg$}, Background -> GrayLevel[0.95]]]]], Slider[ Dynamic[$CellContext`g$$], {0.5, 3., 0.1}, ImageSize -> 75, Appearance -> "UpArrow"]}]], {{$CellContext`sgop$$, 0, Column[{"system gamut", "contrast"}, Alignment -> Right]}, 0, 1}, {{$CellContext`ptype$$, 1, "plot type"}, { 1 -> "parametric", 2 -> "raster", 3 -> "boundaries only"}, ControlType -> RadioButton}, {{$CellContext`g$$, 2.2}, ControlType -> None}, {{$CellContext`prevs$$, "EBU"}, ControlType -> None}}, "Options" :> { ControlPlacement -> { Top, Top, Left, Left, Left, Left, Left, Left, Left, Bottom, Bottom}, AutorunSequencing -> {2, 7, 8}, SynchronousInitialization -> False}, "DefaultOptions" :> {ControllerLinking -> True}], ImageSizeCache->{349., {192., 197.}}, SingleEvaluation->True], Deinitialization:>None, DynamicModuleValues:>{}, Initialization:>(($CellContext`CIE1931 = Uncompress[ "1:eJytmHlYzVkYx3MtMRjLIEaEsY00lrGLFxEiItM0RNYSjXRKtiyhQiFLGEu\ Z\nkSWUZMmSJYSEKZVQkrQ3Ehpji3nf8+vc+3t+97l/hP tHz9NdPuecd/m+3/Nr\n\ OdVlrMMYPT09tyr4Z6STm7uDvvw/J89Kenrs+tnT66qV2ADTK3+x3idueFwI\n\ XgRsZ26zA/nDrgFb3CB86JNF7 sA6dwj9LmFwIShAXgTqNGdvpeiqU4GZmBkW\n\ ZfX4HljTTo9aV/PyBlZ/5aWbfw6Rg6R3tEA+BGrob1FYpZurDHSh8x8dGgdu\n\ AaaKrlq/ ASCIr1UfQWdw842GaYH8CBS7oct8k5bLBKgDsGXv+8y9s/ovYC9K\n\ LX7z6SUHLYHuk84O1wIFEKjW5tAVY4avE6A+wPzKZvyXPeUYMNubX a8e+wlB\n\ U7r+gtFxA1Z176Y+lSy1QIEEytxVb9/5mG3i22bARuBR6/WIxjMGf4/hkoOO\n\ hN239xitBdpBICl++8W3rYHp228f2dD/JrDd tISBHIQLmJ4fqwUKJlD+LOPX\n\ 2x4dB0369o0a8N2UK6nAXhnddbHXl4OCbx/6O8VGCxSiyVoMsA+hL+5aTp0L\n\ rMQ7blzMwWxgvRwHO7m UxAJb7T0+KfopBrtdl+pHDMdrgUIJ5N5626eApfG4\n\ mmnH5B25S4AdmjxubLs9JcDsWgx8Me0WgqQ4zgd2dMuM1dMmaoHCCfS3Q0re\nLO \ O74tu+UP7Oa2C54W2yVwYhyHnBon0dzTyB2QQfxnBrgY4TaA9lploKlJ9x\n\ IzBj30YP7vz3Flj//AdH3tkhqFXZ63mZu7zE8bVApwnEU2R xD9j46X0fj16H\n\ ddAVC9So9D2wfzqda1enZqxIlg+wSxPotFqg8wRK7fa815ChCOoqnQQYJnGz\n\ r/cHYL9OOHbxn6Cr4mj+wIZdXNKsl6 MW6DKBeK2uwqOlvV06K9p9L7DtxBmP\n\ oInp5pUX1EQQW7s++6XRJmCByTVmtnLWAl0n0KraozEXycDeEWfzQWAvB1K4\n\ 8Wg8VtZXgG2ss 6jH4f546qyCwMharlqgWwQ6ZjV7x/xdmLXTzb2LxpwOR9Gh\n\ yJx8B4zHbM5lYM/jrgwKcwrSCUokkNTZCcAoDIZFkcAMhll9aOz2BreGGa pr\n\ i7WKGnAv9vcQYBmqGmuNtIN9j0AGUYl6Gao4YJG7nx+4NiIKWE3zNvNUO0qB\n\ Oem5eFWJvQiM19W2MGAerk1rZ5pogdIIZOhJnYT7z 6AQJ2HTV++385fgw1jZ\n\ uRDy+MK30UKYTgGb0STL1iCqQAnKJFDU1GUP+i08jcmaQ0KAB6GYN65SCCzn\n\ JXUt7lEfZdHqwyVgfw059aos OV8JyiFQkyo235pEhomNYPkNZW/rFEQ9BcbL\n\ cCsqHPXemgg8fmgIKUOeElRIIKnq90D58EAZGsFj+0hk/QCwJ4tI/TGzW1uu\nn+faNEc \ Jek4gCmz1puuBFUQdrZznj+mTCgJr/RAtUXe7SP9DHCcrO43c/02W\n\ ElSqST9qzcKCtqg2WJm7rraIYDMTgdVoGjTpx/jlwNpak1g/AZY+ kxL5SAl6\n\ SyBJ/aYB481fD5dtxVsLFSrDlVrDRbQxSt2ZD76laakpStBHAt1ZfTcjs+ZK\n\ nEI8W5nAshs0i8sBbLGXEXRI7FWcJbjxfNQ sk4A9b7rcUYIqqxAkyeBuVEjS\n\ LA9MlvmW19Xst2P51Hi7x/F4IbbxVjM/57z3BcBmHi90O9nwihJUnUC8+rtF\n\ iF7LBWbJJe4EjqMYA4 wOzgWjUmebJeFYWcN3L2972SdKCapNIHX5SnMRl6V4\n\ ONtgZfH5Znoe/cXGpTh9C4VmhStB9QkU50FzEOuQW4fAImCTRtzQ77dzH0rt\nQ \ tuD3W+jjJxs+D6+OA7XIKEz7RiiBBkQSBo1t4A54HxIN38mk8rYj5GLX0bc\n\ gPLGRhCvEMMdSpAhgbD2nxQEYtWeHV5LZexbDIyGmXccup HRfPrcRs17VnSp\n\ 9w+YNbiWfnKVZ4AS1JJAUkRxrlKBB016DsyaN4Kf2AhWZlVuWfKA/ZuW6uVm\n\ vkoJakugLVw80oCl7p3b75tUBGFc+ o5KxOHjMbp5o1mWSagefGbmChlYoAQZ\n\ E0gSvUxh/VCGko1JduaL7k8R5ZMD5WbKRQnqrFIPyKeyHak7Yy6v+lRRkE9B\n\ 3U8KUHcC/elI y+FqnyhFVggKJw/U3AGFCYdR6/bYfb/xaGUBs9e/02TMwwlK\n\ UB/N0TAjdW1JkYrF7J4iplg6MG4uLz3ReCgFCAj0ur3dhsv/YtUmDL5fU mqB\n\ dbQpfhlO1InAfMjehGRgjLggZIrZb6UEDSbQlemUkmciRkWa/TMH/sLfW75a\n\ b+3e+rFYw1IJGk4gdWgCKCFGuDW1hT/il4ZChify oeJv8EgYVgslaBSBWrdf\n\ 6n9mNmY9iaZh73zhAceiv2lMUcIY1ycv2TZNY1gVIGsCTSseP6h/PoK49TDN\n\ 1QSiPGqY9esjeq4ZOPmBTpA tgcLe2f0e+xFBH5MXYE9ma/ZfLv7ZInypYo0B\n\ StBEAtn/GF/3+tkS0ZlZMsOd59/+We0LCOICteSextQrQFMJJE2YEplmS6Cf\n0fnzrs \ sRR0vRXDMUIEcCSWa6WMQoXXYpkQw3gn761BJdZLJOkDOB6tI0/bVI\n\ nP++DDTu6b6dV1tg+BNSbNBPJukEuRJI8neY9TYotGZ+ybL71nG qsNkIukec\n\ dkmajxQgD541J97tUN4rCbKrJBn4ZgcQxHcWcVcnaLHmaFi+JtxpxctAJL2N\n\ HiDoBwtKiW7QcgKd7Pnm8vRD6aKzrslAdM mrpUKFTdxo99HsXaJOkDeBOnIX\n\ lipMUIwMhCnPSWiFoGJPujkmaj5SgNZy8ee3O9w2v/hMPycD8Tf6IqgEzWXP\n\ NbpBGwhkOoo2Hi/uU idkIKkg88Rc0g3aQiDJhOGkldY/KgNRFtvbIWgYt2y6\n\ QX8QaIUbuQ/0wKuC6Hq4XwbCsk4ynoEgdKu4O92gIAJJV7BToDGTahCvUGcE\n \ lZaRMugG7SWQ9EwgAjTXbU366d7E8oQH1Q06SCBHbusPCOu4UQaaztsHQb2H\n\ kGXWDQojEH9sch9P5M6d2moZiLjPPBEkDVHdoEgCqa9Qa g+rBvUmL7ccQRus\n\ 6QqdoBMURSDpnhIgG/lqUBlZWK884R10g6IJJP3eV+xorgz0OLPm5tAVCBrE\n\ r8m6QTG8jrKubz+3dbnImuPngK6p 1A9Z5stGfsVB8QRSn0i609p+DihBsyNH\n\ 2VysOChFpb5mTRYj3/xzQA9V8qd+Yop+BuixZkdWskdjFQdla3ZkLhtnFQcV\n\ aHY04ItAxSr 1xe9n2VysOOgVgdQb+QLQm68FKtOA5L+vOEhV+SuB9L8WqFZl\n\ +c8qAvofqvNWVA=="]; $CellContext`CIE1964 = Uncompress[ "1:eJydmHlczdkbx2+3RqgsWbIO+\ dlGdolflmMbZGzJmAYNsmaMOJJ9F8ZWyE6y\n\ a2hRCGUpk1BIUilRqXsrWgnJ8nue8+3czut7fX/zek 1/eF0v7rtznvN5Ps/n\n\ HEtn1zEz7FUq1QIj+GO4ywK3Gcbi31yWG6hUtMPAJq8ybdoRqqr4odFXL2+r\n\ UjSY0PdZU44mWkcTev7Ga5/e7 b0JjWoeRGftyCUy0BoD8WsSsRGh6Ydqn7wW\n\ MZPQxHGvO4W1AZDVxvpPH7zfRWhtm97XxuzRA21A0JSuP3du5zeVVHzoRmjj\n\ Tmktq6zx IPS4Qfh35nUBlDPb6t3eNAD1O/Hieo1DeqAtCNoZs2rojRUr+IqG\n\ AXHsmDa+f/oSOjk7rkVq2W1CU8tWzg53AxCsy+HlST2QF4K+rz97x Jvt8J8+\n\ +RXHj3CeTCh+p4HRJULX+9z/6+ETAJnDVi1aw/+xOdv3lwnn9UC7EVT8dtiv\n\ G3qeIrTXi1Hb9s6lhLZ2+O74Ttu7hO71qrnU 5iyAho7+1GBB0k5CHf974Y77\n\ dT3QAQR5+X7oogm4SGinuViTtYQ6fRn4Mf9VMqG12PcAtKrcdt6DTQBqHu86\n\ yfiBHugI29rpnKEdv0Y Q2tBoXI0OwdsIfTZL5brGKJvQhzOeaGdbAejiqSXR\n\ P9gCyIIVSQ90AkFQDgDcIxQKHJSRu5vQZh6v7C9/X0hoKW46MYrQD5HT/po8\ndi \ fXgR7ID0F+deIGJRfFERBa/nLS3YdQxvF4SyoONEoo9ptmuLc8OSgAQc8G\n\ Gy42aZlA6O1nF9cvjztO6AB27B/40gA0yMW1yOMuKJuV0Vw PFIKg2c/nb96e\n\ lUhonSm3HltN9wNBBR8uPH37E6HWxy70+BD5N6HVk47P61N9L6Fh2AX19UCX\n\ EeTvgiQ4o6VYz5hAQveH7YFz/wpV61 L1XJPxAJoHR9XQ/oAi6BqCmMRuAMjg\n\ ubra5mYhhA6hZTVze6j60TLQRausW4RCyWCTUL6tw/KMrGvrgSIRZNKy7cqt\n\ V5IIvfTmc8LiX BB0tTLfmSF5sCJ2RA4AirRAkR4jNNPRIvSRSg8UjaCIe0d/\n\ vPTmCaHhuCGbMEJXNu05c5DLF0InDOib8/RcJKHQQw5uLU8TOkbSiBwUi6 AE\n\ q+kNMx0fE2o2/9yW1Fk3CQ0y1G5tm19OaE0TVCJodQgebNsAQqv2OfjzkbN6\n\ oEcImrN46cn2A0FHUvfCRqAb4p+nw/F/ZD0P6EY3J zTvXwzlwxV+nKgHSkQQ\n\ Vuj3atCiN2oc6nbsArjPhvGPw1/WLeWCvEbomt0Dt8zRwq6f79roMf5xjhyU\n\ iqBstNNC+LVHsXlbxULT/hH1 JXhZEaFMD6suExroPX3TVCfQAW7MP1krB6Uj\n\ 6CFa1cELYBpfvVaW28IeO4e1gerk8MMKBolaNns7Z9x9OBB0qnEaOSgbQWjL\nNU1OErr \ L1mDEejOoevOpBeMH9M0UDutd24mekaXQRsyXzLPkoDwErc2M3gdS\n\ JjQNWy0EdPAsac2Cwd4p3LzBD/LNrnfe3+4ZoTvQ6fpmyEGFCNrk gbV1A/c7\n\ 0/1+r5FPCd2XxkpK6JHe7RMOaFbwSQVrrDEKy5UqB71FUJRnl0UdLF35GaVx\n\ 04khFZPKHcyTrQysLtR51dM+SxLkoDIExau wxzwJZU5tkEFoT+ZjcEaLWJH3\n\ wKSsMmnf8HpQ/q+Wn98tTI+Vg74gqBv7ARua7D4KNPmS0CW5raHtwwktgalS\n\ yxGMJW93sOn8c7mEot LAWeQgQzWAkqwLe/44JJjLF9YvnSOMg1uleFrw4fqR\n\ RrC7PEKHmaph41fkoKoIYkPY8jrfUQ4fsGBMtVmRdN2Xy2dnkBxkhiDpt8Go\nm \ Ip1dMzjpgOTzvsd1gas9hIK41cA2ac0Xj6l60k5yBxB5utugpE8IPTv8x3B\n\ kl9Di4MtTut1BBzaenVov7UwYHDwb/SAxdZCGf1yUA6yQN A0J7R/UA0OsyjP\n\ fBALqq8B6FDbFGfeQ0JjC+7eGuCvJXR4jz/7T872koOaICgW1dMUrNaZDdYC\n\ QjUEM8dWQrsgL+ERnwIasGNoolGB6 +UgSwTVyg0NNNSC/O91xc3BXHSf39gs\n\ vcNqsAE2qqDF+i5B2cOBXrXDY3OXg1ojqCuTXTqUFvsivJDHknl8UsOkCmyV\n\ tc7nfhYv/3Q5 yApBaLQWoaBDWAUEikKeJsZArDHD1oJdF0+Ndfrpzkuii3cy\n\ UGcEjXVrCU6k4bO/UAiT0qmBDdzNxrJlVv6TDNSdKdu8pP/DGaARz6wSm Owi\n\ yGRwq4XqA1C+8olomhmKIFsEBSRPgiZ7zW2oQADVYMP7Oe++dEUQQZBqBxjs\n\ PPi+6S6/tfZ2+QLo3tiIMydGwvf/GLci4JLzC0XQ IARJR1PE09grAYSdYtMb\n\ dsQy7cY0RZAdgposx1xcTGjIspKg0b/nCaDDmLctMnniSVUEjUSQpPpiblo5\n\ Aihjad2AIRkA6sNyTYoiyIE 1LUtjJXyKaAXQaZYcQT4hpjjOkxVBjgjag0O0\n\ HFbU2Oe3H2JqZQsgqVdA0PWaopKSFEFOCJKMuZh79ksBJE1KAEkxNVER5Iyg\nIJZCi7 \ hFCGKhlwPRGWGNUhZ/ogiaiaDdCdVmtZgDOmKWu10444oBk80jfIIi\n\ aE5li4B8qgNv8dKnAkiKDACSlKkMmo8gKUTBqQej04YL66+Y9ND PLIumPFYE\n\ uSNICppZfObEC6Azt3+CugFIqqMyaBmCpDALfeCMOannfQEk3ZcAhKcQ10IZ\n\ tBpBd4wxF4L8IROD6UYLICmoAIhdjuLjFU Eeat3tCErDClISIYAmgUCjrwLI\n\ GEf/VmXQZgT1Y1cHGBV7cL5vCRNAM9g1G0DW7FKsDPJE0Dp7u8OrW9/jN5cL\n\ AqgjEyKA2JW4mzLIG 0FSdoJUzPrpRYDeAwCAKFx7wIcVQfsRdGDRoWP/uRLO\n\ rfaUAGLBuQxARpghzJRBPgjCy36dONjRFbz4DPUVQJ4OOGE0/AqiDDqOoPcL\n \ 8eXBn2fYvQJIutyCQ9l1RNd7pAg6o9ZdRU/wFXkJIDaNqgLI7WK98pgCZZA/\n\ gqThcZjQ/kx/GwSQdHEE0Gu85L5SBgUjSApqcF+VTGOVA GKXGxMAsQSfowwK\n\ VetuRxBipEnpLoDOgy0Gm2p54FYGhat1rzXrCD3nj6S5Akg3DlI3f57+PksZ\n\ FKHWVXRZZWT5Fyu6jSDpAYXy5O/0 b2oUgyDpuu/CH6IcBJAUuLU88SiD4hAk\n\ xSpn4SFKB5Iul1qes5VBTxAkXVwd+YoGCqBpmNOMAYS3btciZVAKgqTEOJqv\n\ yFYA+aKJVwG QB+b1UmXQC7X46qd7rNOBJPPV8nipDMqqXFE/8o0HSWmIA2h8\n\ 6ZWUzZ+VQblq3YOmrfAOqQP5f8TsCDZyqjqqTdlGCiqV3e1bIGNwg9Gf NPz9\n\ SRn0pnJF7b4Fkt4hAUS6/waZXxn0oRIkfl/3IRm9952G39KVQZ//ATSKPZcA\n\ iIm/oTJIbfj/QZJ5arjDKIOMDcWv6X+wZOFB841 8IQOZ/gMI5/SwPA1/2RRA\n\ /wPDPNzw"]; $CellContext`CIEData[ "1931"] = $CellContext`CIE1931; $CellContext`CIEData[ "1931", "Wavelengths"] = Part[$CellContext`CIE1931, All, 1]; $CellContext`CIEData[ "1931", "TranstimulusValues"] = Part[$CellContext`CIE1931, All, Span[2, 4]]; $CellContext`CIEData[ "1931", "ChromaticityCoordinates"] = Part[$CellContext`CIE1931, All, Span[5, 7]]; $CellContext`CIEData[ "1964"] = $CellContext`CIE1964; $CellContext`CIEData[ "1964", "Wavelengths"] = Part[$CellContext`CIE1964, All, 1]; $CellContext`CIEData[ "1964", "TranstimulusValues"] = Part[$CellContext`CIE1964, All, Span[2, 4]]; $CellContext`CIEData[ "1964", "ChromaticityCoordinates"] = Part[$CellContext`CIE1964, All, Span[5, 7]]; $CellContext`CIEGamutBoundaryCurve[ Pattern[$CellContext`y, Alternatives[ "1931", "1964"]]] := \ ($CellContext`CIEGamutBoundaryCurve[$CellContext`y] = With[{$CellContext`xx = ListInterpolation[ Part[ $CellContext`CIEData[$CellContext`y], All, 5], {{0, 1}}], $CellContext`yy = ListInterpolation[ Part[ $CellContext`CIEData[$CellContext`y], All, 6], {{0, 1}}]}, Function[{$CellContext`t}, { $CellContext`xx[$CellContext`t], $CellContext`yy[$CellContext`t]}]]); \ $CellContext`whitePoints = Sort[{"C" -> {0.3101, 0.3162}, "D50" -> {0.3457, 0.3585}, "D65" -> {0.3127, 0.329}, "E" -> {1./3., 1./3.}}]; $CellContext`whitePointsQ[ Pattern[$CellContext`s, Blank[String]]] := MemberQ[ Part[$CellContext`whitePoints, All, 1], $CellContext`s]; $CellContext`colorSpaces = Sort[{"NTSC" -> { "NTSC", {0.67, 0.33}, {0.21, 0.71}, {0.14, 0.08}, "C", 2.2}, "EBU" -> { "PAL/SECAM", {0.64, 0.33}, {0.29, 0.6}, {0.15, 0.06}, "D65", 2.2}, "SMPTE" -> { "SMPTE-C", {0.63, 0.34}, {0.31, 0.595}, {0.155, 0.07}, "D65", 2.2}, "HDTV" -> { "HDTV", {0.67, 0.33}, {0.21, 0.71}, {0.15, 0.06}, "D65", 2.2}, "CIE" -> { "CIE", {0.7355, 0.2645}, {0.2658, 0.7243}, {0.1669, 0.0085}, "E", 2.2}, "sRGB" -> { "sRGB", {0.64, 0.33}, {0.3, 0.6}, {0.15, 0.06}, "D65", "sRGB"}, "Adobe" -> { "Adobe", {0.64, 0.33}, {0.21, 0.715}, {0.15, 0.06}, "D65", 2.2}, "ColorMatch" -> { "ColorMatch", {0.63, 0.34}, {0.295, 0.605}, {0.15, 0.075}, "D50", 1.8}, "ProPhoto" -> { "ProPhoto", {0.7347, 0.2653}, {0.1596, 0.8404}, {0.0366, 0.0001}, "D50", 1.8}}]; $CellContext`colorSpacesQ[ Pattern[$CellContext`s, Blank[String]]] := MemberQ[ Part[$CellContext`colorSpaces, All, 1], $CellContext`s]; $CellContext`xyzToRGB[ PatternTest[ Pattern[$CellContext`s, Blank[]], $CellContext`colorSpacesQ]] := \ ($CellContext`xyzToRGB[$CellContext`s] = Block[{$CellContext`cs, $CellContext`xr, $CellContext`yr, \ $CellContext`zr, $CellContext`xg, $CellContext`yg, $CellContext`zg, \ $CellContext`xb, $CellContext`yb, $CellContext`zb, $CellContext`xw, \ $CellContext`yw, $CellContext`zw, $CellContext`M, $CellContext`W, \ $CellContext`InvM, $CellContext`ScaleW, $CellContext`ConvM}, \ $CellContext`cs = ReplaceAll[$CellContext`s, $CellContext`colorSpaces]; \ $CellContext`cs = ReplaceAll[$CellContext`cs, $CellContext`whitePoints]; \ $CellContext`M = {{$CellContext`xr, $CellContext`yr, \ $CellContext`zr}, {$CellContext`xg, $CellContext`yg, \ $CellContext`zg}, {$CellContext`xb, $CellContext`yb, \ $CellContext`zb}}; $CellContext`W = {$CellContext`xw, \ $CellContext`yw, $CellContext`zw}; $CellContext`InvM = Transpose[ Inverse[$CellContext`M] Det[$CellContext`M]]; $CellContext`ScaleW = Simplify[ Dot[$CellContext`InvM, $CellContext`W/$CellContext`yw]]; \ $CellContext`ConvM = $CellContext`InvM/$CellContext`ScaleW; \ $CellContext`ConvM = ReplaceAll[$CellContext`ConvM, {$CellContext`zr -> 1 - ($CellContext`xr + $CellContext`yr), \ $CellContext`zg -> 1 - ($CellContext`xg + $CellContext`yg), \ $CellContext`zb -> 1 - ($CellContext`xb + $CellContext`yb), \ $CellContext`zw -> 1 - ($CellContext`xw + $CellContext`yw)}]; \ $CellContext`ConvM = ReplaceAll[$CellContext`ConvM, {$CellContext`xr -> Part[$CellContext`cs, 2, 1], $CellContext`yr -> Part[$CellContext`cs, 2, 2], $CellContext`xg -> Part[$CellContext`cs, 3, 1], $CellContext`yg -> Part[$CellContext`cs, 3, 2], $CellContext`xb -> Part[$CellContext`cs, 4, 1], $CellContext`yb -> Part[$CellContext`cs, 4, 2], $CellContext`xw -> Part[$CellContext`cs, 5, 1], $CellContext`yw -> Part[$CellContext`cs, 5, 2]}]]); $CellContext`gammaCorrect["sRGB"] := With[{$CellContext`cc = 0.018}, Map[ If[# < $CellContext`cc, # ((1.099 $CellContext`cc^0.45 - 0.099)/$CellContext`cc), 1.099 #^0.45 - 0.099]& , SlotSequence[1]]& ]; $CellContext`gammaCorrect[ PatternTest[ Pattern[$CellContext`\[Gamma], Blank[]], NumericQ]] := SlotSequence[1]^( 1/$CellContext`\[Gamma])& ; $CellContext`gammaCorrect[None] := SlotSequence[1]& ; $CellContext`normalizeRGB := With[{$CellContext`max = Max[ SlotSequence[1]]}, If[$CellContext`max <= 0., SlotSequence[1], SlotSequence[1]/$CellContext`max]]& ; $CellContext`clipRGB := Clip[ SlotSequence[1], {0, 1}]& ; $CellContext`displayGamutMask[ Pattern[$CellContext`y, Alternatives["1931", "1964"]], Optional[ Pattern[$CellContext`style, Blank[]], Black]] := Graphics[{$CellContext`style, Polygon[ Join[{{-1, -1}, {2, -1}, {2, 2}, {-1, 2}, {-1, -1}}, Table[ $CellContext`CIEGamutBoundaryCurve[$CellContext`y][$\ CellContext`t], {$CellContext`t, 0, 1, 0.005}], { Part[ $CellContext`CIEData[$CellContext`y], 1, Span[5, 6]]}]]}]; $CellContext`displaySystemGamutMask[ PatternTest[ Pattern[$CellContext`s, Blank[]], $CellContext`colorSpacesQ], Optional[ Pattern[$CellContext`style, Blank[]], Black]] := With[{$CellContext`cs = ReplaceAll[$CellContext`s, $CellContext`colorSpaces]}, Graphics[{$CellContext`style, Polygon[ Join[{{-1, -1}, {2, -1}, {2, 2}, {-1, 2}, {-1, -1}}, { Part[$CellContext`cs, 2], Part[$CellContext`cs, 3], Part[$CellContext`cs, 4], Part[$CellContext`cs, 2]}]]}]]; $CellContext`displayGamutBoundary[ Pattern[$CellContext`y, Alternatives["1931", "1964"]], Optional[ Pattern[$CellContext`style, Blank[]], White]] := Graphics[{$CellContext`style, Line[ Append[ Table[ $CellContext`CIEGamutBoundaryCurve[$CellContext`y][$\ CellContext`t], {$CellContext`t, 0, 1, 0.005}], Part[ $CellContext`CIEData[$CellContext`y], 1, Span[5, 6]]]]}]; $CellContext`displaySystemGamutBoundary[ PatternTest[ Pattern[$CellContext`s, Blank[]], $CellContext`colorSpacesQ], Optional[ Pattern[$CellContext`style, Blank[]], White]] := With[{$CellContext`cs = ReplaceAll[$CellContext`s, $CellContext`colorSpaces]}, Graphics[{$CellContext`style, Line[{ Part[$CellContext`cs, 2], Part[$CellContext`cs, 3], Part[$CellContext`cs, 4], Part[$CellContext`cs, 2]}]}]]; $CellContext`displayInfo[ PatternTest[ Pattern[$CellContext`s, Blank[]], $CellContext`colorSpacesQ]] := With[{$CellContext`cs = ReplaceAll[ ReplaceAll[$CellContext`s, $CellContext`colorSpaces], \ $CellContext`whitePoints]}, Graphics[ Inset[ Style[ Column[{"primary illuminants", Grid[{{"", "red", "green", "blue", "white"}, Prepend[ Map[NumberForm[ Part[$CellContext`cs, #, 1], 4]& , Range[2, 5]], "x"], Prepend[ Map[NumberForm[ Part[$CellContext`cs, #, 2], 4]& , Range[2, 5]], "y"]}]}, Alignment -> Center], White, "SmallText"], Scaled[{0.99, 0.99}], { Right, Top}]]]; $CellContext`displayColorGamut[ PatternTest[ Pattern[$CellContext`s$, Blank[]], $CellContext`colorSpacesQ], Pattern[$CellContext`g$, Blank[]], Optional[ Pattern[$CellContext`opts$, BlankSequence[]], {}]] := With[{$CellContext`gc$ = \ $CellContext`gammaCorrect[$CellContext`g$], $CellContext`m$ = \ $CellContext`xyzToRGB[$CellContext`s$]}, ParametricPlot[{$CellContext`x, $CellContext`y$$}, \ {$CellContext`x, 0, 0.8}, {$CellContext`y$$, 0, 0.9}, ColorFunction -> (RGBColor[ $CellContext`gc$[ $CellContext`clipRGB[ $CellContext`normalizeRGB[ Dot[$CellContext`m$, {#, #2, 1. - (# + #2)}]]]]]& ), ColorFunctionScaling -> False, Mesh -> None, $CellContext`opts$, PlotPoints -> ControlActive[15, 50], PlotRangeClipping -> False, ImagePadding -> All]]; $CellContext`displayColorGamutRaster[ PatternTest[ Pattern[$CellContext`s$, Blank[]], $CellContext`colorSpacesQ], Pattern[$CellContext`g$, Blank[]], Optional[ Pattern[$CellContext`opts$, BlankSequence[]], {}]] := With[{$CellContext`gc$ = \ $CellContext`gammaCorrect[$CellContext`g$], $CellContext`m$ = \ $CellContext`xyzToRGB[$CellContext`s$]}, Graphics[ Raster[ Table[ $CellContext`gc$[ $CellContext`clipRGB[ $CellContext`normalizeRGB[ Dot[$CellContext`m$, {$CellContext`x, $CellContext`y$$, 1. - $CellContext`x - $CellContext`y$$}]]]], \ {$CellContext`y$$, 0, 0.9, ControlActive[0.05, 0.01]}, {$CellContext`x, 0, 0.8, ControlActive[0.05, 0.01]}], {{0, 0}, {0.8, 0.9}}], $CellContext`opts$, PlotRangeClipping -> False, ImagePadding -> All]]; $CellContext`epWhitePoint[ PatternTest[ Pattern[$CellContext`s, Blank[]], $CellContext`colorSpacesQ]] := With[{$CellContext`cs = ReplaceAll[$CellContext`s, $CellContext`colorSpaces]}, { Opacity[1], White, EdgeForm[ Opacity[0.9]], Tooltip[ Disk[ Part[ ReplaceAll[$CellContext`cs, $CellContext`whitePoints], \ -2], Offset[{3, 3}]], Part[ ReplaceAll[$CellContext`cs, $CellContext`whitePoints], \ -2]], Text[ Style[ Part[$CellContext`cs, -2], "SmallText", Black], Offset[{4, 2}, Part[ ReplaceAll[$CellContext`cs, $CellContext`whitePoints], \ -2]], {Left, Bottom}]}]; $CellContext`epPrimaries[ PatternTest[ Pattern[$CellContext`s, Blank[]], $CellContext`colorSpacesQ]] := With[{$CellContext`cs = ReplaceAll[$CellContext`s, $CellContext`colorSpaces]}, { Opacity[1], Lighter[Red], EdgeForm[ Opacity[0.9]], Tooltip[ Disk[ Part[$CellContext`cs, 2], Offset[{3, 3}]], Part[$CellContext`cs, 2]], Lighter[Green], Tooltip[ Disk[ Part[$CellContext`cs, 3], Offset[{3, 3}]], Part[$CellContext`cs, 3]], Lighter[Blue], Tooltip[ Disk[ Part[$CellContext`cs, 4], Offset[{3, 3}]], Part[$CellContext`cs, 4]]}]; $CellContext`epWavelengthTicks[ Pattern[$CellContext`y, Alternatives["1931", "1964"]], Optional[ Pattern[$CellContext`style, Blank[]], White]] := Map[{White, EdgeForm[ Opacity[0.5]], Disk[ Part[#, Span[5, 6]], Offset[{2, 2}]], Text[ Style[ Part[#, 1], $CellContext`style], Offset[ If[Part[#, 1] < 520, {-4, 0}, {2, 2}], Part[#, Span[5, 6]]], If[Part[#, 1] < 520, {Right, Center}, {Left, Bottom}]]}& , Join[{ Part[ $CellContext`CIEData[$CellContext`y], 1]}, Part[ $CellContext`CIEData[$CellContext`y], Span[17, 50, 2]], { Part[ $CellContext`CIEData[$CellContext`y], -21]}]]; \ $CellContext`epMeshes[ Optional[ Pattern[$CellContext`style, Blank[]], Directive[Dotted, White, Opacity[0.3]]]] := {$CellContext`style, Line[ Map[{{#, 0}, {#, 0.9}}& , Range[0, 1, 0.1]]], Line[ Map[{{0, #}, {0.8, #}}& , Range[0, 1, 0.1]]]}; Null); Typeset`initDone$$ = True), SynchronousInitialization->False, UnsavedVariables:>{Typeset`initDone$$}, UntrackedVariables:>{Typeset`size$$}], "Manipulate", Deployed->True, StripOnInput->False], Manipulate`InterpretManipulate[1]]], "Output", CellGroupingRules->{"GroupTogetherGrouping", 10000.}, CellChangeTimes->{3.7607348422461567`*^9}, CellID->231222] }, {2}]]