diff a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm (rejected hunks) @@ -166,135 +166,6 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic //Global chat procs -//Converts an icon to base64. Operates by putting the icon in the iconCache savefile, -// exporting it as text, and then parsing the base64 from that. -// (This relies on byond automatically storing icons in savefiles as base64) -/proc/icon2base64(icon/icon, iconKey = "misc") - if (!isicon(icon)) - return FALSE - WRITE_FILE(GLOB.iconCache[iconKey], icon) - var/iconData = GLOB.iconCache.ExportText(iconKey) - var/list/partial = splittext(iconData, "{") - return replacetext(copytext(partial[2], 3, -5), "\n", "") - -/proc/icon2html(thing, target, icon_state, dir, frame = 1, moving) - if (!thing) - return - var/static/datum/callback/CB = CALLBACK(GLOBAL_PROC, .proc/send_asset) - - var/key - var/icon/I = thing - if (!target) - return - if (target == world) - target = GLOB.clients - - var/list/targets - if (!islist(target)) - targets = list(target) - else - targets = target - if (!targets.len) - return - debug_usr("start") - if (!isicon(I)) - debug_usr("not icon") - if (isfile(thing)) //special snowflake - debug_usr("file") - var/name = sanitize_filename("bicon.[thing]") - debug_usr("file:[name]") - register_asset(name, thing) - var/list/callbacks - var/list/callback_args = list() - for (var/thing2 in targets) - callbacks += CB - callback_args[++callback_args.len] = list(thing2, name, TRUE) - callback_select(callbacks, callback_args, savereturns = FALSE) - return "" - debug_usr("not file") - var/atom/A - if (isnull(dir)) - dir = A.dir - if (isnull(icon_state)) - icon_state = A.icon_state - I = A.icon - if (ishuman(thing)) // Shitty workaround for a BYOND issue. - debug_usr("human") - var/icon/temp = I - I = icon() - I.Insert(temp, dir = SOUTH) - dir = SOUTH - else - debug_usr("icon") - if (isnull(dir)) - dir = SOUTH - if (isnull(icon_state)) - icon_state = "" - - I = icon(I, icon_state, dir, frame) - - key = sanitize_filename("bicon.[md5(icon2base64(I))].[icon_state].[dir].png") - debug_usr("key:[key]") - register_asset(key, I) - var/list/callbacks = list() - var/list/callback_args = list() - for (var/thing2 in targets) - callbacks += CB - callback_args[++callback_args.len] = list(thing2, key, TRUE) - - callback_select(callbacks, callback_args, savereturns = FALSE) - return "" - -/proc/icon2base64html(thing) - if (!thing) - return - var/static/list/bicon_cache = list() - if (isicon(thing)) - var/icon/I = thing - var/icon_base64 = icon2base64(I) - - if (I.Height() > world.icon_size || I.Width() > world.icon_size) - var/icon_md5 = md5(icon_base64) - debug_admins(icon_md5) - icon_base64 = bicon_cache[icon_md5] - if (!icon_base64) // Doesn't exist yet, make it. - I = icon(I) - I.Scale(world.icon_size, world.icon_size) - bicon_cache[icon_md5] = icon_base64 = icon2base64(I) - - - return "" - - // Either an atom or somebody fucked up and is gonna get a runtime, which I'm fine with. - var/atom/A = thing - var/key = "[istype(A.icon, /icon) ? "\ref[A.icon]" : A.icon]:[A.icon_state]" - - - if (!bicon_cache[key]) // Doesn't exist, make it. - var/icon/I = icon(A.icon, A.icon_state, SOUTH, 1) - if (ishuman(thing)) // Shitty workaround for a BYOND issue. - var/icon/temp = I - I = icon() - I.Insert(temp, dir = SOUTH) - - if (I.Height() > world.icon_size || I.Width() > world.icon_size) - I.Scale(world.icon_size, world.icon_size) - - bicon_cache[key] = icon2base64(I, key) - - return "" - -//Costlier version of icon2html() that uses getFlatIcon() to account for overlays, underlays, etc. Use with extreme moderation, ESPECIALLY on mobs. -/proc/costly_icon2html(thing, target) - if (!thing) - return - - if (isicon(thing)) - return icon2html(thing, target) - - var/icon/I = getFlatIcon(thing) - return icon2html(I, target) - /proc/to_chat(target, message) if(!target) return