From b1bd10fd4dd0edc532071b071938681654ed50e2 Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 7 Sep 2019 18:11:20 -0500 Subject: [PATCH] migrate to SDL 2 Former-commit-id: f5bd38a6dcb30130ef000bd47779dc06338db844 Former-commit-id: d893a750adb82f288ff7b7bc31d621b1e60da672 --- sdl1090/Makefile | 2 +- sdl1090/README.md | 2 +- sdl1090/TODO | 5 - sdl1090/coaa.h | 6 - sdl1090/defs.h | 7 +- sdl1090/draw.aux | 1 - sdl1090/draw.c | 29 +- sdl1090/draw.fdb_latexmk | 12 - sdl1090/draw.fls | 6 - sdl1090/dump1090.aux | 1 - sdl1090/dump1090.fdb_latexmk | 14 - sdl1090/dump1090.fls | 8 - sdl1090/dump1090.h | 3 +- sdl1090/font.c | 56 +- sdl1090/init.c | 113 +-- sdl1090/input.c | 6 + sdl1090/list.c | 2 +- sdl1090/maps.c | 87 +-- sdl1090/public_html/config.js | 34 - sdl1090/public_html/coolclock/coolclock.js | 318 --------- sdl1090/public_html/coolclock/excanvas.js | 785 --------------------- sdl1090/public_html/coolclock/moreskins.js | 212 ------ sdl1090/public_html/extension.js | 19 - sdl1090/public_html/gmap.html | 65 -- sdl1090/public_html/options.js | 17 - sdl1090/public_html/planeObject.js | 260 ------- sdl1090/public_html/script.js | 658 ----------------- sdl1090/public_html/style.css | 32 - sdl1090/status.c | 25 +- sdl1090/structs.h | 15 +- sdl1090/view1090.REMOVED.git-id | 2 +- sdl1090/view1090.c | 6 +- 32 files changed, 137 insertions(+), 2671 deletions(-) delete mode 100644 sdl1090/TODO delete mode 100644 sdl1090/coaa.h delete mode 100644 sdl1090/draw.aux delete mode 100644 sdl1090/draw.fdb_latexmk delete mode 100644 sdl1090/draw.fls delete mode 100644 sdl1090/dump1090.aux delete mode 100644 sdl1090/dump1090.fdb_latexmk delete mode 100644 sdl1090/dump1090.fls delete mode 100644 sdl1090/public_html/config.js delete mode 100644 sdl1090/public_html/coolclock/coolclock.js delete mode 100644 sdl1090/public_html/coolclock/excanvas.js delete mode 100644 sdl1090/public_html/coolclock/moreskins.js delete mode 100644 sdl1090/public_html/extension.js delete mode 100644 sdl1090/public_html/gmap.html delete mode 100644 sdl1090/public_html/options.js delete mode 100644 sdl1090/public_html/planeObject.js delete mode 100644 sdl1090/public_html/script.js delete mode 100644 sdl1090/public_html/style.css diff --git a/sdl1090/Makefile b/sdl1090/Makefile index 2fb6528..ffd50be 100644 --- a/sdl1090/Makefile +++ b/sdl1090/Makefile @@ -16,7 +16,7 @@ ifdef RPI CC=gcc else CFLAGS=-O2 -g -Wall -W `pkg-config --cflags librtlsdr` - LIBS=`pkg-config --libs librtlsdr` -lpthread -lm `sdl-config --libs` -lSDL -lSDL_ttf -lSDL_gfx + LIBS=`pkg-config --libs librtlsdr` -lpthread -lm -lSDL2 -lSDL2_ttf -lSDL2_gfx CC=gcc endif diff --git a/sdl1090/README.md b/sdl1090/README.md index bed3cdb..ecef83e 100644 --- a/sdl1090/README.md +++ b/sdl1090/README.md @@ -64,7 +64,7 @@ http://www.ebay.com/itm/3-7-volts-6400-mAh-1S2P-18650-Li-Ion-Battery-Pack-PCB-pr 2. Install SDL and RTL-SDR libararies ``` -sudo apt-get install libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev wiringpi +sudo apt-get install libsdl2-dev libsdl2-ttf-dev libsdl2-gfx-dev wiringpi ``` 3. Download spidr ``` diff --git a/sdl1090/TODO b/sdl1090/TODO deleted file mode 100644 index 041ad29..0000000 --- a/sdl1090/TODO +++ /dev/null @@ -1,5 +0,0 @@ -TODO - -* Extract more information from captured Mode S messages. -* Improve the web interface gmap.html. -* Enhance the algorithm to reliably decode more messages. diff --git a/sdl1090/coaa.h b/sdl1090/coaa.h deleted file mode 100644 index 3d07704..0000000 --- a/sdl1090/coaa.h +++ /dev/null @@ -1,6 +0,0 @@ -// coaa.h configuration file for Plane Plotter Uploader -// -// You MUST apply via the COAA website for your own personal version of this file -// Do not disclose the contents of this file to anyone thereafter as it uniquely -// identifies you to the PlanePlotter system -// diff --git a/sdl1090/defs.h b/sdl1090/defs.h index 2cc3768..21dd7f3 100644 --- a/sdl1090/defs.h +++ b/sdl1090/defs.h @@ -2,8 +2,8 @@ #include #include #include -#include "SDL/SDL.h" -#include "SDL/SDL_ttf.h" +#include "SDL2/SDL.h" +#include "SDL2/SDL_ttf.h" #include "mapdata.h" #ifdef RPI @@ -16,9 +16,6 @@ #define UPSCALE 1 #define UISCALE 1 -#define LOGMAXDIST 1000.0 -#define MAXDIST 25.0 - #define AA 0 #define MAGMA 0 \ No newline at end of file diff --git a/sdl1090/draw.aux b/sdl1090/draw.aux deleted file mode 100644 index f23e546..0000000 --- a/sdl1090/draw.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/sdl1090/draw.c b/sdl1090/draw.c index 318159d..f5b4775 100644 --- a/sdl1090/draw.c +++ b/sdl1090/draw.c @@ -1,6 +1,6 @@ #include "dump1090.h" #include "structs.h" -#include "SDL/SDL_rotozoom.h" +#include "SDL2/SDL2_rotozoom.h" static uint64_t mstime(void) { struct timeval tv; @@ -13,6 +13,7 @@ static uint64_t mstime(void) { } void draw() { + if ((mstime() - Modes.interactive_last_update) < MODES_INTERACTIVE_REFRESH_TIME) { return; } @@ -21,31 +22,17 @@ void draw() { updateStatus(); - SDL_FillRect(game.screen, NULL, 0); + SDL_SetRenderDrawColor( game.renderer, 0, 0, 0, 0); + + SDL_RenderClear(game.renderer); if (Modes.map) { + drawStatus(); + // SDL_RenderCopy(game.renderer,game.texture,NULL,NULL); drawMap(); - drawStatus(); } else { drawList(10,0); } - if(Modes.screen_upscale > 1) { - SDL_Surface *temp = zoomSurface(game.screen, Modes.screen_upscale, Modes.screen_upscale, 0); - SDL_Surface *temp2 = SDL_DisplayFormat(temp); - SDL_Rect clip; - clip.x = 0; - clip.y = 0; - clip.w = temp2->w; - clip.h = temp2->h; - - SDL_BlitSurface(temp2, 0, game.bigScreen, 0); - - SDL_Flip(game.bigScreen); - - SDL_FreeSurface(temp); - SDL_FreeSurface(temp2); - } else { - SDL_Flip(game.screen); - } + SDL_RenderPresent(game.renderer); } \ No newline at end of file diff --git a/sdl1090/draw.fdb_latexmk b/sdl1090/draw.fdb_latexmk deleted file mode 100644 index b2c097f..0000000 --- a/sdl1090/draw.fdb_latexmk +++ /dev/null @@ -1,12 +0,0 @@ -# Fdb version 3 -["pdflatex"] 1505364769 "/Users/nmatsuda/Git/spidr/sdl1090/draw.c" "/Users/nmatsuda/Git/spidr/sdl1090/draw.pdf" "draw" 1505364770 - "/Users/nmatsuda/Git/spidr/sdl1090/draw.aux" 1505364769 8 a94a2480d3289e625eea47cd1b285758 "" - "/Users/nmatsuda/Git/spidr/sdl1090/draw.c" 1505364769 4129 31ebf842dcce304f940dd8201c176862 "" - "/usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf" 1428852030 31983 18aeec08f48baa3cf3508d538dd5f459 "" - "/usr/local/texlive/2015/texmf-var/web2c/pdftex/pdflatex.fmt" 1432479681 3849859 39a7d258195bde2394e244961601fbc5 "" - "/usr/local/texlive/2015/texmf.cnf" 1432479636 577 0d611272082f3cdb8e80e09a3c69cf07 "" - "draw.c" 1505364769 4129 31ebf842dcce304f940dd8201c176862 "" - (generated) - "/Users/nmatsuda/Git/spidr/sdl1090/draw.log" - "draw.log" - "/Users/nmatsuda/Git/spidr/sdl1090/draw.pdf" diff --git a/sdl1090/draw.fls b/sdl1090/draw.fls deleted file mode 100644 index 47e6aa0..0000000 --- a/sdl1090/draw.fls +++ /dev/null @@ -1,6 +0,0 @@ -PWD /Users/nmatsuda/Git/spidr/sdl1090 -INPUT /usr/local/texlive/2015/texmf.cnf -INPUT /usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf -INPUT /usr/local/texlive/2015/texmf-var/web2c/pdftex/pdflatex.fmt -INPUT /Users/nmatsuda/Git/spidr/sdl1090/draw.c -OUTPUT /Users/nmatsuda/Git/spidr/sdl1090/draw.log diff --git a/sdl1090/dump1090.aux b/sdl1090/dump1090.aux deleted file mode 100644 index f23e546..0000000 --- a/sdl1090/dump1090.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/sdl1090/dump1090.fdb_latexmk b/sdl1090/dump1090.fdb_latexmk deleted file mode 100644 index 15db619..0000000 --- a/sdl1090/dump1090.fdb_latexmk +++ /dev/null @@ -1,14 +0,0 @@ -# Fdb version 3 -["pdflatex"] 1505360723 "/Users/nmatsuda/Git/spidr/sdl1090/dump1090.h" "/Users/nmatsuda/Git/spidr/sdl1090/dump1090.pdf" "dump1090" 1505360725 - "/Users/nmatsuda/Git/spidr/sdl1090/dump1090.aux" 1505360723 8 a94a2480d3289e625eea47cd1b285758 "" - "/Users/nmatsuda/Git/spidr/sdl1090/dump1090.h" 1505360723 21883 5718524b7196565a03bf7fd58401e7f6 "" - "/usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf" 1428852030 31983 18aeec08f48baa3cf3508d538dd5f459 "" - "/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1432479641 1764542 91654ba72bdb667e84ea24f076ae16d8 "" - "/usr/local/texlive/2015/texmf-var/web2c/pdftex/pdflatex.fmt" 1432479681 3849859 39a7d258195bde2394e244961601fbc5 "" - "/usr/local/texlive/2015/texmf.cnf" 1432479636 577 0d611272082f3cdb8e80e09a3c69cf07 "" - "dump1090.h" 1505360723 21883 5718524b7196565a03bf7fd58401e7f6 "" - (generated) - "/Users/nmatsuda/Git/spidr/sdl1090/dump1090.log" - "dump1090.log" - "dump1090.pdf" - "/Users/nmatsuda/Git/spidr/sdl1090/dump1090.pdf" diff --git a/sdl1090/dump1090.fls b/sdl1090/dump1090.fls deleted file mode 100644 index 780d342..0000000 --- a/sdl1090/dump1090.fls +++ /dev/null @@ -1,8 +0,0 @@ -PWD /Users/nmatsuda/Git/spidr/sdl1090 -INPUT /usr/local/texlive/2015/texmf.cnf -INPUT /usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf -INPUT /usr/local/texlive/2015/texmf-var/web2c/pdftex/pdflatex.fmt -INPUT /Users/nmatsuda/Git/spidr/sdl1090/dump1090.h -OUTPUT /Users/nmatsuda/Git/spidr/sdl1090/dump1090.log -OUTPUT /Users/nmatsuda/Git/spidr/sdl1090/dump1090.pdf -INPUT /usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map diff --git a/sdl1090/dump1090.h b/sdl1090/dump1090.h index f1208d7..6058e7d 100644 --- a/sdl1090/dump1090.h +++ b/sdl1090/dump1090.h @@ -160,7 +160,7 @@ // at least greater than a given level for us to dump the signal. #define MODES_DEBUG_NOPREAMBLE_LEVEL 25 -#define MODES_INTERACTIVE_REFRESH_TIME 250 // Milliseconds +#define MODES_INTERACTIVE_REFRESH_TIME 33 // Milliseconds #define MODES_INTERACTIVE_ROWS 22 // Rows on screen #define MODES_INTERACTIVE_DELETE_TTL 300 // Delete from the list after 300 seconds #define MODES_INTERACTIVE_DISPLAY_TTL 60 // Delete from display after 60 seconds @@ -342,6 +342,7 @@ struct { // Internal state // map options int map; int mapLogDist; + float maxDist; //display options int screen_upscale; diff --git a/sdl1090/font.c b/sdl1090/font.c index e356218..f2bbe02 100755 --- a/sdl1090/font.c +++ b/sdl1090/font.c @@ -1,10 +1,9 @@ #include "font.h" -#include "SDL/SDL_rotozoom.h" +#include "SDL2/SDL2_rotozoom.h" TTF_Font *loadFont(char *name, int size) { /* Use SDL_TTF to load the font at the specified size */ - TTF_Font *font = TTF_OpenFont(name, size); if (font == NULL) @@ -13,7 +12,7 @@ TTF_Font *loadFont(char *name, int size) exit(1); } - + return font; } @@ -36,7 +35,7 @@ void drawString(char * text, int x, int y, TTF_Font *font, SDL_Color color) SDL_Surface *surface; SDL_Rect dest; - surface = TTF_RenderUTF8_Blended(font, text, color); + surface = TTF_RenderUTF8_Solid(font, text, color); if (surface == NULL) { @@ -52,48 +51,12 @@ void drawString(char * text, int x, int y, TTF_Font *font, SDL_Color color) dest.w = surface->w; dest.h = surface->h; - SDL_BlitSurface(surface, NULL, game.screen, &dest); - - /* Free the generated string image */ - + SDL_Texture *texture = SDL_CreateTextureFromSurface(game.renderer, surface); + SDL_RenderCopy(game.renderer, texture, NULL, &dest); + SDL_DestroyTexture(texture); SDL_FreeSurface(surface); } -void drawString90(char * text, int x, int y, TTF_Font *font, SDL_Color color) -{ - if(!strlen(text)) { - return; - } - - SDL_Surface *surface; - SDL_Rect dest; - - surface = TTF_RenderUTF8_Blended(font, text, color); - - if (surface == NULL) - { - printf("Couldn't create String %s: %s\n", text, SDL_GetError()); - - return; - } - - /* Blit the entire surface to the screen */ - - dest.x = x; - dest.y = y; - dest.w = surface->w; - dest.h = surface->h; - - SDL_Surface *temp = rotateSurface90Degrees(surface,1); - - SDL_BlitSurface(temp, NULL, game.screen, &dest); - - /* Free the generated string image */ - - SDL_FreeSurface(surface); - SDL_FreeSurface(temp); -} - void drawStringBG(char * text, int x, int y, TTF_Font *font, SDL_Color color, SDL_Color bgColor) { if(!strlen(text)) { return; @@ -118,9 +81,8 @@ void drawStringBG(char * text, int x, int y, TTF_Font *font, SDL_Color color, SD dest.w = surface->w; dest.h = surface->h; - SDL_BlitSurface(surface, NULL, game.screen, &dest); - - /* Free the generated string image */ - + SDL_Texture *texture = SDL_CreateTextureFromSurface(game.renderer, surface); + SDL_RenderCopy(game.renderer, texture, NULL, &dest); + SDL_DestroyTexture(texture); SDL_FreeSurface(surface); } diff --git a/sdl1090/init.c b/sdl1090/init.c index 2793f29..dbb7a1b 100644 --- a/sdl1090/init.c +++ b/sdl1090/init.c @@ -1,128 +1,87 @@ #include "dump1090.h" #include "init.h" -#include "SDL/SDL_getenv.h" - -void mouseSetup() { - #ifdef RPI - wiringPiSetupGpio() ; - pinMode(23, INPUT); - pullUpDnControl (23, PUD_UP); - pinMode(22, INPUT); - pullUpDnControl (22, PUD_UP); - pinMode(27, INPUT); - pullUpDnControl (27, PUD_UP); - - SDL_ShowCursor(SDL_DISABLE); - #endif -} - -void init(char *title) -{ +void init(char *title) { // raspberry pi compiler flag enables these options #ifdef RPI putenv((char*)"FRAMEBUFFER=/dev/fb1"); putenv((char*)"SDL_FBDEV=/dev/fb1"); #endif - - /* Initialise SDL */ - - if (SDL_Init(SDL_INIT_VIDEO) < 0) - { - printf("Could not initialize SDL: %s\n", SDL_GetError()); - + if (SDL_Init(SDL_INIT_VIDEO) < 0) { + printf("Could not initialize SDL: %s\n", SDL_GetError()); exit(1); } - /* Initialise SDL_TTF */ - if (TTF_Init() < 0) - { + if (TTF_Init() < 0) { printf("Couldn't initialize SDL TTF: %s\n", SDL_GetError()); - exit(1); } - #ifdef RPI - const SDL_VideoInfo* vInfo = SDL_GetVideoInfo(); + // #ifdef RPI + // const SDL_VideoInfo* vInfo = SDL_GetVideoInfo(); - if (!vInfo) { - fprintf(stderr,"ERROR in SDL_GetVideoInfo(): %s\n",SDL_GetError()); - exit(1); - } + // if (!vInfo) { + // fprintf(stderr,"ERROR in SDL_GetVideoInfo(): %s\n",SDL_GetError()); + // exit(1); + // } - Modes.screen_width = vInfo->current_w; - Modes.screen_height = vInfo->current_h; - Modes.screen_depth = vInfo->vfmt->BitsPerPixel; + // Modes.screen_width = vInfo->current_w; + // Modes.screen_height = vInfo->current_h; + // Modes.screen_depth = vInfo->vfmt->BitsPerPixel; - Modes.screen_upscale = 1; - #endif + // Modes.screen_upscale = 1; + // #endifX + SDL_ShowCursor(SDL_DISABLE); - Uint32 flags = SDL_HWPALETTE|SDL_DOUBLEBUF; + Uint32 flags = 0; if(Modes.fullscreen) { - flags = flags | SDL_FULLSCREEN; + flags = flags | SDL_WINDOW_FULLSCREEN_DESKTOP; } - if(Modes.screen_upscale > 1) { - game.bigScreen = SDL_SetVideoMode(Modes.screen_width * Modes.screen_upscale, Modes.screen_height * Modes.screen_upscale, Modes.screen_depth, flags); - game.screen = SDL_CreateRGBSurface(0, Modes.screen_width, Modes.screen_height, Modes.screen_depth, 0, 0, 0, 0); - } else { - game.screen = SDL_SetVideoMode(Modes.screen_width, Modes.screen_height, Modes.screen_depth, flags); + game.window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, Modes.screen_width, Modes.screen_height, flags); + game.renderer = SDL_CreateRenderer(game.window, -1, 0); + game.texture = SDL_CreateTexture(game.renderer, + SDL_PIXELFORMAT_ARGB8888, + SDL_TEXTUREACCESS_STREAMING, + Modes.screen_width, Modes.screen_height); + + if(Modes.fullscreen) { + //SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); // make the scaled rendering look smoother. + SDL_RenderSetLogicalSize(game.renderer, Modes.screen_width, Modes.screen_height); } - if (game.screen == NULL) - { - printf("Couldn't set screen mode to %d x %d: %s\n", Modes.screen_width, Modes.screen_height, SDL_GetError()); - - exit(1); - } - - mouseSetup(); - - /* Load the font */ - game.mapFont = loadFont("font/TerminusTTF-4.46.0.ttf", 12 * Modes.screen_uiscale); game.mapBoldFont = loadFont("font/TerminusTTF-Bold-4.46.0.ttf", 12 * Modes.screen_uiscale); game.listFont = loadFont("font/TerminusTTF-Bold-4.46.0.ttf", 18 * Modes.screen_uiscale); - game.messageFont = loadFont("font/TerminusTTF-Bold-4.46.0.ttf", 34 * Modes.screen_uiscale); - game.labelFont = loadFont("font/TerminusTTF-Bold-4.46.0.ttf", 16 * Modes.screen_uiscale); + game.messageFont = loadFont("font/TerminusTTF-Bold-4.46.0.ttf", 12 * Modes.screen_uiscale); + game.labelFont = loadFont("font/TerminusTTF-Bold-4.46.0.ttf", 12 * Modes.screen_uiscale); game.mapFontWidth = 5 * Modes.screen_uiscale; game.mapFontHeight = 12 * Modes.screen_uiscale; - game.messageFontWidth = 17 * Modes.screen_uiscale; - game.messageFontHeight = 34 * Modes.screen_uiscale; + game.messageFontWidth = 6 * Modes.screen_uiscale; + game.messageFontHeight = 12 * Modes.screen_uiscale; - game.labelFontWidth = 5 * Modes.screen_uiscale; - game.labelFontHeight = 10 * Modes.screen_uiscale; - - /* Set the screen title */ - - SDL_WM_SetCaption(title, NULL); + game.labelFontWidth = 6 * Modes.screen_uiscale; + game.labelFontHeight = 12 * Modes.screen_uiscale; initMaps(); + } -void cleanup() -{ - /* Close the font */ - +void cleanup() { closeFont(game.mapFont); closeFont(game.mapBoldFont); closeFont(game.messageFont); closeFont(game.labelFont); closeFont(game.listFont); - /* Close SDL_TTF */ - TTF_Quit(); - - /* Shut down SDL */ - SDL_Quit(); } diff --git a/sdl1090/input.c b/sdl1090/input.c index c289dc5..bd180cd 100644 --- a/sdl1090/input.c +++ b/sdl1090/input.c @@ -50,7 +50,13 @@ void getInput() default: break; } + break; + + case SDL_MOUSEWHEEL: + + Modes.maxDist *= 1.0 + event.wheel.y / 10.0; + break; } } } diff --git a/sdl1090/list.c b/sdl1090/list.c index 8ead030..9a8082a 100644 --- a/sdl1090/list.c +++ b/sdl1090/list.c @@ -2,7 +2,7 @@ #include "structs.h" #include "parula.h" #include "monokai.h" -#include "SDL/SDL_gfxPrimitives.h" +#include "SDL2/SDL2_gfxPrimitives.h" void drawList(int rows, int top) { struct aircraft *a = Modes.aircrafts; diff --git a/sdl1090/maps.c b/sdl1090/maps.c index 7b11306..a3cbfde 100644 --- a/sdl1090/maps.c +++ b/sdl1090/maps.c @@ -4,7 +4,7 @@ #include "parula.h" #include "magma.h" #include "monokai.h" -#include "SDL/SDL_gfxPrimitives.h" +#include "SDL2/SDL2_gfxPrimitives.h" #define CENTEROFFSET .375 @@ -58,9 +58,9 @@ int screenDist(double d) { double scale_factor = (Modes.screen_width > Modes.screen_height) ? Modes.screen_width : Modes.screen_height; if(Modes.mapLogDist) { - return round(0.95 * scale_factor * 0.5 * log(1.0+fabs(d)) / log(1.0+LOGMAXDIST)); + return round(0.95 * scale_factor * 0.5 * log(1.0+fabs(d)) / log(1.0+Modes.maxDist)); } else { - return round(0.95 * scale_factor * 0.5 * fabs(d) / MAXDIST); + return round(0.95 * scale_factor * 0.5 * fabs(d) / Modes.maxDist); } } @@ -96,8 +96,8 @@ void drawPlaneOffMap(int x, int y, int *returnx, int *returny, SDL_Color planeCo outx = (outy) * inx / (iny); } - // circleRGBA (game.screen,(Modes.screen_width>>1) + outx, Modes.screen_height * CENTEROFFSET + outy,50,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); - // thickLineRGBA(game.screen,Modes.screen_width>>1,Modes.screen_height * CENTEROFFSET, (Modes.screen_width>>1) + outx, Modes.screen_height * CENTEROFFSET + outy,arrowWidth,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + // circleRGBA (game.renderer,(Modes.screen_width>>1) + outx, Modes.screen_height * CENTEROFFSET + outy,50,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + // thickLineRGBA(game.renderer,Modes.screen_width>>1,Modes.screen_height * CENTEROFFSET, (Modes.screen_width>>1) + outx, Modes.screen_height * CENTEROFFSET + outy,arrowWidth,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); double inmag = sqrt(inx *inx + iny*iny); double vec[3]; @@ -120,7 +120,7 @@ void drawPlaneOffMap(int x, int y, int *returnx, int *returny, SDL_Color planeCo y2 = (Modes.screen_height * CENTEROFFSET) + outy - 2.0 * arrowWidth * vec[1] + round(arrowWidth*out[1]); x3 = (Modes.screen_width>>1) + outx - arrowWidth * vec[0]; y3 = (Modes.screen_height * CENTEROFFSET) + outy - arrowWidth * vec[1]; - filledTrigonRGBA(game.screen, x1, y1, x2, y2, x3, y3, planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + filledTrigonRGBA(game.renderer, x1, y1, x2, y2, x3, y3, planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); // arrow 2 x1 = (Modes.screen_width>>1) + outx - 3.0 * arrowWidth * vec[0] + round(-arrowWidth*out[0]); @@ -129,7 +129,7 @@ void drawPlaneOffMap(int x, int y, int *returnx, int *returny, SDL_Color planeCo y2 = (Modes.screen_height * CENTEROFFSET) + outy - 3.0 * arrowWidth * vec[1] + round(arrowWidth*out[1]); x3 = (Modes.screen_width>>1) + outx - 2.0 * arrowWidth * vec[0]; y3 = (Modes.screen_height * CENTEROFFSET) + outy - 2.0 * arrowWidth * vec[1]; - filledTrigonRGBA(game.screen, x1, y1, x2, y2, x3, y3, planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + filledTrigonRGBA(game.renderer, x1, y1, x2, y2, x3, y3, planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); *returnx = x3; *returny = y3; @@ -158,7 +158,7 @@ void drawPlaneHeading(int x, int y, double heading, SDL_Color planeColor) // tempCenter - // circleRGBA(game.screen, x, y, 10, 255, 0, 0, 255); + // circleRGBA(game.renderer, x, y, 10, 255, 0, 0, 255); //body x1 = x + round(-body*vec[0]); @@ -167,13 +167,13 @@ void drawPlaneHeading(int x, int y, double heading, SDL_Color planeColor) y2 = y + round(body*vec[1]); if(AA) { - aalineRGBA(game.screen,x1,y1,x2,y2,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); - aatrigonRGBA(game.screen, x + round(-wing*.35*out[0]), y + round(-wing*.35*out[1]), x + round(wing*.35*out[0]), y + round(wing*.35*out[1]), x1, y1,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); - aacircleRGBA(game.screen, x2,y2,1,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + aalineRGBA(game.renderer,x1,y1,x2,y2,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + aatrigonRGBA(game.renderer, x + round(-wing*.35*out[0]), y + round(-wing*.35*out[1]), x + round(wing*.35*out[0]), y + round(wing*.35*out[1]), x1, y1,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + aacircleRGBA(game.renderer, x2,y2,1,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); } else { - thickLineRGBA(game.screen,x,y,x2,y2,bodyWidth,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); - filledTrigonRGBA(game.screen, x + round(-wing*.35*out[0]), y + round(-wing*.35*out[1]), x + round(wing*.35*out[0]), y + round(wing*.35*out[1]), x1, y1,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); - filledCircleRGBA(game.screen, x2,y2,Modes.screen_uiscale,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + thickLineRGBA(game.renderer,x,y,x2,y2,bodyWidth,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + filledTrigonRGBA(game.renderer, x + round(-wing*.35*out[0]), y + round(-wing*.35*out[1]), x + round(wing*.35*out[0]), y + round(wing*.35*out[1]), x1, y1,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + filledCircleRGBA(game.renderer, x2,y2,Modes.screen_uiscale,planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); } //wing @@ -183,9 +183,9 @@ void drawPlaneHeading(int x, int y, double heading, SDL_Color planeColor) y2 = y + round(wing*out[1]); if(AA) { - aatrigonRGBA(game.screen, x1, y1, x2, y2, x+round(body*.35*vec[0]), y+round(body*.35*vec[1]),planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + aatrigonRGBA(game.renderer, x1, y1, x2, y2, x+round(body*.35*vec[0]), y+round(body*.35*vec[1]),planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); } else { - filledTrigonRGBA(game.screen, x1, y1, x2, y2, x+round(body*.35*vec[0]), y+round(body*.35*vec[1]),planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + filledTrigonRGBA(game.renderer, x1, y1, x2, y2, x+round(body*.35*vec[0]), y+round(body*.35*vec[1]),planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); } //tail @@ -195,9 +195,9 @@ void drawPlaneHeading(int x, int y, double heading, SDL_Color planeColor) y2 = y + round(-body*.75*vec[1]) + round(tail*out[1]); if(AA) { - aatrigonRGBA (game.screen, x1, y1, x2, y2, x+round(-body*.5*vec[0]), y+round(-body*.5*vec[1]),planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + aatrigonRGBA (game.renderer, x1, y1, x2, y2, x+round(-body*.5*vec[0]), y+round(-body*.5*vec[1]),planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); } else { - filledTrigonRGBA (game.screen, x1, y1, x2, y2, x+round(-body*.5*vec[0]), y+round(-body*.5*vec[1]),planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); + filledTrigonRGBA (game.renderer, x1, y1, x2, y2, x+round(-body*.5*vec[0]), y+round(-body*.5*vec[1]),planeColor.r,planeColor.g,planeColor.b,SDL_ALPHA_OPAQUE); } } @@ -205,7 +205,7 @@ void drawPlane(int x, int y, SDL_Color planeColor) { int length = 3.0; - rectangleRGBA (game.screen, x - length, y - length, x+length, y + length, planeColor.r, planeColor.g, planeColor.b, SDL_ALPHA_OPAQUE); + rectangleRGBA (game.renderer, x - length, y - length, x+length, y + length, planeColor.r, planeColor.g, planeColor.b, SDL_ALPHA_OPAQUE); } @@ -253,10 +253,10 @@ void drawTrail(double *oldDx, double *oldDy, time_t * oldSeen, int idx) { uint8_t colorVal = (uint8_t)floor(255.0 * age); if(AA) { - aalineRGBA(game.screen, prevX, prevY, currentX, currentY,colorVal, colorVal, colorVal, SDL_ALPHA_OPAQUE); + aalineRGBA(game.renderer, prevX, prevY, currentX, currentY,colorVal, colorVal, colorVal, SDL_ALPHA_OPAQUE); } else { - //thickLineRGBA(game.screen, prevX, prevY, currentX, currentY, 2, colorVal, colorVal, colorVal, SDL_ALPHA_OPAQUE); - thickLineRGBA(game.screen, prevX, prevY, currentX, currentY, 2 * Modes.screen_uiscale, colorVal, colorVal, colorVal, SDL_ALPHA_OPAQUE); + //thickLineRGBA(game.renderer, prevX, prevY, currentX, currentY, 2, colorVal, colorVal, colorVal, SDL_ALPHA_OPAQUE); + thickLineRGBA(game.renderer, prevX, prevY, currentX, currentY, 2 * Modes.screen_uiscale, colorVal, colorVal, colorVal, SDL_ALPHA_OPAQUE); } } } @@ -267,17 +267,17 @@ void drawGrid() int p10km = screenDist(10.0); int p100km = screenDist(100.0); - hlineRGBA (game.screen, (Modes.screen_width>>1) - p100km, (Modes.screen_width>>1) + p100km, Modes.screen_height * CENTEROFFSET, grey.r, grey.g, grey.b, SDL_ALPHA_OPAQUE); - vlineRGBA (game.screen, Modes.screen_width>>1, (Modes.screen_height * CENTEROFFSET) - p100km, (Modes.screen_height * CENTEROFFSET) + p100km, grey.r, grey.g, grey.b, SDL_ALPHA_OPAQUE); + hlineRGBA (game.renderer, (Modes.screen_width>>1) - p100km, (Modes.screen_width>>1) + p100km, Modes.screen_height * CENTEROFFSET, grey.r, grey.g, grey.b, SDL_ALPHA_OPAQUE); + vlineRGBA (game.renderer, Modes.screen_width>>1, (Modes.screen_height * CENTEROFFSET) - p100km, (Modes.screen_height * CENTEROFFSET) + p100km, grey.r, grey.g, grey.b, SDL_ALPHA_OPAQUE); if(AA) { - aacircleRGBA (game.screen, Modes.screen_width>>1, Modes.screen_height>>1, p1km, pink.r, pink.g, pink.b, 255); - aacircleRGBA (game.screen, Modes.screen_width>>1, Modes.screen_height>>1, p10km, pink.r, pink.g, pink.b, 195); - aacircleRGBA (game.screen, Modes.screen_width>>1, Modes.screen_height>>1, p100km, pink.r, pink.g, pink.b, 127); + aacircleRGBA (game.renderer, Modes.screen_width>>1, Modes.screen_height>>1, p1km, pink.r, pink.g, pink.b, 255); + aacircleRGBA (game.renderer, Modes.screen_width>>1, Modes.screen_height>>1, p10km, pink.r, pink.g, pink.b, 195); + aacircleRGBA (game.renderer, Modes.screen_width>>1, Modes.screen_height>>1, p100km, pink.r, pink.g, pink.b, 127); } else { - circleRGBA (game.screen, Modes.screen_width>>1, Modes.screen_height * CENTEROFFSET, p1km, pink.r, pink.g, pink.b, 255); - circleRGBA (game.screen, Modes.screen_width>>1, Modes.screen_height * CENTEROFFSET, p10km, pink.r, pink.g, pink.b, 195); - circleRGBA (game.screen, Modes.screen_width>>1, Modes.screen_height * CENTEROFFSET, p100km, pink.r, pink.g, pink.b, 127); + circleRGBA (game.renderer, Modes.screen_width>>1, Modes.screen_height * CENTEROFFSET, p1km, pink.r, pink.g, pink.b, 255); + circleRGBA (game.renderer, Modes.screen_width>>1, Modes.screen_height * CENTEROFFSET, p10km, pink.r, pink.g, pink.b, 195); + circleRGBA (game.renderer, Modes.screen_width>>1, Modes.screen_height * CENTEROFFSET, p100km, pink.r, pink.g, pink.b, 127); } drawString("1km", (Modes.screen_width>>1) + (0.707 * p1km) + 5, (Modes.screen_height * CENTEROFFSET) + (0.707 * p1km) + 5, game.mapFont, pink); @@ -303,17 +303,18 @@ void drawGeography() { double d1 = sqrt(mapPoints_relative[(i - 1) * 2] * mapPoints_relative[(i - 1) * 2] + mapPoints_relative[(i - 1) * 2 + 1] * mapPoints_relative[(i - 1) * 2 + 1]); double d2 = sqrt(mapPoints_relative[i * 2]* mapPoints_relative[i * 2] + mapPoints_relative[i * 2 + 1] * mapPoints_relative[i * 2 + 1]); - double alpha = 255.0 * (d1+d2) / 2; - if(Modes.mapLogDist) { - alpha = 255.0 - alpha / 125.0; - } else { - alpha = 255.0 - alpha / 25.0; - } + //double alpha = 255.0 * (d1+d2) / 2; + //alpha = 255.0 - alpha / Modes.maxDist; + double alpha = 1.0 - (d1+d2) / (2 * Modes.maxDist); + + alpha = (alpha < 0) ? 0 : alpha; if(AA) { - aalineRGBA(game.screen, x1, y1, x2, y2,purple.r,purple.g,purple.b, (alpha < 0) ? 0 : (uint8_t) alpha); + aalineRGBA(game.renderer, x1, y1, x2, y2,purple.r,purple.g,purple.b, (alpha < 0) ? 0 : (uint8_t) alpha); } else { - thickLineRGBA(game.screen, x1, y1, x2, y2, Modes.screen_uiscale, purple.r,purple.g,purple.b, (alpha < 0) ? 0 : (uint8_t) alpha); + //thickLineRGBA(game.renderer, x1, y1, x2, y2, Modes.screen_uiscale, purple.r,purple.g,purple.b, (alpha < 0) ? 0 : (uint8_t) alpha); + //thickLineRGBA(game.renderer, x1, y1, x2, y2, Modes.screen_uiscale, alpha * purple.r + (1.0-alpha) * blue.r, alpha * purple.g + (1.0-alpha) * blue.g, alpha * purple.b + (1.0-alpha) * blue.b, 255 * alpha); + lineRGBA(game.renderer, x1, y1, x2, y2, alpha * purple.r + (1.0-alpha) * blue.r, alpha * purple.g + (1.0-alpha) * blue.g, alpha * purple.b + (1.0-alpha) * blue.b, 255 * alpha); } } @@ -322,7 +323,7 @@ void drawGeography() { // initializeMap(screen_x, screen_y); - // filledPolygonRGBA(game.screen,screen_x, screen_y, mapPoints_count, 100, 100, 100, 255); + // filledPolygonRGBA(game.renderer,screen_x, screen_y, mapPoints_count, 100, 100, 100, 255); } void drawMap(void) { @@ -331,7 +332,7 @@ void drawMap(void) { drawGeography(); - drawGrid(); + drawGrid(); while(a) { if ((now - a->seen) < Modes.interactive_display_ttl) { @@ -369,7 +370,7 @@ void drawMap(void) { snprintf(speed,10,"%dkm/h", a->speed); drawStringBG(speed, outx + 5, outy + 3*game.mapFontHeight, game.mapFont, grey, black); - continue; + // continue; } @@ -379,7 +380,7 @@ void drawMap(void) { double age_ms = (double)(mstime() - a->created); if(age_ms < 500) { - circleRGBA(game.screen, x, y, 500 - age_ms, 255,255, 255, (uint8_t)(255.0 * age_ms / 500.0)); + circleRGBA(game.renderer, x, y, 500 - age_ms, 255,255, 255, (uint8_t)(255.0 * age_ms / 500.0)); } else { if(MODES_ACFLAGS_HEADING_VALID) { drawPlaneHeading(x, y,a->track, planeColor); @@ -397,7 +398,7 @@ void drawMap(void) { snprintf(speed,10,"%dkm/h", a->speed); drawStringBG(speed, x + 5, y + 3*game.mapFontHeight, game.mapFont, grey, black); - lineRGBA(game.screen, x, y, x, y + 4*game.mapFontHeight, grey.r, grey.g, grey.b, SDL_ALPHA_OPAQUE); + lineRGBA(game.renderer, x, y, x, y + 4*game.mapFontHeight, grey.r, grey.g, grey.b, SDL_ALPHA_OPAQUE); } else { drawPlane(x, y, planeColor); } diff --git a/sdl1090/public_html/config.js b/sdl1090/public_html/config.js deleted file mode 100644 index f7d8e2e..0000000 --- a/sdl1090/public_html/config.js +++ /dev/null @@ -1,34 +0,0 @@ -// -------------------------------------------------------- -// -// This file is to configure the configurable settings. -// Load this file before script.js file at gmap.html. -// -// -------------------------------------------------------- - -// -- Output Settings ------------------------------------- -// Show metric values -Metric = false; // true or false - -// -- Map settings ---------------------------------------- -// The Latitude and Longitude in decimal format -CONST_CENTERLAT = 45.0; -CONST_CENTERLON = 9.0; -// The google maps zoom level, 0 - 16, lower is further out -CONST_ZOOMLVL = 5; - -// -- Marker settings ------------------------------------- -// The default marker color -MarkerColor = "rgb(127, 127, 127)"; -SelectedColor = "rgb(225, 225, 225)"; -StaleColor = "rgb(190, 190, 190)"; - -// -- Site Settings --------------------------------------- -SiteShow = false; // true or false -// The Latitude and Longitude in decimal format -SiteLat = 45.0; -SiteLon = 9.0; - -SiteCircles = true; // true or false (Only shown if SiteShow is true) -// In nautical miles or km (depending settings value 'Metric') -SiteCirclesDistances = new Array(100,150,200); - diff --git a/sdl1090/public_html/coolclock/coolclock.js b/sdl1090/public_html/coolclock/coolclock.js deleted file mode 100644 index 4411974..0000000 --- a/sdl1090/public_html/coolclock/coolclock.js +++ /dev/null @@ -1,318 +0,0 @@ -/** - * CoolClock 2.1.4 - * Copyright 2010, Simon Baird - * Released under the BSD License. - * - * Display an analog clock using canvas. - * http://randomibis.com/coolclock/ - * - */ - -// Constructor for CoolClock objects -window.CoolClock = function(options) { - return this.init(options); -} - -// Config contains some defaults, and clock skins -CoolClock.config = { - tickDelay: 1000, - longTickDelay: 15000, - defaultRadius: 85, - renderRadius: 100, - defaultSkin: "chunkySwiss", - // Should be in skin probably... - // (TODO: allow skinning of digital display) - showSecs: true, - showAmPm: true, - - skins: { - // There are more skins in moreskins.js - // Try making your own skin by copy/pasting one of these and tweaking it - swissRail: { - outerBorder: { lineWidth: 2, radius:95, color: "black", alpha: 1 }, - smallIndicator: { lineWidth: 2, startAt: 88, endAt: 92, color: "black", alpha: 1 }, - largeIndicator: { lineWidth: 4, startAt: 79, endAt: 92, color: "black", alpha: 1 }, - hourHand: { lineWidth: 8, startAt: -15, endAt: 50, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 7, startAt: -15, endAt: 75, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: -20, endAt: 85, color: "red", alpha: 1 }, - secondDecoration: { lineWidth: 1, startAt: 70, radius: 4, fillColor: "red", color: "red", alpha: 1 } - }, - chunkySwiss: { - outerBorder: { lineWidth: 4, radius:97, color: "black", alpha: 1 }, - smallIndicator: { lineWidth: 4, startAt: 89, endAt: 93, color: "black", alpha: 1 }, - largeIndicator: { lineWidth: 8, startAt: 80, endAt: 93, color: "black", alpha: 1 }, - hourHand: { lineWidth: 12, startAt: -15, endAt: 60, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 10, startAt: -15, endAt: 85, color: "black", alpha: 1 }, - secondHand: { lineWidth: 4, startAt: -20, endAt: 85, color: "red", alpha: 1 }, - secondDecoration: { lineWidth: 2, startAt: 70, radius: 8, fillColor: "red", color: "red", alpha: 1 } - }, - chunkySwissOnBlack: { - outerBorder: { lineWidth: 4, radius:97, color: "white", alpha: 1 }, - smallIndicator: { lineWidth: 4, startAt: 89, endAt: 93, color: "white", alpha: 1 }, - largeIndicator: { lineWidth: 8, startAt: 80, endAt: 93, color: "white", alpha: 1 }, - hourHand: { lineWidth: 12, startAt: -15, endAt: 60, color: "white", alpha: 1 }, - minuteHand: { lineWidth: 10, startAt: -15, endAt: 85, color: "white", alpha: 1 }, - secondHand: { lineWidth: 4, startAt: -20, endAt: 85, color: "red", alpha: 1 }, - secondDecoration: { lineWidth: 2, startAt: 70, radius: 8, fillColor: "red", color: "red", alpha: 1 } - } - - }, - - // Test for IE so we can nurse excanvas in a couple of places - isIE: !!document.all, - - // Will store (a reference to) each clock here, indexed by the id of the canvas element - clockTracker: {}, - - // For giving a unique id to coolclock canvases with no id - noIdCount: 0 -}; - -// Define the CoolClock object's methods -CoolClock.prototype = { - - // Initialise using the parameters parsed from the colon delimited class - init: function(options) { - // Parse and store the options - this.canvasId = options.canvasId; - this.skinId = options.skinId || CoolClock.config.defaultSkin; - this.displayRadius = options.displayRadius || CoolClock.config.defaultRadius; - this.showSecondHand = typeof options.showSecondHand == "boolean" ? options.showSecondHand : true; - this.gmtOffset = (options.gmtOffset != null && options.gmtOffset != '') ? parseFloat(options.gmtOffset) : null; - this.showDigital = typeof options.showDigital == "boolean" ? options.showDigital : false; - this.logClock = typeof options.logClock == "boolean" ? options.logClock : false; - this.logClockRev = typeof options.logClock == "boolean" ? options.logClockRev : false; - - this.tickDelay = CoolClock.config[ this.showSecondHand ? "tickDelay" : "longTickDelay" ]; - - // Get the canvas element - this.canvas = document.getElementById(this.canvasId); - - // Make the canvas the requested size. It's always square. - this.canvas.setAttribute("width",this.displayRadius*2); - this.canvas.setAttribute("height",this.displayRadius*2); - this.canvas.style.width = this.displayRadius*2 + "px"; - this.canvas.style.height = this.displayRadius*2 + "px"; - - // Explain me please...? - this.renderRadius = CoolClock.config.renderRadius; - this.scale = this.displayRadius / this.renderRadius; - - // Initialise canvas context - this.ctx = this.canvas.getContext("2d"); - this.ctx.scale(this.scale,this.scale); - - // Keep track of this object - CoolClock.config.clockTracker[this.canvasId] = this; - - // Start the clock going - this.tick(); - - return this; - }, - - // Draw a circle at point x,y with params as defined in skin - fullCircleAt: function(x,y,skin) { - this.ctx.save(); - this.ctx.globalAlpha = skin.alpha; - this.ctx.lineWidth = skin.lineWidth; - - if (!CoolClock.config.isIE) { - this.ctx.beginPath(); - } - - if (CoolClock.config.isIE) { - // excanvas doesn't scale line width so we will do it here - this.ctx.lineWidth = this.ctx.lineWidth * this.scale; - } - - this.ctx.arc(x, y, skin.radius, 0, 2*Math.PI, false); - - if (CoolClock.config.isIE) { - // excanvas doesn't close the circle so let's fill in the tiny gap - this.ctx.arc(x, y, skin.radius, -0.1, 0.1, false); - } - - if (skin.fillColor) { - this.ctx.fillStyle = skin.fillColor - this.ctx.fill(); - } - else { - // XXX why not stroke and fill - this.ctx.strokeStyle = skin.color; - this.ctx.stroke(); - } - this.ctx.restore(); - }, - - // Draw some text centered vertically and horizontally - drawTextAt: function(theText,x,y) { - this.ctx.save(); - this.ctx.font = '15px sans-serif'; - var tSize = this.ctx.measureText(theText); - if (!tSize.height) tSize.height = 15; // no height in firefox.. :( - this.ctx.fillText(theText,x - tSize.width/2,y - tSize.height/2); - this.ctx.restore(); - }, - - lpad2: function(num) { - return (num < 10 ? '0' : '') + num; - }, - - tickAngle: function(second) { - // Log algorithm by David Bradshaw - var tweak = 3; // If it's lower the one second mark looks wrong (?) - if (this.logClock) { - return second == 0 ? 0 : (Math.log(second*tweak) / Math.log(60*tweak)); - } - else if (this.logClockRev) { - // Flip the seconds then flip the angle (trickiness) - second = (60 - second) % 60; - return 1.0 - (second == 0 ? 0 : (Math.log(second*tweak) / Math.log(60*tweak))); - } - else { - return second/60.0; - } - }, - - timeText: function(hour,min,sec) { - var c = CoolClock.config; - return '' + - (c.showAmPm ? ((hour%12)==0 ? 12 : (hour%12)) : hour) + ':' + - this.lpad2(min) + - (c.showSecs ? ':' + this.lpad2(sec) : '') + - (c.showAmPm ? (hour < 12 ? ' am' : ' pm') : '') - ; - }, - - // Draw a radial line by rotating then drawing a straight line - // Ha ha, I think I've accidentally used Taus, (see http://tauday.com/) - radialLineAtAngle: function(angleFraction,skin) { - this.ctx.save(); - this.ctx.translate(this.renderRadius,this.renderRadius); - this.ctx.rotate(Math.PI * (2.0 * angleFraction - 0.5)); - this.ctx.globalAlpha = skin.alpha; - this.ctx.strokeStyle = skin.color; - this.ctx.lineWidth = skin.lineWidth; - - if (CoolClock.config.isIE) - // excanvas doesn't scale line width so we will do it here - this.ctx.lineWidth = this.ctx.lineWidth * this.scale; - - if (skin.radius) { - this.fullCircleAt(skin.startAt,0,skin) - } - else { - this.ctx.beginPath(); - this.ctx.moveTo(skin.startAt,0) - this.ctx.lineTo(skin.endAt,0); - this.ctx.stroke(); - } - this.ctx.restore(); - }, - - render: function(hour,min,sec) { - // Get the skin - var skin = CoolClock.config.skins[this.skinId]; - if (!skin) skin = CoolClock.config.skins[CoolClock.config.defaultSkin]; - - // Clear - this.ctx.clearRect(0,0,this.renderRadius*2,this.renderRadius*2); - - // Draw the outer edge of the clock - if (skin.outerBorder) - this.fullCircleAt(this.renderRadius,this.renderRadius,skin.outerBorder); - - // Draw the tick marks. Every 5th one is a big one - for (var i=0;i<60;i++) { - (i%5) && skin.smallIndicator && this.radialLineAtAngle(this.tickAngle(i),skin.smallIndicator); - !(i%5) && skin.largeIndicator && this.radialLineAtAngle(this.tickAngle(i),skin.largeIndicator); - } - - // Write the time - if (this.showDigital) { - this.drawTextAt( - this.timeText(hour,min,sec), - this.renderRadius, - this.renderRadius+this.renderRadius/2 - ); - } - - // Draw the hands - if (skin.hourHand) - this.radialLineAtAngle(this.tickAngle(((hour%12)*5 + min/12.0)),skin.hourHand); - - if (skin.minuteHand) - this.radialLineAtAngle(this.tickAngle((min + sec/60.0)),skin.minuteHand); - - if (this.showSecondHand && skin.secondHand) - this.radialLineAtAngle(this.tickAngle(sec),skin.secondHand); - - // Second hand decoration doesn't render right in IE so lets turn it off - if (!CoolClock.config.isIE && this.showSecondHand && skin.secondDecoration) - this.radialLineAtAngle(this.tickAngle(sec),skin.secondDecoration); - }, - - // Check the time and display the clock - refreshDisplay: function() { - var now = new Date(); - if (this.gmtOffset != null) { - // Use GMT + gmtOffset - var offsetNow = new Date(now.valueOf() + (this.gmtOffset * 1000 * 60 * 60)); - this.render(offsetNow.getUTCHours(),offsetNow.getUTCMinutes(),offsetNow.getUTCSeconds()); - } - else { - // Use local time - this.render(now.getHours(),now.getMinutes(),now.getSeconds()); - } - }, - - // Set timeout to trigger a tick in the future - nextTick: function() { - setTimeout("CoolClock.config.clockTracker['"+this.canvasId+"'].tick()",this.tickDelay); - }, - - // Check the canvas element hasn't been removed - stillHere: function() { - return document.getElementById(this.canvasId) != null; - }, - - // Main tick handler. Refresh the clock then setup the next tick - tick: function() { - if (this.stillHere()) { - this.refreshDisplay() - this.nextTick(); - } - } -}; - -// Find all canvas elements that have the CoolClock class and turns them into clocks -CoolClock.findAndCreateClocks = function() { - // (Let's not use a jQuery selector here so it's easier to use frameworks other than jQuery) - var canvases = document.getElementsByTagName("canvas"); - for (var i=0;i -// If you do have jQuery and it's loaded already then we can do it right now -if (window.jQuery) jQuery(document).ready(CoolClock.findAndCreateClocks); diff --git a/sdl1090/public_html/coolclock/excanvas.js b/sdl1090/public_html/coolclock/excanvas.js deleted file mode 100644 index 3e1aedf..0000000 --- a/sdl1090/public_html/coolclock/excanvas.js +++ /dev/null @@ -1,785 +0,0 @@ -// Copyright 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -// Known Issues: -// -// * Patterns are not implemented. -// * Radial gradient are not implemented. The VML version of these look very -// different from the canvas one. -// * Clipping paths are not implemented. -// * Coordsize. The width and height attribute have higher priority than the -// width and height style values which isn't correct. -// * Painting mode isn't implemented. -// * Canvas width/height should is using content-box by default. IE in -// Quirks mode will draw the canvas using border-box. Either change your -// doctype to HTML5 -// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) -// or use Box Sizing Behavior from WebFX -// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) -// * Optimize. There is always room for speed improvements. - -// only add this code if we do not already have a canvas implementation -if (!window.CanvasRenderingContext2D) { - -(function () { - - // alias some functions to make (compiled) code shorter - var m = Math; - var mr = m.round; - var ms = m.sin; - var mc = m.cos; - - // this is used for sub pixel precision - var Z = 10; - var Z2 = Z / 2; - - var G_vmlCanvasManager_ = { - init: function (opt_doc) { - var doc = opt_doc || document; - if (/MSIE/.test(navigator.userAgent) && !window.opera) { - var self = this; - doc.attachEvent("onreadystatechange", function () { - self.init_(doc); - }); - } - }, - - init_: function (doc) { - if (doc.readyState == "complete") { - // create xmlns - if (!doc.namespaces["g_vml_"]) { - doc.namespaces.add("g_vml_", "urn:schemas-microsoft-com:vml"); - } - - // setup default css - var ss = doc.createStyleSheet(); - ss.cssText = "canvas{display:inline-block;overflow:hidden;" + - // default size is 300x150 in Gecko and Opera - "text-align:left;width:300px;height:150px}" + - "g_vml_\\:*{behavior:url(#default#VML)}"; - - // find all canvas elements - var els = doc.getElementsByTagName("canvas"); - for (var i = 0; i < els.length; i++) { - if (!els[i].getContext) { - this.initElement(els[i]); - } - } - } - }, - - fixElement_: function (el) { - // in IE before version 5.5 we would need to add HTML: to the tag name - // but we do not care about IE before version 6 - var outerHTML = el.outerHTML; - - var newEl = el.ownerDocument.createElement(outerHTML); - // if the tag is still open IE has created the children as siblings and - // it has also created a tag with the name "/FOO" - if (outerHTML.slice(-2) != "/>") { - var tagName = "/" + el.tagName; - var ns; - // remove content - while ((ns = el.nextSibling) && ns.tagName != tagName) { - ns.removeNode(); - } - // remove the incorrect closing tag - if (ns) { - ns.removeNode(); - } - } - el.parentNode.replaceChild(newEl, el); - return newEl; - }, - - /** - * Public initializes a canvas element so that it can be used as canvas - * element from now on. This is called automatically before the page is - * loaded but if you are creating elements using createElement you need to - * make sure this is called on the element. - * @param {HTMLElement} el The canvas element to initialize. - * @return {HTMLElement} the element that was created. - */ - initElement: function (el) { - el = this.fixElement_(el); - el.getContext = function () { - if (this.context_) { - return this.context_; - } - return this.context_ = new CanvasRenderingContext2D_(this); - }; - - // do not use inline function because that will leak memory - el.attachEvent('onpropertychange', onPropertyChange); - el.attachEvent('onresize', onResize); - - var attrs = el.attributes; - if (attrs.width && attrs.width.specified) { - // TODO: use runtimeStyle and coordsize - // el.getContext().setWidth_(attrs.width.nodeValue); - el.style.width = attrs.width.nodeValue + "px"; - } else { - el.width = el.clientWidth; - } - if (attrs.height && attrs.height.specified) { - // TODO: use runtimeStyle and coordsize - // el.getContext().setHeight_(attrs.height.nodeValue); - el.style.height = attrs.height.nodeValue + "px"; - } else { - el.height = el.clientHeight; - } - //el.getContext().setCoordsize_() - return el; - } - }; - - function onPropertyChange(e) { - var el = e.srcElement; - - switch (e.propertyName) { - case 'width': - el.style.width = el.attributes.width.nodeValue + "px"; - el.getContext().clearRect(); - break; - case 'height': - el.style.height = el.attributes.height.nodeValue + "px"; - el.getContext().clearRect(); - break; - } - } - - function onResize(e) { - var el = e.srcElement; - if (el.firstChild) { - el.firstChild.style.width = el.clientWidth + 'px'; - el.firstChild.style.height = el.clientHeight + 'px'; - } - } - - G_vmlCanvasManager_.init(); - - // precompute "00" to "FF" - var dec2hex = []; - for (var i = 0; i < 16; i++) { - for (var j = 0; j < 16; j++) { - dec2hex[i * 16 + j] = i.toString(16) + j.toString(16); - } - } - - function createMatrixIdentity() { - return [ - [1, 0, 0], - [0, 1, 0], - [0, 0, 1] - ]; - } - - function matrixMultiply(m1, m2) { - var result = createMatrixIdentity(); - - for (var x = 0; x < 3; x++) { - for (var y = 0; y < 3; y++) { - var sum = 0; - - for (var z = 0; z < 3; z++) { - sum += m1[x][z] * m2[z][y]; - } - - result[x][y] = sum; - } - } - return result; - } - - function copyState(o1, o2) { - o2.fillStyle = o1.fillStyle; - o2.lineCap = o1.lineCap; - o2.lineJoin = o1.lineJoin; - o2.lineWidth = o1.lineWidth; - o2.miterLimit = o1.miterLimit; - o2.shadowBlur = o1.shadowBlur; - o2.shadowColor = o1.shadowColor; - o2.shadowOffsetX = o1.shadowOffsetX; - o2.shadowOffsetY = o1.shadowOffsetY; - o2.strokeStyle = o1.strokeStyle; - o2.arcScaleX_ = o1.arcScaleX_; - o2.arcScaleY_ = o1.arcScaleY_; - } - - function processStyle(styleString) { - var str, alpha = 1; - - styleString = String(styleString); - if (styleString.substring(0, 3) == "rgb") { - var start = styleString.indexOf("(", 3); - var end = styleString.indexOf(")", start + 1); - var guts = styleString.substring(start + 1, end).split(","); - - str = "#"; - for (var i = 0; i < 3; i++) { - str += dec2hex[Number(guts[i])]; - } - - if ((guts.length == 4) && (styleString.substr(3, 1) == "a")) { - alpha = guts[3]; - } - } else { - str = styleString; - } - - return [str, alpha]; - } - - function processLineCap(lineCap) { - switch (lineCap) { - case "butt": - return "flat"; - case "round": - return "round"; - case "square": - default: - return "square"; - } - } - - /** - * This class implements CanvasRenderingContext2D interface as described by - * the WHATWG. - * @param {HTMLElement} surfaceElement The element that the 2D context should - * be associated with - */ - function CanvasRenderingContext2D_(surfaceElement) { - this.m_ = createMatrixIdentity(); - - this.mStack_ = []; - this.aStack_ = []; - this.currentPath_ = []; - - // Canvas context properties - this.strokeStyle = "#000"; - this.fillStyle = "#000"; - - this.lineWidth = 1; - this.lineJoin = "miter"; - this.lineCap = "butt"; - this.miterLimit = Z * 1; - this.globalAlpha = 1; - this.canvas = surfaceElement; - - var el = surfaceElement.ownerDocument.createElement('div'); - el.style.width = surfaceElement.clientWidth + 'px'; - el.style.height = surfaceElement.clientHeight + 'px'; - el.style.overflow = 'hidden'; - el.style.position = 'absolute'; - surfaceElement.appendChild(el); - - this.element_ = el; - this.arcScaleX_ = 1; - this.arcScaleY_ = 1; - }; - - var contextPrototype = CanvasRenderingContext2D_.prototype; - contextPrototype.clearRect = function() { - this.element_.innerHTML = ""; - this.currentPath_ = []; - }; - - contextPrototype.beginPath = function() { - // TODO: Branch current matrix so that save/restore has no effect - // as per safari docs. - - this.currentPath_ = []; - }; - - contextPrototype.moveTo = function(aX, aY) { - this.currentPath_.push({type: "moveTo", x: aX, y: aY}); - this.currentX_ = aX; - this.currentY_ = aY; - }; - - contextPrototype.lineTo = function(aX, aY) { - this.currentPath_.push({type: "lineTo", x: aX, y: aY}); - this.currentX_ = aX; - this.currentY_ = aY; - }; - - contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, - aCP2x, aCP2y, - aX, aY) { - this.currentPath_.push({type: "bezierCurveTo", - cp1x: aCP1x, - cp1y: aCP1y, - cp2x: aCP2x, - cp2y: aCP2y, - x: aX, - y: aY}); - this.currentX_ = aX; - this.currentY_ = aY; - }; - - contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { - // the following is lifted almost directly from - // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes - var cp1x = this.currentX_ + 2.0 / 3.0 * (aCPx - this.currentX_); - var cp1y = this.currentY_ + 2.0 / 3.0 * (aCPy - this.currentY_); - var cp2x = cp1x + (aX - this.currentX_) / 3.0; - var cp2y = cp1y + (aY - this.currentY_) / 3.0; - this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, aX, aY); - }; - - contextPrototype.arc = function(aX, aY, aRadius, - aStartAngle, aEndAngle, aClockwise) { - aRadius *= Z; - var arcType = aClockwise ? "at" : "wa"; - - var xStart = aX + (mc(aStartAngle) * aRadius) - Z2; - var yStart = aY + (ms(aStartAngle) * aRadius) - Z2; - - var xEnd = aX + (mc(aEndAngle) * aRadius) - Z2; - var yEnd = aY + (ms(aEndAngle) * aRadius) - Z2; - - // IE won't render arches drawn counter clockwise if xStart == xEnd. - if (xStart == xEnd && !aClockwise) { - xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something - // that can be represented in binary - } - - this.currentPath_.push({type: arcType, - x: aX, - y: aY, - radius: aRadius, - xStart: xStart, - yStart: yStart, - xEnd: xEnd, - yEnd: yEnd}); - - }; - - contextPrototype.rect = function(aX, aY, aWidth, aHeight) { - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - }; - - contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { - // Will destroy any existing path (same as FF behaviour) - this.beginPath(); - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - this.stroke(); - }; - - contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { - // Will destroy any existing path (same as FF behaviour) - this.beginPath(); - this.moveTo(aX, aY); - this.lineTo(aX + aWidth, aY); - this.lineTo(aX + aWidth, aY + aHeight); - this.lineTo(aX, aY + aHeight); - this.closePath(); - this.fill(); - }; - - contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { - var gradient = new CanvasGradient_("gradient"); - return gradient; - }; - - contextPrototype.createRadialGradient = function(aX0, aY0, - aR0, aX1, - aY1, aR1) { - var gradient = new CanvasGradient_("gradientradial"); - gradient.radius1_ = aR0; - gradient.radius2_ = aR1; - gradient.focus_.x = aX0; - gradient.focus_.y = aY0; - return gradient; - }; - - contextPrototype.drawImage = function (image, var_args) { - var dx, dy, dw, dh, sx, sy, sw, sh; - - // to find the original width we overide the width and height - var oldRuntimeWidth = image.runtimeStyle.width; - var oldRuntimeHeight = image.runtimeStyle.height; - image.runtimeStyle.width = 'auto'; - image.runtimeStyle.height = 'auto'; - - // get the original size - var w = image.width; - var h = image.height; - - // and remove overides - image.runtimeStyle.width = oldRuntimeWidth; - image.runtimeStyle.height = oldRuntimeHeight; - - if (arguments.length == 3) { - dx = arguments[1]; - dy = arguments[2]; - sx = sy = 0; - sw = dw = w; - sh = dh = h; - } else if (arguments.length == 5) { - dx = arguments[1]; - dy = arguments[2]; - dw = arguments[3]; - dh = arguments[4]; - sx = sy = 0; - sw = w; - sh = h; - } else if (arguments.length == 9) { - sx = arguments[1]; - sy = arguments[2]; - sw = arguments[3]; - sh = arguments[4]; - dx = arguments[5]; - dy = arguments[6]; - dw = arguments[7]; - dh = arguments[8]; - } else { - throw "Invalid number of arguments"; - } - - var d = this.getCoords_(dx, dy); - - var w2 = sw / 2; - var h2 = sh / 2; - - var vmlStr = []; - - var W = 10; - var H = 10; - - // For some reason that I've now forgotten, using divs didn't work - vmlStr.push(' ' , - '', - ''); - - this.element_.insertAdjacentHTML("BeforeEnd", - vmlStr.join("")); - }; - - contextPrototype.stroke = function(aFill) { - var lineStr = []; - var lineOpen = false; - var a = processStyle(aFill ? this.fillStyle : this.strokeStyle); - var color = a[0]; - var opacity = a[1] * this.globalAlpha; - - var W = 10; - var H = 10; - - lineStr.push(' max.x) { - max.x = c.x; - } - if (min.y == null || c.y < min.y) { - min.y = c.y; - } - if (max.y == null || c.y > max.y) { - max.y = c.y; - } - } - } - lineStr.push(' ">'); - - if (typeof this.fillStyle == "object") { - var focus = {x: "50%", y: "50%"}; - var width = (max.x - min.x); - var height = (max.y - min.y); - var dimension = (width > height) ? width : height; - - focus.x = mr((this.fillStyle.focus_.x / width) * 100 + 50) + "%"; - focus.y = mr((this.fillStyle.focus_.y / height) * 100 + 50) + "%"; - - var colors = []; - - // inside radius (%) - if (this.fillStyle.type_ == "gradientradial") { - var inside = (this.fillStyle.radius1_ / dimension * 100); - - // percentage that outside radius exceeds inside radius - var expansion = (this.fillStyle.radius2_ / dimension * 100) - inside; - } else { - var inside = 0; - var expansion = 100; - } - - var insidecolor = {offset: null, color: null}; - var outsidecolor = {offset: null, color: null}; - - // We need to sort 'colors' by percentage, from 0 > 100 otherwise ie - // won't interpret it correctly - this.fillStyle.colors_.sort(function (cs1, cs2) { - return cs1.offset - cs2.offset; - }); - - for (var i = 0; i < this.fillStyle.colors_.length; i++) { - var fs = this.fillStyle.colors_[i]; - - colors.push( (fs.offset * expansion) + inside, "% ", fs.color, ","); - - if (fs.offset > insidecolor.offset || insidecolor.offset == null) { - insidecolor.offset = fs.offset; - insidecolor.color = fs.color; - } - - if (fs.offset < outsidecolor.offset || outsidecolor.offset == null) { - outsidecolor.offset = fs.offset; - outsidecolor.color = fs.color; - } - } - colors.pop(); - - lineStr.push(''); - } else if (aFill) { - lineStr.push(''); - } else { - lineStr.push( - '' - ); - } - - lineStr.push(""); - - this.element_.insertAdjacentHTML("beforeEnd", lineStr.join("")); - - this.currentPath_ = []; - }; - - contextPrototype.fill = function() { - this.stroke(true); - } - - contextPrototype.closePath = function() { - this.currentPath_.push({type: "close"}); - }; - - /** - * @private - */ - contextPrototype.getCoords_ = function(aX, aY) { - return { - x: Z * (aX * this.m_[0][0] + aY * this.m_[1][0] + this.m_[2][0]) - Z2, - y: Z * (aX * this.m_[0][1] + aY * this.m_[1][1] + this.m_[2][1]) - Z2 - } - }; - - contextPrototype.save = function() { - var o = {}; - copyState(this, o); - this.aStack_.push(o); - this.mStack_.push(this.m_); - this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); - }; - - contextPrototype.restore = function() { - copyState(this.aStack_.pop(), this); - this.m_ = this.mStack_.pop(); - }; - - contextPrototype.translate = function(aX, aY) { - var m1 = [ - [1, 0, 0], - [0, 1, 0], - [aX, aY, 1] - ]; - - this.m_ = matrixMultiply(m1, this.m_); - }; - - contextPrototype.rotate = function(aRot) { - var c = mc(aRot); - var s = ms(aRot); - - var m1 = [ - [c, s, 0], - [-s, c, 0], - [0, 0, 1] - ]; - - this.m_ = matrixMultiply(m1, this.m_); - }; - - contextPrototype.scale = function(aX, aY) { - this.arcScaleX_ *= aX; - this.arcScaleY_ *= aY; - var m1 = [ - [aX, 0, 0], - [0, aY, 0], - [0, 0, 1] - ]; - - this.m_ = matrixMultiply(m1, this.m_); - }; - - /******** STUBS ********/ - contextPrototype.clip = function() { - // TODO: Implement - }; - - contextPrototype.arcTo = function() { - // TODO: Implement - }; - - contextPrototype.createPattern = function() { - return new CanvasPattern_; - }; - - // Gradient / Pattern Stubs - function CanvasGradient_(aType) { - this.type_ = aType; - this.radius1_ = 0; - this.radius2_ = 0; - this.colors_ = []; - this.focus_ = {x: 0, y: 0}; - } - - CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { - aColor = processStyle(aColor); - this.colors_.push({offset: 1-aOffset, color: aColor}); - }; - - function CanvasPattern_() {} - - // set up externs - G_vmlCanvasManager = G_vmlCanvasManager_; - CanvasRenderingContext2D = CanvasRenderingContext2D_; - CanvasGradient = CanvasGradient_; - CanvasPattern = CanvasPattern_; - -})(); - -} // if diff --git a/sdl1090/public_html/coolclock/moreskins.js b/sdl1090/public_html/coolclock/moreskins.js deleted file mode 100644 index e316181..0000000 --- a/sdl1090/public_html/coolclock/moreskins.js +++ /dev/null @@ -1,212 +0,0 @@ -CoolClock.config.skins = { - - swissRail: { - outerBorder: { lineWidth: 2, radius: 95, color: "black", alpha: 1 }, - smallIndicator: { lineWidth: 2, startAt: 88, endAt: 92, color: "black", alpha: 1 }, - largeIndicator: { lineWidth: 4, startAt: 79, endAt: 92, color: "black", alpha: 1 }, - hourHand: { lineWidth: 8, startAt: -15, endAt: 50, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 7, startAt: -15, endAt: 75, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: -20, endAt: 85, color: "red", alpha: 1 }, - secondDecoration: { lineWidth: 1, startAt: 70, radius: 4, fillColor: "red", color: "red", alpha: 1 } - }, - - chunkySwiss: { - outerBorder: { lineWidth: 4, radius: 97, color: "black", alpha: 1 }, - smallIndicator: { lineWidth: 4, startAt: 89, endAt: 93, color: "black", alpha: 1 }, - largeIndicator: { lineWidth: 8, startAt: 80, endAt: 93, color: "black", alpha: 1 }, - hourHand: { lineWidth: 12, startAt: -15, endAt: 60, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 10, startAt: -15, endAt: 85, color: "black", alpha: 1 }, - secondHand: { lineWidth: 4, startAt: -20, endAt: 85, color: "red", alpha: 1 }, - secondDecoration: { lineWidth: 2, startAt: 70, radius: 8, fillColor: "red", color: "red", alpha: 1 } - }, - - chunkySwissOnBlack: { - outerBorder: { lineWidth: 4, radius: 97, color: "white", alpha: 1 }, - smallIndicator: { lineWidth: 4, startAt: 89, endAt: 93, color: "white", alpha: 1 }, - largeIndicator: { lineWidth: 8, startAt: 80, endAt: 93, color: "white", alpha: 1 }, - hourHand: { lineWidth: 12, startAt: -15, endAt: 60, color: "white", alpha: 1 }, - minuteHand: { lineWidth: 10, startAt: -15, endAt: 85, color: "white", alpha: 1 }, - secondHand: { lineWidth: 4, startAt: -20, endAt: 85, color: "red", alpha: 1 }, - secondDecoration: { lineWidth: 2, startAt: 70, radius: 8, fillColor: "red", color: "red", alpha: 1 } - }, - - fancy: { - outerBorder: { lineWidth: 5, radius: 95, color: "green", alpha: 0.7 }, - smallIndicator: { lineWidth: 1, startAt: 80, endAt: 93, color: "black", alpha: 0.4 }, - largeIndicator: { lineWidth: 1, startAt: 30, endAt: 93, color: "black", alpha: 0.5 }, - hourHand: { lineWidth: 8, startAt: -15, endAt: 50, color: "blue", alpha: 0.7 }, - minuteHand: { lineWidth: 7, startAt: -15, endAt: 92, color: "red", alpha: 0.7 }, - secondHand: { lineWidth: 10, startAt: 80, endAt: 85, color: "blue", alpha: 0.3 }, - secondDecoration: { lineWidth: 1, startAt: 30, radius: 50, fillColor: "blue", color: "red", alpha: 0.15 } - }, - - machine: { - outerBorder: { lineWidth: 60, radius: 55, color: "#dd6655", alpha: 1 }, - smallIndicator: { lineWidth: 4, startAt: 80, endAt: 95, color: "white", alpha: 1 }, - largeIndicator: { lineWidth: 14, startAt: 77, endAt: 92, color: "#dd6655", alpha: 1 }, - hourHand: { lineWidth: 18, startAt: -15, endAt: 40, color: "white", alpha: 1 }, - minuteHand: { lineWidth: 14, startAt: 24, endAt: 100, color: "#771100", alpha: 0.5 }, - secondHand: { lineWidth: 3, startAt: 22, endAt: 83, color: "green", alpha: 0 }, - secondDecoration: { lineWidth: 1, startAt: 52, radius: 26, fillColor: "#ffcccc", color: "red", alpha: 0.5 } - }, - - simonbaird_com: { - hourHand: { lineWidth: 80, startAt: -15, endAt: 35, color: 'magenta', alpha: 0.5 }, - minuteHand: { lineWidth: 80, startAt: -15, endAt: 65, color: 'cyan', alpha: 0.5 }, - secondDecoration: { lineWidth: 1, startAt: 40, radius: 40, color: "#fff", fillColor: 'yellow', alpha: 0.5 } - }, - - // by bonstio, http://bonstio.net - classic/*was gIG*/: { - outerBorder: { lineWidth: 185, radius: 1, color: "#E5ECF9", alpha: 1 }, - smallIndicator: { lineWidth: 2, startAt: 89, endAt: 94, color: "#3366CC", alpha: 1 }, - largeIndicator: { lineWidth: 4, startAt: 83, endAt: 94, color: "#3366CC", alpha: 1 }, - hourHand: { lineWidth: 5, startAt: 0, endAt: 60, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 4, startAt: 0, endAt: 80, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: -20, endAt: 85, color: "red", alpha: .85 }, - secondDecoration: { lineWidth: 3, startAt: 0, radius: 2, fillColor: "black", color: "black", alpha: 1 } - }, - - modern/*was gIG2*/: { - outerBorder: { lineWidth: 185, radius: 1, color: "#E5ECF9", alpha: 1 }, - smallIndicator: { lineWidth: 5, startAt: 88, endAt: 94, color: "#3366CC", alpha: 1 }, - largeIndicator: { lineWidth: 5, startAt: 88, endAt: 94, color: "#3366CC", alpha: 1 }, - hourHand: { lineWidth: 8, startAt: 0, endAt: 60, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 8, startAt: 0, endAt: 80, color: "black", alpha: 1 }, - secondHand: { lineWidth: 5, startAt: 80, endAt: 85, color: "red", alpha: .85 }, - secondDecoration: { lineWidth: 3, startAt: 0, radius: 4, fillColor: "black", color: "black", alpha: 1 } - }, - - simple/*was gIG3*/: { - outerBorder: { lineWidth: 185, radius: 1, color: "#E5ECF9", alpha: 1 }, - smallIndicator: { lineWidth: 10, startAt: 90, endAt: 94, color: "#3366CC", alpha: 1 }, - largeIndicator: { lineWidth: 10, startAt: 90, endAt: 94, color: "#3366CC", alpha: 1 }, - hourHand: { lineWidth: 8, startAt: 0, endAt: 60, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 8, startAt: 0, endAt: 80, color: "black", alpha: 1 }, - secondHand: { lineWidth: 5, startAt: 80, endAt: 85, color: "red", alpha: .85 }, - secondDecoration: { lineWidth: 3, startAt: 0, radius: 4, fillColor: "black", color: "black", alpha: 1 } - }, - - // by securephp - securephp: { - outerBorder: { lineWidth: 100, radius: 0.45, color: "#669900", alpha: 0.3 }, - smallIndicator: { lineWidth: 2, startAt: 80, endAt: 90 , color: "green", alpha: 1 }, - largeIndicator: { lineWidth: 8.5, startAt: 20, endAt: 40 , color: "green", alpha: 0.4 }, - hourHand: { lineWidth: 3, startAt: 0, endAt: 60, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 2, startAt: 0, endAt: 75, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: -10, endAt: 80, color: "blue", alpha: 0.8 }, - secondDecoration: { lineWidth: 1, startAt: 70, radius: 4, fillColor: "blue", color: "red", alpha: 1 } - }, - - Tes2: { - outerBorder: { lineWidth: 4, radius: 95, color: "black", alpha: 0.5 }, - smallIndicator: { lineWidth: 1, startAt: 10, endAt: 50 , color: "#66CCFF", alpha: 1 }, - largeIndicator: { lineWidth: 8.5, startAt: 60, endAt: 70, color: "#6699FF", alpha: 1 }, - hourHand: { lineWidth: 5, startAt: -15, endAt: 60, color: "black", alpha: 0.7 }, - minuteHand: { lineWidth: 3, startAt: -25, endAt: 75, color: "black", alpha: 0.7 }, - secondHand: { lineWidth: 1.5, startAt: -20, endAt: 88, color: "red", alpha: 1 }, - secondDecoration: { lineWidth: 1, startAt: 20, radius: 4, fillColor: "blue", color: "red", alpha: 1 } - }, - - - Lev: { - outerBorder: { lineWidth: 10, radius: 95, color: "#CCFF33", alpha: 0.65 }, - smallIndicator: { lineWidth: 5, startAt: 84, endAt: 90, color: "#996600", alpha: 1 }, - largeIndicator: { lineWidth: 40, startAt: 25, endAt: 95, color: "#336600", alpha: 0.55 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 65, color: "black", alpha: 0.9 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 80, color: "black", alpha: 0.85 }, - secondHand: { lineWidth: 1, startAt: 0, endAt: 85, color: "black", alpha: 1 }, - secondDecoration: { lineWidth: 2, startAt: 5, radius: 10, fillColor: "black", color: "black", alpha: 1 } - }, - - Sand: { - outerBorder: { lineWidth: 1, radius: 70, color: "black", alpha: 0.5 }, - smallIndicator: { lineWidth: 3, startAt: 50, endAt: 70, color: "#0066FF", alpha: 0.5 }, - largeIndicator: { lineWidth: 200, startAt: 80, endAt: 95, color: "#996600", alpha: 0.75 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 65, color: "black", alpha: 0.9 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 80, color: "black", alpha: 0.85 }, - secondHand: { lineWidth: 1, startAt: 0, endAt: 85, color: "black", alpha: 1 }, - secondDecoration: { lineWidth: 2, startAt: 5, radius: 10, fillColor: "black", color: "black", alpha: 1 } - }, - - Sun: { - outerBorder: { lineWidth: 100, radius: 140, color: "#99FFFF", alpha: 0.2 }, - smallIndicator: { lineWidth: 300, startAt: 50, endAt: 70, color: "black", alpha: 0.1 }, - largeIndicator: { lineWidth: 5, startAt: 80, endAt: 95, color: "black", alpha: 0.65 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 65, color: "black", alpha: 0.9 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 80, color: "black", alpha: 0.85 }, - secondHand: { lineWidth: 1, startAt: 0, endAt: 90, color: "black", alpha: 1 }, - secondDecoration: { lineWidth: 2, startAt: 5, radius: 10, fillColor: "black", color: "black", alpha: 1 } - }, - - Tor: { - outerBorder: { lineWidth: 10, radius: 88, color: "#996600", alpha: 0.9 }, - smallIndicator: { lineWidth: 6, startAt: -10, endAt: 73, color: "green", alpha: 0.3 }, - largeIndicator: { lineWidth: 6, startAt: 73, endAt: 100, color: "black", alpha: 0.65 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 65, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 80, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: -73, endAt: 73, color: "black", alpha: 0.8 }, - secondDecoration: { lineWidth: 2, startAt: 5, radius: 10, fillColor: "black", color: "black", alpha: 1 } - }, - - Cold: { - outerBorder: { lineWidth: 15, radius: 90, color: "black", alpha: 0.3 }, - smallIndicator: { lineWidth: 15, startAt: -10, endAt: 95, color: "blue", alpha: 0.1 }, - largeIndicator: { lineWidth: 3, startAt: 80, endAt: 95, color: "blue", alpha: 0.65 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 65, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 80, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: 0, endAt: 85, color: "black", alpha: 0.8 }, - secondDecoration: { lineWidth: 5, startAt: 30, radius: 10, fillColor: "black", color: "black", alpha: 1 } - }, - - Babosa: { - outerBorder: { lineWidth: 100, radius: 25, color: "blue", alpha: 0.25 }, - smallIndicator: { lineWidth: 3, startAt: 90, endAt: 95, color: "#3366CC", alpha: 1 }, - largeIndicator: { lineWidth: 4, startAt: 75, endAt: 95, color: "#3366CC", alpha: 1 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 60, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 85, color: "black", alpha: 1 }, - secondHand: { lineWidth: 12, startAt: 75, endAt: 90, color: "red", alpha: 0.8 }, - secondDecoration: { lineWidth: 3, startAt: 0, radius: 4, fillColor: "black", color: "black", alpha: 1 } - }, - - Tumb: { - outerBorder: { lineWidth: 105, radius: 5, color: "green", alpha: 0.4 }, - smallIndicator: { lineWidth: 1, startAt: 93, endAt: 98, color: "green", alpha: 1 }, - largeIndicator: { lineWidth: 50, startAt: 0, endAt: 89, color: "red", alpha: 0.14 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 65, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 80, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: 0, endAt: 85, color: "black", alpha: 0.8 }, - secondDecoration: { lineWidth: 5, startAt: 50, radius: 90, fillColor: "black", color: "black", alpha: 0.05 } - }, - - Stone: { - outerBorder: { lineWidth: 15, radius: 80, color: "#339933", alpha: 0.5 }, - smallIndicator: { lineWidth: 2, startAt: 70, endAt: 90, color: "#FF3300", alpha: 0.7 }, - largeIndicator: { lineWidth: 15, startAt: 0, endAt: 29, color: "#FF6600", alpha: 0.3 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 65, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 75, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: 0, endAt: 85, color: "black", alpha: 0.8 }, - secondDecoration: { lineWidth: 5, startAt: 50, radius: 90, fillColor: "black", color: "black", alpha: 0.05 } - }, - - Disc: { - outerBorder: { lineWidth: 105, radius: 1, color: "#666600", alpha: 0.2 }, - smallIndicator: { lineWidth: 1, startAt: 58, endAt: 95, color: "#669900", alpha: 0.8 }, - largeIndicator: { lineWidth: 6, startAt: 25, endAt: 35, color: "#666600", alpha: 1 }, - hourHand: { lineWidth: 4, startAt: 0, endAt: 65, color: "black", alpha: 1 }, - minuteHand: { lineWidth: 3, startAt: 0, endAt: 75, color: "black", alpha: 1 }, - secondHand: { lineWidth: 1, startAt: -75, endAt: 75, color: "#99CC00", alpha: 0.8 }, - secondDecoration: { lineWidth: 5, startAt: 50, radius: 90, fillColor: "#00FF00", color: "green", alpha: 0.05 } - }, - - // By Yoo Nhe - watermelon: { - outerBorder: { lineWidth: 100, radius: 1.7, color: "#d93d04", alpha: 5 }, - smallIndicator: { lineWidth: 2, startAt: 50, endAt: 70, color: "#d93d04", alpha: 5 }, - largeIndicator: { lineWidth: 2, startAt: 45, endAt: 94, color: "#a9bf04", alpha: 1 }, - hourHand: { lineWidth: 5, startAt: -20, endAt: 80, color: "#8c0d17", alpha: 1 }, - minuteHand: { lineWidth: 2, startAt: -20, endAt: 80, color: "#7c8c03", alpha: .9 }, - secondHand: { lineWidth: 2, startAt: 70, endAt: 94, color: "#d93d04", alpha: .85 }, - secondDecoration: { lineWidth: 1, startAt: 70, radius: 3, fillColor: "red", color: "black", alpha: .7 } - } -}; diff --git a/sdl1090/public_html/extension.js b/sdl1090/public_html/extension.js deleted file mode 100644 index f71fe17..0000000 --- a/sdl1090/public_html/extension.js +++ /dev/null @@ -1,19 +0,0 @@ -// ----------------------------------------------------- -// -// This file is so users can modify how the page acts -// without diving to deep in the code. This way we can -// also try out or hold custom code for ourselves and -// not check it into the repo. -// -// There is a div id'ed as plane_extension for use with -// this javascript file. -// ----------------------------------------------------- - -function extendedInitalize() { - // Write your initalization here - // Gets called just before the 1-sec function call loop is setup -} - -function extendedPulse() { - // This will get called every second after all the main functions -} diff --git a/sdl1090/public_html/gmap.html b/sdl1090/public_html/gmap.html deleted file mode 100644 index 9ab2dc2..0000000 --- a/sdl1090/public_html/gmap.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - DUMP1090 - - - -
-
-
- -
- Squak 7x00 is reported and shown.
- This is most likely an error in reciving or decoding.
- Please do not call the local authorities, they already know about it if it is valid squak. -
-
- - diff --git a/sdl1090/public_html/options.js b/sdl1090/public_html/options.js deleted file mode 100644 index f4e3627..0000000 --- a/sdl1090/public_html/options.js +++ /dev/null @@ -1,17 +0,0 @@ -var listKMLType = ['Approch', 'Departure', 'Transit', 'Custom1', 'Custom2']; -var listKMLs = localStorage['listKMLs'] || []; - -function optionsInitalize() { - // Write your initalization here - // Gets called just before the 1-sec function call loop is setup - $( "#dialog-modal" ).dialog({ - height: 140, - modal: true, - autoOpen: false, - closeOnEscape: false - }); -} - -function optionsModal() { - $( "#dialog-modal" ).dialog( "open"); -} diff --git a/sdl1090/public_html/planeObject.js b/sdl1090/public_html/planeObject.js deleted file mode 100644 index 98153fd..0000000 --- a/sdl1090/public_html/planeObject.js +++ /dev/null @@ -1,260 +0,0 @@ -var planeObject = { - oldlat : null, - oldlon : null, - oldalt : null, - - // Basic location information - altitude : null, - speed : null, - track : null, - latitude : null, - longitude : null, - - // Info about the plane - flight : null, - squawk : null, - icao : null, - is_selected : false, - - // Data packet numbers - messages : null, - seen : null, - - // Vaild... - vPosition : false, - vTrack : false, - - // GMap Details - marker : null, - markerColor : MarkerColor, - lines : [], - trackdata : new Array(), - trackline : new Array(), - - // When was this last updated? - updated : null, - reapable : false, - - // Appends data to the running track so we can get a visual tail on the plane - // Only useful for a long running browser session. - funcAddToTrack : function(){ - // TODO: Write this function out - this.trackdata.push([this.latitude, this.longitude, this.altitude, this.track, this.speed]); - this.trackline.push(new google.maps.LatLng(this.latitude, this.longitude)); - }, - - // This is to remove the line from the screen if we deselect the plane - funcClearLine : function() { - if (this.line) { - this.line.setMap(null); - this.line = null; - } - }, - - // Should create an icon for us to use on the map... - funcGetIcon : function() { - this.markerColor = MarkerColor; - // If this marker is selected we should make it lighter than the rest. - if (this.is_selected == true) { - this.markerColor = SelectedColor; - } - - // If we have not seen a recent update, change color - if (this.seen > 15) { - this.markerColor = StaleColor; - } - - // Plane marker - var baseSvg = { - planeData : "M 1.9565564,41.694305 C 1.7174505,40.497708 1.6419973,38.448747 " + - "1.8096508,37.70494 1.8936398,37.332056 2.0796653,36.88191 2.222907,36.70461 " + - "2.4497603,36.423844 4.087816,35.47248 14.917931,29.331528 l 12.434577," + - "-7.050718 -0.04295,-7.613412 c -0.03657,-6.4844888 -0.01164,-7.7625804 " + - "0.168134,-8.6194061 0.276129,-1.3160905 0.762276,-2.5869575 1.347875," + - "-3.5235502 l 0.472298,-0.7553719 1.083746,-0.6085497 c 1.194146,-0.67053522 " + - "1.399524,-0.71738842 2.146113,-0.48960552 1.077005,0.3285939 2.06344," + - "1.41299352 2.797602,3.07543322 0.462378,1.0469993 0.978731,2.7738408 " + - "1.047635,3.5036272 0.02421,0.2570284 0.06357,3.78334 0.08732,7.836246 0.02375," + - "4.052905 0.0658,7.409251 0.09345,7.458546 0.02764,0.04929 5.600384,3.561772 " + - "12.38386,7.805502 l 12.333598,7.715871 0.537584,0.959688 c 0.626485,1.118378 " + - "0.651686,1.311286 0.459287,3.516442 -0.175469,2.011604 -0.608966,2.863924 " + - "-1.590344,3.127136 -0.748529,0.200763 -1.293144,0.03637 -10.184829,-3.07436 " + - "C 48.007733,41.72562 44.793806,40.60197 43.35084,40.098045 l -2.623567," + - "-0.916227 -1.981212,-0.06614 c -1.089663,-0.03638 -1.985079,-0.05089 -1.989804," + - "-0.03225 -0.0052,0.01863 -0.02396,2.421278 -0.04267,5.339183 -0.0395,6.147742 " + - "-0.143635,7.215456 -0.862956,8.845475 l -0.300457,0.680872 2.91906,1.361455 " + - "c 2.929379,1.366269 3.714195,1.835385 4.04589,2.41841 0.368292,0.647353 " + - "0.594634,2.901439 0.395779,3.941627 -0.0705,0.368571 -0.106308,0.404853 " + - "-0.765159,0.773916 L 41.4545,62.83158 39.259237,62.80426 c -6.030106,-0.07507 " + - "-16.19508,-0.495041 -16.870991,-0.697033 -0.359409,-0.107405 -0.523792," + - "-0.227482 -0.741884,-0.541926 -0.250591,-0.361297 -0.28386,-0.522402 -0.315075," + - "-1.52589 -0.06327,-2.03378 0.23288,-3.033615 1.077963,-3.639283 0.307525," + - "-0.2204 4.818478,-2.133627 6.017853,-2.552345 0.247872,-0.08654 0.247455," + - "-0.102501 -0.01855,-0.711959 -0.330395,-0.756986 -0.708622,-2.221756 -0.832676," + - "-3.224748 -0.05031,-0.406952 -0.133825,-3.078805 -0.185533,-5.937448 -0.0517," + - "-2.858644 -0.145909,-5.208974 -0.209316,-5.222958 -0.06341,-0.01399 -0.974464," + - "-0.0493 -2.024551,-0.07845 L 23.247235,38.61921 18.831373,39.8906 C 4.9432155," + - "43.88916 4.2929558,44.057819 3.4954426,43.86823 2.7487826,43.690732 2.2007966," + - "42.916622 1.9565564,41.694305 z" - }; - - // If the squawk code is one of the international emergency codes, - // match the info window alert color. - if (this.squawk == 7500) { - this.markerColor = "rgb(255, 85, 85)"; - } - if (this.squawk == 7600) { - this.markerColor = "rgb(0, 255, 255)"; - } - if (this.squawk == 7700) { - this.markerColor = "rgb(255, 255, 0)"; - } - - // If we have not overwritten color by now, an extension still could but - // just keep on trucking. :) - - return { - strokeWeight: (this.is_selected ? 2 : 1), - path: "M 0,0 "+ baseSvg["planeData"], - scale: 0.4, - fillColor: this.markerColor, - fillOpacity: 0.9, - anchor: new google.maps.Point(32, 32), // Set anchor to middle of plane. - rotation: this.track - }; - }, - - // TODO: Trigger actions of a selecting a plane - funcSelectPlane : function(selectedPlane){ - selectPlaneByHex(this.icao); - }, - - // Update our data - funcUpdateData : function(data){ - // So we can find out if we moved - var oldlat = this.latitude; - var oldlon = this.longitude; - var oldalt = this.altitude; - - // Update all of our data - this.updated = new Date().getTime(); - this.altitude = data.altitude; - this.speed = data.speed; - this.track = data.track; - this.latitude = data.lat; - this.longitude = data.lon; - this.flight = data.flight; - this.squawk = data.squawk; - this.icao = data.hex; - this.messages = data.messages; - this.seen = data.seen; - - // If no packet in over 58 seconds, consider the plane reapable - // This way we can hold it, but not show it just in case the plane comes back - if (this.seen > 58) { - this.reapable = true; - if (this.marker) { - this.marker.setMap(null); - this.marker = null; - } - if (this.line) { - this.line.setMap(null); - this.line = null; - } - if (SelectedPlane == this.icao) { - if (this.is_selected) { - this.is_selected = false; - } - SelectedPlane = null; - } - } else { - if (this.reapable == true) { - } - this.reapable = false; - } - - // Is the position valid? - if ((data.validposition == 1) && (this.reapable == false)) { - this.vPosition = true; - - // Detech if the plane has moved - changeLat = false; - changeLon = false; - changeAlt = false; - if (oldlat != this.latitude) { - changeLat = true; - } - if (oldlon != this.longitude) { - changeLon = true; - } - if (oldalt != this.altitude) { - changeAlt = true; - } - // Right now we only care about lat/long, if alt is updated only, oh well - if ((changeLat == true) || (changeLon == true)) { - this.funcAddToTrack(); - if (this.is_selected) { - this.line = this.funcUpdateLines(); - } - } - this.marker = this.funcUpdateMarker(); - PlanesOnMap++; - } else { - this.vPosition = false; - } - - // Do we have a valid track for the plane? - if (data.validtrack == 1) - this.vTrack = true; - else - this.vTrack = false; - }, - - // Update our marker on the map - funcUpdateMarker: function() { - if (this.marker) { - this.marker.setPosition(new google.maps.LatLng(this.latitude, this.longitude)); - this.marker.setIcon(this.funcGetIcon()); - } else { - this.marker = new google.maps.Marker({ - position: new google.maps.LatLng(this.latitude, this.longitude), - map: GoogleMap, - icon: this.funcGetIcon(), - visable: true - }); - - // This is so we can match icao address - this.marker.icao = this.icao; - - // Trap clicks for this marker. - google.maps.event.addListener(this.marker, 'click', this.funcSelectPlane); - } - - // Setting the marker title - if (this.flight.length == 0) { - this.marker.setTitle(this.hex); - } else { - this.marker.setTitle(this.flight+' ('+this.icao+')'); - } - return this.marker; - }, - - // Update our planes tail line, - // TODO: Make this multi colored based on options - // altitude (default) or speed - funcUpdateLines: function() { - if (this.line) { - var path = this.line.getPath(); - path.push(new google.maps.LatLng(this.latitude, this.longitude)); - } else { - this.line = new google.maps.Polyline({ - strokeColor: '#000000', - strokeOpacity: 1.0, - strokeWeight: 3, - map: GoogleMap, - path: this.trackline - }); - } - return this.line; - } -}; diff --git a/sdl1090/public_html/script.js b/sdl1090/public_html/script.js deleted file mode 100644 index 8212e50..0000000 --- a/sdl1090/public_html/script.js +++ /dev/null @@ -1,658 +0,0 @@ -// Define our global variables -var GoogleMap = null; -var Planes = {}; -var PlanesOnMap = 0; -var PlanesOnTable = 0; -var PlanesToReap = 0; -var SelectedPlane = null; -var SpecialSquawk = false; - -var iSortCol=-1; -var bSortASC=true; -var bDefaultSortASC=true; -var iDefaultSortCol=3; - -// Get current map settings -CenterLat = Number(localStorage['CenterLat']) || CONST_CENTERLAT; -CenterLon = Number(localStorage['CenterLon']) || CONST_CENTERLON; -ZoomLvl = Number(localStorage['ZoomLvl']) || CONST_ZOOMLVL; - -function fetchData() { - $.getJSON('/dump1090/data.json', function(data) { - PlanesOnMap = 0 - SpecialSquawk = false; - - // Loop through all the planes in the data packet - for (var j=0; j < data.length; j++) { - // Do we already have this plane object in Planes? - // If not make it. - if (Planes[data[j].hex]) { - var plane = Planes[data[j].hex]; - } else { - var plane = jQuery.extend(true, {}, planeObject); - } - - /* For special squawk tests - if (data[j].hex == '48413x') { - data[j].squawk = '7700'; - } //*/ - - // Set SpecialSquawk-value - if (data[j].squawk == '7500' || data[j].squawk == '7600' || data[j].squawk == '7700') { - SpecialSquawk = true; - } - - // Call the function update - plane.funcUpdateData(data[j]); - - // Copy the plane into Planes - Planes[plane.icao] = plane; - } - - PlanesOnTable = data.length; - }); -} - -// Initalizes the map and starts up our timers to call various functions -function initialize() { - // Make a list of all the available map IDs - var mapTypeIds = []; - for(var type in google.maps.MapTypeId) { - mapTypeIds.push(google.maps.MapTypeId[type]); - } - // Push OSM on to the end - mapTypeIds.push("OSM"); - mapTypeIds.push("dark_map"); - - // Styled Map to outline airports and highways - var styles = [ - { - "featureType": "administrative", - "stylers": [ - { "visibility": "off" } - ] - },{ - "featureType": "landscape", - "stylers": [ - { "visibility": "off" } - ] - },{ - "featureType": "poi", - "stylers": [ - { "visibility": "off" } - ] - },{ - "featureType": "road", - "stylers": [ - { "visibility": "off" } - ] - },{ - "featureType": "transit", - "stylers": [ - { "visibility": "off" } - ] - },{ - "featureType": "landscape", - "stylers": [ - { "visibility": "on" }, - { "weight": 8 }, - { "color": "#000000" } - ] - },{ - "featureType": "water", - "stylers": [ - { "lightness": -74 } - ] - },{ - "featureType": "transit.station.airport", - "stylers": [ - { "visibility": "on" }, - { "weight": 8 }, - { "invert_lightness": true }, - { "lightness": 27 } - ] - },{ - "featureType": "road.highway", - "stylers": [ - { "visibility": "simplified" }, - { "invert_lightness": true }, - { "gamma": 0.3 } - ] - },{ - "featureType": "road", - "elementType": "labels", - "stylers": [ - { "visibility": "off" } - ] - } - ] - - // Add our styled map - var styledMap = new google.maps.StyledMapType(styles, {name: "Dark Map"}); - - // Define the Google Map - var mapOptions = { - center: new google.maps.LatLng(CenterLat, CenterLon), - zoom: ZoomLvl, - mapTypeId: google.maps.MapTypeId.ROADMAP, - mapTypeControl: true, - streetViewControl: false, - mapTypeControlOptions: { - mapTypeIds: mapTypeIds, - position: google.maps.ControlPosition.TOP_LEFT, - style: google.maps.MapTypeControlStyle.DROPDOWN_MENU - } - }; - - GoogleMap = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); - - //Define OSM map type pointing at the OpenStreetMap tile server - GoogleMap.mapTypes.set("OSM", new google.maps.ImageMapType({ - getTileUrl: function(coord, zoom) { - return "http://tile.openstreetmap.org/" + zoom + "/" + coord.x + "/" + coord.y + ".png"; - }, - tileSize: new google.maps.Size(256, 256), - name: "OpenStreetMap", - maxZoom: 18 - })); - - GoogleMap.mapTypes.set("dark_map", styledMap); - - // Listeners for newly created Map - google.maps.event.addListener(GoogleMap, 'center_changed', function() { - localStorage['CenterLat'] = GoogleMap.getCenter().lat(); - localStorage['CenterLon'] = GoogleMap.getCenter().lng(); - }); - - google.maps.event.addListener(GoogleMap, 'zoom_changed', function() { - localStorage['ZoomLvl'] = GoogleMap.getZoom(); - }); - - // Add home marker if requested - if (SiteShow && (typeof SiteLat !== 'undefined' || typeof SiteLon !== 'undefined')) { - var siteMarker = new google.maps.LatLng(SiteLat, SiteLon); - var markerImage = new google.maps.MarkerImage( - 'http://maps.google.com/mapfiles/kml/pal4/icon57.png', - new google.maps.Size(32, 32), // Image size - new google.maps.Point(0, 0), // Origin point of image - new google.maps.Point(16, 16)); // Position where marker should point - var marker = new google.maps.Marker({ - position: siteMarker, - map: GoogleMap, - icon: markerImage, - title: 'My Radar Site', - zIndex: -99999 - }); - - if (SiteCircles) { - for (var i=0;i