Converters are pairs of serialization and deserialization functions used to convert color values to text and text to color values.
If provided text-to-color and color-to-text conversions are not enough, and you need a custom color input/output format, you will have to write a custom converter. Converter is basically a pair of functions: one function transforms color object into a line of text, and another function parses a line of text and reports the level of confidence that the provided text can be parsed into a valid color.
Create an empty file named /home/foobar/.config/gpick/user_init.lua where foobar is your user name. Open this file with your favorite text editor.
Converters are declared by calling addConverter on gpick with three or four arguments. Passing only three arguments will define a converter that can only convert color to text and does not have deserialization support. The arguments are as follows:
Code example:
local gpick = require('gpick') --import gpick library local color = require('gpick/color') --import color library local round = require('helpers').round --import round function from helpers library local serialize = function(colorObject) --declare serialize function local c = colorObject:getColor() --get color values return string.format('#%02X%02X%02X - %s', round(c:red() * 255), round(c:green() * 255), round(c:blue() * 255), colorObject:getName()) --format to hex color code and color name end local deserialize = function(text, colorObject) --declare deserialize function local findStart, findEnd, red, green, blue = string.find(text, '#([%x][%x])([%x][%x])([%x][%x])[^%x]?') --find hex color code pattern in text if findStart ~= nil then colorObject:setColor(color:new(tonumber(red, 16) / 255, tonumber(green, 16) / 255, tonumber(blue, 16) / 255)) --set color values --return 1 when text is exactly matched as hex color code, otherwise return value less than 1 return 1 - (math.atan(findStart - 1) / math.pi) - (math.atan(string.len(text) - findEnd) / math.pi) else return -1 --no hex color code found end end gpick:addConverter('custom', 'Custom', serialize, deserialize) --register custom converter }
Restart Gpick to load updated user_init.lua file. Open converter setup dialog by activating Edit->Edit Converters... menu item. Your new custom converter should be in the bottom of the list. Activate Copy checkbox if converter should be available in copy menus. Activate Edit/Paste checkbox if converter should be used in edit dialogs and when pasting colors from other applications.
Converter list can be reordered by dragging and dropping converters. First converter with active Copy option is used as default when copying colors to other applications.