--============================================================================= -- cmyk.lua --- -- Copyright (c) 2019-2024 Wang Shidong & Contributors -- Author: Wang Shidong < wsdjeg@outlook.com > -- URL: https://spacevim.org -- License: GPLv3 --============================================================================= local M = {} local color = require('spacevim.api.color') local util = require('cpicker.util') local cyan = 0 local magenta = 0 local yellow = 0 local black = 0 local function on_change_argv() return 'cmyk', { cyan, magenta, yellow, black } end function M.buf_text() local rst = {} local c_bar = util.generate_bar(cyan, '+') local m_bar = util.generate_bar(magenta, '+') local y_bar = util.generate_bar(yellow, '+') local k_bar = util.generate_bar(black, '+') table.insert(rst, 'CMYK: C: ' .. string.format('%4s', math.floor(cyan * 100 + 0.5)) .. ' ' .. c_bar) table.insert(rst, ' M: ' .. string.format('%4s', math.floor(magenta * 100 + 0.5)) .. ' ' .. m_bar) table.insert(rst, ' Y: ' .. string.format('%4s', math.floor(yellow * 100 + 0.5)) .. ' ' .. y_bar) table.insert(rst, ' K: ' .. string.format('%4s', math.floor(black * 100 + 0.5)) .. ' ' .. k_bar) return rst end function M.color_code() return ' =========' .. string.format( ' cmyk(%s%%, %s%%, %s%%, %s%%)', math.floor(cyan * 100 + 0.5), math.floor(magenta * 100 + 0.5), math.floor(yellow * 100 + 0.5), math.floor(black * 100 + 0.5) ) end local function increase_cyan() if cyan <= 0.99 then cyan = cyan + 0.01 elseif cyan < 1 then cyan = 1 end return on_change_argv() end local function reduce_cyan() if cyan > 0.01 then cyan = cyan - 0.01 elseif cyan > 0 then cyan = 0 end return on_change_argv() end local function increase_magenta() if magenta <= 0.99 then magenta = magenta + 0.01 elseif magenta < 1 then magenta = 1 end return on_change_argv() end local function reduce_magenta() if magenta > 0.01 then magenta = magenta - 0.01 elseif magenta > 0 then magenta = 0 end return on_change_argv() end local function increase_yellow() if yellow <= 0.99 then yellow = yellow + 0.01 elseif yellow < 1 then yellow = 1 end return on_change_argv() end local function reduce_yellow() if yellow > 0.01 then yellow = yellow - 0.01 elseif yellow > 0 then yellow = 0 end return on_change_argv() end local function increase_black() if black <= 0.99 then black = black + 0.01 elseif black < 1 then black = 1 end return on_change_argv() end local function reduce_black() if black > 0.01 then black = black - 0.01 elseif black > 0 then black = 0 end return on_change_argv() end function M.increase_reduce_functions() return { { increase_cyan, reduce_cyan }, { increase_magenta, reduce_magenta }, { increase_yellow, reduce_yellow }, { increase_black, reduce_black }, } end function M.on_change(f, code) if f == 'cmyk' then return end cyan, magenta, yellow, black = color[f .. '2cmyk'](unpack(code)) end return M