Compare with Previous | Blame | View Log
--LibMediaProvider-1.0 is inspired by and borrows from LibSharedMedia-3.0 for World of Warcraft by Elkano --LibSharedMedia-3.0 and LibMediaProvider-1.0 are under the LGPL-2.1 license local MAJOR, MINOR = "LibMediaProvider-1.0", 7 -- remember to increase manually on changes local LMP = LibStub:NewLibrary(MAJOR, MINOR) if not LMP then return end local cm = CALLBACK_MANAGER local tinsert = table.insert local tsort = table.sort local pairs = pairs LMP.DefaultMedia = LMP.DefaultMedia or {} LMP.MediaList = LMP.MediaList or {} LMP.MediaTable = LMP.MediaTable or {} if not LMP.MediaType then LMP.MediaType = { BACKGROUND = "background", -- background textures BORDER = "border", -- border textures FONT = "font", -- fonts STATUSBAR = "statusbar", -- statusbar textures SOUND = "sound", -- sound files } end local defaultMedia = LMP.DefaultMedia local mediaList = LMP.MediaList local mediaTable = LMP.MediaTable --DEFAULT UI MEDIA-- -- BACKGROUND LMP.MediaTable.background = LMP.MediaTable.background or {} --commented out because it still leaves a white texture behind - addons can use alpha to hide the background --LMP.MediaTable.background["None"] = "" LMP.MediaTable.background["ESO Black"] = "EsoUI/Art/Miscellaneous/borderedinset_center.dds" LMP.MediaTable.background["ESO Chat"] = "EsoUI/Art/chatwindow/chat_bg_center.dds" LMP.MediaTable.background["ESO Gray"] = "EsoUI/Art/itemtooltip/simpleprogbarbg_center.dds" LMP.MediaTable.background["Solid"] = "" --LMP.DefaultMedia.background = "None" LMP.DefaultMedia.background = "Solid" -- BORDER LMP.MediaTable.border = LMP.MediaTable.border or {} --commented out because it still leaves a white texture behind - addons can use alpha to hide the border --LMP.MediaTable.border["None"] = "" LMP.MediaTable.border["ESO Gold"] = "EsoUI/Art/Miscellaneous/borderedinsettransparent_edgefile.dds" LMP.MediaTable.border["ESO Chat"] = "EsoUI/Art/chatwindow/chat_bg_edge.dds" LMP.MediaTable.border["ESO Rounded"] = "EsoUI/Art/miscellaneous/interactkeyframe_edge.dds" LMP.MediaTable.border["ESO Blue Highlight"] = "EsoUI/Art/miscellaneous/textentry_highlight_edge.dds" LMP.MediaTable.border["ESO Blue Glow"] = "EsoUI/Art/crafting/crafting_tooltip_glow_edge_blue64.dds" LMP.MediaTable.border["ESO Red Glow"] = "EsoUI/Art/crafting/crafting_tooltip_glow_edge_red64.dds" LMP.MediaTable.border["ESO Red Overlay"] = "EsoUI/Art/uicombatoverlay/uicombatoverlayedge.dds" --LMP.DefaultMedia.border = "None" LMP.DefaultMedia.border = "ESO Gold" -- FONT LMP.MediaTable.font = LMP.MediaTable.font or {} LMP.MediaTable.font["ProseAntique"] = "EsoUI/Common/Fonts/ProseAntiquePSMT.otf" LMP.MediaTable.font["Consolas"] = "EsoUI/Common/Fonts/consola.ttf" LMP.MediaTable.font["Futura Condensed Light"] = "EsoUI/Common/Fonts/FuturaStd-CondensedLight.otf" LMP.MediaTable.font["Futura Condensed"] = "EsoUI/Common/Fonts/FuturaStd-Condensed.otf" LMP.MediaTable.font["Skyrim Handwritten"] = "EsoUI/Common/Fonts/Handwritten_Bold.otf" LMP.MediaTable.font["Trajan Pro"] = "EsoUI/Common/Fonts/trajanpro-regular.otf" LMP.MediaTable.font["Univers 55"] = "EsoUI/Common/Fonts/univers55.otf" LMP.MediaTable.font["Univers 57"] = "EsoUI/Common/Fonts/univers57.otf" LMP.MediaTable.font["Univers 67"] = "EsoUI/Common/Fonts/univers67.otf" LMP.DefaultMedia.font = "Univers 55" -- STATUSBAR LMP.MediaTable.statusbar = LMP.MediaTable.statusbar or {} --LMP.MediaTable.statusbar["ESO Basic"] = "EsoUI/Art/miscellaneous/progressbar_genericfill_tall.dds" LMP.MediaTable.statusbar["ESO Basic"] = "" LMP.DefaultMedia.statusbar = "ESO Basic" -- SOUND LMP.MediaTable.sound = LMP.MediaTable.sound or {} LMP.MediaTable.sound["None"] = "" LMP.MediaTable.sound["AvA Gate Open"] = SOUNDS.AVA_GATE_OPENED LMP.MediaTable.sound["AvA Gate Close"] = SOUNDS.AVA_GATE_CLOSED LMP.MediaTable.sound["Emperor Coronated"] = SOUNDS.EMPEROR_CORONATED_DAGGERFALL LMP.MediaTable.sound["Level Up"] = SOUNDS.LEVEL_UP LMP.MediaTable.sound["Skill Gained"] = SOUNDS.SKILL_GAINED LMP.MediaTable.sound["Ability Purchased"] = SOUNDS.ABILITY_SKILL_PURCHASED LMP.MediaTable.sound["Book Acquired"] = SOUNDS.BOOK_ACQUIRED LMP.MediaTable.sound["Unlock"] = SOUNDS.LOCKPICKING_UNLOCKED LMP.MediaTable.sound["Enchanting Extract"] = SOUNDS.ENCHANTING_EXTRACT_START_ANIM LMP.MediaTable.sound["Enchanting Create"] = SOUNDS.ENCHANTING_CREATE_TOOLTIP_GLOW LMP.MediaTable.sound["Blacksmith Improve"] = SOUNDS.BLACKSMITH_IMPROVE_TOOLTIP_GLOW_SUCCESS LMP.DefaultMedia.sound = "None" local function rebuildMediaList(mediatype) local mtable = mediaTable[mediatype] if not mtable then return end if not mediaList[mediatype] then mediaList[mediatype] = {} end local mlist = mediaList[mediatype] -- list can only get larger, so simply overwrite it local i = 0 for k in pairs(mtable) do i = i + 1 mlist[i] = k end tsort(mlist) end function LMP:Register(mediatype, key, data) if type(mediatype) ~= "string" then error(MAJOR..":Register(mediatype, key, data) - mediatype must be string, got "..type(mediatype)) end if type(key) ~= "string" then error(MAJOR..":Register(mediatype, key, data) - key must be string, got "..type(key)) end mediatype = mediatype:lower() if not mediaTable[mediatype] then mediaTable[mediatype] = {} end local mtable = mediaTable[mediatype] if mtable[key] then return false end mtable[key] = data rebuildMediaList(mediatype) cm:FireCallbacks("LibMediaProvider_Registered", mediatype, key) return true end function LMP:Fetch(mediatype, key) local mtt = mediaTable[mediatype] local result = (mtt and mtt[key]) or (defaultMedia[mediatype] and mtt[defaultMedia[mediatype]]) return result ~= "" and result or nil end function LMP:IsValid(mediatype, key) return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false end function LMP:HashTable(mediatype) return mediaTable[mediatype] end function LMP:List(mediatype) if not mediaTable[mediatype] then return nil end if not mediaList[mediatype] then rebuildMediaList(mediatype) end return mediaList[mediatype] end function LMP:GetDefault(mediatype) return defaultMedia[mediatype] end function LMP:SetDefault(mediatype, key) if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then defaultMedia[mediatype] = key return true else return false end end