defmodule Image.Plug.Pipeline.Ops.IccTransform do @moduledoc """ ICC-profile-driven colourspace conversion. Distinct from `Ops.Colorspace` (which uses libvips' named-interpretation modes); this op invokes `Image.to_colorspace/3` and runs an actual profile-based transform. Used to map provider parameters that target specific output profiles — e.g. Cloudinary's `cs_adobergb` (when wired against an Adobe RGB ICC file) and any custom-ICC overlay. `:profile` is one of `:srgb` / `:cmyk` / `:p3` (libvips built-ins) or a path to an `.icc` file. `:intent` is forwarded to `Image.to_colorspace/3` and defaults to `:relative`. """ @type intent :: :relative | :perceptual | :saturation | :absolute @type t :: %__MODULE__{ profile: atom() | binary(), intent: intent() } defstruct profile: :srgb, intent: :relative end