FAQ IX - Simular variantes del colorímetro i1d3 en Windows
by
, 13/12/23 at 21:24:29 (17750 Visitas)
Gracias al software público y gratuito de LeDoge es posible simular que vuestro colorímetro i1d3 se comporte como cualquier otra variante, “para lo que sea que queráis simularlo” , limitado eso sí a las aplicaciones que usen el SDK oficial de Xrite:
https://github.com/ledoge/i1d3_hook
En ese link se describe su uso, está bien explicado y no hay nada que yo pueda añadir.
Se necesitan permisos de administrador y debido a la naturaleza de las herramientas de inyección, quizás debáis añadir excepciones al antivirus y está limitado a MS Windows (10, 11). No es para macOS ni estoy seguro que por la naturaleza del sistema operativo de Apple se pueda portar o sea posible ese tipo de funcionalidad de inyección.
La versión básica que os bajáis compilada de la web de LeDoge y lista para usar (fichero .DLL) simula un i1 Display Pro OEM para aplicaciones 32bit y sólo incluye soportes para algunos i1d3 (los más populares).
Si no os basta con eso, vais a necesitar saber un poquito de programación, o buscaros a alguien que o ayude. De AQUÍ en adelante voy a suponer que hablamos el mismo idioma y esta guía se centra en explicar cómo sacarle aun más partido.
La librería de LeDoge es el código C “i1d3_hook.c” y como entorno recomendable se indica MSYS (gratis) al que hay que instalarle la librería MinHook una vez dentro de MSYS:
Código:pacman -S mingw-w64-i686-MinHook
1- Cómo hacer que soporte tu dispositivo físico
Para completar la lista de dispositivos soportados por i1d3_hook, hay que reemplazar la lista codes por esta lista:
Donde esta lista es pública y está presente en el código actual de ArgyllCMS 3.1.0 o en versiones viejas como la 2.1.2 (que tiene uno extra para alumnos avanzados, pero que en la práctica os da igual).Código:uint64_t codes[] = { 0xe9622e9f8d63e133, // i1d3_disppro 0xe01e6e0a257462de, // i1d3_munkdisp 0xcaa62b2c30815b61, // i1d3_dpp_oem 0xa91194795b168761, // i1d3_nec_ssp 0x160eb6ae14440e70, // i1d3_quato_sh3 0x291e41d751937bdd, // i1d3_hp_dreamc 0x1abfae03f25ac8e8, // i1d3_wacom_dc 0x828c43e9cbb8a8ed, // TPA1 0xe8d1a980d146f7ad, // i1d3_barco 0x171ae2952e5c7664, // i1d3_crysta 0x64d8c5464b24b4a7, // i1d3_viewsonic_xri1 };
Si vuestro aparato, el físico que habéis comprado, ya estaba en la lista de LeDoge NO hace falta tocar nada aqui. Lo normal es que no tengáis que tocar nada.
2- Cómo simular otro dispositivo
Para indicar que variante queréis simular hay que actualizar:
y reemplazar “OE” por el ID que quieras simular, por ejemploCódigo:char *spoofed_variant = "OE";
- CM es un ColorMunki Display o un i1Display Studio (el barato)
- I1 (i uno) es un i1 Display Pro RETAIL (el que i1 Display Pro que comprabais)
- OE es un i1 display pro OEM
- PL es un i1 Display Pro Plus
- C2 es un ColorChecker Display Pro
- C3 es un ColorChecker Display Plus
- C6 es un Calibrite Display SL (supuestamente el nuevo “colormunki display”, el barato)
- C7 es un Calibrite Display Pro HL (el nuevo “i1DisplayPro”)
- C8 es un Calibrite Display Plus HL
… etc, también existe el i1d3 de HP para los Dreamcolor, el i1d3 de WAcom para las Cintiq, el C6 de SPectracal, etc pero para esos otros os buscáis la vida (o no...)
Obviamente si tienes un I1 rev. A (viejo) no vas a poder usar ciertas funciones como la medición AIO de los C2, C3, C7 y C8. Por tanto, si el software que fueras a usar para medida usara explícitamente esa funcionalidad, no lo hará. En la práctica no os debería de dar problemas simular un modelo mas moderno.
3- Cómo hacer que funcione con aplicaciones 64bit
Como dije anteriormente, esta librería de LeDoge os la entrega compilada en 32bit y funciona para aplicaciones 32bit que usen la librería oficial/SDK de Xrite. Esto del "i1d3_hook" no os hace falta con ArgyllCMS, DisplayCAL o HCFR.
Ya hay aplicaciones que usan el SDK de Xrite en 64bit y al igual que con los unlock codes o el identificador, “tal como viene” puede que el software i1d3_hook no os sirva. Para darle soporte para aplicaciones de 64bit debajo de
hay que añadir la parte de 64bit, con lo que quedaría:Código:if (!i1d3SDK) { i1d3SDK = GetModuleHandle("i1d3.dll"); }
y después compilar con el entorno MSYS de 64bit y será válido sólo para 64bit.Código:if (!i1d3SDK) { i1d3SDK = GetModuleHandle("i1d3.dll"); } //win64 if (!i1d3SDK) { i1d3SDK = GetModuleHandle("i1d3SDK64.dll"); }
Sed un poco listos y no llaméis a todos los juguetes que os hagáis "i1d3_hook.dll", ponedle una coletilla o apellido para no liaros.
Una vez compilada la DLL, leed en la web de LeDoge cómo se usa.
<<<DISCLAMER>>>
Lo que hagáis con estas librerías no es de mi incumbencia, ni acepto pegas o responsabilidad alguna del uso que hagáis porque no es más que un texto DIVULGATIVO acerca de las posibilidades del trabajo PÚBLICO de LeDoge en GitHub.
Yo sé usarla y no necesito esta entrada del blog, pero muchos de vosotros sí que pudierais necesitar esta guía “por lo que sea” .
Si tengo que borrar esta entrada del blog por culpa de algún Ned Flanders quien va a perder vais a ser vosotros y no habrá mas guías.