Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
This is the approved revision of this page, as well as being the most recent.

local p = {}

local TITLE_ALIGN_SIZE = 0x8000

function roundup(num, align)
	return math.ceil(num / align) * align
end

function p.raw_blocks_to_bytes(blocks)
	return blocks * 128 * 1024
end

function p.raw_blocks_to_kib(blocks)
	return blocks * 128
end

function p.raw_blocks_to_mib(blocks)
	return blocks / 8
end

function p.raw_bytes_to_blocks(bytes)
	return math.ceil(bytes / 1024 / 128)
end

function p.raw_mib_to_blocks(mib)
	return math.ceil(mib * 8)
end

function get_display_unit(size)
	if     size >= 1024 * 1024 * 1024 then
		return size / 1024 / 1024 / 1024, 'GiB'
	elseif size >= 1024 * 1024 then
		return size / 1024 / 1024, 'MiB'
	elseif size >= 1024 then
		return size / 1024, 'KiB'
	else 
		return size, 'bytes'
	end
end

function p.raw_format_bytes(bytes)
	-- this needs to do bytes, kib, and gib too
	local formatted_size, unit = get_display_unit(tonumber(bytes))
	return string.format("%.2f", formatted_size) .. ' ' .. unit
end

function p.roundup_all_sizes_to_bytes(sizes)
	total = 0
	for i, v in ipairs(sizes) do
		total = total + roundup(v, TITLE_ALIGN_SIZE)
	end
	return total
end

function p.blocks_to_bytes(frame)
	return p.raw_blocks_to_bytes(frame.args[1])
end

function p.blocks_to_kib(frame)
	return p.raw_blocks_to_kib(frame.args[1])
end

function p.blocks_to_mib(frame)
	return p.raw_blocks_to_mib(frame.args[1])
end

function p.bytes_to_blocks(frame)
	return p.raw_bytes_to_blocks(frame.args[1])
end

function p.mib_to_blocks(frame)
	return p.raw_mib_to_blocks(frame.args[1])
end

function p.format_bytes(frame)
	return p.raw_format_bytes(frame.args[1])
end

return p
Contents