function clamp(value, min, max) {
    return Math.min(Math.max(value, min), max);
}

function clampVector(value, min, max) {
    return Qt.vector2d(
                clamp(value.x, min.x, max.x),
                clamp(value.y, min.y, max.y))
}

function randomPosition(min, max) {
    return Qt.vector2d(
                Math.random() * (max.x - min.x),
                Math.random() * (max.y - min.y));
}

function formatSize(size) {
    var suffixes = [ "bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" ];
    var suffixIndex = 0
    while ((size / 1024.0) > 1.1) {
        size /= 1024.0;
        ++suffixIndex;
    }

    size = Math.round(size*1000)/1000;
    size = size.toLocaleString()

    return size + " " + suffixes[suffixIndex];
}