SurfaceAnatomy.html
SurfaceAnatomy.html
—
HTML,
17Kb
File contents
<html>
<Title>Surface Anatomy</title>
<head>
<!-- CSS Script that removes textarea and textbox borders when printing-->
<style type="text/css" media="print">
.DoNotPrint {
display: none;
}
input.noborder {
border: 0px;
background: transparent;
}
textarea.noborder {
background: transparent;
overflow: hidden;
border: 0px;
}
</style>
<!-- wz_jsgraphics.js -->
<script type="text/javascript" src="${oscar_image_path}jsgraphics.js">
</script>
<!-- mousefunction.js -->
<script type="text/javascript" src="${oscar_image_path}mouse.js">
</script>
<script type="text/javascript">
function Highlight(i){
document.getElementById(i).style.border = "2px solid orange";
}
function RemoveHighlight(i){
document.getElementById(i).style.borderStyle = "none";
}
</script>
</head>
<body onload="init(); ReloadImage(); SetSwitchOn('Freehand');">
<div style="position: absolute; left: 10px; top: 30px; ">
<img id="image" src="${oscar_image_path}SurfaceAnatomy.png" width="800">
</div>
<!-- You can remove ${oscar_image_path} as you develop the form, but make sure you put it back before
uploading to OSCAR otherwise the image wouldn't show. -->
<!-- Also note: the image filename IS CASE SENSITIVE INCLUDING THE EXTENSION. It may work otherwise in
Windows, but not in OSCAR because it's based on a Linux platform -->
<form method="post" action="" name="AnatomyForm" id="AnatomyForm">
<div style="position:absolute; top:5px;left:10px; font-family:arial;font-size:12px;font-weight:bold;">
Name: <input name="PatientName" id="PatientName" class="noborder" style="font-family:arial;font-size:12px; width:320px;text-align:left;" type="text" oscarDB=patient_name>
Birthdate: <input name="DOB" id="DOB" class="noborder" style="font-family:arial;font-size:12px;width100;text-align:left;" type="text" oscarDB=DOB>
Date:<input name="Date" id="Date" class="noborder" style="font-family:arial;font-size:12px;width:180px;text-align:left;" type="text" oscarDB=today>
</div>
<!-- ----------------------------All textfields/checkboxes/textareas go here...------ -->
<!-- -----------------Hidden input for storing Image data---------------------------------- -->
<input type="hidden" name="TempData" id="TempData">
<input type="hidden" name="DrawData" id="DrawData">
<input type="hidden" name="SubmitData" id="SubmitData">
<!-- ---------------------The submit/print/reset buttons -------------------------------------->
<div class="DoNotPrint" style="position: absolute; top: 1100px; left: 41px;">
<table>
<tr>
<td>
Subject: <input name="subject" size="40" type="text">
<input value="Submit" name="SubmitButton" type="button" onclick="SubmitImage(); document.AnatomyForm.submit()">
<input value="Reset" name="ResetButton" type="reset">
<input value="Print" name="PrintButton" onclick="window.print()" type="button">
</td>
</tr>
</table>
</div>
</form>
<!-- ------End of submit/print/reset buttons----------------------------------------------------->
<!-- Drawing code: start -->
<div id="preview" style="position:absolute; left: 10px; top:30px; width: 800px; height: 1018px;"></div>
<div id="myCanvas"
style="position:absolute; left: 10px; top:30px; width: 800px; height: 1018px;"
onmouseover="SetDrawOn();"
onmouseout="SetDrawOff();"
onmousedown="SetMouseDown();SetStart();"
onmouseup="SetMouseUp(); DrawMarker();"
onmousemove="DrawPreview();">
</div>
<br>
<div name="ToolSelectDiv" style="position:fixed; left:825px; top:30px" class="DoNotPrint">
<form name="ToolSelect">
<table>
<tr>
<td>
<u>Drawing Tools:</u><br>
<input id="Freehand" type="radio" name="DrawingTool" onclick="SetSwitchOn(this.id);" checked><b>Freehand:</b>
<br>
Line Thickness:<select id="Thickness" name="Thickness" style="width:50px;" onchange="SetThickness(this.value);">
<option value="1">1</option>
<option value="2">2</option>
<option value="3" selected>3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<br>
<br>
<input id="Text" type="radio" Name="DrawingTool" onclick="SetSwitchOn(this.id);"><b>Text:</b>
<br>
Size:<select id="FontSize" name="FontSize" style="width:50px;" onchange="SetFontSize(this.value);">
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select>
<br>
<input id="TextString" type="text" onchange="GetTxt();" style="width:200px">
<br>
<br>
<input id="SymbolPattern" type="radio" Name="DrawingTool" onclick="SetSwitchOn(this.id);" ><b>Repeating Symbol:</b><br>
<input id="Symbol" type="text" onchange="GetSymbol();" maxlength="1" style="width:30px;">
Size:<select id="SymbolSize" name="SymbolSize" style="width:50px;" onchange="SetSymbolSize(this.value);">
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select>
</td>
</tr>
<tr>
<td>
<u>Color:</u><br>
<table>
<tr>
<td>
<div id="black" style="width:30px; height:20px;border: 2px solid orange; background-color: black; margin: 2px;" onmouseover="Highlight(this.id);" onmouseout="RemoveHighlight(this.id);Highlight(StrokeColor);" onclick="RemoveHighlight(StrokeColor);SetStrokeColor(this.id);"></div>
<div id="red" style="width:30px; height:20px;background-color: red; border:2px; margin: 2px;" onmouseover="Highlight(this.id);" onmouseout="RemoveHighlight(this.id);Highlight(StrokeColor);" onclick="RemoveHighlight(StrokeColor);SetStrokeColor(this.id);"></div>
<div id="lime" style="width:30px; height:20px;background-color: lime; margin: 2px;" onmouseover="Highlight(this.id);" onmouseout="RemoveHighlight(this.id);Highlight(StrokeColor);" onclick="RemoveHighlight(StrokeColor);SetStrokeColor(this.id);"></div>
<div id="blue" style="width:30px; height:20px;background-color: blue; margin: 2px;" onmouseover="Highlight(this.id);" onmouseout="RemoveHighlight(this.id);Highlight(StrokeColor);" onclick="RemoveHighlight(StrokeColor);SetStrokeColor(this.id);"></div>
</td>
<td>
<div id="grey" style="width:30px; height:20px; background-color: grey; margin: 2px;" onmouseover="Highlight(this.id);" onmouseout="RemoveHighlight(this.id);Highlight(StrokeColor);" onclick="RemoveHighlight(StrokeColor);SetStrokeColor(this.id);"></div>
<div id="magenta" style="width:30px; height:20px;background-color: magenta; margin: 2px;" onmouseover="Highlight(this.id);" onmouseout="RemoveHighlight(this.id);Highlight(StrokeColor);" onclick="RemoveHighlight(StrokeColor);SetStrokeColor(this.id);"></div>
<div id="yellow" style="width:30px; height:20px;background-color: yellow; margin: 2px;" onmouseover="Highlight(this.id);" onmouseout="RemoveHighlight(this.id);Highlight(StrokeColor);" onclick="RemoveHighlight(StrokeColor);SetStrokeColor(this.id);"></div>
<div id="cyan" style="width:30px; height:20px;background-color: cyan; margin: 2px;" onmouseover="Highlight(this.id);" onmouseout="RemoveHighlight(this.id);Highlight(StrokeColor);" onclick="RemoveHighlight(StrokeColor);SetStrokeColor(this.id);"></div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<input id="UndoButton" type="button" value="Undo" onclick="Undo();" style="width:100px"><br>
<input id="ClearButton" type="button" value="Clear" onclick="Clear();" style="width:100px">
</td>
</tr>
</table>
</form>
</div>
<script type="text/javascript">
var cnv = document.getElementById("myCanvas");
var jg = new jsGraphics(cnv);
var cnvLeft = parseInt(document.getElementById('myCanvas').style.left);
var cnvTop = parseInt(document.getElementById('myCanvas').style.top);
var pvcnv = document.getElementById("preview");
var pv = new jsGraphics(pvcnv);
var SubmitData = new Array();
var DrawData = new Array();
var TempData = new Array();
jg.setPrintable(true);
var StrokeColor = "black";
var StrokeThickness = 3;
var x0 = 0;
var y0 = 0;
var txt = document.getElementById('TextString').value;
var sym = document.getElementById('Symbol').value;
var FontFamily = "sans-serif"; //sets font
var FontStyle = Font.PLAIN; //Font.PLAIN, Font.BOLD, Font.ITALIC, Font.ITALIC_BOLD
function SetStrokeColor(c){
StrokeColor = c;
}
var FontSize = 10;
function SetFontSize(n){
FontSize = n;
}
var SymbolSize = 10
function SetSymbolSize(n){
SymbolSize = n;
}
var MouseDown = false;
function SetMouseDown(){
MouseDown = true;
}
function SetMouseUp(){
MouseDown = false;
}
var DrawSwitch = false;
function SetDrawOn(){
DrawSwitch = true;
}
function SetDrawOff(){
DrawSwitch = false;
}
function SetThickness(x){
StrokeThickness = parseInt(x);
}
var TextSwitch = false;
var FreehandSwitch = false;
var SymbolPatternSwitch = false;
function SetSwitchesOff(){
TextSwitch = false;
FreehandSwitch = false;
SymbolPatternSwitch = false;
}
var DrawTool = "Freehand";
function SetSwitchOn(n){
SetSwitchesOff();
DrawTool = n;
if(n=="Text"){
TextSwitch = true;
}else if(n=="Freehand"){
FreehandSwitch=true;
}else if(n=="SymbolPattern"){
SymbolPatternSwitch = true;
}
}
function SetStart(){
x0 = mousex - cnvLeft;
y0 = mousey - cnvTop;
if(FreehandSwitch || SymbolPatternSwitch){
Xposition.push(x0);
Yposition.push(y0);
}
}
function GetTxt(){
txt = document.getElementById('TextString').value;
}
function GetSymbol(){
sym = document.getElementById('Symbol').value;
}
function DrawText(canvas,x,y,txt,StrokeColor,FontSize){
//draws a sting of text
canvas.setColor(StrokeColor);
var FontSizePx = FontSize + 'px';
canvas.setFont(FontFamily,FontSizePx,FontStyle);
var y1 = y - 10;
if ((txt != null) && (txt != "")){
canvas.drawString(txt, x, y1);
canvas.paint();
//store parameters in an array
if(canvas == jg){
var Parameter = "Text" + "|" + x + "|" + y + "|" + txt + "|" + StrokeColor + "|" + FontSize;
DrawData.push(Parameter);
document.getElementById("DrawData").value = DrawData;
}
}
}
var Xposition = new Array();
var Yposition = new Array();
function GetXY(x,y){
var s = StrokeThickness;
var l = Xposition.length - 1; //l = last position
var x = parseInt(x);
var y = parseInt(y);
if ( (Math.abs(Xposition[l] - x) > s) || (Math.abs(Yposition[l] - y) > s)){
Xposition.push(x);
Yposition.push(y);
}
}
function GetXYSym(x,y){
var s2 = SymbolSize/2;
var l = Xposition.length - 1; //l = last position
var x = parseInt(x);
var y = parseInt(y);
if ( (Math.abs(Xposition[l] - x) > s2) || (Math.abs(Yposition[l] - y) > s2)){
Xposition.push(x);
Yposition.push(y);
}
}
function ClearXY(){
Xposition = [];
Yposition = [];
}
function ArrToStr(Arr,s){
//convert array values to string
var Str = "";
for (n = 0; (n < Arr.length); n++)
{
if (n > 0)
{
Str += s; // each set of data separated by s
}
Str += Arr[n];
}
return Str;
}
function StrToArr(Str,s){
//converts string to an array
var Arr = Str.split(s);
for (n=0;n<Arr.length;n++){
Arr[n] = parseInt(Arr[n]);
}
return Arr;
}
function DrawFreehand(canvas,X,Y,StrokeColor,StrokeThickness){
if (canvas == pv){
jg.setColor(StrokeColor);
jg.setStroke(StrokeThickness);
if (X.length<2){
var x = X[0];
var y = Y[0];
jg.drawLine(x,y,x,y); //to draw a dot with single click
jg.paint();
}
else if (X.length>1){
var a = X.length - 2;
var b = a + 1;
var x1 = parseInt(X[a]);
var y1 = parseInt(Y[a]);
var x2 = parseInt(X[b]);
var y2 = parseInt(Y[b]);
jg.drawLine(x1,y1,x2,y2);
jg.paint();
}
} else if (canvas == jg){
canvas.setColor(StrokeColor);
canvas.setStroke(StrokeThickness);
if(X.length > 1){
canvas.drawPolyline(X,Y);
canvas.paint();
}
//store parameters in an array
var StrX = ArrToStr(X,':');
var StrY = ArrToStr(Y,':');
var Parameter = "Freehand" + "|" + StrX + "|" + StrY + "|" + StrokeColor + "|" + StrokeThickness;
DrawData.push(Parameter);
document.getElementById("DrawData").value = DrawData;
}
}
function DrawSymbolPattern(canvas,X,Y,sym,StrokeColor,SymbolSize){
if (canvas == pv){
jg.setColor(StrokeColor);
var SymbolSizePx = SymbolSize + 'px';
jg.setFont(FontFamily,SymbolSizePx,FontStyle);
if ((sym != null) && (sym != "")){
var l = X.length - 1; // l = last position
var x = parseInt(X[l]);
var y = parseInt(Y[l])-10;
jg.drawString(sym, x, y);
jg.paint();
}
}
else if (canvas == jg){
jg.setColor(StrokeColor);
var SymbolSizePx = SymbolSize + 'px';
canvas.setFont(FontFamily,SymbolSizePx,FontStyle);
if ((sym != null) && (sym != "")){
for (j=0; (j<X.length); j++){
var x = parseInt(X[j]);
var y = parseInt(Y[j])-10;
canvas.drawString(sym, x, y);
}
canvas.paint();
//store parameters in an array
var StrX = ArrToStr(X,':');
var StrY = ArrToStr(Y,':');
var Parameter = "SymbolPattern" + "|" + StrX + "|" + StrY + "|" + sym + "|" + StrokeColor + "|" + SymbolSize;
DrawData.push(Parameter);
document.getElementById("DrawData").value = DrawData;
}
}
}
function DrawMarker(){
if(DrawSwitch){
var x = parseInt(mousex - cnvLeft);
var y = parseInt(mousey - cnvTop);
if(TextSwitch){
DrawText(jg,x,y,txt,StrokeColor,FontSize);
}
else if(FreehandSwitch){
DrawFreehand(jg,Xposition,Yposition,StrokeColor,StrokeThickness);
ClearXY();
}
else if(SymbolPatternSwitch){
DrawSymbolPattern(jg,Xposition,Yposition,sym,StrokeColor,SymbolSize);
ClearXY();
}
}
}
function DrawPreview(){
pv.clear();
var x = parseInt(mousex-cnvLeft);
var y = parseInt(mousey-cnvTop);
if (MouseDown){
if(TextSwitch){
DrawText(pv,x,y,txt,StrokeColor,FontSize);
}
else if(FreehandSwitch){
GetXY(x,y);
DrawFreehand(pv,Xposition,Yposition,StrokeColor,StrokeThickness);
}
else if(SymbolPatternSwitch){
GetXYSym(x,y);
DrawSymbolPattern(pv,Xposition,Yposition,sym,StrokeColor,SymbolSize);
}
}
}
function RedrawImage(RedrawParameter){
var DrawingType = RedrawParameter[0];
if(DrawingType == "Text"){
var x = parseInt(RedrawParameter[1]);
var y = parseInt(RedrawParameter[2]);
var txt = RedrawParameter[3];
StrokeColor = RedrawParameter[4];
FontSize = RedrawParameter[5];
DrawText(jg,x,y,txt,StrokeColor,FontSize);
}
else if(DrawingType == "Freehand"){
var X = StrToArr(RedrawParameter[1],':');
var Y = StrToArr(RedrawParameter[2],':');
StrokeColor = RedrawParameter[3];
StrokeThickness = RedrawParameter[4];
DrawFreehand(jg,X,Y,StrokeColor,StrokeThickness);
}
else if (DrawingType == "SymbolPattern"){
var X = StrToArr(RedrawParameter[1],':');
var Y = StrToArr(RedrawParameter[2],':');
var sym = RedrawParameter[3];
StrokeColor = RedrawParameter[4];
SymbolSize = parseInt(RedrawParameter[5]);
DrawSymbolPattern(jg,X,Y,sym,StrokeColor,SymbolSize);
}
}
function Undo(){
jg.clear();
TempData = DrawData;
DrawData = [];
document.getElementById("DrawData").value = "";
for (i=0; (i < (TempData.length - 1) ); i++){
var Parameters = TempData[i].split("|");
RedrawImage(Parameters);
}
}
function RecallImage(){
for (i=0; (i < TempData.length);i++){
var Parameters = [];
Parameters = TempData[i].split("|");
RedrawImage(Parameters);
}
}
function Clear(){
jg.clear();
TempData = [];
DrawData = [];
SubmitData = [];
document.getElementById("TempData").value = "";
document.getElementById("DrawData").value = "";
document.getElementById("SubmitData").value = "";
Xposition = [];
Yposition = [];
txt = document.getElementById('TextString').value;
sym = document.getElementById('Symbol').value;
}
function ClearExceptSubmit(){
jg.clear();
TempData = [];
DrawData = [];
document.getElementById("TempData").value = "";
document.getElementById("DrawData").value = "";
Xposition = [];
Yposition = [];
txt = document.getElementById('TextSymbol').value;
sym = document.getElementById('Symbol').value;
}
function SubmitImage(){
EncodeData();
}
function EncodeData(){
var packed = ""; // Initialize packed or we get the word 'undefined'
//Converting image data in array into a string
for (i = 0; (i < DrawData.length); i++)
{
if (i > 0)
{
packed += ","; // each set of data separated by comma
}
packed += escape(DrawData[i]); //'escape' encodes dataset into unicode
}
document.getElementById("SubmitData").value = packed; //stores image data into hidden form field
}
function DecodeData(){
var query = document.getElementById("SubmitData").value;
var data = query.split(',');
for (i = 0; (i < data.length); i++)
{
data[i] = unescape(data[i]);
}
TempData = data;
DrawData = [];
document.getElementById("DrawData").value = document.getElementById("SubmitData").value;
document.getElementById("SubmitData").value = "";
}
function ReloadImage(){
DecodeData();
RecallImage();
}
</script>
<!-- Drawing Code: End -->
</body></html>

