diff options
author | Marius <mariausol@gmail.com> | 2013-10-20 01:20:14 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2013-10-20 01:20:14 +0300 |
commit | 965214d981e6129b782c67adcaf3a81aedcb0bac (patch) | |
tree | 84f5945aae8efc9b6eb1898b873be5453cafe43d /tex/context/base/colo-ini.lua | |
parent | e7d0d90a434e5452ff9e86c8abab5a4cac35e2f1 (diff) | |
download | context-965214d981e6129b782c67adcaf3a81aedcb0bac.tar.gz |
stable 2013.05.28 00:36
Diffstat (limited to 'tex/context/base/colo-ini.lua')
-rw-r--r-- | tex/context/base/colo-ini.lua | 143 |
1 files changed, 39 insertions, 104 deletions
diff --git a/tex/context/base/colo-ini.lua b/tex/context/base/colo-ini.lua index 535ee71b8..b9e8eb203 100644 --- a/tex/context/base/colo-ini.lua +++ b/tex/context/base/colo-ini.lua @@ -287,7 +287,6 @@ local left = P("(") local right = P(")") local comma = P(",") local mixnumber = lpegpatterns.number / tonumber - + P("-") / function() return -1 end local mixname = C(P(1-left-right-comma)^1) ----- mixcolor = Cc("M") * mixnumber * left * mixname * (comma * mixname)^-1 * right * P(-1) local mixcolor = Cc("M") * mixnumber * left * mixname * (comma * mixname)^0 * right * P(-1) -- one is also ok @@ -510,23 +509,7 @@ colors.mpcolor = mpcolor colors.mpnamedcolor = mpnamedcolor colors.mpoptions = mpoptions --- local function formatcolor(ca,separator) --- local cv = colorvalues[ca] --- if cv then --- local c, cn, f, t, model = { }, 0, 13, 13, cv[1] --- if model == 2 then --- return c[2] --- elseif model == 3 then --- return concat(c,separator,3,5) --- elseif model == 4 then --- return concat(c,separator,6,9) --- end --- else --- return 0 --- end --- end - -local function formatcolor(ca,separator) +function colors.formatcolor(ca,separator) local cv = colorvalues[ca] if cv then local c, cn, f, t, model = { }, 0, 13, 13, cv[1] @@ -547,64 +530,41 @@ local function formatcolor(ca,separator) end end -local function formatgray(ca,separator) +function colors.formatgray(ca,separator) local cv = colorvalues[ca] return format("%0.3f",(cv and cv[2]) or 0) end -colors.formatcolor = formatcolor -colors.formatgray = formatgray - -local f_gray = formatters["s=%1.3f"] -local f_rgb = formatters["r=%1.3f%sg=%1.3f%sb=%1.3f"] -local f_cmyk = formatters["c=%1.3f%sm=%1.3f%sy=%1.3f%sk=%1.3f"] -local f_spot_name = formatters["p=%s"] -local f_spot_value = formatters["p=%1.3f"] -local f_transparency = formatters["a=%1.3f%st=%1.3f"] -local f_both = formatters["%s%s%s"] - -local function colorcomponents(ca,separator) -- return list +function colors.colorcomponents(ca) -- return list local cv = colorvalues[ca] if cv then local model = cv[1] if model == 2 then - return f_gray(cv[2]) + return format("s=%1.3f",cv[2]) elseif model == 3 then - return f_rgb(cv[3],separator or " ",cv[4],separator or " ",cv[5]) + return format("r=%1.3f g=%1.3f b=%1.3f",cv[3],cv[4],cv[5]) elseif model == 4 then - return f_cmyk(cv[6],separator or " ",cv[7],separator or " ",cv[8],separator or " ",cv[9]) + return format("c=%1.3f m=%1.3f y=%1.3f k=%1.3f",cv[6],cv[7],cv[8],cv[9]) elseif type(cv[13]) == "string" then - return f_spot_name(cv[13]) + return format("p=%s",cv[13]) else - return f_spot_value(cv[13]) + return format("p=%1.3f",cv[13]) end else return "" end end -local function transparencycomponents(ta,separator) +function colors.transparencycomponents(ta) local tv = transparencyvalues[ta] if tv then - return f_transparency(tv[1],separator or " ",tv[2]) + return format("a=%1.3f t=%1.3f",tv[1],tv[2]) else return "" end end -local function processcolorcomponents(ca,separator) - local cs = colorcomponents(ca,separator) - local ts = transparencycomponents(ca,separator) - if cs == "" then - return ts - elseif ts == "" then - return cs - else - return f_both(cs,separator or " ",ts) - end -end - -local function spotcolorname(ca,default) +function colors.spotcolorname(ca,default) local cv, v = colorvalues[ca], "unknown" if cv and cv[1] == 5 then v = cv[10] @@ -612,7 +572,7 @@ local function spotcolorname(ca,default) return tostring(v) end -local function spotcolorparent(ca,default) +function colors.spotcolorparent(ca,default) local cv, v = colorvalues[ca], "unknown" if cv and cv[1] == 5 then v = cv[12] @@ -623,7 +583,7 @@ local function spotcolorparent(ca,default) return tostring(v) end -local function spotcolorvalue(ca,default) +function colors.spotcolorvalue(ca,default) local cv, v = colorvalues[ca], 0 if cv and cv[1] == 5 then v = cv[13] @@ -631,20 +591,13 @@ local function spotcolorvalue(ca,default) return tostring(v) end -colors.colorcomponents = colorcomponents -colors.transparencycomponents = transparencycomponents -colors.processcolorcomponents = processcolorcomponents -colors.spotcolorname = spotcolorname -colors.spotcolorparent = spotcolorparent -colors.spotcolorvalue = spotcolorvalue - -- experiment (a bit of a hack, as we need to get the attribute number) local min = math.min -- a[b,c] -> b+a*(c-b) -local function inbetween(one,two,i,fraction) +local function f(one,two,i,fraction) local o, t = one[i], two[i] local otf = o + fraction * (t - o) if otf > 1 then @@ -653,22 +606,6 @@ local function inbetween(one,two,i,fraction) return otf end -local function justone(one,fraction,i) - local otf = fraction * one[i] - if otf > 1 then - otf = 1 - end - return otf -end - -local function complement(one,fraction,i) - local otf = - fraction * (1 - one[i]) - if otf > 1 then - otf = 1 - end - return otf -end - function colors.defineintermediatecolor(name,fraction,c_one,c_two,a_one,a_two,specs,global,freeze) fraction = tonumber(fraction) or 1 local one, two = colorvalues[c_one], colorvalues[c_two] @@ -680,38 +617,37 @@ function colors.defineintermediatecolor(name,fraction,c_one,c_two,a_one,a_two,sp -- problems with weighted gray conversions and work with original values local ca if csone == 2 then - ca = register_color(name,'gray',inbetween(one,two,2,fraction)) + ca = register_color(name,'gray',f(one,two,2,fraction)) elseif csone == 3 then - ca = register_color(name,'rgb', inbetween(one,two,3,fraction), - inbetween(one,two,4,fraction), - inbetween(one,two,5,fraction)) + ca = register_color(name,'rgb', f(one,two,3,fraction), + f(one,two,4,fraction), + f(one,two,5,fraction)) elseif csone == 4 then - ca = register_color(name,'cmyk',inbetween(one,two,6,fraction), - inbetween(one,two,7,fraction), - inbetween(one,two,8,fraction), - inbetween(one,two,9,fraction)) + ca = register_color(name,'cmyk',f(one,two,6,fraction), + f(one,two,7,fraction), + f(one,two,8,fraction), + f(one,two,9,fraction)) else - ca = register_color(name,'gray',inbetween(one,two,2,fraction)) + ca = register_color(name,'gray',f(one,two,2,fraction)) end definecolor(name,ca,global,freeze) -- end else - local inbetween = fraction < 0 and complement or justone local csone = one[1] local ca if csone == 2 then - ca = register_color(name,'gray',inbetween(one,fraction,2)) + ca = register_color(name,'gray',fraction*one[2]) elseif csone == 3 then - ca = register_color(name,'rgb', inbetween(one,fraction,3), - inbetween(one,fraction,4), - inbetween(one,fraction,5)) + ca = register_color(name,'rgb', fraction*one[3], + fraction*one[4], + fraction*one[5]) elseif csone == 4 then - ca = register_color(name,'cmyk',inbetween(one,fraction,6), - inbetween(one,fraction,7), - inbetween(one,fraction,8), - inbetween(one,fraction,9)) + ca = register_color(name,'cmyk',fraction*one[6], + fraction*one[7], + fraction*one[8], + fraction*one[9]) else - ca = register_color(name,'gray',inbetween(one,fraction,2)) + ca = register_color(name,'gray',fraction*one[2]) end definecolor(name,ca,global,freeze) end @@ -816,14 +752,13 @@ commands.definemultitonecolor = colors.definemultitonecolor commands.definetransparency = colors.definetransparency commands.defineintermediatecolor = colors.defineintermediatecolor -function commands.spotcolorname (a) context(spotcolorname (a)) end -function commands.spotcolorparent (a) context(spotcolorparent (a)) end -function commands.spotcolorvalue (a) context(spotcolorvalue (a)) end -function commands.colorcomponents (a,s) context(colorcomponents (a,s)) end -function commands.transparencycomponents(a,s) context(transparencycomponents(a,s)) end -function commands.processcolorcomponents(a,s) context(processcolorcomponents(a,s)) end -function commands.formatcolor (...) context(formatcolor (...)) end -function commands.formatgray (...) context(formatgray (...)) end +function commands.spotcolorname (a) context(colors.spotcolorname (a)) end +function commands.spotcolorparent (a) context(colors.spotcolorparent (a)) end +function commands.spotcolorvalue (a) context(colors.spotcolorvalue (a)) end +function commands.colorcomponents (a) context(colors.colorcomponents (a)) end +function commands.transparencycomponents(a) context(colors.transparencycomponents(a)) end +function commands.formatcolor (...) context(colors.formatcolor (...)) end +function commands.formatgray (...) context(colors.formatgray (...)) end function commands.mpcolor(model,ca,ta,default) context(mpcolor(model,ca,ta,default)) |