get("#388") -- rect functions get("#348") -- rgb functions get("#430") -- makeIcon get("#452") -- findGrid get("#454") -- Java character reference get("#433") -- iconDiff function trimTable(tbl) for i = 1, #tbl do tbl[i] = tbl[i]:gsub(" +$", "") end while #tbl > 0 and tbl[#tbl] == "" do tbl[#tbl] = nil end end function recognizeChar(icon) local best, min for _, ic in ipairs(characterReference) do local c, reficon = unpack(ic) local diff if min ~= nil then diff = iconDiffWithLimit(icon, reficon, min, fw, fh) else diff = iconDiff(icon, reficon) end --print("c", c, "diff", diff, "reficon", reficon) if diff ~= nil and (min == nil or diff < min) then best, min = c, diff end end return best, min end findGrid() tbl = {} for yy = sy, h-fh, fh do line = {} for xx = sx, w-fw, fw do cropped = {width=fw, height=fh, getInt = function(x, y) return img.getInt(xx+x, yy+y) end} local icon = makeIcon(cropped) local c, diff = recognizeChar(icon) if maxdiff == nil or diff > maxdiff then maxdiff, maxc = diff, c end --print("c: "..tostring(c)..", diff: "..tostring(diff)..", icon: "..icon) table.insert(line, c or "?") end table.insert(tbl, table.concat(line)) end trimTable(tbl) print("maxdiff", maxdiff, "c", maxc) return "Screen text:\n"..table.concat(tbl, "\n")