/** * UK Outline Generator * @author Robert John Morton * @version 30 July 1998 */ /* This class draws an outline of the United Kingdom. It draws it from internal data held in a byte array. It draws on a 160 by 160 pixel raster. The raster origin is at the centre of the map. To make it draw an outline of the UK you call its paint() method, parring to it the parameters shown. */ import java.awt.*; class uk_coast { static byte A[][] = { // UK COASTLINE { -26, -73}, { -26, -72}, { -27, -72}, { -27, -70}, { -26, -70}, { -26, -69}, { -27, -69}, { -27, -68}, { -29, -68}, { -29, -67}, { -30, -67}, { -30, -65}, { -32, -65}, { -32, -64}, { -33, -64}, { -33, -63}, { -34, -63}, { -34, -62}, { -35, -62}, { -35, -59}, { -33, -59}, { -34, -59}, { -34, -57}, { -35, -57}, { -35, -56}, { -36, -56}, { -36, -55}, { -37, -55}, { -37, -53}, { -35, -53}, { -35, -54}, { -33, -54}, { -33, -55}, { -31, -55}, { -31, -56}, { -28, -56}, { -28, -57}, { -28, -56}, { -15, -56}, { -15, -55}, { -14, -55}, { -14, -52}, { -15, -52}, { -15, -51}, { -16, -51}, { -16, -50}, { -16, -46}, { -17, -46}, { -17, -44}, { -18, -44}, { -18, -42}, { -20, -42}, { -20, -38}, { -21, -38}, { -21, -37}, { -22, -37}, { -22, -36}, { -23, -36}, { -23, -32}, { -22, -32}, { -22, -31}, { -25, -31}, { -25, -30}, { -26, -30}, { -26, -29}, { -27, -29}, { -27, -28}, { -29, -28}, { -29, -26}, { -27, -26}, { -27, -25}, { -24, -25}, { -24, -26}, { -23, -26}, { -23, -27}, { -21, -27}, { -21, -26}, { -19, -26}, { -19, -25}, { -17, -25}, { -17, -24}, { -16, -24}, { -16, -23}, { -15, -23}, { -15, -21}, { -14, -21}, { -14, -20}, { -13, -20}, { -13, -19}, { -12, -19}, { -12, -18}, { -11, -18}, { -11, -13}, { -10, -13}, { -10, -10}, { -9, -10}, { -9, -8}, { -8, -8}, { -8, -4}, { -7, -4}, { -7, -3}, { -6, -3}, { -6, -2}, { -5, -2}, { -5, -1}, { -2, -1}, { -2, 0}, { 0, 0}, { 0, 2}, { 1, 2}, { 1, 3}, { 2, 3}, { 1, 5}, { 2, 5}, { 2, 6}, { 5, 6}, { 4, 6}, { 4, 10}, { 5, 10}, { 5, 12}, { 6, 12}, { 6, 13}, { 7, 13}, { 7, 14}, { 8, 14}, { 5, 14}, { 5, 16}, { 6, 16}, { 6, 17}, { 7, 17}, { 7, 18}, { 9, 18}, { 9, 20}, { 10, 20}, { 10, 23}, { 11, 23}, { 10, 23}, { 10, 24}, { 9, 24}, { 9, 26}, { 8, 26}, { 8, 27}, { 7, 27}, { 7, 29}, { 9, 29}, { 9, 30}, { 12, 30}, { 12, 29}, { 13, 29}, { 13, 27}, { 21, 27}, { 21, 28}, { 23, 28}, { 23, 29}, { 24, 29}, { 24, 30}, { 25, 30}, { 25, 31}, { 26, 31}, { 26, 37}, { 25, 37}, { 25, 41}, { 24, 41}, { 24, 42}, { 23, 42}, { 23, 43}, { 22, 43}, { 22, 44}, { 21, 44}, { 21, 46}, { 22, 46}, { 20, 46}, { 20, 47}, { 18, 47}, { 18, 51}, { 15, 51}, { 15, 53}, { 16, 53}, { 16, 54}, { 18, 54}, { 18, 55}, { 19, 55}, { 24, 55}, { 23, 55}, { 23, 57}, { 24, 57}, { 24, 58}, { 22, 58}, { 22, 59}, { 20, 59}, { 20, 60}, { 19, 60}, { 19, 62}, { 16, 62}, { 16, 63}, { 15, 63}, { 15, 64}, { 12, 64}, { 12, 65}, { 8, 65}, { 8, 64}, { 5, 64}, { 5, 65}, { 0, 65}, { 0, 66}, { 0, 65}, { -7, 65}, { -7, 67}, { -4, 67}, { -4, 68}, { -5, 68}, { -5, 69}, { -6, 69}, { -6, 68}, { -7, 68}, { -7, 68}, { -7, 66}, { -11, 66}, { -11, 67}, { -13, 67}, { -13, 69}, { -15, 69}, { -15, 68}, { -20, 68}, { 120, 120}, { -19, 69}, { -19, 69}, { 120, 120}, { -18, 70}, { -18, 70}, { 120, 120}, { -20, 68}, { -20, 67}, { -22, 67}, { -22, 66}, { -25, 66}, { -25, 67}, { -28, 67}, { -28, 68}, { -30, 68}, { -30, 69}, { -31, 69}, { -31, 73}, { -32, 73}, { -32, 75}, { -34, 75}, { -34, 74}, { -37, 74}, { -37, 73}, { -45, 73}, { -45, 75}, { -47, 75}, { -47, 76}, { -49, 76}, { -49, 79}, { -50, 79}, { -50, 78}, { -51, 78}, { -51, 77}, { -54, 77}, { -54, 78}, { -55, 78}, { -55, 77}, { -54, 77}, { -54, 76}, { -51, 76}, { -51, 75}, { -50, 75}, { -50, 74}, { -49, 74}, { -49, 73}, { -48, 73}, { -48, 72}, { -47, 72}, { -47, 71}, { -47, 70}, { -45, 70}, { -45, 69}, { -44, 69}, { -44, 68}, { -43, 68}, { -43, 67}, { -42, 67}, { -42, 63}, { -41, 63}, { -41, 62}, { -38, 62}, { -38, 59}, { -35, 59}, { -35, 58}, { -31, 58}, { -31, 59}, { -24, 59}, { -24, 56}, { -23, 56}, { -23, 54}, { -21, 54}, { -21, 53}, { -20, 53}, { -20, 51}, { -23, 51}, { -23, 52}, { -25, 52}, { -25, 53}, { -27, 53}, { -27, 55}, { -30, 55}, { -30, 54}, { -31, 54}, { -31, 53}, { -33, 53}, { -33, 51}, { -38, 51}, { -38, 52}, { 120, 120}, { -37, 51}, { -37, 49}, { -39, 49}, { -39, 48}, { -44, 48}, { -44, 50}, { -46, 50}, { -46, 51}, { -46, 50}, { -47, 50}, { -47, 49}, { -48, 49}, { -48, 48}, { -47, 48}, { -47, 46}, { -49, 46}, { -49, 45}, { -47, 45}, { -47, 44}, { -44, 44}, { -44, 43}, { -43, 43}, { -43, 42}, { -40, 42}, { -40, 41}, { -38, 41}, { -38, 40}, { -37, 40}, { -37, 38}, { -36, 38}, { -36, 30}, { -37, 30}, { -36, 30}, { -36, 28}, { -37, 28}, { -37, 27}, { -39, 27}, { -39, 28}, { -41, 28}, { -41, 30}, { -41, 29}, { -43, 29}, { -42, 29}, { -42, 28}, { -40, 28}, { -40, 27}, { -39, 27}, { -39, 26}, { -38, 26}, { -38, 24}, { -39, 24}, { -39, 23}, { -40, 23}, { -40, 22}, { -41, 22}, { -41, 21}, { -42, 21}, { -41, 21}, { -41, 19}, { -39, 19}, { -39, 20}, { -38, 20}, { -38, 21}, { -37, 21}, { -37, 23}, { -35, 23}, { -35, 22}, { -34, 22}, { -34, 21}, { -33, 21}, { -33, 22}, { -30, 22}, { -30, 21}, { -28, 21}, { -28, 22}, { -27, 22}, { -27, 23}, { -25, 23}, { -25, 20}, { -26, 20}, { -26, 19}, { -25, 19}, { -25, 15}, { -23, 15}, { -23, 13}, { -25, 13}, { -25, 11}, { -24, 11}, { -24, 10}, { -23, 10}, { -23, 8}, { -22, 8}, { -22, 5}, { -26, 5}, { -26, 6}, { -27, 6}, { -27, 7}, { -27, 5}, { -28, 5}, { -28, 3}, { -29, 3}, { -29, 1}, { -30, 1}, { -30, 0}, { -31, 0}, { -31, -1}, { -30, -1}, { -30, -3}, { -29, -3}, { -29, -6}, { -27, -6}, { -27, -8}, { -27, -7}, { -25, -7}, { -25, -9}, { -31, -9}, { -31, -7}, { -34, -7}, { -34, -6}, { -35, -6}, { -35, -5}, { -36, -5}, { -36, -6}, { -37, -6}, { 120, 120}, { -39, 2}, { -39, 4}, { -40, 4}, { -40, 6}, { -42, 6}, { -42, 7}, { -43, 7}, { -42, 7}, { -42, 5}, { -41, 5}, { -41, 3}, { -40, 3}, { -40, 2}, { -39, 2}, { 120, 120}, { -37, -6}, { -37, -7}, { -40, -7}, { -40, -5}, { -39, -5}, { -39, -4}, { -40, -4}, { -40, -5}, { -41, -5}, { -41, -6}, { -42, -6}, { -42, -7}, { -45, -7}, { -45, -4}, { 120, 120}, { -45, -6}, { -46, -6}, { -46, -8}, { -47, -8}, { -46, -8}, { -46, -9}, { -45, -9}, { -45, -11}, { -44, -11}, { -44, -12}, { -43, -12}, { -43, -15}, { -42, -15}, { -42, -16}, { -41, -16}, { -41, -20}, { -42, -20}, { -42, -21}, { -43, -21}, { -43, -24}, { -45, -24}, { -45, -23}, { -45, -24}, { -46, -24}, { -46, -25}, { -47, -25}, { -47, -28}, { -50, -28}, { 120, 120}, // ireland { -65, -14}, { -68, -10}, { -65, -10}, { -65, -12}, { -62, -12}, { -62, -13}, { -57, -13}, { -57, -12}, { -56, -12}, { -56, -9}, { -55, -9}, { -55, -7}, { -54, -7}, { -54, -6}, { -53, -6}, { -53, -5}, { -54, -5}, { -54, -3}, { -51, -3}, { -51, 2}, { -52, 2}, { -52, 4}, { -55, 4}, { -55, 6}, { -56, 6}, { -57, 7}, { -58, 7}, { -59, 7}, { -60, 7}, { -60, 8}, { -60, 9}, { -59, 10}, { -59, 11}, { -59, 12}, { -59, 13}, { -58, 14}, { -58, 15}, { -57, 16}, { -58, 17}, { -58, 18}, { -57, 19}, { -59, 19}, { -58, 20}, { -58, 21}, { -58, 22}, { -57, 23}, { -57, 26}, { -59, 29}, { -60, 31}, { -59, 33}, { -61, 36}, { -62, 37}, { -61, 38}, { -62, 39}, { -64, 39}, { -66, 38}, { -67, 40}, { -67, 38}, { -68, 38}, { -69, 40}, { -75, 40}, { -75, 42}, { -76, 42}, { -81, 45}, { -84, 45}, { -84, 47}, { -88, 49}, { -90, 48}, { -91, 49}, { -95, 50}, { -96, 49}, {-100, 50}, { -97, 48}, {-100, 48}, { -96, 46}, { -97, 45}, {-103, 47}, { -97, 43}, {-103, 44}, {-103, 43}, {-105, 43}, {-106, 42}, { -98, 38}, { -98, 37}, {-106, 38}, {-106, 37}, {-103, 36}, { -98, 37}, {-101, 33}, { -96, 31}, { -88, 30}, { -99, 29}, { -93, 25}, { -93, 23}, { -91, 21}, { -88, 21}, { -88, 18}, { -95, 16}, { -97, 17}, { -98, 17}, { -97, 15}, {-100, 15}, {-100, 13}, { -97, 11}, { -97, 9}, { -93, 9}, { -93, 6}, { -97, 7}, {-100, 5}, { -96, 6}, { -97, 2}, { -99, 3}, { -98, 0}, { -95, -1}, { -90, 0}, { -89, 2}, { -87, 1}, { -82, 2}, { -83, -1}, { -77, -4}, { -84, -5}, { -84, -6}, { -81, -6}, { -81, -8}, { -80, -11}, { -78, -13}, { -75, -14}, { -75, -13}, { -73, -13}, { -73, -14}, { -72, -15}, { -71, -12}, { -70, -15}, { -68, -16}, { -65, -14}, { 120, 120}, //end of ireland { -50, -28}, { -50, -25}, { -49, -25}, { -49, -23}, { -48, -23}, { -49, -23}, { -49, -22}, { -50, -22}, { -50, -18}, { -51, -18}, { -51, -15}, { -53, -15}, { -53, -16}, { -52, -16}, { -52, -17}, { -51, -17}, { -51, -22}, { -50, -22}, { -50, -24}, { -51, -24}, { -51, -26}, { -50, -26}, { -50, -27}, { 120, 120}, { -48, -21}, { -48, -18}, { -47, -18}, { -47, -17}, { -47, -18}, { -46, -18}, { -46, -19}, { -47, -19}, { -47, -21}, { -48, -21}, { 120, 120}, { -53, -28}, { -53, -27}, { -54, -27}, { -54, -26}, { -56, -26}, { -56, -25}, { -58, -25}, { -58, -24}, { -59, -24}, { -59, -22}, { -60, -22}, { -59, -22}, { -59, -23}, { -57, -23}, { -57, -21}, { -58, -21}, { -56, -21}, { -56, -22}, { -55, -22}, { -56, -22}, { -56, -24}, { -55, -24}, { -55, -25}, { -54, -25}, { -54, -26}, { 120, 120}, { -52, -29}, { -52, -29}, { 120, 120}, { -57, -29}, { -57, -29}, { 120, 120}, { -57, -28}, { -57, -28}, { 120, 120}, { -50, -28}, { -49, -28}, { -49, -30}, { -50, -30}, { -49, -30}, { -49, -32}, { -50, -32}, { -49, -32}, { -49, -34}, { -48, -34}, { -48, -38}, { -50, -38}, { -50, -37}, { -52, -37}, { -52, -35}, { -51, -35}, { -51, -34}, { -53, -34}, { -53, -33}, { -58, -33}, { -56, -33}, { -56, -34}, { -55, -34}, { -55, -36}, { -56, -36}, { -56, -37}, { -57, -37}, { -57, -38}, { -52, -38}, { -52, -40}, { -56, -40}, { -52, -40}, { -52, -41}, { -51, -41}, { -51, -43}, { -52, -43}, { -52, -45}, { -51, -45}, { -51, -46}, { -50, -46}, { -50, -48}, { 120, 120}, { -63, -36}, { -63, -36}, { 120, 120}, { -62, -37}, { -62, -37}, { 120, 120}, { -60, -38}, { -60, -38}, { 120, 120}, { -60, -39}, { -60, -39}, { 120, 120}, { -59, -39}, { -59, -39}, { 120, 120}, { -55, -43}, { -55, -43}, { 120, 120}, { -57, -46}, { -57, -46}, { 120, 120}, { -57, -45}, { -57, -45}, { 120, 120}, { -50, -48}, { -52, -48}, { -52, -47}, { -53, -47}, { -53, -46}, { -53, -48}, { -54, -48}, { -54, -49}, { -57, -49}, { -57, -50}, { -58, -50}, { -57, -50}, { -57, -52}, { -60, -52}, { -60, -54}, { -59, -54}, { -59, -55}, { -59, -54}, { -57, -54}, { -57, -57}, { -56, -57}, { -56, -56}, { -55, -56}, { -55, -53}, { -54, -53}, { -54, -50}, { -53, -50}, { -53, -49}, { -51, -49}, { -51, -50}, { 120, 120}, { -65, -58}, { -65, -57}, { -64, -57}, { -64, -56}, { -65, -56}, { -65, -54}, { -66, -54}, { -66, -47}, { -66, -48}, { -67, -48}, { -67, -52}, { -66, -52}, { -66, -56}, { -67, -56}, { -67, -57}, { -65, -57}, { 120, 120}, { -68, -45}, { -68, -45}, { 120, 120}, { -68, -46}, { -68, -46}, { 120, 120}, { -67, -46}, { -67, -46}, { 120, 120}, { -51, -40}, { -50, -40}, { -50, -52}, { -51, -52}, { -51, -54}, { -52, -54}, { -51, -54}, { -51, -60}, { -51, -59}, { -49, -59}, { -49, -61}, { -49, -60}, { -46, -60}, { -46, -63}, { -47, -63}, { -46, -63}, { -46, -66}, { 120, 120}, { -55, -71}, { -55, -69}, { -56, -69}, { -56, -68}, { -57, -68}, { -57, -64}, { -58, -64}, { -58, -62}, { -60, -62}, { -60, -61}, { -61, -61}, { -61, -60}, { -63, -60}, { -62, -60}, { -62, -59}, { -62, -61}, { -61, -61}, { -61, -63}, { -63, -63}, { -62, -63}, { -62, -65}, { -63, -65}, { -63, -66}, { -62, -66}, { -62, -67}, { -60, -67}, { -60, -68}, { -59, -68}, { -59, -69}, { -57, -69}, { -57, -70}, { -56, -70}, { -56, -71}, { -55, -71}, { 120, 120}, { -55, -67}, { -55, -67}, { 120, 120}, { -46, -66}, { -44, -66}, { -44, -69}, { -45, -69}, { -44, -69}, { -44, -72}, { -43, -72}, { -43, -73}, { -42, -73}, { -42, -72}, { -41, -72}, { -41, -71}, { -39, -71}, { -39, -72}, { -39, -71}, { -35, -71}, { -35, -72}, { -31, -72}, { -31, -73}, { -26, -73}, { 120, 120}, { -77, -61}, { -77, -61}, { 120, 120}, { -62, 79}, { -62, 79}, { 120, 120}, { 9, -44}, { 9, -42}, { 8, -42}, { 120, 120}, { 4, -43}, { 5, -43}, { 5, -42}, { 120, 120}, { 7, -41}, { 6, -41}, { 6, -40}, { 120, 120}, { 8, -39}, { 8, -39}, { 120, 120}, { 4, -40}, { 3, -40}, { 3, -38}, { 6, -38}, { 5, -38}, { 5, -35}, { 120, 120}, { 6, -36}, { 6, -36}, { 120, 120}, { 4, -34}, { 4, -33}, { 120, 120}, { 4, -37}, { 3, -37}, { 3, -36}, { 2, -36}, { 2, -34}, { 1, -34}, { 1, -35}, { 0, -35}, { 0, -36}, { 1, -36}, { 1, -39}, { 3, -39}, { 120, 120}, { 23, -70}, { 23, -68}, { 22, -68}, { 22, -66}, { 24, -66}, { 22, -66}, { 22, -65}, { 21, -65}, { 21, -64}, { 20, -64}, { 20, -62}, { 21, -62}, { 21, -61}, { 22, -61}, { 21, -61}, { 21, -60}, { 20, -60}, { 20, -58}, { 22, -58}, { 21, -58}, { 21, -57}, { 20, -57}, { 20, -55}, { 19, -55}, { 19, -53}, { 120, 120}, { 19, -59}, { 18, -59}, { 18, -58}, { 18, -59}, { 17, -59}, { 17, -60}, { 16, -60}, { 19, -60}, { 19, -62}, { 18, -62}, { 18, -64}, { 17, -64}, { 18, -64}, { 18, -65}, { 19, -65}, { 19, -66}, { 120, 120}, { 17, -47}, { 17, -47}, { 120, 120}, { 12, -58}, { 12, -58} }; /* Graphics context where the outline is to be painted colour it is to be painted off-set of centre of map from top left of graphics context. */ public static void paint(Graphics g, Color colour, int X, int Y) { g.setColor(Color.black); // set address background colour g.fillRect(0,0,300,160); // clear the name & address window int oldx = (int)A[0][0]; // prime with first pair of co-ordinates int oldy = (int)A[0][1]; // in the map outline data /* For each pair of co-ordinates in the outline data get horizontal co-ordinate of next point on map outline.. */ for(int k = 1; k < A.length; k++) { int x = (int)A[k][0]; if(x < 120) { // 120 is the discontinuity marker int y = (int)A[k][1]; // get the vertical co-ordinate g.setColor(Color.green); // colour for the map outline // draw a line from the previous point to the new point. g.drawLine(X + oldx,Y + oldy,X + x,Y + y); oldx = x; // set old x = new x for next time oldy = y; // set old y = new y for next time } else { // zero indicates a discontinuity in the map outline k++; // skip over the discontinuity marker oldx = (int)A[k][0]; //set first x, y of new run as old oldy = (int)A[k][1]; //plot and add in the required biases } } g.setColor(Color.gray); //draw box round Orkney & Shetland int a = -5, b = -26, c = 30, d = -73; g.drawLine(X + a,Y + b,X + c,Y + b); g.drawLine(X + a,Y + d,X + c,Y + d); g.drawLine(X + a,Y + b,X + a,Y + d); g.drawLine(X + c,Y + b,X + c,Y + d); } }