Merge branch 'beta'

Conflicts:
	index.html
	logos/logos.js
This commit is contained in:
Neale Pickett 2014-02-15 15:16:08 -07:00
commit 13933eb8bb
96 changed files with 1389 additions and 2618 deletions

View File

@ -1,36 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>LADD Roller Derby Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="res/style.css">
</head>
<body>
<h1>LADD Scoreboard</h1>
<p>
Having problems? Try something other than Internet Explorer!
Chrome and Firefox have both been tested extensively.
</p>
<ul>
<li><a href="scoreboard.html">Normal layout</a>, or <a href="classic.html">with team names</a></li>
<li><a href="crg.html">CRG-style layout</a>, or <a href="crg-nologo.html">CRG without logos</a></li>
<li><a href="highvis.html">High-visibility</a></li>
<li><a href="micro.html">Timers-only</a></li>
<li>Flags: <a href="flag-us.html">USA</a> <a href="flag-ca.html">Canada</a> <a href="flag-mx.html">Mexico</a></li>
</ul>
<h1>Documentation</h1>
<ul>
<li><a href="http://youtu.be/MXOzmmnHqXU">operation tutorial</a></li>
<li><a href="http://youtu.be/lH1VZ2kFatY">installation tutorial</a></li>
<li><a href="res/usage.html">Text documentation</a></li>
</ul>
<address>
Neale Pickett &lt;<a href="mailto:neale&#64;woozle&#46;org">neale&#64;woozle&#46;org</a>&gt;
</address>
</body>
</html>

2
TODO Normal file
View File

@ -0,0 +1,2 @@
* chrome.fileSystem.retainEntry?
* use chrome.power to keep the display on

48
_locales/en/messages.json Normal file
View File

@ -0,0 +1,48 @@
{
"appName": {
"message": "Woozle Roller Derby Scoreboard",
"description": "Application name"
},
"appShortName": {
"message": "Woozle Scoreboard",
"description": "Short application name"
},
"appDesc": {
"message": "Roller Derby Scoreboard for WFTDA, USARS, RDCL, MADE, and JRDA",
"description": "Application description for app store listing"
},
"period1": {
"message": "Period 1",
"description": "Name of first period"
},
"period2": {
"message": "Period 2",
"description": "Name of second period"
},
"halftime": {
"message": "Halftime",
"description": "The name of the break between periods"
},
"timeToGame": {
"message": "To Derby",
"description": "Text shown after countdown to start of game"
},
"jam": {
"message": "Jam",
"description": "Time during the game when skaters are actively playing"
},
"lineup": {
"message": "Lineup",
"description": "Time between active play, when skaters are positioning themselves"
},
"timeout": {
"message": "Timeout",
"description": "Time when game is suspended: period clock stops counting down"
},
"setup": {
"message": "Setup",
"description": "Software state allowing logos and times to be adjusted"
}
}

View File

@ -1,100 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>LADD Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
<style type="text/css">
#name-a, #name-b {
font-family: PermanentMarker, monospace, sans-serif;
position: absolute;
top: 0;
font-size: 75%;
}
#name-a {
left: 0;
}
#name-b {
right: 0;
}
.logo {
margin-top: 1em;
max-height: 1.5em;
}
#score-a, #score-b {
position: absolute;
font-size: 90%;
top: auto;
bottom: 0em;
}
#jammer-a, #jammer-b {
bottom: 1.5em;
}
#timeouts-a, #timeouts-b {
bottom: 3em;
}
</style>
<script type="text/javascript" src="logos/logos.js"></script>
<script type="text/javascript" src="res/scoreboard.js"></script>
</head>
<body>
<!--
HTML5 says not to use tables for layout. Since this is
a highly-styled page, it looks awful without CSS. Sorry.
-->
<div id="scoreboard">
<p class="left">
<span class="name" id="name-a" onclick="handle(event);">Home</span>
<img class="logo" src="" alt="A" id="logo-a" onclick="handle(event);">
<span class="timeouts" id="timeouts-a" onclick="handle(event);">0</span>
<span class="jammer" id="jammer-a" onclick="handle(event);"></span>
<span class="score" id="score-a" onclick="handle(event);">-</span>
</p>
<p>
<span id="period" onclick="handle(event);">--:--</span>
<span id="periodtext" onclick="handle(event);"></span>
<span id="jam" onclick="handle(event);">-:--.-</span>
<span id="jamtext" onclick="handle(event);"></span>
<span id="jamno" onclick="handle(event);">0</span>
</p>
<p class="right">
<span class="name" id="name-b" onclick="handle(event);">Vis</span>
<img class="logo" src="" alt="B" id="logo-b" onclick="handle(event);">
<span class="timeouts" id="timeouts-b" onclick="handle(event);">0</span>
<span class="jammer" id="jammer-b" onclick="handle(event);"></span>
<span class="score" id="score-b" onclick="handle(event);">-</span>
</p>
</div>
<div id="notice">
<div id="notice-1">Power Jam</div>
<div id="notice-2">Grand Slam</div>
<div id="notice-3">Ouch</div>
<div id="notice-4">OMG</div>
</div>
</body>
</html>

View File

@ -1,192 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>LADD Scoreboard</title>
<meta charset="utf-8">
<style type="text/css">
html {
height: 100%;
background: #000000; /* Old browsers */
background: -moz-linear-gradient(top, #000000 0%, #888888 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#000000), color-stop(100%,#888888)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #000000 0%,#888888 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #000000 0%,#888888 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #000000 0%,#888888 100%); /* IE10+ */
background: linear-gradient(to bottom, #000000 0%,#888888 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#000000', endColorstr='#888888',GradientType=0 ); /* IE6-9 */
font-family: arial, "Numbus Sans L Bold", sans-serif;
font-weight: bold;
text-align: center;
}
.button {
background: rgb(242,245,246); /* Old browsers */
background: -moz-linear-gradient(top, rgba(242,245,246,1) 0%, rgba(227,234,237,1) 37%, rgba(200,215,220,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(242,245,246,1)), color-stop(37%,rgba(227,234,237,1)), color-stop(100%,rgba(200,215,220,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f2f5f6', endColorstr='#c8d7dc',GradientType=0 ); /* IE6-9 */
border-radius: 0.3em;
color: black;
}
#scoreboard *[id] {
cursor: pointer;
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;
}
#team-a {
position: absolute;
left: 25%;
width: 3em;
margin-left: -1.5em;
top: 0;
}
#team-b {
position: absolute;
right: 25%;
width: 3em;
margin-right: -1.5em;
top: 0;
}
img, p {
margin: 0.1em;
}
.name {
color: white;
font-size: 50%;
height: 4em;
}
.score {
position: relative;
top: -0.3em;
width: 2.2em;
margin: auto;
}
#timeouts {
font-size: 30%;
position: absolute;
top: 6.2em;
left: 50%;
width: 4.5em;
margin-left: -2.25em;
}
.label {
font-size: 80%;
}
.to {
margin: 1em 0;
width: 2em;
}
#timeouts-a {
float: left;
}
#timeouts-b {
float: right;
}
#pcol {
font-size: 66%;
position: absolute;
left: 25%;
width: 5em;
margin-left: -2.5em;
bottom: 0;
}
.text {
width: 6em;
font-size: 50%;
margin: 0.1em auto;
}
.timer {
width: 4em;
margin: 0.1em auto;
}
#jcol {
font-size: 66%;
position: absolute;
right: 25%;
width: 5em;
margin-right: -2.5em;
bottom: 0;
}
</style>
<script type="text/javascript" src="res/scoreboard.js"></script>
<script type="text/javascript">
longnames = true;
tenths = false;
</script>
</head>
<body>
<!--
HTML5 says not to use tables for layout. Since this is
a highly-styled page, it looks awful without CSS. Sorry.
-->
<div id="scoreboard">
<div id="team-a">
<p class="name" id="name-a" onclick="handle(event);">Home</p>
<p class="score button" id="score-a" onclick="handle(event);">-</p>
</div>
<div id="timeouts">
<p class="label button">Timeouts</p>
<p class="to button" id="timeouts-a" onclick="handle(event);">0</p>
<p class="to button" id="timeouts-b" onclick="handle(event);">0</p>
</div>
<div id="team-b">
<p class="name" id="name-b" onclick="handle(event);">Home</p>
<p class="score button" id="score-b" onclick="handle(event);">-</p>
</div>
<div id="pcol">
<p class="text button" id="periodtext" onclick="handle(event);"></p>
<p class="timer button"><span id="period" onclick="handle(event);">--:--</span></p>
</div>
<div id="jcol">
<p class="text button" id="jtxt">
<span id="jamtext" onclick="handle(event);"></span>
<span id="jamno" onclick="handle(event);">0</span>
</p>
<p class="timer button"><span id="jam" onclick="handle(event);">-:--</span></p>
</div>
</div>
</body>
</html>

199
crg.html
View File

@ -1,199 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>LADD Scoreboard</title>
<meta charset="utf-8">
<style type="text/css">
html {
height: 100%;
background: #000000; /* Old browsers */
background: -moz-linear-gradient(top, #000000 0%, #888888 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#000000), color-stop(100%,#888888)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #000000 0%,#888888 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #000000 0%,#888888 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #000000 0%,#888888 100%); /* IE10+ */
background: linear-gradient(to bottom, #000000 0%,#888888 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#000000', endColorstr='#888888',GradientType=0 ); /* IE6-9 */
font-family: arial, "Numbus Sans L Bold", sans-serif;
font-weight: bold;
text-align: center;
}
.button {
background: rgb(242,245,246); /* Old browsers */
background: -moz-linear-gradient(top, rgba(242,245,246,1) 0%, rgba(227,234,237,1) 37%, rgba(200,215,220,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(242,245,246,1)), color-stop(37%,rgba(227,234,237,1)), color-stop(100%,rgba(200,215,220,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f2f5f6', endColorstr='#c8d7dc',GradientType=0 ); /* IE6-9 */
border-radius: 0.3em;
color: black;
}
#scoreboard *[id] {
cursor: pointer;
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;
}
#team-a {
position: absolute;
left: 25%;
width: 3em;
margin-left: -1.5em;
top: 0;
}
#team-b {
position: absolute;
right: 25%;
width: 3em;
margin-right: -1.5em;
top: 0;
}
img, p {
margin: 0.1em;
}
.name {
color: white;
font-size: 30%;
height: 2em;
}
.logo {
height: 1em;
}
.score {
position: relative;
top: -0.3em;
width: 2.2em;
margin: auto;
}
#timeouts {
font-size: 30%;
position: absolute;
top: 6.2em;
left: 50%;
width: 5em;
margin-left: -2.5em;
}
.label {
font-size: 80%;
}
.to {
margin: 1em 0;
width: 2em;
}
#timeouts-a {
float: left;
}
#timeouts-b {
float: right;
}
#pcol {
font-size: 66%;
position: absolute;
left: 25%;
width: 5em;
margin-left: -2.5em;
bottom: 0;
}
.text {
width: 6em;
font-size: 50%;
margin: 0.1em auto;
}
.timer {
width: 4em;
margin: 0.1em auto;
}
#jcol {
font-size: 66%;
position: absolute;
right: 25%;
width: 5em;
margin-right: -2.5em;
bottom: 0;
}
</style>
<script type="text/javascript" src="logos/logos.js"></script>
<script type="text/javascript" src="res/scoreboard.js"></script>
<script type="text/javascript">
longnames = true;
tenths = false;
</script>
</head>
<body>
<!--
HTML5 says not to use tables for layout. Since this is
a highly-styled page, it looks awful without CSS. Sorry.
-->
<div id="scoreboard">
<div id="team-a">
<p class="name" id="name-a" onclick="handle(event);">Home</p>
<img class="logo" src="" alt="A" id="logo-a" onclick="handle(event);">
<p class="score button" id="score-a" onclick="handle(event);">-</p>
</div>
<div id="timeouts">
<p class="label button">Timeouts</p>
<p class="to button" id="timeouts-a" onclick="handle(event);">0</p>
<p class="to button" id="timeouts-b" onclick="handle(event);">0</p>
</div>
<div id="team-b">
<p class="name" id="name-b" onclick="handle(event);">Home</p>
<img class="logo" src="" alt="B" id="logo-b" onclick="handle(event);">
<p class="score button" id="score-b" onclick="handle(event);">-</p>
</div>
<div id="pcol">
<p class="text button" id="periodtext" onclick="handle(event);"></p>
<p class="timer button"><span id="period" onclick="handle(event);">--:--</span></p>
</div>
<div id="jcol">
<p class="text button" id="jtxt">
<span id="jamtext" onclick="handle(event);"></span>
<span id="jamno" onclick="handle(event);">0</span>
</p>
<p class="timer button"><span id="jam" onclick="handle(event);">-:--</span></p>
</div>
</div>
</body>
</html>

View File

@ -1,4 +0,0 @@
<!DOCTYPE html>
<html style="background: black;"><head><title>flag</title></head>
<body><img style="max-width: 100%; max-height: 100%;" src="res/Flag_of_Canada.svg" alt="Flag"></body>
<html>

View File

@ -1,4 +0,0 @@
<!DOCTYPE html>
<html style="background: black;"><head><title>flag</title></head>
<body><img style="max-width: 100%; max-height: 100%;" src="res/Flag_of_Mexico.svg" alt="Flag"></body>
<html>

View File

@ -1,4 +0,0 @@
<!DOCTYPE html>
<html style="background: black;"><head><title>flag</title></head>
<body><img style="max-width: 100%; max-height: 100%;" src="res/Flag_of_the_United_States.svg" alt="Flag"></body>
<html>

View File

@ -1,99 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>LADD Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
<style type="text/css">
body {
background: black;
color: white;
text-align: center;
}
#scoreboard {
font-size: 1.4em;
width: 100%;
}
#jam, #period, #score-a, #score-b, #jammer-a.lead, #jammer-b.lead {
color: white;
}
#score-a, #score-b {
position: absolute;
top: 1.4em;
}
#jammer-a, #jammer-b {
position: absolute;
bottom: 0;
}
#jamtext {
font-family: monospace;
}
#score-a, #jammer-a {
left: 10px;
}
#score-b, #jammer-b {
right: 10px;
}
html, p {
padding: 0;
margin: 0;
}
#notice {
position: absolute;
top: 10px;
left: 20%;
width: 60%;
background: white;
color: black;
font-family: sans-serif;
font-weight: bold;
}
</style>
<script type="text/javascript" src="res/scoreboard.js"></script>
<script type="text/javascript">
window.onkeypress = key;
jamtext = ["J", "L", "T", "Setup"];
tenths = true;
</script>
</head>
<body>
<div id="scoreboard">
<p>
<span id="period" onclick="handle(event);">--:--</span>
</p>
<p>
<span id="score-a" onclick="handle(event);">-</span>
<span id="jammer-a" onclick="handle(event);"></span>
<span id="jamtext">-</span>
<span id="jammer-b" onclick="handle(event);"></span>
<span id="score-b" onclick="handle(event);">-</span>
</p>
<p>
<span id="jam" onclick="handle(event);">-:--.-</span>
</p>
<div id="notice">
<div id="notice-1">Power Jam</div>
<div id="notice-2">Grand Slam</div>
<div id="notice-3">Ouch!</div>
<div id="notice-4">OMG</div>
</div>
</div>
</body>
</html>

View File

@ -1,152 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>LADD Roller Derby Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="res/style.css">
</head>
<body>
<h1>LADD Roller Derby Scoreboard</h1>
<p>
This is a free WFTDA-rules scoreboard, created with ease-of-use
in mind. It is known to work on PC, Mac, Android, iOS, or Linux, using any
common web browser.
</p>
<p id="screenshot">
<img src="res/screenshot.png">
<br>
<a href="scoreboard.html">Try it right now</a>: click on things
to make them change.
</p>
<h1>Features</h1>
<ul>
<li>
Free to use, share, and change (GPLv3)
</li>
<li>
No Internet connection required
</li>
<li>
Easy mouse-driven (with hotkeys) setup and operation
</li>
<li>
No complicated installation procedure: just open a web page
</li>
<li>
Looks <em>good</em>, with colors tuned for high-visibility
on projectors
</li>
<li>
Appearance can be customized in HTML and CSS; comes with
several pre-written themes
</li>
<li>
Runs on practically anything, including older computers,
smartphones, and tablets
</li>
<li>
Ships with <a href="logos/logos.html">an ever-expanding set of
team logos</a>
</li>
<li>
The <b>only</b> scoreboard conforming to 9.1.5.4, requiring
<a href="penalties.html">penalty tracking</a>.
</li>
</ul>
<h1>Themes</h1>
<ul>
<li><a href="scoreboard.html">Normal layout</a> similar to most
other roller derby scoreboards</li>
<li><a href="crg.html">CRG-style layout</a>, or <a href="crg-nologo.html">CRG without logos</a></li>
<li><a href="penalties.html">Penalty tracking</a> layout</li>
<li><a href="highvis.html">High-visibility</a> for
low-power projectors or outdoor bouts</li>
<li><a href="micro.html">Timers-only</a> if you track
scores some other way</li>
<li><a href="flag.html">US Flag</a> in case you need it</li>
<li>Build your own using only HTML5 and CSS</li>
</ul>
<h1>Documentation</h1>
<p>
Watch a <a href="http://youtu.be/MXOzmmnHqXU">5-minute video
tutorial</a> or read the
<a href="res/usage.html">Full documentation</a> which comes bundled with the
download.
</p>
<h1>Download</h1>
<p>
<a href="http://woozle.org/~neale/g.cgi/scoreboard/snapshot/scoreboard-5.2.zip">Download
version 5.2</a> to your hard drive to run a scoreboard
without Internet access (<strong>recommended</strong>:
<a href="http://youtu.be/lH1VZ2kFatY">watch how</a>). This
includes the documentation.
</p>
<p>
If your scoreboard computer has an Internet connection, you don't
need to download anything at all. Just load up
the <a href="scoreboard.html">full-screen version</a> from this
page and you're all set.
</p>
<p>
You can
also <a href="http://woozle.org/~neale/g.cgi/scoreboard">browse
the source tree</a> or clone it with git:
<pre>git clone http://woozle.org/~neale/projects/scoreboard</pre>
</p>
<h1>Other Derby Stuff By Me</h1>
<ul>
<li>
I have several other software packages for NSOs and skaters at
<a href="http://woozle.org/derby/">woozle.org</a>
</li>
<li>
I also keep a <a href="res/others.html">list of other free
scoreboard programs</a>. If the LADD scoreboard isn't
right for you, try one of these!
</li>
</ul>
<h1>Contact Me</h1>
<p>
If you'd like me to add your team logo, have an idea for improvement,
or just want to say hi, please send me an email. I especially
like hearing from people who are using the software: I love knowing
I'm able to help people out.
</p>
<address>
Neale Pickett &lt;<a href="mailto:neale&#64;woozle&#46;org">neale&#64;woozle&#46;org</a>&gt;
</address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1,74 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Roller Derby Logos</title>
<link rel="stylesheet" type="text/css" href="../res/style.css">
<style type="text/css">
#gallery {
}
#gallery div {
margin:2px;
height:auto;
width:auto;
display: inline-block;
text-align:center;
max-width: 12em;
}
#gallery img
{
background: url(../res/checkerboard.png) #282;
display:inline;
float: none;
margin:3px;
border:3px solid black;
max-width: 10em;
max-height: 10em;
}
#gallery a:hover img
{
border-color: yellow;
}
a {
color: yellow;
}
</style>
<script type="text/javascript" src="logos.js"></script>
<script type="text/javascript">
function gallery() {
var g = document.getElementById("gallery");
for (tn in teams) {
var team = teams[tn];
var d = document.createElement("div");
var a = document.createElement("a");
var i = document.createElement("img");
i.setAttribute("src", team[1]);
i.setAttribute("alt", team[0] + " logo");
a.setAttribute("href", team[1]);
a.appendChild(i);
a.appendChild(document.createElement("br"));
a.appendChild(document.createTextNode(team[2] + " (" + team[0] + ")"));
d.appendChild(a);
g.appendChild(d);
}
}
window.onload = gallery;
</script>
</head>
<body>
<h1>Roller Derby Logo Gallery</h1>
<p>
Here are the logos currently shipping with the
free <a href="../index.html">LADD Scoreboard</a>. If you'd like
yours added, email your team name, preferred short name, and logo
to <a href="mailto:neale&#64;woozle.org">neale&#64;woozle.org</a>.
</p>
<div id="gallery"></div>
</body>
</html>

View File

@ -1,52 +0,0 @@
teams = [
["LA", "bombs.png", "Los Alamos M'Atom Bombs"],
["ARG", "animas.png", "Animas Valley Roller Girls"],
["Taos", "taos.png", "Taos Whiplashes"],
["RIP", "rip.png", "Rollergirls In Pagosa"],
["4CRG", "4crg.png", "4 Corners Roller Girls"],
["DRG", "durango.png", "Durango Roller Girls"],
["SFe", "brawlers.png", "Disco Brawlers"],
["HCRD", "aurora.png", "High City Derby Divas"],
["Moab", "moab.png", "Moab Roller Derby"],
["Bots", "hobots.png", "Albuquerque Ho-Bots"],
["HNR", "hustlen.png", "HCDD Hustle N' Rollers"],
["DD", "doubledown.png", "HCDD Double Down"],
["DCD", "dcd.png", "Duke City Derby"],
["RMRG", "rmrg.png", "Rocky Mountain Roller Girls"],
["DD", "doomsdames.png", "Albuquerque Doomsdames"],
["TEX", "texpistols.png", "El Paso Tex Pistols"],
["PWH", "pistol.png", "El Paso Pistol Whip-Hers"],
["MT", "minorthreat.png", "Minor Threat"],
["CCR", "choicecity.png", "Choice City Rebels"],
["DIA", "dia.png", "Derby Intelligence Agency"],
["TRD", "tucson.png", "Tucson Roller Derby"],
["TST", "saddletramps.jpg","Tucson Saddle Tramps"],
["TC", "tallcity.png", "Tall City Roller Betties"],
["SS", "ssdd.png", "South Side Derby Dames"],
["WTRD", "wtrd.png", "West Texas Roller Dollz"],
["FDD", "fdd.png", "Faultline Derby Devilz"],
["CHPA", "chupas.png", "New Mexico Chupacabras"],
["TKRD", "tulare-kings.png", "Tulare Kings Roller Derby"],
["CHRY", "cherries.png", "Los Alamos Cherry Bombs"],
["PLG", "plague.png", "Zombie Plague"],
["BDB", "bd-betties.png", "Black Diamond Betties"],
["SKS", "sirens.png", "Sea to Sky Sirens"],
["BBDD", "bbdd.png", "Battle Born Derby Demons"],
["OKVD", "okvd.png", "Oklahoma Victory Dolls"],
["MM", "munecas.png", "Muñecas Muertas"],
["MARI", "marionettes.png", "Albuquerque Marionettes"],
["QSDD", "qsdd.png", "Quad Skate Derby Dames"],
["BWBS", "bwbs.png", "Backwoods Bombshells"]
["CRH", "redhots.png", "Chicago Red Hots"],
["HCRG", "campers.png", "Happy Camper Rollergirls"]
];
teams.sort();
// Add special teams at the beginning
teams.splice(0, 0,
["Blk", "black.png", "Black Team"],
["Wht", "white.png", "White Team"],
["Grn", "green.png", "Green Team"],
["Rng", "orange.png", "Orange Team"],
["Blu", "blue.png", "Blue Team"]
);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 KiB

27
manifest.json Normal file
View File

@ -0,0 +1,27 @@
{
"manifest_version": 2,
"name": "BETA Woozle Scoreboard",
"short_name": "BETA Scoreboard",
"icons": {"128": "res/icon-plaid.png"},
"_name": "__MSG_appName__",
"_short_name": "__MSG_appShortName__",
"_icons": {"128": "res/icon.png"},
"description": "__MSG_appDesc__",
"author": "Neale Pickett <neale@woozle.org>",
"version": "7.0.2",
"app": {
"background": {
"scripts": ["res/background.js"]
}
},
"permissions": [
"storage",
"fileSystem",
"fullscreen"
],
"default_locale": "en",
"offline_enabled": true
}

View File

@ -1,71 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>LADD Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
<style type="text/css">
body {
background: black;
}
#scoreboard {
font-size: 2em;
text-align: center;
}
#jam, #period {
position: inherit;
margin: inherit;
width: inherit;
left: inherit;
color: white;
}
#jamtext {
font-family: inherit;
font-size: 50%;
margin: inherit;
width: inherit;
position: inherit;
bottom: 0em;
left: 0em;
}
html, p {
padding: 0;
margin: 0;
}
</style>
<script type="text/javascript" src="res/scoreboard.js"></script>
<script type="text/javascript">
jamtext = ["J", "L", "T", "S"];
tenths = false;
</script>
</head>
<body>
<div id="scoreboard">
<p>
<span id="period" onclick="handle(event);">--:--</span>
</p>
<p>
<span id="jamtext">S</span>
<span id="jam" onclick="handle(event);">-:--</span>
</p>
</div>
</body>
</html>

View File

@ -1,140 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>LADD Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
<style type="text/css">
#jam {
bottom: auto;
top: 2em;
}
#jamtext {
bottom: auto;
top: 1.5em;
}
#jamno {
bottom: auto;
top: 3em;
}
.timeouts {
margin: 0em 6em;
}
.jammer {
margin: 0em 3em;
}
/*
* Penalties
*/
#penalties-a, #penalties-b {
position: absolute;
font-size: 13%;
bottom: 2px;
border-collapse: collapse;
}
#penalties-a {
left: 0;
}
#penalties-b {
right: 0;
}
#penalties td {
cursor: pointer;
border: 1px solid rgba(255, 255, 255, 0.075);
padding: 0;
vertical-align: bottom;
}
#penalties .minors td {
height: 3em;
}
#penalties .majors td {
height: 8em;
}
#penalties .minors div {
background-color: #880;
color: black;
}
#penalties .majors div {
background-color: #800;
}
#penalties .sk8ers td {
font-family: sans-serif;
vertical-align: top;
width: 1em;
line-height: 75%;
}
</style>
<script type="text/javascript" src="logos/logos.js"></script>
<script type="text/javascript" src="res/scoreboard.js"></script>
<script type="text/javascript" src="res/penalties.js"></script>
<script type="text/javascript">
tenths = true;
</script>
</head>
<body>
<div id="scoreboard">
<p class="left">
<img class="logo" id="logo-a" src="" alt="A" onclick="handle(event);">
<span class="timeouts" id="timeouts-a" onclick="handle(event);">0</span>
<span class="jammer" id="jammer-a" onclick="handle(event);"></span>
<span class="score" id="score-a" onclick="handle(event);">-</span>
</p>
<p class="center">
<span id="period" onclick="handle(event);">--:--</span>
<span id="jam" onclick="handle(event);">-:--.-</span>
<span id="jamtext" onclick="handle(event);"></span>
<span id="jamno" onclick="handle(event);">0</span>
</p>
<p class="right">
<img class="logo" id="logo-b" src="" alt="B" onclick="handle(event);">
<span class="timeouts" id="timeouts-b" onclick="handle(event);">0</span>
<span class="jammer" id="jammer-b" onclick="handle(event);"></span>
<span class="score" id="score-b" onclick="handle(event);">-</span>
</p>
</div>
<div id="penalties">
<table id="penalties-a">
<tr class="majors"></tr>
<tr class="sk8ers"></tr>
</table>
<!-- Right here would be an excellent place for a sponsor logo -->
<table id="penalties-b">
<tr class="majors"></tr>
<tr class="sk8ers"></tr>
</table>
</div>
<div id="notice">
<div id="notice-1">Power Jam</div>
<div id="notice-2">Grand Slam</div>
<div id="notice-3">Ouch</div>
<div id="notice-4">OMG</div>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

View File

@ -1 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="1000" height="500"><rect width="1000" height="500" fill="#f00"/><rect width="500" height="500" fill="#fff" x="250"/><path fill="#ff0000" d="m 499.99228,46.875 -34.11312,63.62529 c -3.87086,6.91501 -10.80627,6.27363 -17.74169,2.41138 l -24.69699,-12.78858 18.40705,97.72711 c 3.87086,17.85419 -8.54859,17.85419 -14.67765,10.13435 l -43.10105,-48.25099 -6.99738,24.503 c -0.80692,3.21777 -4.35481,6.59744 -9.67748,5.79261 l -54.50177,-11.45912 14.31524,52.04475 c 3.06451,11.58054 5.4549,16.37528 -3.09375,19.42959 l -19.42619,9.13025 93.82127,76.20838 c 3.7135,2.88151 5.58971,8.067 4.26768,12.7621 l -8.21136,26.94707 c 32.30405,-3.72371 61.24898,-9.32594 93.56939,-12.77619 2.85323,-0.30459 7.62988,4.40408 7.61029,7.71058 l -4.28024,98.72342 15.70639,0 -2.47237,-98.5117 c -0.0197,-3.3065 4.31372,-8.22689 7.16695,-7.9223 32.32041,3.45026 61.26538,9.05248 93.56942,12.77619 l -8.21134,-26.94707 c -1.32203,-4.6951 0.55417,-9.88059 4.26767,-12.7621 l 93.82125,-76.20838 -19.42617,-9.13025 c -8.54867,-3.05431 -6.15828,-7.84905 -3.09377,-19.42959 l 14.31527,-52.04475 -54.5018,11.45912 c -5.32267,0.80483 -8.87056,-2.57484 -9.6775,-5.79261 l -6.99737,-24.503 -43.10103,48.25099 c -6.12908,7.71984 -18.54854,7.71984 -14.67768,-10.13435 l 18.40702,-97.72711 -24.69694,12.78858 c -6.93559,3.86225 -13.87083,4.50363 -17.7417,-2.41138"/></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 338 KiB

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1235" height="650">
<defs>
<polygon id="pt" points="-0.1624598481164531,0 0,-0.5 0.1624598481164531,0" transform="scale(0.0616)" fill="#FFF"/>
<g id="star"><use xlink:href="#pt" transform="rotate(-144)"/><use xlink:href="#pt" transform="rotate(-72)"/><use xlink:href="#pt"/><use xlink:href="#pt" transform="rotate(72)"/><use xlink:href="#pt" transform="rotate(144)"/></g>
<g id="s5"><use xlink:href="#star" x="-0.252"/><use xlink:href="#star" x="-0.126"/><use xlink:href="#star"/><use xlink:href="#star" x="0.126"/><use xlink:href="#star" x="0.252"/></g>
<g id="s6"><use xlink:href="#s5" x="-0.063"/><use xlink:href="#star" x="0.315"/></g>
<g id="x4"><use xlink:href="#s6"/><use xlink:href="#s5" y="0.054"/><use xlink:href="#s6" y="0.108"/><use xlink:href="#s5" y="0.162"/></g>
<g id="u"><use xlink:href="#x4" y="-0.216"/><use xlink:href="#x4"/><use xlink:href="#s6" y="0.216"/></g>
<rect id="stripe" width="1235" height="50" fill="#B22234"/>
</defs>
<rect width="1235" height="650" fill="#FFF"/><use xlink:href="#stripe"/><use xlink:href="#stripe" y="100"/><use xlink:href="#stripe" y="200"/><use xlink:href="#stripe" y="300"/><use xlink:href="#stripe" y="400"/><use xlink:href="#stripe" y="500"/><use xlink:href="#stripe" y="600"/><rect width="494" height="350" fill="#3C3B6E"/><use xlink:href="#u" transform="translate(247,175) scale(650)"/></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
res/Ubuntu-Bold.ttf Normal file

Binary file not shown.

BIN
res/Ubuntu-Medium.ttf Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,30 +0,0 @@
var advert_num = 100
var advert_itimer
function adverterror() {
if (advert_num > 1) {
advert_num = 1
rotate_advert()
} else {
var e = document.getElementById("advert")
clearInterval(advert_itimer)
e.style.visibility = "hidden"
}
}
function rotate_advert() {
var e = document.getElementById("advert")
var sn
if (advert_num < 10) {
sn = "0" + advert_num
} else {
sn = advert_num
}
e.src = "ads/ad" + sn + ".jpg"
advert_num = advert_num + 1
}
advert_itimer = setInterval(rotate_advert, 15000)

5
res/background.js Normal file
View File

@ -0,0 +1,5 @@
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('res/scoreboard.html', {
'state': 'fullscreen'
})
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 B

BIN
res/close-icon-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@ -1,160 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="1024"
height="729"
viewBox="-187.819908 -187.819908 9320.639816 6636.303416"
id="svg10326"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="hellokitty.svg"
inkscape:export-filename="/home/neale/src/scoreboard/logos/black.png"
inkscape:export-xdpi="18.299999"
inkscape:export-ydpi="18.299999">
<metadata
id="metadata18">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="729"
inkscape:window-height="580"
id="namedview16"
showgrid="false"
inkscape:object-paths="true"
inkscape:zoom="0.84499314"
inkscape:cx="300.50256"
inkscape:cy="346.15303"
inkscape:window-x="0"
inkscape:window-y="16"
inkscape:window-maximized="0"
inkscape:current-layer="svg10326" />
<defs
id="defs10328" />
<path
style="fill:#707070;stroke:#000000;stroke-width:22;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
d="m 124.26136,401.18669 c -17.1599,297.63555 336.09741,293.4935 384.61851,292.31006 48.5211,-1.18344 415.97971,0.59172 386.98539,-299.41071 C 852.66964,147.33848 667.08313,156.66702 518.3474,156.21428 363.67452,155.74347 146.15503,188.75893 124.26136,401.18669 z"
id="path3836"
inkscape:connector-curvature="0"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
sodipodi:nodetypes="czcac" />
<path
sodipodi:nodetypes="cccccccczcc"
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none"
id="path2995"
d="m 2371.3064,4114.3702 c 0,0 37,241 193,290 0,0 73,22 147,-7 0,0 72,-28 119,-93 0,0 45,-63 54,-158 0,0 7,-66 -3,-173 0,0 -15,-74 -54,-134 0,0 -44,-68 -106,-96 0,0 -469.1426,-162.9385 -512.9158,-114.6523 -43.7732,48.2862 299.5961,136.972 251.5961,161.972 0,0 -114.6803,86.6803 -88.6803,323.6803" />
<path
d="M 4783.9999,4890.7568 C 4783.9999,4890.7568 4664.9999,4970.7568 4497.9999,4964.7568 C 4497.9999,4964.7568 4348.9999,4959.7568 4209.9999,4891.7568 C 4209.9999,4891.7568 4137.9999,4855.7568 4104.9999,4782.7568 C 4104.9999,4782.7568 4072.9998,4712.7568 4083.9998,4625.7568 C 4083.9998,4625.7568 4092.9998,4559.7568 4125.9999,4505.7568 C 4125.9999,4505.7568 4163.9999,4446.7568 4221.9999,4417.7568 C 4221.9999,4417.7568 4333.9999,4343.7568 4491.9999,4346.7568 C 4491.9999,4346.7568 4645.9999,4349.7568 4764.9999,4420.7568 C 4764.9999,4420.7568 4820.9999,4446.7568 4858.9999,4501.7568 C 4858.9999,4501.7568 4895.9999,4555.7568 4903.9999,4619.7568 C 4903.9999,4619.7568 4913.9999,4702.7568 4881.9999,4773.7568 C 4881.9999,4773.7568 4850.9999,4844.7568 4783.9999,4890.7568"
id="path9508"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
<path
d="M 4523.9999,4514.7568 C 4523.9999,4514.7568 4626.9999,4522.7568 4681.9999,4587.7568 C 4681.9999,4587.7568 4701.9999,4602.7568 4709.9999,4629.7568 L 4719.9999,4679.7568 C 4719.9999,4679.7568 4718.9999,4709.7568 4696.9999,4735.7568 C 4696.9999,4735.7568 4676.9999,4759.7568 4647.9999,4772.7568 C 4647.9999,4772.7568 4570.9999,4811.7568 4472.9999,4806.7568 C 4472.9999,4806.7568 4371.9999,4802.7568 4303.9999,4752.7568 C 4303.9999,4752.7568 4244.9999,4696.7568 4265.9999,4642.7568 C 4265.9999,4642.7568 4272.9999,4613.7568 4295.9999,4584.7568 C 4295.9999,4584.7568 4317.9999,4556.7568 4344.9999,4541.7568 C 4344.9999,4541.7568 4434.9999,4506.7568 4523.9999,4514.7568"
id="path9510"
style="fill:#d35f5f;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
<path
d="m 6503.9998,4119.7568 c 0,0 -37,241 -193,290 0,0 -73,22 -147,-7 0,0 -72,-28 -119,-93 0,0 -45,-63 -54,-158 0,0 -7,-66 3,-173 0,0 15,-74 54,-134 0,0 44,-68 106,-96 0,0 469.1426,-162.9385 512.9158,-114.6523 43.7732,48.2862 -299.5961,136.972 -251.5961,161.972 0,0 114.6803,86.6803 88.6803,323.6803"
id="path9512"
style="fill:#000000;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccczcc" />
<path
style="fill:#2e2e2c;stroke:none;stroke-width:22;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
d="m 179.88312,276.92532 0,137.27923 -82.840912,0 C 139.6461,-80.47402 873.37987,-85.207794 938.46915,396.45292 l -87.57467,0 -2.36688,-111.2435 c -81.65747,34.31981 -519.53084,31.95291 -668.64448,-8.2841 z"
id="path3062"
inkscape:connector-curvature="0"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 853.26136,488.76136 c 26.03572,1.18345 92.30844,11.83442 113.61039,17.75163"
id="path3838"
inkscape:connector-curvature="0"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 818.94156,564.50162 c 24.85227,1.18344 92.30844,30.76949 121.89448,47.33767"
id="path3840"
inkscape:connector-curvature="0"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 840.24351,421.30519 c 34.31981,-10.65097 132.54545,-14.20129 153.8474,-10.65097"
id="path3842"
inkscape:connector-curvature="0"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 228.40422,569.23539 c -27.21916,5.91721 -88.75812,37.87013 -121.89448,67.45617"
id="path3844"
inkscape:connector-curvature="0"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 188.16721,508.87987 c -30.76948,2.36688 -86.39124,10.65097 -111.243509,22.48539"
id="path3846"
inkscape:connector-curvature="0"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 183.43344,435.50649 C 142.01299,423.67207 54.438312,429.58929 33.136364,439.05682"
id="path3848"
inkscape:connector-curvature="0"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
sodipodi:nodetypes="cc" />
<path
style="fill:#b7b7b7;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3767.3612,2599.9585 c 0,-355.5162 212.3876,-2250.13849 330.8931,-2411.73679 l 1217.2588,55.99849 c -107.7322,301.65015 -311.2826,1811.3539 -257.4165,2382.3345 z"
id="path3852"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
sodipodi:nodetypes="ccccccc"
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
inkscape:connector-curvature="0"
id="path3856"
d="m 179.88312,276.92532 0,137.27923 -82.840912,0 C 139.6461,-80.47402 873.37987,-85.207794 938.46915,396.45292 l -87.57467,0 -2.36688,-111.2435 c -81.65747,34.31981 -519.53084,31.95291 -668.64448,-8.2841 z"
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:200.27253723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 5838.2978,769.94261 C 6376.116,872.83289 7139.0243,1331.5903 7465.1249,1681.5177 7504.7714,1222.6917 7479.8737,647.62134 7219.823,301.61753 6825.4554,244.38036 6182.3921,581.63217 5838.2978,769.94261 z"
id="path9502"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path3850"
d="M 3397.0185,739.47134 C 2859.2003,842.36162 2096.292,1301.119 1770.1914,1651.0464 1730.5449,1192.2204 1755.4426,617.15007 2015.4933,271.14626 2409.8609,213.90909 3052.9242,551.1609 3397.0185,739.47134 z"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:200.27253723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</svg>
<!-- version: 20090314, original size: 8945 6260.6636, border: 3% -->

Before

Width:  |  Height:  |  Size: 9.8 KiB

BIN
res/ic_picture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

BIN
res/icon-plaid.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
res/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 11 KiB

19
res/kitty.html Normal file
View File

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<title>Kitty Explorer</title>
<script type="text/javascript" src="kitty.js"></script>
<script type="text/javascript">
function meow() {
c = document.getElementById("kitty")
ctx = c.getContext("2d")
kitty(ctx, "#0088ff")
}
window.addEventListener("load", meow)
</script>
</head>
<body>
<canvas id="kitty" height="300" width="300" style="border: solid black 1px;">(meow)</canvas>
</body>
</html>

355
res/kitty.js Normal file
View File

@ -0,0 +1,355 @@
// This is kludged together from the output of http://www.professorcloud.com/svg-to-canvas/
// I saved as a 100×68.83 pixel SVG, then twiddled around with the prelude of the JS output.
// If you are reading this, there's probably a nicer converter out now.
// But this seems to work okay so it may not be worth the effort.
function kitty(ctx, kittyColor) {
var scaleBase = 0.1098503139616503
var scaleX = scaleBase * ctx.canvas.width / 100
var scaleY = scaleBase * ctx.canvas.height / 68.83
var scale = Math.min(scaleX, scaleY)
ctx.save();
ctx.scale(scale, scale);
ctx.translate(187.81991,187.81991);
ctx.strokeStyle = 'rgba(0,0,0,0)';
ctx.lineCap = 'butt';
ctx.lineJoin = 'miter';
ctx.miterLimit = 4;
ctx.save();
ctx.translate(0.22995231,-396.76901);
ctx.save();
ctx.fillStyle = kittyColor;
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "butt";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(263.23037,219.17781);
ctx.bezierCurveTo(209.09715,219.95058,155.19615,230.72191999999998,105.64392999999998,251.41147);
ctx.bezierCurveTo(105.57612999999998,251.43927000000002,105.47314999999999,251.38257000000002,105.40514999999998,251.41147);
ctx.bezierCurveTo(74.58948199999998,237.52258,40.50337099999997,225.86925000000002,15.867370999999977,229.44481000000002);
ctx.bezierCurveTo(-2.982406800000021,254.52492,-9.558406700000024,291.54425000000003,-10.397073000000024,327.57825);
ctx.bezierCurveTo(-68.96529500000003,384.63103,-109.75229000000002,464.09403000000003,-118.55874000000001,566.34569);
ctx.lineTo(-93.72685000000001,566.34569);
ctx.bezierCurveTo(-99.55329500000002,829.8689099999999,218.71792,826.24936,262.99159,825.16958);
ctx.bezierCurveTo(271.39515,824.9648,290.07180999999997,824.88991,314.80415,823.02069);
ctx.bezierCurveTo(331.29237,821.77436,350.61791999999997,819.6868,371.15326,816.3351399999999);
ctx.bezierCurveTo(376.28715,815.49736,381.38669999999996,814.48214,386.67314999999996,813.4700199999999);
ctx.bezierCurveTo(497.68913999999995,792.2149099999999,637.94381,730.7707999999999,621.6202499999999,549.8706899999999);
ctx.lineTo(660.7781399999999,549.8706899999999);
ctx.bezierCurveTo(649.6126999999999,467.2469199999999,617.1321399999999,400.28402999999986,571.4791399999999,348.58980999999983);
ctx.bezierCurveTo(572.5872599999999,307.2829199999998,567.21926,261.8263599999998,545.2146999999999,232.54880999999983);
ctx.bezierCurveTo(518.6728099999999,228.69657999999984,481.3090299999999,242.58857999999984,448.7526999999999,257.8581399999998);
ctx.bezierCurveTo(448.68599999999986,257.82703999999984,448.5803699999999,257.8892399999998,448.51391999999987,257.8581399999998);
ctx.bezierCurveTo(390.90069999999986,231.21335999999982,326.91391999999985,218.26880999999983,263.2303699999999,219.17780999999982);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.restore();
ctx.save();
ctx.translate(0.22995231,-396.76901);
ctx.save();
ctx.fillStyle = "rgba(45, 45, 45, 0.6745098039215687)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "butt";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(263.23037,219.17781);
ctx.bezierCurveTo(209.02281,219.9517,155.01337,230.66592,105.40514999999999,251.41147);
ctx.bezierCurveTo(124.77393,260.14114,142.75193,269.80447000000004,156.26259,277.19836);
ctx.bezierCurveTo(101.54814999999999,287.66580999999996,23.972259999999977,334.24057999999997,-9.20318450000002,369.84013999999996);
ctx.bezierCurveTo(-10.36285100000002,356.41981,-10.73551800000002,342.11868999999996,-10.39707300000002,327.57824999999997);
ctx.bezierCurveTo(-68.96529500000003,384.63102999999995,-109.75229000000002,464.09403,-118.55874000000001,566.34569);
ctx.lineTo(-41.675629000000015,566.34569);
ctx.lineTo(-41.675629000000015,439.32147);
ctx.bezierCurveTo(96.42092599999998,476.58558,501.82402999999994,478.74613999999997,577.4483700000001,446.96202999999997);
ctx.lineTo(579.5972600000001,549.87069);
ctx.lineTo(660.7781400000001,549.87069);
ctx.bezierCurveTo(649.6127000000001,467.24692,617.1321400000002,400.28403,571.4791400000001,348.58980999999994);
ctx.bezierCurveTo(571.2552600000001,356.94624999999996,570.9641400000002,365.08991999999995,570.2852600000001,372.94402999999994);
ctx.bezierCurveTo(537.1098100000002,337.34457999999995,459.5339200000001,290.76980999999995,404.8194800000001,280.3023599999999);
ctx.bezierCurveTo(416.6672600000001,273.81846999999993,432.09703000000013,265.6700299999999,448.7527000000001,257.85813999999993);
ctx.bezierCurveTo(391.08781,231.15081,326.98737,218.2677,263.23037,219.17781);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "butt";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(-41.675629,439.32136);
ctx.lineTo(-41.675629,566.34569);
ctx.lineTo(-93.72685,566.34569);
ctx.bezierCurveTo(-99.55329499999999,829.8689099999999,218.71792,826.24936,262.9917,825.16958);
ctx.bezierCurveTo(307.81048,824.07647,646.49437,825.52791,621.62037,549.87069);
ctx.lineTo(579.59726,549.87069);
ctx.lineTo(577.44837,446.96191999999996);
ctx.bezierCurveTo(501.82413999999994,478.74602999999996,96.42092599999995,476.58547,-41.67562900000007,439.32135999999997);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.transform(0.1017341,0,0,0.1017341,-189.21074,758.53069);
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 200.2725372314453;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(5838.2978,-4701.1388);
ctx.bezierCurveTo(6376.116,-4598.2485,7139.0243,-4139.491099999999,7465.124900000001,-3789.5636999999997);
ctx.bezierCurveTo(7504.7714000000005,-4248.3897,7479.873700000001,-4823.4601,7219.823,-5169.4639);
ctx.bezierCurveTo(6825.455400000001,-5226.701,6182.3921,-4889.4492,5838.2978,-4701.1388);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 200.2725372314453;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(3397.0185,-4731.6101);
ctx.bezierCurveTo(2859.2003,-4628.7198,2096.2920000000004,-4169.9624,1770.1914000000002,-3820.035);
ctx.bezierCurveTo(1730.5449,-4278.861,1755.4426,-4853.9313,2015.4933,-5199.9351);
ctx.bezierCurveTo(2409.8609,-5257.172299999999,3052.9242000000004,-4919.9205,3397.0185,-4731.6101);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.restore();
ctx.save();
ctx.fillStyle = "#000000";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.beginPath();
ctx.moveTo(52.032037,620.50691);
ctx.bezierCurveTo(52.032037,620.50691,55.796148,645.0247999999999,71.66670400000001,650.0097999999999);
ctx.bezierCurveTo(71.66670400000001,650.0097999999999,79.093259,652.2479099999999,86.621593,649.2976899999999);
ctx.bezierCurveTo(86.621593,649.2976899999999,93.946481,646.4491399999998,98.727926,639.8363599999999);
ctx.bezierCurveTo(98.727926,639.8363599999999,103.30604,633.4271399999999,104.22158999999999,623.76236);
ctx.bezierCurveTo(104.22158999999999,623.76236,104.93369999999999,617.0479099999999,103.91636999999999,606.1623599999999);
ctx.bezierCurveTo(103.91636999999999,606.1623599999999,102.39036999999999,598.6340299999999,98.42281499999999,592.5300299999999);
ctx.bezierCurveTo(98.42281499999999,592.5300299999999,93.94648099999999,585.61214,87.63892599999998,582.7635799999999);
ctx.bezierCurveTo(87.63892599999998,582.7635799999999,39.91114799999998,566.1871399999999,35.457925999999986,571.0994699999999);
ctx.bezierCurveTo(31.004703999999986,576.0117999999999,65.93703699999999,585.0342499999999,61.053814999999986,587.5775799999999);
ctx.bezierCurveTo(61.053814999999986,587.5775799999999,49.38692599999999,596.3959099999998,52.03203699999999,620.50691);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#000000";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.beginPath();
ctx.moveTo(297.48526,699.49191);
ctx.bezierCurveTo(297.48526,699.49191,285.37881,707.63058,268.38926,707.0202499999999);
ctx.bezierCurveTo(268.38926,707.0202499999999,253.23091999999997,706.5115799999999,239.08980999999997,699.5936899999999);
ctx.bezierCurveTo(239.08980999999997,699.5936899999999,231.76503999999997,695.93125,228.40780999999998,688.5045799999999);
ctx.bezierCurveTo(228.40780999999998,688.5045799999999,225.15225999999998,681.3832499999999,226.27137,672.5323599999999);
ctx.bezierCurveTo(226.27137,672.5323599999999,227.18692,665.8179099999999,230.54415,660.3242499999999);
ctx.bezierCurveTo(230.54415,660.3242499999999,234.41004,654.3219099999999,240.3107,651.37169);
ctx.bezierCurveTo(240.3107,651.37169,251.70492,643.84336,267.77881,644.1485799999999);
ctx.bezierCurveTo(267.77881,644.1485799999999,283.44592,644.4537999999999,295.55226000000005,651.6769099999999);
ctx.bezierCurveTo(295.55226000000005,651.6769099999999,301.24937000000006,654.3219099999999,305.11526000000003,659.9173599999999);
ctx.bezierCurveTo(305.11526000000003,659.9173599999999,308.87948000000006,665.4110299999999,309.69337,671.9219099999999);
ctx.bezierCurveTo(309.69337,671.9219099999999,310.71070000000003,680.3659099999999,307.45515,687.5890299999999);
ctx.bezierCurveTo(307.45515,687.5890299999999,304.30137,694.8121399999999,297.48526,699.4919099999998);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#d35f5f";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.beginPath();
ctx.moveTo(271.03437,661.23991);
ctx.bezierCurveTo(271.03437,661.23991,281.51292,662.0538,287.10837000000004,668.66647);
ctx.bezierCurveTo(287.10837000000004,668.66647,289.14304000000004,670.19247,289.95692,672.93925);
ctx.lineTo(290.97426,678.02603);
ctx.bezierCurveTo(290.97426,678.02603,290.87204,681.07803,288.63437,683.72314);
ctx.bezierCurveTo(288.63437,683.72314,286.5997,686.16469,283.64937,687.4872499999999);
ctx.bezierCurveTo(283.64937,687.4872499999999,275.81581,691.4549099999999,265.84592,690.9462499999998);
ctx.bezierCurveTo(265.84592,690.9462499999998,255.57080999999997,690.5393599999999,248.65281,685.4525799999999);
ctx.bezierCurveTo(248.65281,685.4525799999999,242.65059,679.75547,244.78691999999998,674.2617999999999);
ctx.bezierCurveTo(244.78691999999998,674.2617999999999,245.49915,671.3115799999999,247.83903999999998,668.3612499999999);
ctx.bezierCurveTo(247.83903999999998,668.3612499999999,250.07715,665.5126899999999,252.82392,663.98669);
ctx.bezierCurveTo(252.82392,663.98669,261.98004,660.42603,271.03436999999997,661.23991);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#000000";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.beginPath();
ctx.moveTo(472.46781,621.05491);
ctx.bezierCurveTo(472.46781,621.05491,468.70369999999997,645.5727999999999,452.83315,650.5577999999999);
ctx.bezierCurveTo(452.83315,650.5577999999999,445.40659,652.7959099999999,437.87826,649.8456899999999);
ctx.bezierCurveTo(437.87826,649.8456899999999,430.55337000000003,646.9971399999998,425.77192,640.3843599999999);
ctx.bezierCurveTo(425.77192,640.3843599999999,421.19392000000005,633.9751399999999,420.27826000000005,624.31036);
ctx.bezierCurveTo(420.27826000000005,624.31036,419.56615000000005,617.5959099999999,420.58348000000007,606.7103599999999);
ctx.bezierCurveTo(420.58348000000007,606.7103599999999,422.1094800000001,599.1820299999999,426.0771500000001,593.0780299999999);
ctx.bezierCurveTo(426.0771500000001,593.0780299999999,430.5533700000001,586.16014,436.8609200000001,583.3115799999999);
ctx.bezierCurveTo(436.8609200000001,583.3115799999999,484.5887000000001,566.7351399999999,489.04192000000006,571.6474699999999);
ctx.bezierCurveTo(493.49514000000005,576.5597999999999,458.56281000000007,585.5822499999999,463.44603000000006,588.1255799999999);
ctx.bezierCurveTo(463.44603000000006,588.1255799999999,475.1129200000001,596.9439099999998,472.46781000000004,621.05491);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(581.84259,635.47703);
ctx.bezierCurveTo(605.9547,636.57303,667.3308099999999,646.43714,687.05892,651.91714);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(550.05848,705.62125);
ctx.bezierCurveTo(573.0745900000001,706.71725,635.54681,734.1173600000001,662.94681,749.4614700000001);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(569.78648,573.0048);
ctx.bezierCurveTo(601.5707,563.1408,692.53892,559.8528,712.26703,563.1408);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(3.1525932,710.00536);
ctx.bezierCurveTo(-22.055518,715.48536,-79.047739,745.07747,-109.73585,772.47758);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(-34.111629,654.10914);
ctx.bezierCurveTo(-62.607629,656.30114,-114.11985000000001,663.9731400000001,-137.13596,674.93325);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(-38.495629,586.15692);
ctx.bezierCurveTo(-76.85574,575.1968,-157.95996,580.6768,-177.68807,589.44491);
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "butt";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(-41.675629,439.32136);
ctx.lineTo(-41.675629,566.34569);
ctx.lineTo(-93.72685,566.34569);
ctx.bezierCurveTo(-99.55329499999999,829.8689099999999,218.71792,826.24936,262.9917,825.16958);
ctx.bezierCurveTo(307.81048,824.07647,646.49437,825.52791,621.62037,549.87069);
ctx.lineTo(579.59726,549.87069);
ctx.lineTo(577.44837,446.96191999999996);
ctx.bezierCurveTo(501.82413999999994,478.74602999999996,96.42092599999995,476.58547,-41.67562900000007,439.32135999999997);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "#d7d7d7";
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
ctx.beginPath();
ctx.moveTo(194.05837,466.43958);
ctx.bezierCurveTo(194.05837,430.27146999999997,215.66548,237.52380999999997,227.72147999999999,221.08369999999996);
ctx.lineTo(351.55826,226.78069999999997);
ctx.bezierCurveTo(340.59815000000003,257.46880999999996,319.89015,411.05714,325.37015,469.14536);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.save();
ctx.fillStyle = "rgba(0, 0, 0, 0)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 20.37454605102539;
ctx.lineCap = "butt";
ctx.lineJoin = "round";
ctx.miterLimit = 4;
ctx.beginPath();
ctx.moveTo(263.23037,219.17781);
ctx.bezierCurveTo(209.02281,219.9517,155.01337,230.66592,105.40514999999999,251.41147);
ctx.bezierCurveTo(124.77393,260.14114,142.75193,269.80447000000004,156.26259,277.19836);
ctx.bezierCurveTo(101.54814999999999,287.66580999999996,23.972259999999977,334.24057999999997,-9.20318450000002,369.84013999999996);
ctx.bezierCurveTo(-10.36285100000002,356.41981,-10.73551800000002,342.11868999999996,-10.39707300000002,327.57824999999997);
ctx.bezierCurveTo(-68.96529500000003,384.63102999999995,-109.75229000000002,464.09403,-118.55874000000001,566.34569);
ctx.lineTo(-41.675629000000015,566.34569);
ctx.lineTo(-41.675629000000015,439.32147);
ctx.bezierCurveTo(96.42092599999998,476.58558,501.82402999999994,478.74613999999997,577.4483700000001,446.96202999999997);
ctx.lineTo(579.5972600000001,549.87069);
ctx.lineTo(660.7781400000001,549.87069);
ctx.bezierCurveTo(649.6127000000001,467.24692,617.1321400000002,400.28403,571.4791400000001,348.58980999999994);
ctx.bezierCurveTo(571.2552600000001,356.94624999999996,570.9641400000002,365.08991999999995,570.2852600000001,372.94402999999994);
ctx.bezierCurveTo(537.1098100000002,337.34457999999995,459.5339200000001,290.76980999999995,404.8194800000001,280.3023599999999);
ctx.bezierCurveTo(416.6672600000001,273.81846999999993,432.09703000000013,265.6700299999999,448.7527000000001,257.85813999999993);
ctx.bezierCurveTo(391.08781,231.15081,326.98737,218.2677,263.23037,219.17781);
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
ctx.restore();
ctx.restore();
};

BIN
res/kitty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

184
res/kitty.svg Normal file
View File

@ -0,0 +1,184 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="100"
height="100"
viewBox="-187.81991 -187.81991 910.21878 910.32965"
id="svg10326"
inkscape:version="0.48.4 r9939"
sodipodi:docname="kitty.svg"
inkscape:export-filename="/home/neale/src/scoreboard/res/kitty-k.png"
inkscape:export-xdpi="226.56"
inkscape:export-ydpi="226.56">
<metadata
id="metadata18">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1123"
inkscape:window-height="791"
id="namedview16"
showgrid="false"
inkscape:object-paths="true"
inkscape:zoom="5.7699913"
inkscape:cx="49.511891"
inkscape:cy="51.063088"
inkscape:window-x="166"
inkscape:window-y="6"
inkscape:window-maximized="0"
inkscape:current-layer="g3131"
units="px" />
<defs
id="defs10328" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Background"
style="display:inline"
transform="translate(0,-254.89235)">
<path
style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 263.63628,249.48375 c -48.7199,0.6955 -97.2308,10.3897 -141.8278,29.0103 -0.061,0.025 -0.1537,-0.026 -0.2149,0 -27.7341,-12.5 -58.4116,-22.988 -80.584,-19.77 -16.9648,22.5721 -22.8832,55.8895 -23.638,88.3201 -52.7114,51.3475 -89.4197,122.8642 -97.3455,214.8907 l 22.3487,0 c -5.2438,237.1709 281.2003,233.9133 321.0466,232.9415 7.5632,-0.1843 24.3722,-0.2517 46.6313,-1.934 14.8394,-1.1217 32.2324,-3.0005 50.7142,-6.017 4.6205,-0.754 9.2101,-1.6677 13.9679,-2.5786 99.9144,-19.1296 226.1436,-74.4293 211.4524,-237.2394 l 35.2421,0 c -10.0489,-74.3614 -39.2814,-134.628 -80.3691,-181.1528 0.9973,-37.1762 -3.8339,-78.0871 -23.638,-104.4369 -23.8877,-3.467 -57.5151,9.0358 -86.8158,22.7784 -0.06,-0.028 -0.1551,0.028 -0.2149,0 -51.8519,-23.9803 -109.44,-35.6304 -166.7552,-34.8123 z"
id="path3770-1"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:label="Foreground"
id="g3131"
inkscape:groupmode="layer"
style="display:inline"
transform="translate(0,-254.89235)">
<path
style="fill:#2d2d2d;fill-opacity:0.67543856;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 263.63628,249.48375 c -48.7868,0.6965 -97.3953,10.3393 -142.0427,29.0103 17.4319,7.8567 33.6121,16.5537 45.7717,23.2082 -49.243,9.4207 -119.0613,51.338 -148.9192,83.3776 -1.0437,-12.0783 -1.3791,-24.9493 -1.0745,-38.0357 -52.7114,51.3475 -89.4197,122.8642 -97.3455,214.8907 l 69.1948,0 0,-114.3218 c 124.2869,33.5377 489.1497,35.4822 557.2116,6.8765 l 1.934,92.6178 73.0628,0 c -10.0489,-74.3614 -39.2814,-134.628 -80.3691,-181.1528 -0.2015,7.5208 -0.4635,14.8501 -1.0745,21.9188 -29.8579,-32.0395 -99.6762,-73.9568 -148.9192,-83.3775 10.663,-5.8355 24.5498,-13.1691 39.5399,-20.1998 -51.8984,-24.0366 -109.5888,-35.6314 -166.9701,-34.8123 z"
id="path3770"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m -10.77912,447.61295 0,114.3219 -46.8461,0 c -5.2438,237.1709 281.2003,233.9133 321.0467,232.9415 40.3369,-0.9838 345.1524,0.3225 322.7658,-247.769 l -37.8208,0 -1.934,-92.6179 c -68.0618,28.6057 -432.9247,26.6612 -557.2116,-6.8765 z"
id="path3836" />
<g
transform="matrix(0.09156069,0,0,0.09156069,-143.56072,734.90135)"
id="g3003"
style="fill:none;display:inline">
<path
style="fill:none;stroke:#000000;stroke-width:200.27253723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 5838.2978,-4701.1388 c 537.8182,102.8903 1300.7265,561.6477 1626.8271,911.5751 39.6465,-458.826 14.7488,-1033.8964 -245.3019,-1379.9002 -394.3676,-57.2371 -1037.4309,280.0147 -1381.5252,468.3251 z"
id="path9502"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path3850"
d="m 3397.0185,-4731.6101 c -537.8182,102.8903 -1300.7265,561.6477 -1626.8271,911.5751 -39.6465,-458.826 -14.7488,-1033.8963 245.3019,-1379.9001 394.3676,-57.2372 1037.4309,280.0146 1381.5252,468.325 z"
style="fill:none;stroke:#000000;stroke-width:200.27253723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
d="m 73.55778,610.67995 c 0,0 3.3877,22.0661 17.6712,26.5526 0,0 6.6839,2.0143 13.4594,-0.6409 0,0 6.5924,-2.5637 10.8957,-8.5152 0,0 4.1203,-5.7683 4.9443,-14.4666 0,0 0.6409,-6.043 -0.2747,-15.84 0,0 -1.3734,-6.7755 -4.9442,-12.2691 0,0 -4.0287,-6.2261 -9.7055,-8.7898 0,0 -42.955,-14.9188 -46.9629,-10.4977 -4.0079,4.4211 27.4312,12.5413 23.0363,14.8303 0,0 -10.5002,7.9365 -8.1196,29.6364"
id="path2995"
style="fill:#000000;fill-opacity:1;stroke:none;display:inline"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccczcc" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;display:inline"
id="path9508"
d="m 294.46568,681.76645 c 0,0 -10.8958,7.3248 -26.1864,6.7755 0,0 -13.6425,-0.4578 -26.3695,-6.6839 0,0 -6.5923,-3.2962 -9.6138,-9.9802 0,0 -2.93,-6.4092 -1.9228,-14.375 0,0 0.824,-6.043 3.8455,-10.9873 0,0 3.4793,-5.4021 8.7899,-8.0573 0,0 10.2548,-6.7755 24.7213,-6.5008 0,0 14.1004,0.2747 24.9961,6.7755 0,0 5.1274,2.3805 8.6067,7.4164 0,0 3.3878,4.9443 4.1203,10.8041 0,0 0.9156,7.5996 -2.0144,14.1004 0,0 -2.8384,6.5008 -8.9729,10.7126" />
<path
inkscape:connector-curvature="0"
style="fill:#d35f5f;fill-opacity:1;stroke:none;display:inline"
id="path9510"
d="m 270.65988,647.33965 c 0,0 9.4307,0.7325 14.4666,6.6839 0,0 1.8312,1.3734 2.5637,3.8455 l 0.9156,4.5781 c 0,0 -0.092,2.7468 -2.1059,5.1274 0,0 -1.8312,2.1974 -4.4865,3.3877 0,0 -7.0502,3.5709 -16.0231,3.1131 0,0 -9.2476,-0.3662 -15.4738,-4.9443 0,0 -5.402,-5.1274 -3.4793,-10.0717 0,0 0.641,-2.6552 2.7469,-5.3105 0,0 2.0143,-2.5637 4.4864,-3.9371 0,0 8.2405,-3.2046 16.3894,-2.4721" />
<path
sodipodi:nodetypes="cccccccczcc"
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;display:inline"
id="path9512"
d="m 451.94998,611.17315 c 0,0 -3.3877,22.0661 -17.6712,26.5526 0,0 -6.6839,2.0143 -13.4594,-0.6409 0,0 -6.5924,-2.5637 -10.8957,-8.5152 0,0 -4.1202,-5.7683 -4.9443,-14.4666 0,0 -0.6409,-6.043 0.2747,-15.84 0,0 1.3734,-6.7755 4.9443,-12.2691 0,0 4.0286,-6.2261 9.7054,-8.7898 0,0 42.955,-14.9188 46.9629,-10.4977 4.0079,4.4211 -27.4312,12.5413 -23.0363,14.8303 0,0 10.5002,7.9365 8.1196,29.6364" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3838"
d="m 550.38728,624.15305 c 21.7009,0.9864 76.9394,9.8641 94.6947,14.7961"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3840"
d="m 521.78158,687.28285 c 20.7145,0.9864 76.9395,25.6465 101.5995,39.4562"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3842"
d="m 539.53678,567.92805 c 28.6058,-8.8776 110.4772,-11.8368 128.2325,-8.8776"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3844"
d="m 29.56628,691.22855 c -22.6873,4.932 -73.9803,31.5649 -101.5996,56.225"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3846"
d="m -3.97152,640.92195 c -25.6464,1.9728 -72.0074,8.8776 -92.7219,18.7417"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3848"
d="m -7.91712,579.76495 c -34.5241,-9.8641 -107.5179,-4.9321 -125.2732,2.9592"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
inkscape:connector-curvature="0"
id="path3796"
d="m -10.77912,447.61295 0,114.3219 -46.8461,0 c -5.2438,237.1709 281.2003,233.9133 321.0467,232.9415 40.3369,-0.9838 345.1524,0.3225 322.7658,-247.769 l -37.8208,0 -1.934,-92.6179 c -68.0618,28.6057 -432.9247,26.6612 -557.2116,-6.8765 z"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3852"
d="m 201.38148,472.01935 c 0,-32.5513 19.4464,-206.0242 30.2968,-220.8203 l 111.4531,5.1273 c -9.8641,27.6193 -28.5013,165.8488 -23.5693,218.1282 z"
style="fill:#d7d7d7;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline" />
<path
id="path3817"
d="m 263.63628,249.48375 c -48.7868,0.6965 -97.3953,10.3393 -142.0427,29.0103 17.4319,7.8567 33.6121,16.5537 45.7717,23.2082 -49.243,9.4207 -119.0613,51.338 -148.9192,83.3776 -1.0437,-12.0783 -1.3791,-24.9493 -1.0745,-38.0357 -52.7114,51.3475 -89.4197,122.8642 -97.3455,214.8907 l 69.1948,0 0,-114.3218 c 124.2869,33.5377 489.1497,35.4822 557.2116,6.8765 l 1.934,92.6178 73.0628,0 c -10.0489,-74.3614 -39.2814,-134.628 -80.3691,-181.1528 -0.2015,7.5208 -0.4635,14.8501 -1.0745,21.9188 -29.8579,-32.0395 -99.6762,-73.9568 -148.9192,-83.3775 10.663,-5.8355 24.5498,-13.1691 39.5399,-20.1998 -51.8984,-24.0366 -109.5888,-35.6314 -166.9701,-34.8123 z"
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
inkscape:connector-curvature="0" />
</g>
<g
id="g3123"
transform="matrix(0.09156068,0,0,0.09156068,-143.56072,480.00905)"
style="display:inline" />
</svg>
<!-- version: 20090314, original size: 8945 6260.6636, border: 3% -->

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,143 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Free Derby Scoreboard Software</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
<style type="text/css">
table {
border-collapse: collapse;
}
td {
border: solid white 1px;
}
</style>
</head>
<body>
<h1>Free Derby Scoreboard Software</h1>
<p>
This is a list of no-cost roller derby scoreboard software I have
found. Mine is at the top, because I think it's the best. I might
be wrong, though! Try the rest out and see for yourself.
</p>
<table>
<tr>
<th>Name</th>
<th>Source?</th>
<th>Platform</th>
<th>Windows</th>
<th>Notes</th>
</tr>
<tr>
<td><a href="http://woozle.org/scoreboard/">LADD Scoreboard</a></td>
<td>YES</td>
<td>JavaScript (web browser)</td>
<td>1</td>
<td>Easy to operate, easy to read; also, I wrote it :)</td>
</tr>
<tr>
<td><a href="http://poang.gg/">POÄNG</a> (formerly <a href="http://www.david.kleinschmidt.name/qcrg-scoreboard/">QCRG Scoreboard</a>)</td>
<td>YES</td>
<td>Adobe AIR</td>
<td>2</td>
<td>Nice clean layout</td>
</tr>
<tr>
<td><a href="http://sourceforge.net/projects/derbyscoreboard/">CRD Scoreboard</a></td>
<td>YES</td>
<td>Java</td>
<td>2</td>
<td>Interesting cli/srv model allowing multiple operators on a LAN</td>
</tr>
<tr>
<td><a href="http://labs.metro-six.com/derbyscore/">Derby Score</a></td>
<td>YES</td>
<td>Java</td>
<td>2</td>
<td>Could use some visual polish, but I like the author's attitude</td>
</tr>
<tr>
<td><a href="http://rdnation.com/roller-derby-scoreboard">Thor's Hammer</a></td>
<td>no</td>
<td>Windows</td>
<td>2</td>
<td></td>
</tr>
<tr>
<td><a href="http://www.rollerderbyproductions.com/">JamTracker</a></td>
<td>no</td>
<td>Adobe AIR</td>
<td>2</td>
<td>Busy layout</td>
</tr>
<tr>
<td><a href="http://www.rinxter.com/">Rinxter</a></td>
<td>no?</td>
<td>Windows</td>
<td>2</td>
<td>If Oracle made a scoreboard, this would be it. It's <strong>massive</strong>: generates reports!</td>
</tr>
<tr>
<td><a href="http://www.zebrahuddle.com/index.php?action=downloads;sa=view&id=1">DerbyBoard</a></td>
<td>no</td>
<td>Windows</td>
<td>2</td>
<td>What an incredible waste of screen real estate! I hope you play somewhere very dark.</td>
</tr>
<tr>
<td><a href="http://www.pcscoreboards.com/rollerderbyscoreboardpro/">Scoreboard Pro</a></td>
<td>no</td>
<td>Windows</td>
<td>2</td>
<td>The author does not appear to have read WFTDA's rules.</td>
</table>
<dl>
<dt>Source?</dt>
<dd>
Whether you can download and modify the source code. Important to
many nerds like myself.
</dd>
<dt>Platform</dt>
<dd>
What you need to buy/install before you can run it.
</dd>
<dt>Windows</dt>
<dd>
<dl>
<dt>1</dt>
<dd>
Operator interacts directly with the image on the projector.
What you see is what the audience sees.
</dd>
<dt>2</dt>
<dd>
Separate interface for operator and audience, like an old-school
7-panel display scoreboard. What you see is a control panel;
the audience sees something different.
</dd>
</dl>
</dd>
</dl>
<address>
Neale Pickett &lt;<a href="mailto:neale&#64;woozle&#46;org">neale&#64;woozle&#46;org</a>&gt;
</address>
</body>
</html>

View File

@ -1,161 +0,0 @@
/***********************************
* Penalties
*/
function penalties (team) {
var table = document.getElementById("penalties-" + team);
var majors = table.getElementsByClassName("majors")[0];
var sk8ers = table.getElementsByClassName("sk8ers")[0];
var majdiv = majors.getElementsByTagName("div");
var sk8div = sk8ers.getElementsByTagName("div");
var ret = [];
for (var i = 0; i < 20; i += 1) {
ret.push([sk8div[i].text,
majdiv[i].value || 0]);
}
return ret;
}
function penalties_save () {
var ls = localStorage || {};
var name_a = document.getElementById("name-a").innerHTML;
var name_b = document.getElementById("name-b").innerHTML;
var pen_a = JSON.stringify(penalties("a"));
var pen_b = JSON.stringify(penalties("b"));
ls["rdsb_penalties_a"] = pen_a;
ls["rdsb_penalties_b"] = pen_b;
ls["rdsb_roster " + name_a] = pen_a;
ls["rdsb_roster " + name_b] = pen_b;
}
function penalties_setdiv (div, value) {
if (div.text == undefined) {
div.value = value;
div.style.height = (value||0) + "em";
div.innerHTML = value?value:"";
} else {
div.text = value;
div.innerHTML = value?"":"•";
for (var i in value) {
var c = value[i];
// XXX: use CSS "text-wrap: unrestricted" when supported
div.innerHTML += c + " ";
}
}
}
function penalties_load (team, values) {
var table = document.getElementById("penalties-" + team);
var majors = table.getElementsByClassName("majors")[0];
var sk8ers = table.getElementsByClassName("sk8ers")[0];
var majdiv = majors.getElementsByTagName("div");
var sk8div = sk8ers.getElementsByTagName("div");
for (var i = 0; i < values.length; i += 1) {
penalties_setdiv(sk8div[i], values[i][0]);
penalties_setdiv(majdiv[i], values[i][2]);
}
}
function penalties_setTeamName (team, name) {
var ls = localStorage || {};
var roster_in = ls["rdsb_roster " + name];
var roster_out = [];
if (roster_in) {
roster_in = JSON.parse(roster_in);
}
for (var i = 0; i < 20; i += 1) {
if (! roster_in) {
roster_out.push(["", 0, 0]);
} else {
roster_out.push([roster_in[i][0], 0, 0])
}
}
penalties_load(team, roster_out);
}
function penalties_click (event) {
var element = event.currentTarget;
var pops = element.parentNode;
var div = element.getElementsByTagName("div")[0];
var inc = event.shiftKey?-1:1;
var val;
if (pops.className == "majors") {
val = ((div.value || 0) + inc + 9) % 9;
} else if (state == SETUP) {
val = prompt("Enter skater number", div.text);
}
if (val != undefined) {
penalties_setdiv(div, val);
penalties_save();
}
}
// Remove penalties area if there are no players set
function penalties_duck () {
var pen = document.getElementById("penalties");
var a = penalties("a");
var b = penalties("b");
for (var i = 0; i < 20; i += 1) {
if (a[i][0] || b[i][0]) {
return;
}
}
pen.style.display = "none";
}
function penalties_init () {
var ls = localStorage || {};
// Populate ALL ROWS AT ONCE because I'm crazy like that.
for (var j = 0; j < 2; j += 1) {
var team = (j==0)?"a":"b";
var table = document.getElementById("penalties-" + team);
var majors = table.getElementsByClassName("majors")[0];
var sk8ers = table.getElementsByClassName("sk8ers")[0];
for (var i = 0; i < 20; i += 1) {
var td;
var div;
var majdiv = document.createElement("div");
td = document.createElement("td");
td.onclick = penalties_click;
td.appendChild(majdiv);
majors.appendChild(td);
div = document.createElement("div");
div.text = "";
div.appendChild(document.createTextNode("•"));
td = document.createElement("td");
td.onclick = penalties_click;
td.appendChild(div);
sk8ers.appendChild(td);
}
}
if (ls.rdsb_penalties_a) {
penalties_load("a", JSON.parse(ls.rdsb_penalties_a));
}
if (ls.rdsb_penalties_b) {
penalties_load("b", JSON.parse(ls.rdsb_penalties_b));
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View File

@ -1,53 +1,60 @@
@font-face {
font-family: 'Magenta';
src: url('Magenta.woff') format('woff');
font-weight: normal;
font-style: normal;
font-family: 'Ubuntu';
src: url('Ubuntu-Medium.ttf');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'PermanentMarker';
src: url('PermanentMarker.woff') format('woff');
font-weight: normal;
font-style: normal;
font-family: 'Ubuntu';
src: url('Ubuntu-Bold.ttf');
font-weight: bold;
font-style: normal;
}
body {
background: url(bg.jpg) #222;
background-size: 100% auto;
font-size: 160px;
color: #eee;
margin: 0;
background: url(bg.jpg) #222;
background-size: 100% auto;
font-size: 160px;
color: #eee;
margin: 0;
}
input {
font: inherit;
}
input[readonly] {
color: inherit;
background: inherit;
border: inherit;
}
#scoreboard {
cursor: default;
font-family: sans-serif;
font-weight: bold;
cursor: default;
font-family: Ubuntu, sans-serif;
}
#scoreboard p {
margin: 0;
margin: 0;
}
#scoreboard *[id] {
cursor: pointer;
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;
cursor: pointer;
user-select: none;
}
.left, .right {
width: 2em;
height: 100%;
text-align: center;
position: absolute;
top: 0;
width: 2em;
height: 100%;
text-align: center;
position: absolute;
top: 0;
}
.left {
left: 0;
left: 0;
}
.right {
right: 0;
right: 0;
}
.center {
@ -55,79 +62,103 @@ body {
}
.logo {
max-width: 1.8em;
max-height: 2em;
text-align: center;
}
.logo img {
max-width: 1.8em;
max-height: 2em;
display: none;
}
.logo input {
top: 30%;
font-size: 10pt;
vertical-align: top;
max-height: 15pt;
border: none;
}
.setup {
background: rgba(0, 255,0, 0.3);
}
.timeouts {
position: absolute;
font-size: 50%;
bottom: 1em;
color: #0f0;
position: absolute;
font-size: 50%;
bottom: 1em;
color: #0f0;
}
#timeouts-a {
left: 0em;
left: 0em;
}
#timeouts-b {
right: 0em;
right: 0em;
}
/* Jammer indicators */
#jammer-a, #jammer-b {
font-family: monospace;
position: absolute;
bottom: 0em;
color: #444;
font-family: monospace;
position: absolute;
bottom: 0em;
color: #444;
}
#jammer-a.lead, #jammer-b.lead, #jamtext, #periodtext {
color: yellow;
color: yellow;
}
#jammer-a {
left: 0.5em;
left: 0.5em;
}
#jammer-b {
right: 0.5em;
right: 0.5em;
}
#jam, #period {
text-align: center;
background: #000;
border-radius: 15px;
text-align: center;
font-weight: bold;
background: #000;
border-radius: 15px;
}
#period {
position: absolute;
top: 0;
left: 50%;
width: 3.4em;
margin-left: -1.7em;
position: absolute;
top: 0;
left: 50%;
width: 3.4em;
margin-left: -1.7em;
}
#jam {
position: absolute;
bottom: 0em;
left: 50%;
width: 4em;
margin-left: -2em;
position: absolute;
bottom: 0em;
left: 50%;
width: 3.5em;
margin-left: -1.75em;
}
#jamtext, #periodtext {
text-align: center;
font-family: PermanentMarker, sans-serif;
font-weight: normal;
font-size: 75%;
#jamtext, #periodtext, #preset {
text-align: center;
font-family: Ubuntu, sans-serif;
font-size: 75%;
position: absolute;
left: 50%;
width: 5em;
margin-left: -2.5em;
padding: 0.2em;
position: absolute;
left: 50%;
width: 5em;
margin-left: -2.7em;
z-index: -1;
}
#periodtext {
top: 1.4em;
top: 1.4em;
}
#preset {
top: 40%;
}
#jamtext {
bottom: 1.4em;
bottom: 1.4em;
}
#advert {
@ -137,24 +168,24 @@ body {
}
.score {
position: absolute;
font-size: 1.2em;
top: 50%;
margin-top: -0.6em;
position: absolute;
font-size: 1.2em;
top: 50%;
margin-top: -0.6em;
}
#score-a {
left: 0em;
left: 0em;
}
#score-b {
right: 0em;
right: 0em;
}
#jamno {
color: #0f0;
position: absolute;
font-size: 50%;
bottom: 2.2em;
right: 25%;
color: #0f0;
position: absolute;
font-size: 50%;
bottom: 2.2em;
right: 25%;
}
@ -162,34 +193,46 @@ body {
* States timers can be in
*/
#jam.paused, #period.paused {
color: #aaf;
color: #aaf;
}
#jam.lowtime, #period.lowtime {
background: #f24;
background: #f24;
}
#jam.timeout {
background: #044;
background: #044;
}
#jam.lineup {
background: #060;
background: #060;
}
#close, #prefs {
position: absolute;
top: 0;
right: 0;
height: 16px;
width: 16px;
opacity: 0.5;
}
#prefs {
top: inherit;
bottom: 0;
}
/*
* Notices
*/
#notice {
display: none;
position: absolute;
bottom: 1.3em;
left: 50%;
width: 4em;
display: none;
position: absolute;
bottom: 1.3em;
left: 50%;
width: 4em;
height: 3em;
margin-left: -2em;
margin-left: -2em;
text-align: center;
}
#notice embed {
width: 100%;
#notice img {
height: 100%;
}

68
res/scoreboard.html Normal file
View File

@ -0,0 +1,68 @@
<!DOCTYPE html>
<!--
Woozle Roller Derby Scoreboard
Copyright © 2014 Neale Pickett <neale@woozle.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>Woozle Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="scoreboard.css">
<script type="text/javascript" src="kitty.js"></script>
<script type="text/javascript" src="scoreboard.js"></script>
</head>
<body>
<div id="scoreboard">
<div class="left">
<div class="logo" id="logo-a">
<img class="img" id="img-a" src="" alt="A">
<canvas class="kitty" id="kitty-a"></canvas>
<input type="color" class="setup color" id="color-a" value="#666666">
<input type="image" class="setup load" id="load-a" src="ic_picture.png">
</div>
<span class="timeouts" id="timeouts-a">3</span>
<span class="jammer" id="jammer-a"></span>
<span class="score" id="score-a">-</span>
</div>
<div class="right">
<div class="logo" id="logo-b">
<img class="img" id="img-b" src="" alt="B">
<canvas class="kitty" id="kitty-b"></canvas>
<input type="color" class="setup color" id="color-b" value="#ffffff">
<input type="image" class="setup load" id="load-b" src="ic_picture.png">
</div>
<span class="timeouts" id="timeouts-b">3</span>
<span class="jammer" id="jammer-b"></span>
<span class="score" id="score-b">-</span>
</div>
<div class="center">
<input id="period" value="--:--">
<span id="periodtext"></span>
<span class="setup" id="preset">-</span>
<input id="jam" value="-:--">
<span id="jamtext"></span>
</div>
</div>
<div id="notice">
</div>
<img id="close" src="close-icon-white.png" title="Close Scoreboard">
</body>
</html>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

View File

@ -1,41 +0,0 @@
@font-face {
font-family: 'PermanentMarker';
src: url('PermanentMarker.woff') format('woff');
font-weight: normal;
font-style: normal;
}
body {
background: #222 url(bg.jpg);
background-size: 100% auto;
color: #eee;
max-width: 40em;
margin: auto auto;
}
h1 {
color: #fd8;
font-family: PermanentMarker, fantasy, sans-serif;
font-size-adjust: 1.0;
}
h2 {
font-family: sans-serif;
}
dt {
font-size: 120%;
font-weight: bold;
}
a {
color: yellow;
}
caption {
font-size: 33%;
font-family: default;
}
#screenshot {
text-align: center;
}
#screenshot img {
border: solid black 4px;
}

View File

@ -1,2 +0,0 @@
* When period ends and jam timer is toggled, period clock should not count up
* Auto-scale (3-digit score wrapped in Taos)

View File

@ -1,223 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>Using the LADD Roller Derby Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h1>Using the LADD Roller Derby Scoreboard</h1>
<img src="scoreboard-explained.png" alt="Annotated scoreboard"
style="border: solid black 2px;">
<p>
If you don't like reading manuals, just start clicking on things;
it's supposed to be easy to figure out.
</p>
<dl>
<dt>Space Bar</dt>
<dd>Switch between Jam and Rotation</dd>
<dt>T</dt>
<dd>Enter timeout</dd>
<dt>A / Shift-A</dt>
<dd>Add / subtract a point on the left</dd>
<dt>B / Shift-B</dt>
<dd>Add / subtract a point on the right</dd>
<dt>F5</dt>
<dd>Enter Setup mode</dd>
</dl>
<h1>Setup</h1>
<ul>
<li>
When the state indicator says "Setup", you can click on almost
anything to change it.
</li>
<li>
Set the logo before you change the team name.
</li>
<li>
If your team's logo and name isn't in <a href="../logos/logos.html">the
list</a>, please email them to me so I can add them.
<li>
Reload the page (click "Reload" or type F5) to get back to Setup
mode. Scores, timeouts, and period clock time are all saved.
</li>
<li>
Type Space Bar or click the jam clock to begin the first jam.
</li>
</ul>
<h1>Running Jams</h1>
<ul>
<li>
Press Space Bar or click the jam clock to switch between 2:00
jams and 0:30 rotations.
</li>
<li>
Type "A" or "B" to add points to a team's score. You can also
click a score to add a point.
</li>
<li>
Type "Shift+A" or "Shift+B" to remove points from a team's
score. You can also click a team logo to remove a point.
</li>
</ul>
<h1>Timeouts</h1>
<ul>
<li>
Type "T" or click the period clock to enter into a timeout.
</li>
<li>
Click a team's timeout count to remove one from it. If it's at
0, click it to reset it to 3.
</li>
<li>
Click the period clock during a timeout to change the time left
in the period.
</li>
<li>
Type Space Bar or click the jam clock to exit timeout mode and
start the next jam.
</li>
</ul>
<h1>Periods</h1>
<ul>
<li>
Go into Timeout mode to re-set the period clock to 30:00. Click
it to change it to a different time.
</li>
<li>
Click the period indicator to cycle between "Period 1",
"Halftime", "Period 2", and "Break".
</li>
</ul>
<h1>Other cases</h1>
<dl>
<dt>Halftime / Double-header break</dt>
<dd>
<ol>
<li>Type "T" to enter timeout mode.</li>
<li>Click the period indicator until it says "Halftime" or
"Break"</li>
<li>Click the period clock.</li>
<li>Enter the duration of the break.</li>
<li>Type Space Bar to start counting down.</li>
<li>It's okay to let the jam clock reach 0:00.</li>
</ol>
</dd>
<dt>20-minute periods</dt>
<dd>
<ol>
<li>During Setup or Timeout, click the period clock.</li>
<li>Enter "20:00" for the new time.</li>
<li>Click the period indicator until it displays the
right period.</li>
</ol>
</dd>
</dl>
<h1>Advanced Tips</h1>
<ul>
<li>
Hold down the "Shift" key to make counters, logos, etc. go the
other direction.
</li>
<li>
Hold down the "Ctrl" or "Alt" key while clicking a team logo in
Setup mode to provide a URL.
</li>
<li>
Hold down the "Ctrl" or "Alt" key while clicking the period
indicator to change it to any text.
</li>
<li>
Timeouts can exceed three by clicking them while holding the
"Shift" key.
</li>
<li>
You can leave off minutes or seconds if they're zero: "30:" is
the same as "30:00", and "19" is the same as "0:19".
</li>
<li>
If part of the scoreboard changes background color, click
(without shift) somewhere on the background to get it back to
normal. It changed color because your browser was selecting
that part of the page for copy and paste!
</li>
</ul>
<h1>Customizing</h1>
<p>
If you use this, I want to add your logo and the logos of the
teams you play to the <a href="../logos/logos.html">included set of
logos</a>.
</p>
<p>
The scoreboard is written in HTML5, CSS, and JavaScript, so a web
designer should be able to season to taste. Send me what you come
up with, I want to see it!
</p>
<h1>If you have problems</h1>
<p>
If something goes wrong, please email me (link below) with as much
detail as you can remember, and I'll try to fix it for you and
everybody else. For example:
</p>
<blockquote>
<p>
I clicked the period timer during a timeout and the Team A logo
turned into a photo of a burrito.
</p>
</blockquote>
<h1>Enjoy!</h1>
<address>Neale Pickett <a href="mailto:neale&#64;woozle.org">&lt;neale&#64;woozle.org&gt;</a></address>
</body>
</html>

View File

@ -1,58 +0,0 @@
<!DOCTYPE html>
<!--
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>.
-->
<html>
<head>
<title>LADD Scoreboard</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
<script type="text/javascript" src="logos/logos.js"></script>
<script type="text/javascript" src="res/scoreboard.js"></script>
</head>
<body>
<!--
HTML5 says not to use tables for layout. Since this is
a highly-styled page, it looks awful without CSS. Sorry.
-->
<div id="scoreboard">
<p class="left">
<img class="logo" id="logo-a" src="" alt="A" onclick="handle(event);">
<span class="timeouts" id="timeouts-a" onclick="handle(event);">0</span>
<span class="jammer" id="jammer-a" onclick="handle(event);"></span>
<span class="score" id="score-a" onclick="handle(event);">-</span>
</p>
<p class="center">
<span id="period" onclick="handle(event);">--:--</span>
<span id="periodtext" onclick="handle(event);"></span>
<span id="jam" onclick="handle(event);">-:--.-</span>
<span id="jamtext" onclick="handle(event);"></span>
</p>
<p class="right">
<img class="logo" id="logo-b" src="" alt="B" onclick="handle(event);">
<span class="timeouts" id="timeouts-b" onclick="handle(event);">0</span>
<span class="jammer" id="jammer-b" onclick="handle(event);"></span>
<span class="score" id="score-b" onclick="handle(event);">-</span>
</p>
</div>
<div id="notice">
</div>
</body>
</html>