// canvas.shapes.js
// 
// Stephen Band
// webdev.stephband.info/canvas
//
// Extension to canvas.js, providing vector plots of shapes

canvas.shapes.raggedRect = function(ctx){

  ctx.beginPath();
  ctx.moveTo(9, 0);
  ctx.bezierCurveTo(21.81, 6.07, 37.01, 10.75, 53, 15);
  ctx.bezierCurveTo(53, 15.33, 53, 15.66, 53, 16);
  ctx.bezierCurveTo(51.89, 17.64, 51.54, 19.43, 51, 23);
  ctx.bezierCurveTo(51.99, 23.33, 53, 23.66, 54, 24);
  ctx.bezierCurveTo(55.29, 24.87, 56.46, 24.89, 59, 25);
  ctx.bezierCurveTo(60.2, 23.51, 63.33, 19.87, 64, 21);
  ctx.bezierCurveTo(67.64, 20.21, 69.49, 22.3, 73, 23);
  ctx.bezierCurveTo(77.12, 23.82, 79.09, 20.6, 82, 20);
  ctx.bezierCurveTo(84.66, 20.33, 87.33, 20.66, 90, 21);
  ctx.bezierCurveTo(91.31, 18.75, 93.16, 14.94, 95, 13);
  ctx.bezierCurveTo(100.17, 15.42, 106.45, 8.33, 115, 11);
  ctx.bezierCurveTo(121.51, 13.03, 131.36, 16.75, 135, 22);
  ctx.bezierCurveTo(137.13, 25.08, 137.71, 30.27, 141, 32);
  ctx.bezierCurveTo(142.66, 32, 144.33, 32, 146, 32);
  ctx.bezierCurveTo(147.75, 32.68, 149.9, 35.45, 152, 36);
  ctx.bezierCurveTo(157.33, 35.33, 162.66, 34.66, 168, 34);
  ctx.bezierCurveTo(171.6, 35.37, 174.6, 40.23, 177, 43);
  ctx.bezierCurveTo(182.78, 43.16, 205.92, 40.37, 208, 39);
  ctx.bezierCurveTo(200.6, 34.63, 193.17, 30.66, 192, 20);
  ctx.bezierCurveTo(197.87, 21.68, 200.49, 16.38, 206, 18);
  ctx.bezierCurveTo(207.88, 18.55, 208.21, 20.73, 211, 21);
  ctx.bezierCurveTo(213.33, 20.66, 215.66, 20.33, 218, 20);
  ctx.bezierCurveTo(221.04, 21.08, 226.25, 24.8, 230, 26);
  ctx.bezierCurveTo(236.05, 27.93, 238.69, 25.9, 243, 28);
  ctx.bezierCurveTo(244.33, 29.33, 245.66, 30.66, 247, 32);
  ctx.bezierCurveTo(249.91, 33.02, 252.79, 28.92, 258, 31);
  ctx.bezierCurveTo(264.69, 33.67, 261.81, 35.25, 272, 35);
  ctx.bezierCurveTo(278.16, 26.84, 303.08, 26.66, 306, 19);
  ctx.bezierCurveTo(303, 18.33, 299.99, 17.66, 297, 17);
  ctx.bezierCurveTo(297.33, 16.66, 297.66, 16.33, 298, 16);
  ctx.bezierCurveTo(299.54, 14.95, 302.08, 14.96, 305, 15);
  ctx.bezierCurveTo(308.45, 19.06, 316.05, 20.79, 321, 21);
  ctx.bezierCurveTo(324.36, 16.16, 330.61, 14.04, 336, 11);
  ctx.bezierCurveTo(336, 12.33, 336, 13.66, 336, 15);
  ctx.bezierCurveTo(331.46, 20.64, 336.59, 28.11, 335, 36);
  ctx.bezierCurveTo(330.66, 57.39, 341.81, 76.56, 355, 86);
  ctx.bezierCurveTo(353.07, 90.45, 357.15, 102.57, 359, 110);
  ctx.bezierCurveTo(361.59, 120.43, 353.5, 140.8, 350, 146);
  ctx.bezierCurveTo(338.59, 150.32, 339, 150.71, 331.5, 156);
  ctx.bezierCurveTo(326.88, 160.97, 333.94, 171.87, 334.5, 181.5);
  ctx.bezierCurveTo(339.66, 184.85, 324.36, 191.42, 329, 195);
  ctx.bezierCurveTo(330.92, 196.48, 334.55, 197.17, 336, 199);
  ctx.bezierCurveTo(337.73, 201.19, 336.58, 204.51, 338, 207);
  ctx.bezierCurveTo(340.25, 210.95, 346.52, 212.16, 348, 217);
  ctx.bezierCurveTo(347.66, 222.33, 347.33, 227.66, 347, 233);
  ctx.bezierCurveTo(348.99, 234.99, 351, 237, 353, 239);
  ctx.bezierCurveTo(355.13, 244.45, 351.55, 250.8, 351, 255);
  ctx.bezierCurveTo(350.33, 255, 349.66, 255, 349, 255);
  ctx.bezierCurveTo(345.06, 257.3, 340.53, 252.85, 335, 256);
  ctx.bezierCurveTo(328.9, 259.47, 332.36, 262.32, 321, 260);
  ctx.bezierCurveTo(320.7, 257.67, 320.54, 257.52, 320, 256);
  ctx.bezierCurveTo(317.28, 256.87, 317.06, 257.7, 315, 259);
  ctx.bezierCurveTo(313.63, 255.09, 311.68, 250.05, 310, 246);
  ctx.bezierCurveTo(303.15, 245.63, 298.88, 247.01, 294, 245);
  ctx.bezierCurveTo(291.53, 243.98, 288.95, 240.85, 286, 240);
  ctx.bezierCurveTo(279.6, 238.15, 271.99, 241.19, 267, 240);
  ctx.bezierCurveTo(262.99, 239.03, 263.49, 235.51, 257, 235);
  ctx.bezierCurveTo(252.95, 240.35, 248.11, 235.19, 239, 238);
  ctx.bezierCurveTo(231.04, 240.44, 231.29, 242.89, 220, 242);
  ctx.bezierCurveTo(219, 243.33, 217.99, 244.66, 217, 246);
  ctx.bezierCurveTo(216.7, 246.74, 216.44, 249.55, 216, 252);
  ctx.bezierCurveTo(203.49, 249.97, 206.54, 256.97, 199, 260);
  ctx.bezierCurveTo(198.7, 257.67, 198.54, 257.52, 198, 256);
  ctx.bezierCurveTo(194.35, 257.21, 194.8, 258.44, 190, 259);
  ctx.bezierCurveTo(186.06, 253.65, 178.25, 255.95, 173, 252);
  ctx.bezierCurveTo(174.2, 249.88, 173.48, 249.76, 173, 247);
  ctx.bezierCurveTo(165.57, 244.65, 162.03, 241.1, 151, 241);
  ctx.bezierCurveTo(143.25, 248.55, 138.41, 246.25, 128, 248);
  ctx.bezierCurveTo(127.65, 251.73, 127.5, 253.82, 127, 256);
  ctx.bezierCurveTo(124.72, 257.07, 122.63, 258.28, 121, 260);
  ctx.bezierCurveTo(101.95, 252.79, 111.58, 266.8, 98, 271);
  ctx.bezierCurveTo(94, 270.66, 89.99, 270.33, 86, 270);
  ctx.bezierCurveTo(81.94, 271.29, 80.23, 274.03, 73, 275);
  ctx.bezierCurveTo(70.66, 272.66, 68.33, 270.33, 66, 268);
  ctx.bezierCurveTo(62.53, 269.25, 59.02, 271.08, 53, 270);
  ctx.bezierCurveTo(50.45, 265.67, 50.51, 265.22, 51, 259);
  ctx.bezierCurveTo(49.66, 257.66, 48.33, 256.33, 47, 255);
  ctx.bezierCurveTo(43.96, 252.99, 39.73, 253.26, 37, 251);
  ctx.bezierCurveTo(32.74, 247.47, 35.28, 243.37, 28, 242);
  ctx.bezierCurveTo(20.3, 248.37, 15.86, 247.5, 8, 246);
  ctx.bezierCurveTo(8, 244.66, 8, 243.33, 8, 242);
  ctx.bezierCurveTo(6.15, 237.59, 12.63, 229.03, 14, 223);
  ctx.bezierCurveTo(14.99, 218.61, 11.94, 207.33, 15, 200);
  ctx.bezierCurveTo(16.05, 197.47, 20.16, 194.12, 21, 191);
  ctx.bezierCurveTo(21.65, 188.53, 17.12, 186.31, 18, 182);
  ctx.bezierCurveTo(19.9, 172.54, 24.63, 167.5, 23, 158);
  ctx.bezierCurveTo(18.02, 156.68, 17.06, 153.96, 14, 151);
  ctx.bezierCurveTo(13.83, 136.75, 25.53, 122.2, 33, 115);
  ctx.bezierCurveTo(32.7, 101.73, 30.23, 96.88, 28, 87);
  ctx.bezierCurveTo(15.8, 82.98, 15.89, 79.73, 7, 75);
  ctx.bezierCurveTo(5.89, 67.48, 4.17, 57.85, 6, 48);
  ctx.bezierCurveTo(2.55, 46.28, 2.15, 46.21, 2, 41);
  ctx.bezierCurveTo(5.3, 34.87, 0.66, 29.29, 1, 22);
  ctx.bezierCurveTo(1.82, 18.38, 6.46, 5.55, 9, 0);
};
                
canvas.shapes.greatBritain = function(ctx){
                  
  ctx.beginPath();
  ctx.moveTo(1434.13, 458.77);
  ctx.lineTo(1479, 563.71);
  ctx.lineTo(1305.36, 947.52);
  ctx.lineTo(1227.51, 1007.49);
  ctx.lineTo(1077.82, 1055.47);
  ctx.lineTo(1209.56, 1046.47);
  ctx.lineTo(1257.45, 1133.43);
  ctx.lineTo(1065.84, 1214.39);
  ctx.lineTo(928.12, 1169.41);
  ctx.lineTo(1035.9, 1241.37);
  ctx.lineTo(1281.42, 1211.39);
  ctx.lineTo(1520.92, 1433.28);
  ctx.lineTo(1640.68, 1859.07);
  ctx.lineTo(1820.31, 1919.04);
  ctx.lineTo(1999.95, 2302.84);
  ctx.lineTo(1838.28, 2266.86);
  ctx.lineTo(1778.4, 2290.85);
  ctx.lineTo(1886.2, 2296.85);
  ctx.lineTo(2005.94, 2374.81);
  ctx.lineTo(2071.82, 2539.73);
  ctx.lineTo(1981.99, 2650.67);
  ctx.lineTo(2083.78, 2698.65);
  ctx.lineTo(2107.73, 2608.69);
  ctx.lineTo(2347.25, 2614.69);
  ctx.lineTo(2461.03, 2734.63);
  ctx.lineTo(2437.09, 2998.5);
  ctx.lineTo(2329.29, 3082.45);
  ctx.lineTo(2347.25, 3118.44);
  ctx.lineTo(2305.33, 3160.41);
  ctx.lineTo(2245.46, 3136.43);
  ctx.lineTo(2185.58, 3190.4);
  ctx.lineTo(2251.45, 3178.41);
  ctx.lineTo(2233.51, 3259.37);
  ctx.lineTo(2107.73, 3280.35);
  ctx.lineTo(2059.83, 3322.33);
  ctx.lineTo(1979.01, 3307.34);
  ctx.lineTo(2074.8, 3346.32);
  ctx.lineTo(2125.68, 3304.34);
  ctx.lineTo(2395.15, 3328.33);
  ctx.lineTo(2383.18, 3442.27);
  ctx.lineTo(2269.41, 3526.23);
  ctx.lineTo(2071.81, 3616.19);
  ctx.lineTo(1958.04, 3598.2);
  ctx.lineTo(1754.45, 3640.17);
  ctx.lineTo(1718.52, 3592.2);
  ctx.lineTo(1664.63, 3616.19);
  ctx.lineTo(1598.76, 3562.21);
  ctx.lineTo(1580.82, 3571.21);
  ctx.lineTo(1610.75, 3613.19);
  ctx.lineTo(1538.88, 3646.17);
  ctx.lineTo(1431.1, 3664.16);
  ctx.lineTo(1431.1, 3706.14);
  ctx.lineTo(1284.38, 3715.14);
  ctx.lineTo(1173.62, 3646.17);
  ctx.lineTo(999.97, 3682.15);
  ctx.lineTo(922.13, 3880.06);
  ctx.lineTo(766.45, 3796.1);
  ctx.lineTo(610.76, 3820.09);
  ctx.lineTo(491, 3958.02);
  ctx.lineTo(455.07, 3964.01);
  ctx.lineTo(407.17, 3898.05);
  ctx.lineTo(341.31, 3940.03);
  ctx.lineTo(311.37, 3898.05);
  ctx.lineTo(377.23, 3838.08);
  ctx.lineTo(461.06, 3838.08);
  ctx.lineTo(676.63, 3610.19);
  ctx.lineTo(695.15, 3507.99);
  ctx.lineTo(799.03, 3476);
  ctx.lineTo(787.04, 3428);
  ctx.lineTo(986.8, 3411.99);
  ctx.lineTo(1130.62, 3424);
  ctx.lineTo(1142.61, 3339.99);
  ctx.lineTo(1322.39, 3155.99);
  ctx.lineTo(1134.62, 3272);
  ctx.lineTo(1090.67, 3328);
  ctx.lineTo(970.82, 3336);
  ctx.lineTo(890.91, 3232);
  ctx.lineTo(779.05, 3256);
  ctx.lineTo(787.04, 3207.99);
  ctx.lineTo(659.2, 3168);
  ctx.lineTo(655.2, 3216);
  ctx.lineTo(563.31, 3227.99);
  ctx.lineTo(471.42, 3104);
  ctx.lineTo(783.05, 2940);
  ctx.lineTo(850.96, 2812);
  ctx.lineTo(811.01, 2632);
  ctx.lineTo(671.18, 2684);
  ctx.lineTo(655.2, 2660);
  ctx.lineTo(779.05, 2552);
  ctx.lineTo(691.16, 2448);
  ctx.lineTo(795.03, 2400);
  ctx.lineTo(846.97, 2480);
  ctx.lineTo(1046.73, 2440);
  ctx.lineTo(1114.64, 2480);
  ctx.lineTo(1090.67, 2424);
  ctx.lineTo(1138.61, 2395.99);
  ctx.lineTo(1114.64, 2319.99);
  ctx.lineTo(1126.63, 2247.99);
  ctx.lineTo(1138.61, 2184);
  ctx.lineTo(1202.54, 2152);
  ctx.lineTo(1190.55, 2052);
  ctx.lineTo(1082.68, 2108);
  ctx.lineTo(982.8, 1908);
  ctx.lineTo(1078.69, 1720);
  ctx.lineTo(1138.61, 1711.99);
  ctx.lineTo(1099.65, 1692.98);
  ctx.lineTo(976.8, 1731.98);
  ctx.lineTo(890.91, 1792);
  ctx.lineTo(790.03, 1838.94);
  ctx.lineTo(712.14, 1767.98);
  ctx.lineTo(639.22, 1756);
  ctx.lineTo(659.2, 1839.99);
  ctx.lineTo(627.23, 1839.99);
  ctx.lineTo(575.3, 1696);
  ctx.lineTo(739.1, 1448);
  ctx.lineTo(667.19, 1339.99);
  ctx.lineTo(699.15, 1220);
  ctx.lineTo(671.18, 1171.99);
  ctx.lineTo(643.21, 1280);
  ctx.lineTo(587.28, 1280);
  ctx.lineTo(499.39, 1520);
  ctx.lineTo(431.47, 1523.99);
  ctx.lineTo(487.4, 1191.99);
  ctx.lineTo(523.36, 1160);
  ctx.lineTo(539.34, 1119.99);
  ctx.lineTo(495.39, 1124);
  ctx.lineTo(563.31, 951.99);
  ctx.lineTo(639.22, 900);
  ctx.lineTo(631.23, 859.99);
  ctx.lineTo(495.39, 976);
  ctx.lineTo(407.5, 908);
  ctx.lineTo(423.48, 884);
  ctx.lineTo(351.57, 880);
  ctx.lineTo(363.55, 848);
  ctx.lineTo(455.44, 836);
  ctx.lineTo(487.4, 803.99);
  ctx.lineTo(443.46, 803.99);
  ctx.lineTo(515.37, 640);
  ctx.lineTo(503.38, 608);
  ctx.lineTo(547.33, 576);
  ctx.lineTo(547.33, 548);
  ctx.lineTo(479.41, 584);
  ctx.lineTo(483.41, 484);
  ctx.lineTo(519.36, 484);
  ctx.lineTo(483.41, 440);
  ctx.lineTo(483.41, 339.99);
  ctx.lineTo(579.29, 260);
  ctx.lineTo(627.23, 220);
  ctx.lineTo(591.28, 184);
  ctx.lineTo(659.2, 112);
  ctx.lineTo(703.14, 7.99);
  ctx.lineTo(1166.58, 20);
  ctx.lineTo(1150.6, 144);
  ctx.lineTo(910.89, 364);
  ctx.lineTo(974.81, 384);
  ctx.lineTo(866.94, 532);
  ctx.lineTo(874.93, 552);
  ctx.lineTo(1030.74, 460);
  ctx.lineTo(1434.13, 458.77);
  
  ctx.moveTo(772.43, 1955.02);
  ctx.lineTo(796.38, 2026.98);
  ctx.lineTo(706.57, 2122.93);
  ctx.lineTo(658.66, 2092.95);
  ctx.lineTo(772.43, 1955.02);
  
  ctx.moveTo(1550.86, 3682.15);
  ctx.lineTo(1646.67, 3718.14);
  ctx.lineTo(1682.59, 3652.17);
  ctx.lineTo(1610.74, 3628.18);
  ctx.lineTo(1550.86, 3682.15);
  
  ctx.moveTo(386.68, 908.54);
  ctx.lineTo(479.61, 992.5);
  ctx.lineTo(446.63, 1058.47);
  ctx.lineTo(293.76, 1070.46);
  ctx.lineTo(308.75, 1022.48);
  ctx.lineTo(395.68, 1019.49);
  ctx.lineTo(317.74, 950.52);
  ctx.lineTo(386.68, 908.54);
  
  ctx.moveTo(470.61, 1139.43);
  ctx.lineTo(476.61, 1169.41);
  ctx.lineTo(350.71, 1391.3);
  ctx.lineTo(296.76, 1373.31);
  ctx.lineTo(305.75, 1322.33);
  ctx.lineTo(284.76, 1310.34);
  ctx.lineTo(260.78, 1343.32);
  ctx.lineTo(251.79, 1277.36);
  ctx.lineTo(359.7, 1229.38);
  ctx.lineTo(470.61, 1139.43);
  
  ctx.moveTo(368.7, 419.79);
  ctx.lineTo(413.66, 482.75);
  ctx.lineTo(398.67, 560.71);
  ctx.lineTo(458.62, 638.68);
  ctx.lineTo(494.6, 626.68);
  ctx.lineTo(503.59, 641.67);
  ctx.lineTo(428.65, 737.63);
  ctx.lineTo(251.79, 548.72);
  ctx.lineTo(257.79, 491.75);
  ctx.lineTo(290.76, 512.74);
  ctx.lineTo(308.75, 506.74);
  ctx.lineTo(335.72, 440.77);
};