    // Convert Point size to Pixel size (Useful in gdi.Font() and such)
    function Point2Pixel(pt, dpi) {
        return (pt * dpi / 72);
    }

    // Generate/modify colours
    function RGBA(r, g, b, a) {
        return ((a << 24) | (r << 16) | (g << 8) | (b));
    }

    function RGB(r, g, b) {
        return (0xff000000 | (r << 16) | (g << 8) | (b));
    }

    function getAlpha(color) {
        return ((color >> 24) & 0xff);
    }

    function getRed(color) {
        return ((color >> 16) & 0xff);
    }

    function getGreen(color) {
        return ((color >> 8) & 0xff);
    }

    function getBlue(color) {
        return (color & 0xff);
    }

    function setAlpha(color, a) {
        return ((color & 0x00ffffff) | (a << 24));
    }

    function setRed(color, r) {
        return ((color & 0xff00ffff) | (r << 16));
    }

    function setGreen(color, g) {
        return ((color & 0xffff00ff) | (g << 8));
    }

    function setBlue(color, b) {
        return ((color & 0xffffff00) | b);
    }

    // Helper function for DrawString() and MeasureString()
    // args: h_align, v_align, trimming, flags
    function StringFormat() {
        var h_align = 0, v_align = 0, trimming = 0, flags = 0;
        switch (arguments.length)
        {
        // fall-thru
        case 4:
            flags = arguments[3];
        case 3:
            trimming = arguments[2];
        case 2:
            v_align = arguments[1];
        case 1:
            h_align = arguments[0];
            break;
        default:
            return 0;
        }
        return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
    }

    // Based on human hearing curve
    // 0 <= pos <= 1
    // return a value value: -100 <= vol <= 0
    function pos2vol(pos) {
         return (50 * Math.log(0.99 * pos + 0.01) / Math.LN10);
    }

    // Inverse function of pos2vol()
    function vol2pos(v){
         return (Math.round(((Math.pow(10, v / 50) - 0.01) / 0.99)));
    }

    // pre-calculated colors
    Colors = {
        AliceBlue           : 0xFFF0F8FF,
        AntiqueWhite         : 0xFFFAEBD7,
        Aqua                 : 0xFF00FFFF,
        Aquamarine         : 0xFF7FFFD4,
        Azure               : 0xFFF0FFFF,
        Beige               : 0xFFF5F5DC,
        Bisque             : 0xFFFFE4C4,
        Black               : 0xFF000000,
        BlanchedAlmond     : 0xFFFFEBCD,
        Blue                 : 0xFF0000FF,
        BlueViolet         : 0xFF8A2BE2,
        Brown               : 0xFFA52A2A,
        BurlyWood           : 0xFFDEB887,
        CadetBlue           : 0xFF5F9EA0,
        Chartreuse         : 0xFF7FFF00,
        Chocolate           : 0xFFD2691E,
        Coral               : 0xFFFF7F50,
        CornflowerBlue     : 0xFF6495ED,
        Cornsilk             : 0xFFFFF8DC,
        Crimson           : 0xFFDC143C,
        Cyan                 : 0xFF00FFFF,
        DarkBlue             : 0xFF00008B,
        DarkCyan             : 0xFF008B8B,
        DarkGoldenrod       : 0xFFB8860B,
        DarkGray             : 0xFFA9A9A9,
        DarkGreen           : 0xFF006400,
        DarkKhaki           : 0xFFBDB76B,
        DarkMagenta       : 0xFF8B008B,
        DarkOliveGreen     : 0xFF556B2F,
        DarkOrange         : 0xFFFF8C00,
        DarkOrchid         : 0xFF9932CC,
        DarkRed           : 0xFF8B0000,
        DarkSalmon         : 0xFFE9967A,
        DarkSeaGreen         : 0xFF8FBC8B,
        DarkSlateBlue       : 0xFF483D8B,
        DarkSlateGray       : 0xFF2F4F4F,
        DarkTurquoise       : 0xFF00CED1,
        DarkViolet         : 0xFF9400D3,
        DeepPink             : 0xFFFF1493,
        DeepSkyBlue       : 0xFF00BFFF,
        DimGray           : 0xFF696969,
        DodgerBlue         : 0xFF1E90FF,
        Firebrick           : 0xFFB22222,
        FloralWhite       : 0xFFFFFAF0,
        ForestGreen       : 0xFF228B22,
        Fuchsia           : 0xFFFF00FF,
        Gainsboro           : 0xFFDCDCDC,
        GhostWhite         : 0xFFF8F8FF,
        Gold                 : 0xFFFFD700,
        Goldenrod           : 0xFFDAA520,
        Gray                 : 0xFF808080,
        Green               : 0xFF008000,
        GreenYellow       : 0xFFADFF2F,
        Honeydew             : 0xFFF0FFF0,
        HotPink           : 0xFFFF69B4,
        IndianRed           : 0xFFCD5C5C,
        Indigo             : 0xFF4B0082,
        Ivory               : 0xFFFFFFF0,
        Khaki               : 0xFFF0E68C,
        Lavender             : 0xFFE6E6FA,
        LavenderBlush       : 0xFFFFF0F5,
        LawnGreen           : 0xFF7CFC00,
        LemonChiffon         : 0xFFFFFACD,
        LightBlue           : 0xFFADD8E6,
        LightCoral         : 0xFFF08080,
        LightCyan           : 0xFFE0FFFF,
        LightGoldenrodYellow : 0xFFFAFAD2,
        LightGray           : 0xFFD3D3D3,
        LightGreen         : 0xFF90EE90,
        LightPink           : 0xFFFFB6C1,
        LightSalmon       : 0xFFFFA07A,
        LightSeaGreen       : 0xFF20B2AA,
        LightSkyBlue         : 0xFF87CEFA,
        LightSlateGray     : 0xFF778899,
        LightSteelBlue     : 0xFFB0C4DE,
        LightYellow       : 0xFFFFFFE0,
        Lime                 : 0xFF00FF00,
        LimeGreen           : 0xFF32CD32,
        Linen               : 0xFFFAF0E6,
        Magenta           : 0xFFFF00FF,
        Maroon             : 0xFF800000,
        MediumAquamarine     : 0xFF66CDAA,
        MediumBlue         : 0xFF0000CD,
        MediumOrchid         : 0xFFBA55D3,
        MediumPurple         : 0xFF9370DB,
        MediumSeaGreen     : 0xFF3CB371,
        MediumSlateBlue   : 0xFF7B68EE,
        MediumSpringGreen   : 0xFF00FA9A,
        MediumTurquoise   : 0xFF48D1CC,
        MediumVioletRed   : 0xFFC71585,
        MidnightBlue         : 0xFF191970,
        MintCream           : 0xFFF5FFFA,
        MistyRose           : 0xFFFFE4E1,
        Moccasin             : 0xFFFFE4B5,
        NavajoWhite       : 0xFFFFDEAD,
        Navy                 : 0xFF000080,
        OldLace           : 0xFFFDF5E6,
        Olive               : 0xFF808000,
        OliveDrab           : 0xFF6B8E23,
        Orange             : 0xFFFFA500,
        OrangeRed           : 0xFFFF4500,
        Orchid             : 0xFFDA70D6,
        PaleGoldenrod       : 0xFFEEE8AA,
        PaleGreen           : 0xFF98FB98,
        PaleTurquoise       : 0xFFAFEEEE,
        PaleVioletRed       : 0xFFDB7093,
        PapayaWhip         : 0xFFFFEFD5,
        PeachPuff           : 0xFFFFDAB9,
        Peru                 : 0xFFCD853F,
        Pink                 : 0xFFFFC0CB,
        Plum                 : 0xFFDDA0DD,
        PowderBlue         : 0xFFB0E0E6,
        Purple             : 0xFF800080,
        Red               : 0xFFFF0000,
        RosyBrown           : 0xFFBC8F8F,
        RoyalBlue           : 0xFF4169E1,
        SaddleBrown       : 0xFF8B4513,
        Salmon             : 0xFFFA8072,
        SandyBrown         : 0xFFF4A460,
        SeaGreen             : 0xFF2E8B57,
        SeaShell             : 0xFFFFF5EE,
        Sienna             : 0xFFA0522D,
        Silver             : 0xFFC0C0C0,
        SkyBlue           : 0xFF87CEEB,
        SlateBlue           : 0xFF6A5ACD,
        SlateGray           : 0xFF708090,
        Snow                 : 0xFFFFFAFA,
        SpringGreen       : 0xFF00FF7F,
        SteelBlue           : 0xFF4682B4,
        Tan               : 0xFFD2B48C,
        Teal                 : 0xFF008080,
        Thistle           : 0xFFD8BFD8,
        Tomato             : 0xFFFF6347,
        Transparent       : 0x00FFFFFF,
        Turquoise           : 0xFF40E0D0,
        Violet             : 0xFFEE82EE,
        Wheat               : 0xFFF5DEB3,
        White               : 0xFFFFFFFF,
        WhiteSmoke         : 0xFFF5F5F5,
        Yellow             : 0xFFFFFF00,
        YellowGreen       : 0xFF9ACD32
    };