| OLD | NEW |
| 1 function sk_scrape_startcanvas(c, fileName) end | 1 function sk_scrape_startcanvas(c, fileName) end |
| 2 function sk_scrape_endcanvas(c, fileName) end | 2 function sk_scrape_endcanvas(c, fileName) end |
| 3 | 3 |
| 4 LuaDoubleNearlyZero = 1.0 / bit32.lshift(1.0, 12) | 4 LuaDoubleNearlyZero = 1.0 / bit32.lshift(1.0, 12) |
| 5 | 5 |
| 6 function LuaDoubleNearlyEqual(a, b) | 6 function LuaDoubleNearlyEqual(a, b) |
| 7 return math.abs(a-b) <= LuaDoubleNearlyZero | 7 return math.abs(a-b) <= LuaDoubleNearlyZero |
| 8 end | 8 end |
| 9 | 9 |
| 10 verbs = {} |
| 10 gradients = {} | 11 gradients = {} |
| 11 | 12 |
| 12 i = 1 | 13 i = 1 |
| 13 | 14 |
| 14 function sk_scrape_accumulate(t) | 15 function sk_scrape_accumulate(t) |
| 15 local p = t.paint | 16 local p = t.paint |
| 16 if p then | 17 if p then |
| 17 local s = p:getShader() | 18 local s = p:getShader() |
| 18 if s then | 19 if s then |
| 19 local g = s:asAGradient() | 20 local g = s:asAGradient() |
| 20 if g then | 21 if g then |
| 22 if verbs[t.verb] then |
| 23 verbs[t.verb] = verbs[t.verb] + 1 |
| 24 else |
| 25 verbs[t.verb] = 1 |
| 26 end |
| 27 |
| 21 gradients[i] = {} | 28 gradients[i] = {} |
| 22 | 29 |
| 23 gradients[i].colorCount = g.colorCount | 30 gradients[i].colorCount = g.colorCount |
| 24 gradients[i].type = g.type | 31 gradients[i].type = g.type |
| 25 gradients[i].tile = g.tile | 32 gradients[i].tile = g.tile |
| 26 | 33 |
| 27 isEvenlySpaced = true | 34 isEvenlySpaced = true |
| 28 for j = 1, g.colorCount, 1 do | 35 for j = 1, g.colorCount, 1 do |
| 29 if not LuaDoubleNearlyEqual(g.positions[j], (j-1)/(g.colorCo
unt-1)) then | 36 if not LuaDoubleNearlyEqual(g.positions[j], (j-1)/(g.colorCo
unt-1)) then |
| 30 isEvenlySpaced = false | 37 isEvenlySpaced = false |
| 31 end | 38 end |
| 32 end | 39 end |
| 33 gradients[i].isEvenlySpaced = isEvenlySpaced | 40 gradients[i].isEvenlySpaced = isEvenlySpaced |
| 34 | 41 |
| 35 numHardStops = 0 | 42 numHardStops = 0 |
| 36 for j = 2, g.colorCount, 1 do | 43 for j = 2, g.colorCount, 1 do |
| 37 if LuaDoubleNearlyEqual(g.positions[j], g.positions[j-1]) th
en | 44 if LuaDoubleNearlyEqual(g.positions[j], g.positions[j-1]) th
en |
| 38 numHardStops = numHardStops + 1 | 45 numHardStops = numHardStops + 1 |
| 39 end | 46 end |
| 40 end | 47 end |
| 41 gradients[i].numHardStops = numHardStops; | 48 gradients[i].numHardStops = numHardStops |
| 42 | 49 |
| 50 gradients[i].verb = t.verb |
| 51 |
| 43 gradients[i].positions = {} | 52 gradients[i].positions = {} |
| 44 for j = 1, g.colorCount, 1 do | 53 for j = 1, g.colorCount, 1 do |
| 45 gradients[i].positions[j] = g.positions[j] | 54 gradients[i].positions[j] = g.positions[j] |
| 46 end | 55 end |
| 47 | 56 |
| 48 i = i + 1 | 57 i = i + 1 |
| 49 end | 58 end |
| 50 end | 59 end |
| 51 end | 60 end |
| 52 end | 61 end |
| 53 | 62 |
| 54 function sk_scrape_summarize() | 63 function sk_scrape_summarize() |
| 55 for k, v in pairs(gradients) do | 64 for k, v in pairs(gradients) do |
| 56 local pos = "" | 65 local pos = "" |
| 57 for j = 1, v.colorCount , 1 do | 66 for j = 1, v.colorCount , 1 do |
| 58 pos = pos .. v.positions[j] | 67 pos = pos .. v.positions[j] |
| 59 if j ~= v.colorCount then | 68 if j ~= v.colorCount then |
| 60 pos = pos .. "," | 69 pos = pos .. "," |
| 61 end | 70 end |
| 62 end | 71 end |
| 63 | 72 |
| 64 io.write(string.format("%d %s %s %d %d %s\n", | 73 io.write(string.format("%d %s %s %d %d %s %s\n", |
| 65 v.colorCount, | 74 v.colorCount, |
| 66 v.type, | 75 v.type, |
| 67 v.tile, | 76 v.tile, |
| 68 tonumber(v.isEvenlySpaced and 1 or 0), | 77 tonumber(v.isEvenlySpaced and 1 or 0), |
| 69 v.numHardStops, | 78 v.numHardStops, |
| 79 v.verb, |
| 70 pos)) | 80 pos)) |
| 71 end | 81 end |
| 72 end | 82 end |
| 73 | 83 |
| OLD | NEW |