- interfaces scales vertically
- on tablets and smartphones it automatically fills the width - doesn't *do* much yet - drawing doesn't scale to the viewport of the draw area yet - preview on the right doesn't either.
105
css/d3d_btns.css
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
/*.logo {
|
||||||
|
background: #f5f5f5 url('../img/logo_full.png') no-repeat left top;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 500px) {
|
||||||
|
.logo {
|
||||||
|
background: #f5f5f5 url('../img/logo_small.png') no-repeat left top;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
img {
|
||||||
|
z-index: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
INTERFACE BUTTONS
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#btnNew {
|
||||||
|
left: 10px;
|
||||||
|
top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnPrevious {
|
||||||
|
left: 20px;
|
||||||
|
top: 180px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnNext {
|
||||||
|
left: 126px;
|
||||||
|
top: 186px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnSave {
|
||||||
|
left: 20px;
|
||||||
|
top: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnOops {
|
||||||
|
left: 20px;
|
||||||
|
/* bottom: 150px;*/
|
||||||
|
top: 450px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnPrint {
|
||||||
|
right: 15px;
|
||||||
|
top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnStop {
|
||||||
|
right: 20px;
|
||||||
|
top: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
DRAW AREA
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#drawAreaContainer > .buttons {
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnsUpDown {
|
||||||
|
position: absolute;
|
||||||
|
right: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnsTurnLeftRight {
|
||||||
|
position: absolute;
|
||||||
|
right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnUp {
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnDown {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnTurnLeft {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnTurnRight {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
position: absolute;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
201
css/fixedPosInterface.css
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
body {
|
||||||
|
/* This chops off any overhanging divs */
|
||||||
|
/* overflow:hidden; */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.button {
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
|
.big {
|
||||||
|
background: #a6e19c;
|
||||||
|
border: 1px solid #222;
|
||||||
|
height: 64px;
|
||||||
|
width: 64px;
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 32px;
|
||||||
|
-moz-border-radius: 32px;
|
||||||
|
-webkit-border-radius: 32px;
|
||||||
|
}
|
||||||
|
.small {
|
||||||
|
background: #a3d5f7;
|
||||||
|
border: 1px solid #222;
|
||||||
|
height: 40px;
|
||||||
|
width: 40px;
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 20px;
|
||||||
|
-moz-border-radius: 20px;
|
||||||
|
-webkit-border-radius: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#logo {
|
||||||
|
position: absolute;
|
||||||
|
/*left: 50%;*/
|
||||||
|
/*margin-left: -220px;*/
|
||||||
|
top: 20px;
|
||||||
|
left: 315px;
|
||||||
|
width: 400px;
|
||||||
|
height: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ha {
|
||||||
|
background: #f5f5f5 url('../images/bg.jpg') no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Portrait */
|
||||||
|
@media screen and (orientation:portrait) {
|
||||||
|
body {
|
||||||
|
/* background-color: #08F;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#landscape {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#portrait {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Landscape */
|
||||||
|
@media screen and (orientation:landscape) {
|
||||||
|
body {
|
||||||
|
/* background-color: #8F0;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#landscape {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#portrait {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
border: 2px solid #333;
|
||||||
|
width: 1024px;
|
||||||
|
min-height: 500px;
|
||||||
|
max-height: 768px;
|
||||||
|
height: 100%;
|
||||||
|
/* height: 768px;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#d3dlogo {
|
||||||
|
position: absolute;
|
||||||
|
top: 15px;
|
||||||
|
left: 31%;
|
||||||
|
content:url("../img/logo_full.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
#svg {
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
#drawAreaContainer {
|
||||||
|
position: absolute;
|
||||||
|
top: 193px;
|
||||||
|
left: 193px;
|
||||||
|
width: 650px;
|
||||||
|
height: 450px;
|
||||||
|
background-color: white;
|
||||||
|
border: 4px solid black;
|
||||||
|
border-radius: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#preview {
|
||||||
|
position: absolute;
|
||||||
|
right: 0px;
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vertImage {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 2px solid #f0f;
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
width: auto; /* for ie9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.bgTop {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
z-index: -5;
|
||||||
|
}
|
||||||
|
.bgMiddle {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 30%;
|
||||||
|
left: 0px;
|
||||||
|
z-index: -5;
|
||||||
|
}
|
||||||
|
.bgBottom {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0px;
|
||||||
|
left: 0px;
|
||||||
|
z-index: -5;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-height: 700px) {
|
||||||
|
.bgMiddle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#d3dlogo {
|
||||||
|
content:url("../img/logo_small.png");
|
||||||
|
margin-top: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnsUpDown, #btnsTurnLeftRight {
|
||||||
|
zoom: 0.96;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnPrint {
|
||||||
|
right: 10px;
|
||||||
|
top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
zoom: 0.96;
|
||||||
|
}
|
||||||
|
|
||||||
|
#drawAreaContainer {
|
||||||
|
top: 128px;
|
||||||
|
height: 350px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-height: 500px) {
|
||||||
|
#d3dlogo {
|
||||||
|
zoom: 0.8;
|
||||||
|
left: 34%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnsUpDown, #btnsTurnLeftRight {
|
||||||
|
zoom: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btnPrint {
|
||||||
|
right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
zoom: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#drawAreaContainer {
|
||||||
|
top: 110px;
|
||||||
|
height: 350px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
534
css/normalize.css
vendored
Normal file
@ -0,0 +1,534 @@
|
|||||||
|
/*! normalize.css v1.0.2 | MIT License | git.io/normalize */
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
HTML5 display definitions
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3.
|
||||||
|
*/
|
||||||
|
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
details,
|
||||||
|
figcaption,
|
||||||
|
figure,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
nav,
|
||||||
|
section,
|
||||||
|
summary {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audio,
|
||||||
|
canvas,
|
||||||
|
video {
|
||||||
|
display: inline-block;
|
||||||
|
*display: inline;
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prevents modern browsers from displaying `audio` without controls.
|
||||||
|
* Remove excess height in iOS 5 devices.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audio:not([controls]) {
|
||||||
|
display: none;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses styling for `hidden` attribute not present in IE 7/8/9, Firefox 3,
|
||||||
|
* and Safari 4.
|
||||||
|
* Known issue: no IE 6 support.
|
||||||
|
*/
|
||||||
|
|
||||||
|
[hidden] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Base
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using
|
||||||
|
* `em` units.
|
||||||
|
* 2. Prevents iOS text size adjust after orientation change, without disabling
|
||||||
|
* user zoom.
|
||||||
|
*/
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 100%; /* 1 */
|
||||||
|
-webkit-text-size-adjust: 100%; /* 2 */
|
||||||
|
-ms-text-size-adjust: 100%; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses `font-family` inconsistency between `textarea` and other form
|
||||||
|
* elements.
|
||||||
|
*/
|
||||||
|
|
||||||
|
html,
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses margins handled incorrectly in IE 6/7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Links
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses `outline` inconsistency between Chrome and other browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
a:focus {
|
||||||
|
outline: thin dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Improves readability when focused and also mouse hovered in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
a:active,
|
||||||
|
a:hover {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Typography
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses font sizes and margins set differently in IE 6/7.
|
||||||
|
* Addresses font sizes within `section` and `article` in Firefox 4+, Safari 5,
|
||||||
|
* and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 2em;
|
||||||
|
margin: 0.67em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
margin: 0.83em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 1.17em;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 1em;
|
||||||
|
margin: 1.33em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
font-size: 0.83em;
|
||||||
|
margin: 1.67em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
font-size: 0.67em;
|
||||||
|
margin: 2.33em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses styling not present in IE 7/8/9, Safari 5, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
abbr[title] {
|
||||||
|
border-bottom: 1px dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin: 1em 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses styling not present in Safari 5 and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
dfn {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses styling not present in IE 6/7/8/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
mark {
|
||||||
|
background: #ff0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses margins set differently in IE 6/7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
p,
|
||||||
|
pre {
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Corrects font family set oddly in IE 6, Safari 4/5, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
code,
|
||||||
|
kbd,
|
||||||
|
pre,
|
||||||
|
samp {
|
||||||
|
font-family: monospace, serif;
|
||||||
|
_font-family: 'courier new', monospace;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Improves readability of pre-formatted text in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
pre {
|
||||||
|
white-space: pre;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses CSS quotes not supported in IE 6/7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
q {
|
||||||
|
quotes: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses `quotes` property not supported in Safari 4.
|
||||||
|
*/
|
||||||
|
|
||||||
|
q:before,
|
||||||
|
q:after {
|
||||||
|
content: '';
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses inconsistent and variable font size in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
small {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prevents `sub` and `sup` affecting `line-height` in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
sub,
|
||||||
|
sup {
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Lists
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses margins set differently in IE 6/7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
dl,
|
||||||
|
menu,
|
||||||
|
ol,
|
||||||
|
ul {
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd {
|
||||||
|
margin: 0 0 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses paddings set differently in IE 6/7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
menu,
|
||||||
|
ol,
|
||||||
|
ul {
|
||||||
|
padding: 0 0 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Corrects list images handled incorrectly in IE 7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
nav ul,
|
||||||
|
nav ol {
|
||||||
|
list-style: none;
|
||||||
|
list-style-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Embedded content
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Removes border when inside `a` element in IE 6/7/8/9 and Firefox 3.
|
||||||
|
* 2. Improves image quality when scaled in IE 7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: 0; /* 1 */
|
||||||
|
-ms-interpolation-mode: bicubic; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Corrects overflow displayed oddly in IE 9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
svg:not(:root) {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Figures
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Forms
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Corrects margin displayed oddly in IE 6/7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
form {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define consistent border, margin, and padding.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
border: 1px solid #c0c0c0;
|
||||||
|
margin: 0 2px;
|
||||||
|
padding: 0.35em 0.625em 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Corrects color not being inherited in IE 6/7/8/9.
|
||||||
|
* 2. Corrects text not wrapping in Firefox 3.
|
||||||
|
* 3. Corrects alignment displayed oddly in IE 6/7.
|
||||||
|
*/
|
||||||
|
|
||||||
|
legend {
|
||||||
|
border: 0; /* 1 */
|
||||||
|
padding: 0;
|
||||||
|
white-space: normal; /* 2 */
|
||||||
|
*margin-left: -7px; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Corrects font size not being inherited in all browsers.
|
||||||
|
* 2. Addresses margins set differently in IE 6/7, Firefox 3+, Safari 5,
|
||||||
|
* and Chrome.
|
||||||
|
* 3. Improves appearance and consistency in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
font-size: 100%; /* 1 */
|
||||||
|
margin: 0; /* 2 */
|
||||||
|
vertical-align: baseline; /* 3 */
|
||||||
|
*vertical-align: middle; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Addresses Firefox 3+ setting `line-height` on `input` using `!important` in
|
||||||
|
* the UA stylesheet.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
input {
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||||
|
* and `video` controls.
|
||||||
|
* 2. Corrects inability to style clickable `input` types in iOS.
|
||||||
|
* 3. Improves usability and consistency of cursor style between image-type
|
||||||
|
* `input` and others.
|
||||||
|
* 4. Removes inner spacing in IE 7 without affecting normal text inputs.
|
||||||
|
* Known issue: inner spacing remains in IE 6.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
html input[type="button"], /* 1 */
|
||||||
|
input[type="reset"],
|
||||||
|
input[type="submit"] {
|
||||||
|
-webkit-appearance: button; /* 2 */
|
||||||
|
cursor: pointer; /* 3 */
|
||||||
|
*overflow: visible; /* 4 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Re-set default cursor for disabled elements.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button[disabled],
|
||||||
|
input[disabled] {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Addresses box sizing set to content-box in IE 8/9.
|
||||||
|
* 2. Removes excess padding in IE 8/9.
|
||||||
|
* 3. Removes excess padding in IE 7.
|
||||||
|
* Known issue: excess padding remains in IE 6.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
box-sizing: border-box; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
*height: 13px; /* 3 */
|
||||||
|
*width: 13px; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
|
||||||
|
* 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
|
||||||
|
* (include `-moz` to future-proof).
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="search"] {
|
||||||
|
-webkit-appearance: textfield; /* 1 */
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
-webkit-box-sizing: content-box; /* 2 */
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Removes inner padding and search cancel button in Safari 5 and Chrome
|
||||||
|
* on OS X.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Removes inner padding and border in Firefox 3+.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button::-moz-focus-inner,
|
||||||
|
input::-moz-focus-inner {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Removes default vertical scrollbar in IE 6/7/8/9.
|
||||||
|
* 2. Improves readability and alignment in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
overflow: auto; /* 1 */
|
||||||
|
vertical-align: top; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Tables
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Remove most spacing between table cells.
|
||||||
|
*/
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* http://nicolasgallagher.com/micro-clearfix-hack/ */
|
||||||
|
/**
|
||||||
|
* For modern browsers
|
||||||
|
* 1. The space content is one way to avoid an Opera bug when the
|
||||||
|
* contenteditable attribute is included anywhere else in the document.
|
||||||
|
* Otherwise it causes space to appear at the top and bottom of elements
|
||||||
|
* that are clearfixed.
|
||||||
|
* 2. The use of `table` rather than `block` is only necessary if using
|
||||||
|
* `:before` to contain the top-margins of child elements.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For IE 6/7 only
|
||||||
|
* Include this rule to trigger hasLayout and contain floats.
|
||||||
|
*/
|
||||||
|
.cf {
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cf:before,
|
||||||
|
.cf:after {
|
||||||
|
content: " "; /* 1 */
|
||||||
|
display: table; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.cf:after {
|
||||||
|
clear: both;
|
||||||
|
}
|
96
fixedPosInterface01_v02.html
Executable file
@ -0,0 +1,96 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Bootstrap 101 Template</title>
|
||||||
|
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
<meta id="Viewport" name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=yes">
|
||||||
|
|
||||||
|
<!-- Bootstrap -->
|
||||||
|
<!--<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">-->
|
||||||
|
<link href="css/normalize.css" rel="stylesheet" media="screen">
|
||||||
|
<link href="css/fixedPosInterface.css" rel="stylesheet" media="screen">
|
||||||
|
<link href="css/d3d_btns.css" rel="stylesheet" media="screen">
|
||||||
|
<style type="text/css">
|
||||||
|
|
||||||
|
.debugContainer {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
z-index: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.debugBtn {
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
background-color: #03b;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.agentInfo {
|
||||||
|
background: #fff;
|
||||||
|
border: 1px #333 solid;
|
||||||
|
display: none;
|
||||||
|
float:left;
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.agentInfoToggle {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="debugContainer">
|
||||||
|
<div class="debugBtn"></div>
|
||||||
|
<div class="agentInfo"></div>
|
||||||
|
</div>
|
||||||
|
<div id="landscape">
|
||||||
|
<div class="container">
|
||||||
|
<img class="bgTop" src="img/bg_top.png" />
|
||||||
|
<img class="bgMiddle" src="img/bg_middle.png" />
|
||||||
|
<img class="bgBottom" src="img/bg_bottom.png" />
|
||||||
|
<div class="buttons">
|
||||||
|
<img id="d3dlogo" src="img/logo_full.png" onclick="location.reload()">
|
||||||
|
<img class="btn" id="btnNew" src="img/buttons/btnNew.png">
|
||||||
|
<img class="btn" id="btnPrevious" src="img/buttons/btnLeft.png">
|
||||||
|
<img class="btn" id="btnNext" src="img/buttons/btnRight.png">
|
||||||
|
<img class="btn" id="btnSave" src="img/buttons/btnSave.png">
|
||||||
|
<img class="btn" id="btnOops" src="img/buttons/btnOops.png">
|
||||||
|
<img class="btn" id="btnPrint" src="img/buttons/btnPrint.png">
|
||||||
|
<img class="btn" id="btnStop" src="img/buttons/btnStop.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="drawAreaContainer">
|
||||||
|
<svg id="svg">
|
||||||
|
<path id="path" d="M200 100 L450 100 L450 350 L200 350 L200 100" fill="none" stroke="black" stroke-width="3"/>
|
||||||
|
</svg>
|
||||||
|
<canvas id="preview" width="150" height="450"></canvas>
|
||||||
|
<div class="buttons cf">
|
||||||
|
<div id="btnsUpDown">
|
||||||
|
<img id="btnUp" src="img/buttons/btnUp.png">
|
||||||
|
<img id="btnDown" src="img/buttons/btnDown.png">
|
||||||
|
</div>
|
||||||
|
<div id="btnsTurnLeftRight">
|
||||||
|
<img id="btnTurnLeft" src="img/buttons/btnTurnLeft.png">
|
||||||
|
<img id="btnTurnRight" src="img/buttons/btnTurnRight.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="portrait">
|
||||||
|
<img class="vertImage" src="img/bg_vertical.jpg"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="js/jquery-1.8.3.min.js"></script>
|
||||||
|
<!--<script src="js/bootstrap.min.js"></script>-->
|
||||||
|
<script src="js/init_layout.js"></script>
|
||||||
|
<script src="js/draw_logic.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
img/bg_bottom.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
img/bg_middle.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
img/bg_top.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
img/bg_vertical.jpg
Executable file
After Width: | Height: | Size: 52 KiB |
BIN
img/buttons/btnDown.png
Executable file
After Width: | Height: | Size: 1.6 KiB |
BIN
img/buttons/btnLeft.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
img/buttons/btnNew.png
Executable file
After Width: | Height: | Size: 9.7 KiB |
BIN
img/buttons/btnOk.png
Executable file
After Width: | Height: | Size: 5.1 KiB |
BIN
img/buttons/btnOops.png
Executable file
After Width: | Height: | Size: 5.6 KiB |
BIN
img/buttons/btnPrint.png
Executable file
After Width: | Height: | Size: 7.0 KiB |
BIN
img/buttons/btnRight.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
img/buttons/btnSave.png
Executable file
After Width: | Height: | Size: 5.4 KiB |
BIN
img/buttons/btnStop.png
Executable file
After Width: | Height: | Size: 4.5 KiB |
BIN
img/buttons/btnTurnLeft.png
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
img/buttons/btnTurnRight.png
Executable file
After Width: | Height: | Size: 1.9 KiB |
BIN
img/buttons/btnUp.png
Executable file
After Width: | Height: | Size: 1.4 KiB |
BIN
img/buttons/btnZoomIn.png
Executable file
After Width: | Height: | Size: 1.5 KiB |
BIN
img/buttons/btnZoomOut.png
Executable file
After Width: | Height: | Size: 1.5 KiB |
BIN
img/icon.png
Executable file
After Width: | Height: | Size: 21 KiB |
BIN
img/logo_full.png
Executable file
After Width: | Height: | Size: 66 KiB |
BIN
img/logo_small.png
Normal file
After Width: | Height: | Size: 53 KiB |
0
index.html
Normal file
275
js/draw_logic.js
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
var oopsTimer;
|
||||||
|
var dragging;
|
||||||
|
var path;
|
||||||
|
var svg;
|
||||||
|
var preview;
|
||||||
|
var previewCtx;
|
||||||
|
|
||||||
|
var svgPathRegExp = /[LM]\d* \d*/ig;
|
||||||
|
var svgPathParamsRegExp = /([LM])(\d*) (\d*)/;
|
||||||
|
|
||||||
|
var svgTopLeftCoords = [];
|
||||||
|
function initDrawing() {
|
||||||
|
|
||||||
|
path = document.getElementById('path');
|
||||||
|
svg = document.getElementById('svg');
|
||||||
|
|
||||||
|
svgTopLeftCoords[0] = $("#drawAreaContainer").css("left").match(/[0-9]/g).join("");
|
||||||
|
svgTopLeftCoords[1] = $("#drawAreaContainer").css("top").match(/[0-9]/g).join("");
|
||||||
|
|
||||||
|
svg.addEventListener('mousedown',onMouseDown,false);
|
||||||
|
svg.addEventListener('mousemove',onMouseMove,false);
|
||||||
|
svg.addEventListener('mouseup',onMouseUp,false);
|
||||||
|
svg.addEventListener('touchstart',onTouchDown,false);
|
||||||
|
svg.addEventListener('touchmove',onTouchMove,false);
|
||||||
|
btnNew.addEventListener('mousedown',clear,false);
|
||||||
|
btnNew.addEventListener('touchstart',clear,false);
|
||||||
|
btnOops.addEventListener('touchstart',startOops,false);
|
||||||
|
btnOops.addEventListener('touchend',stopOops,false);
|
||||||
|
btnOops.addEventListener('mousedown',startOops,false);
|
||||||
|
btnOops.addEventListener('mouseup',stopOops,false);
|
||||||
|
btnPrint.addEventListener('mousedown',print,false);
|
||||||
|
btnPrint.addEventListener('touchstart',print,false);
|
||||||
|
btnSave.addEventListener('mousedown',print,false);
|
||||||
|
btnSave.addEventListener('touchstart',print,false);
|
||||||
|
|
||||||
|
document.body.addEventListener('touchmove',prevent,false);
|
||||||
|
|
||||||
|
preview = document.getElementById('preview');
|
||||||
|
previewCtx = preview.getContext('2d');
|
||||||
|
redrawPreview();
|
||||||
|
};
|
||||||
|
|
||||||
|
function prevent(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
function clear() {
|
||||||
|
path.attributes.d.nodeValue = "M0 0";
|
||||||
|
redrawPreview();
|
||||||
|
}
|
||||||
|
|
||||||
|
function startOops() {
|
||||||
|
oopsTimer = setInterval("oops()",1000/30);
|
||||||
|
}
|
||||||
|
|
||||||
|
function stopOops() {
|
||||||
|
clearInterval(oopsTimer);
|
||||||
|
}
|
||||||
|
|
||||||
|
function oops() {
|
||||||
|
str = path.attributes.d.nodeValue;
|
||||||
|
n = str.lastIndexOf(" L");
|
||||||
|
if(n != -1) {
|
||||||
|
path.attributes.d.nodeValue = str.substr(0,n);
|
||||||
|
redrawPreview();
|
||||||
|
//requestAnimationFrame(updatePreview);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function moveTo(x,y) {
|
||||||
|
if (path.attributes.d.nodeValue=="M0 0") {
|
||||||
|
path.attributes.d.nodeValue = "M" + x + " " + y;
|
||||||
|
} else {
|
||||||
|
path.attributes.d.nodeValue += " M" + x + " " + y;
|
||||||
|
}
|
||||||
|
updatePreview(x,y,true)
|
||||||
|
//redrawPreview();
|
||||||
|
}
|
||||||
|
|
||||||
|
function lineTo(x,y) {
|
||||||
|
path.attributes.d.nodeValue += " L" + x + " " + y;
|
||||||
|
//updatePreview();
|
||||||
|
//requestAnimationFrame(updatePreview);
|
||||||
|
updatePreview(x,y,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTouchDown(e) {
|
||||||
|
var x = e.touches[0].pageX - svgTopLeftCoords[0];
|
||||||
|
var y = e.touches[0].pageY - svgTopLeftCoords[1];
|
||||||
|
moveTo(x,y);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTouchMove(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var x = e.touches[0].pageX - svgTopLeftCoords[0];
|
||||||
|
var y = e.touches[0].pageY - svgTopLeftCoords[1];
|
||||||
|
lineTo(x,y);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onMouseDown(e) {
|
||||||
|
dragging = true;
|
||||||
|
moveTo(e.offsetX,e.offsetY);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onMouseMove(e) {
|
||||||
|
if (!dragging) return;
|
||||||
|
lineTo(e.offsetX,e.offsetY);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onMouseUp(e) {
|
||||||
|
dragging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function print(e) {
|
||||||
|
|
||||||
|
output = path.attributes.d.nodeValue;
|
||||||
|
console.log(output);
|
||||||
|
|
||||||
|
output = output.split("M").join("\n");
|
||||||
|
output = output.split(" L").join("_");
|
||||||
|
output = output.split(" ").join(",");
|
||||||
|
output = output.split("_").join(" ");
|
||||||
|
|
||||||
|
output = "\nBEGIN\n" + output + "\n\nEND\n";
|
||||||
|
|
||||||
|
$.post("/doodle3d.of", { data:output }, function(data) {
|
||||||
|
btnPrint.disabled = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var numLayers = 100; //50
|
||||||
|
var globalScale = 0.20; // global scale of preview
|
||||||
|
var globalAlpha = 0.20; // global alpha of preview
|
||||||
|
var scaleY = 0.4; // additional vertical scale per path for 3d effect
|
||||||
|
var strokeWidth = 2; //4;
|
||||||
|
var rStep = Math.PI/40; //Math.PI/40; //
|
||||||
|
var yStep = 3; //6;
|
||||||
|
var svgWidth = 650; //parseInt($(svg).css("width"));
|
||||||
|
var svgHeight = 450; //parseInt($(svg).css("height"));
|
||||||
|
var layerCX = svgWidth/2*globalScale;
|
||||||
|
var layerCY = svgHeight/2*globalScale;
|
||||||
|
var layerOffsetY= 360;
|
||||||
|
var prevX = 0;
|
||||||
|
var prevY = 0;
|
||||||
|
var highlight = true; //highlight bottom, middle and top layers
|
||||||
|
|
||||||
|
function redrawPreview() {
|
||||||
|
var svgData = path.attributes.d.nodeValue;
|
||||||
|
var linesRaw = svgData.match(svgPathRegExp);
|
||||||
|
console.log("svgData: " + svgData);
|
||||||
|
console.log("linesRaw: " + linesRaw);
|
||||||
|
console.log("");
|
||||||
|
// console.log("");
|
||||||
|
var lines = new Array();
|
||||||
|
for(var i=0;i<linesRaw.length;i++) {
|
||||||
|
var lineRaw = linesRaw[i];
|
||||||
|
var results = svgPathParamsRegExp.exec(lineRaw);
|
||||||
|
console.log("results: " + results);
|
||||||
|
console.log("");
|
||||||
|
results[2] = parseInt(results[2])*globalScale; // posX
|
||||||
|
results[3] = parseInt(results[3])*globalScale; // posY
|
||||||
|
lines.push(results);
|
||||||
|
}
|
||||||
|
console.log("");
|
||||||
|
console.log("");
|
||||||
|
|
||||||
|
var y = 0;
|
||||||
|
var r = 0;
|
||||||
|
|
||||||
|
//preview.width = preview.width;
|
||||||
|
previewCtx.clearRect (0,0,preview.width,preview.height);
|
||||||
|
previewCtx.lineWidth = strokeWidth;
|
||||||
|
previewCtx.strokeStyle = '#f00'; //"rgba(255,255,0,0)";
|
||||||
|
|
||||||
|
for(var i=0;i<numLayers;i++) {
|
||||||
|
|
||||||
|
if(i == 0 || i == numLayers/2 || i == numLayers-1){
|
||||||
|
previewCtx.globalAlpha = 1;
|
||||||
|
} else {
|
||||||
|
previewCtx.globalAlpha = globalAlpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
previewCtx.save();
|
||||||
|
|
||||||
|
previewCtx.translate(layerCX,layerOffsetY+layerCY+y);
|
||||||
|
previewCtx.scale(1, scaleY)
|
||||||
|
previewCtx.rotate(r);
|
||||||
|
previewCtx.translate(-layerCX,-layerCY);
|
||||||
|
|
||||||
|
previewCtx.beginPath();
|
||||||
|
for(var j=0;j<lines.length;j++) {
|
||||||
|
var line = lines[j];
|
||||||
|
var command = line[1];
|
||||||
|
var posX = line[2];
|
||||||
|
var posY = line[3];
|
||||||
|
if(command == "M") previewCtx.moveTo(posX,posY);
|
||||||
|
else if(command == "L") previewCtx.lineTo(posX,posY);
|
||||||
|
}
|
||||||
|
previewCtx.stroke();
|
||||||
|
|
||||||
|
y -= yStep;
|
||||||
|
r += rStep;
|
||||||
|
previewCtx.restore();
|
||||||
|
}
|
||||||
|
previewCtx.globalAlpha = globalAlpha;
|
||||||
|
}
|
||||||
|
function updatePreview(x,y,move) {
|
||||||
|
x *= globalScale;
|
||||||
|
y *= globalScale;
|
||||||
|
|
||||||
|
if(!move) {
|
||||||
|
var tY = 0;
|
||||||
|
var r = 0;
|
||||||
|
|
||||||
|
if(!highlight) {
|
||||||
|
previewCtx.globalAlpha = globalAlpha;
|
||||||
|
previewCtx.beginPath();
|
||||||
|
}
|
||||||
|
for(var i=0;i<numLayers;i++) {
|
||||||
|
|
||||||
|
if(highlight && (i == 0 || i == numLayers/2 || i == numLayers-1)){
|
||||||
|
previewCtx.stroke();
|
||||||
|
previewCtx.globalAlpha = 1;
|
||||||
|
previewCtx.beginPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
previewCtx.save();
|
||||||
|
previewCtx.translate(layerCX,layerOffsetY+layerCY+tY);
|
||||||
|
previewCtx.scale(1, scaleY)
|
||||||
|
previewCtx.rotate(r);
|
||||||
|
previewCtx.translate(-layerCX,-layerCY);
|
||||||
|
|
||||||
|
previewCtx.moveTo(prevX,prevY);
|
||||||
|
previewCtx.lineTo(x,y);
|
||||||
|
|
||||||
|
tY -= yStep;
|
||||||
|
r += rStep;
|
||||||
|
previewCtx.restore();
|
||||||
|
|
||||||
|
if(highlight && (i == 0 || i == numLayers/2 || i == numLayers-1)){
|
||||||
|
previewCtx.stroke();
|
||||||
|
previewCtx.globalAlpha = globalAlpha;
|
||||||
|
previewCtx.beginPath();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
previewCtx.stroke();
|
||||||
|
prevX = x;
|
||||||
|
prevY = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*(function() {
|
||||||
|
var lastTime = 0;
|
||||||
|
var vendors = ['webkit', 'moz'];
|
||||||
|
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
|
||||||
|
window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
|
||||||
|
window.cancelAnimationFrame =
|
||||||
|
window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!window.requestAnimationFrame)
|
||||||
|
window.requestAnimationFrame = function(callback, element) {
|
||||||
|
var currTime = new Date().getTime();
|
||||||
|
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
|
||||||
|
var id = window.setTimeout(function() { callback(currTime + timeToCall); },
|
||||||
|
timeToCall);
|
||||||
|
lastTime = currTime + timeToCall;
|
||||||
|
return id;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!window.cancelAnimationFrame)
|
||||||
|
window.cancelAnimationFrame = function(id) {
|
||||||
|
clearTimeout(id);
|
||||||
|
};
|
||||||
|
}());*/
|
154
js/init_layout.js
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
var imgDims = [320, 320]; // width and height of image
|
||||||
|
|
||||||
|
function doClientAndOrientationStuff() {
|
||||||
|
console.log("doClientAndOrientationStuff");
|
||||||
|
|
||||||
|
$(".agentInfo").text("");
|
||||||
|
|
||||||
|
/*
|
||||||
|
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
|
||||||
|
if (window.orientation == -90 || window.orientation == 90) {
|
||||||
|
// landscape
|
||||||
|
// $('#Viewport').attr('content', 'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=yes');
|
||||||
|
} else {
|
||||||
|
// portrait
|
||||||
|
$('#Viewport').attr('content', 'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=yes');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
//*/
|
||||||
|
|
||||||
|
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
|
||||||
|
if (window.orientation == -90 || window.orientation == 90) {
|
||||||
|
// landscape
|
||||||
|
|
||||||
|
// var ww = ( $(window).width() < window.screen.width ) ? $(window).width() : window.screen.width; //get proper width
|
||||||
|
var ww = 0; //get proper width
|
||||||
|
if (window.screen.availWidth) {
|
||||||
|
ww = window.screen.availWidth;
|
||||||
|
} else if($(window).width()) {
|
||||||
|
ww = $(window).width();
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ww = 480;
|
||||||
|
|
||||||
|
var mw = imgDims[0]; // min width of site
|
||||||
|
//*
|
||||||
|
if( /iPhone|iPad|iPod/i.test(navigator.userAgent) ) {
|
||||||
|
var mw = imgDims[1]; // in landscape: min-width is image width
|
||||||
|
}
|
||||||
|
//*/
|
||||||
|
var ratio = ww / mw; //calculate ratio
|
||||||
|
$('#Viewport').attr('content', 'initial-scale='+ratio+',maximum-scale='+ratio+',minimum-scale='+ratio+',user-scalable=yes,width='+mw);
|
||||||
|
if( ww < mw){ //smaller than minimum size
|
||||||
|
// $(".colmask").css("background-color", "#ff0");
|
||||||
|
// $('#Viewport').attr('content', 'initial-scale=' + ratio + ', maximum-scale=' + ratio + ', minimum-scale=' + ratio + ', user-scalable=yes, width=' + ww);
|
||||||
|
// $('#Viewport').attr('content', 'initial-scale=1.0, maximum-scale=2, minimum-scale=1.0, user-scalable=yes, width=' + ww);
|
||||||
|
}else{ //regular size
|
||||||
|
// $(".colmask").css("background-color", "#0ff");
|
||||||
|
// $('#Viewport').attr('content', 'initial-scale=1.0, maximum-scale=2, minimum-scale=1.0, user-scalable=yes, width=' + ww);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(".agentInfo").append("ww: " + ww + ", mw: " + mw + "<br/>");
|
||||||
|
$(".agentInfo").append("ratio: " + ratio + "<br/>");
|
||||||
|
$(".agentInfo").append("<br/>");
|
||||||
|
} else {
|
||||||
|
// portrait
|
||||||
|
// $('#Viewport').attr('content', 'initial-scale='+1+',maximum-scale='+1+',minimum-scale='+1+',user-scalable=no');
|
||||||
|
$('#Viewport').attr('content', 'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=yes');
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// console.log("else");
|
||||||
|
$(".colmask").css("background-color", "#f80");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$(".agentInfo").append("$(window).width(): " + $(window).width() + "<br/>");
|
||||||
|
$(".agentInfo").append("window.screen.width: " + window.screen.width+ "<br/>");
|
||||||
|
$(".agentInfo").append("window.screen.availWidth: " + window.screen.availWidth+ "<br/>");
|
||||||
|
$(".agentInfo").append("<br/>");
|
||||||
|
$(".agentInfo").append("window.innerWidth: " + window.innerWidth + "<br/>");
|
||||||
|
$(".agentInfo").append("window.innerHeight: " + window.innerHeight + "<br/>");
|
||||||
|
$(".agentInfo").append("<br/>");
|
||||||
|
$(".agentInfo").append("$(window).height(): " + $(window).height() + "<br/>");
|
||||||
|
$(".agentInfo").append("window.screen.height: " + window.screen.height+ "<br/>");
|
||||||
|
$(".agentInfo").append("window.screen.availHeight: " + window.screen.availHeight+ "<br/>");
|
||||||
|
$(".agentInfo").append("<br/>");
|
||||||
|
$(".agentInfo").append("user agent: " + navigator.userAgent + "<br/>");
|
||||||
|
};
|
||||||
|
|
||||||
|
function doOnOrientationChange() {
|
||||||
|
console.log("doOnOrientationChange");
|
||||||
|
doClientAndOrientationStuff();
|
||||||
|
|
||||||
|
// switch(window.orientation) {
|
||||||
|
// case -90:
|
||||||
|
// case 90:
|
||||||
|
// alert('landscape');
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// alert('portrait');
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
function doOnResize() {
|
||||||
|
// console.log("doOnResize() >> " + new Date().getTime());
|
||||||
|
// $(".container").css("height", window.innerHeight);
|
||||||
|
doClientAndOrientationStuff()
|
||||||
|
|
||||||
|
if (window.innerHeight < 768) {
|
||||||
|
$('#drawAreaContainer').innerHeight(window.innerHeight - $("#drawAreaContainer").offset().top - 70);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$("document").ready(function(){
|
||||||
|
console.log("ready");
|
||||||
|
|
||||||
|
initDrawing();
|
||||||
|
|
||||||
|
// imgDims[0] = parseInt($(".container").css("width").match(/[0-9]+/).join(""));
|
||||||
|
// imgDims[1] = parseInt($(".container").css("height").match(/[0-9]+/).join(""));
|
||||||
|
|
||||||
|
imgDims = [1024, 768];
|
||||||
|
/*
|
||||||
|
if( /Android|webOS|BlackBerry/i.test(navigator.userAgent) ) {
|
||||||
|
imgDims[1] = parseInt($(".container").css("height").match(/[0-9]+/).join(""));
|
||||||
|
} else if ( /iPhone|iPad|iPod/i.test(navigator.userAgent) ) {
|
||||||
|
imgDims[1] = parseInt($(".container").css("width").match(/[0-9]+/).join(""));
|
||||||
|
} else {
|
||||||
|
imgDims[1] = parseInt($(".container").css("height").match(/[0-9]+/).join(""));
|
||||||
|
}
|
||||||
|
//*/
|
||||||
|
|
||||||
|
// $(".container").css("height", window.innerHeight);
|
||||||
|
|
||||||
|
// Initial execution if needed
|
||||||
|
window.addEventListener('orientationchange', doOnOrientationChange);
|
||||||
|
window.addEventListener('resize', doOnResize)
|
||||||
|
doClientAndOrientationStuff();
|
||||||
|
// doOnOrientationChange();
|
||||||
|
|
||||||
|
// window.innerHeight
|
||||||
|
console.log("window.innerHeight: " + window.innerHeight);
|
||||||
|
console.log("$('#drawAreaContainer').innerHeight(): " + $("#drawAreaContainer").innerHeight());
|
||||||
|
console.log("$('#drawAreaContainer').offset().top: " + $("#drawAreaContainer").offset().top);
|
||||||
|
|
||||||
|
if (window.innerHeight < 768) {
|
||||||
|
$('#drawAreaContainer').innerHeight(window.innerHeight - $("#drawAreaContainer").offset().top - 70);
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEBUG
|
||||||
|
// $(".agentInfo").css("display", "none");
|
||||||
|
$(".debugBtn").click(function(e) {
|
||||||
|
console.log("debugClick");
|
||||||
|
$(".agentInfo").toggleClass("agentInfoToggle");
|
||||||
|
e.preventDefault();
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|