aboutsummaryrefslogtreecommitdiff
path: root/projects/09/BitmapEditor/BitmapEditor.html
diff options
context:
space:
mode:
authorYuchen Pei <me@ypei.me>2018-01-20 15:41:49 +0100
committerYuchen Pei <me@ypei.me>2018-01-20 15:41:49 +0100
commitd3a0cc3a8ba6dfeb64d3faeffdeb6845b60e5840 (patch)
treed58df9ec2480e2a9ec6240f9c797f83d1a0b1056 /projects/09/BitmapEditor/BitmapEditor.html
parent3571f998b28fbc8d9250ba04c983935f10a16c15 (diff)
rearranged the dir for github
- removed tools and pdfs - rearranged the projects dirs - added md files - other minor changes
Diffstat (limited to 'projects/09/BitmapEditor/BitmapEditor.html')
-rw-r--r--projects/09/BitmapEditor/BitmapEditor.html200
1 files changed, 0 insertions, 200 deletions
diff --git a/projects/09/BitmapEditor/BitmapEditor.html b/projects/09/BitmapEditor/BitmapEditor.html
deleted file mode 100644
index fdb9e0b..0000000
--- a/projects/09/BitmapEditor/BitmapEditor.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
- <title>Sokoban Bitmap Editor</title>
- <script type="text/javascript">
- var grid = new Array(0);
-
- function Init() {
- grid = InitGrid();
- DisplayGrid();
- }
-
- function InitGrid() {
- var _grid = new Array(16);
- for (i=0; i<16; i++) {
- _grid[i] = new Array(16);
- for (j=0; j<16; j++) {
- _grid[i][j]=false;
- }
- }
- return _grid;
- }
-
- function RotateBitmapRight() {
- var _grid = InitGrid();
-
- for (i=0; i<16; i++) {
- for (j=0; j<16; j++) {
- _grid[j][15-i]=grid[i][j];
- }
- }
-
- grid = _grid;
- DisplayGrid();
- }
-
- function MirrorBitmap() {
- var _grid = InitGrid();
-
- for (i=0; i<16; i++) {
- for (j=0; j<16; j++) {
- _grid[i][15-j]=grid[i][j];
- }
- }
-
- grid = _grid;
- DisplayGrid();
- }
-
- function DisplayGrid() {
- var str = "<table border=1 cellspacing=0>";
- var i,j, backgroundColor;
- for (i=-1; i<16; i++) {
- str=str+"<tr>";
- for (j=-1; j<16; j++) {
- if (i == -1 && j != -1) {
- str=str+"<td>" + (j+1) + "</td>";
- } else if (i != -1 && j == -1) {
- str=str+"<td>" + (i+1) + "</td>";
- } else if (i ==-1 && j == -1) {
- str=str+"<td/>";
- } else {
-
- if (grid[i][j] == true)
- backgroundColor = "black";
- else
- backgroundColor = "white";
-
- str=str+"<td onclick=\"OnCellClicked(this)\" id="; str=str+(i*16+j); str=str+" width=16 height=16 bgcolor=" + backgroundColor + "></td>";
- }
- }
- str=str+"</tr>";
- }
- str=str+"</table>"
-
- gridElement = document.getElementById('grid');
- gridElement.innerHTML = str;
- GenerateBitMap() ;
- }
-
- function OnCellClicked(cell) {
- var i = cell.id / 16 |0;
- var j = cell.id - i*16;
- grid[i][j] = !grid[i][j];
- if (grid[i][j])
- cell.style.backgroundColor = "black";
- else
- cell.style.backgroundColor = "white";
- GenerateBitMap();
- }
-
- function GenerateBitMap() {
- var i, j;
- var value;
-
- var functionTypeSelect = document.getElementById('functionType');
- methodType = functionTypeSelect.options[functionTypeSelect.selectedIndex].value;
-
- generateCode = document.getElementById('generatedCode');
- generateCode.value = methodType + " void " +
- document.getElementById('functionName').value +
- "(int location) {\n\tlet memAddress = 16384+location;\n";
-
- for (i=0; i<16; i++) {
- //get grid binary representation
- binary = "";
- for (j=0; j<16; j++) {
- if (grid[i][j])
- binary = "1" + binary;
- else
- binary = "0" + binary;
- }
-
- isNegative = false;
- //if number is negative, get its one's complement
- if (binary[0] == "1") {
- isNegative = true;
- oneComplement = "";
- for (k=0; k<16; k++) {
- if (binary[k] == "1")
- oneComplement = oneComplement + "0";
- else
- oneComplement = oneComplement + "1";
- }
- binary = oneComplement;
- }
-
- //calculate one's complement decimal value
- value = 0;
- for (k=0; k<16; k++) {
- value = value * 2;
- if (binary[k] == "1")
- value=value+1;
- }
-
- //two's complement value if it is a negative value
- if (isNegative == true)
- value = -(value + 1)
-
- generateCode.value = generateCode.value + GenerateCodeLine(i, value);
- }
-
- generateCode.value = generateCode.value + "\treturn;\n}";
- }
-
- function GenerateCodeLine(row, value) {
- str = "\tdo Memory.poke(memAddress+" + row*32 + ", " + value + ");\n";
- return str;
- }
- </script>
-</head>
-<body onload="Init();">
- <h4><i>IDC Herzliya / Efi Arazi School of Computer Science / Digital Systems Construction, Spring 2011 / Project 09 / Golan Parashi</i></h4>
- <h1>Sokoban Bitmap Editor</h1>
- <p>This javascript applicaiton is used to generate highly optimized jack code for drawing a 16x16 bitmap to the screen.</p>
- <p>Using the mouse, click the desired cell to mark/unmark it. You may use 90 degrees rotation and vertical mirroring by<br>
- clicking the appropriate buttons.</p>
- <p>When you are finished drawing, you may select function type and enter function's name.</p>
- <p>
- <table>
- <thead>
- <tr>
- <th align="left">Bitmap</th>
- <th align="left"></th>
- <th align="left">Generated Jack Code</th>
- </tr>
- </thead>
- <tr>
- <td><div id="grid"/></td>
- <td>
- <form action="javascript:GenerateBitMap();">
- <table>
- <tr><td align="left">Function Type:</td></tr>
- <tr><td align="center">
- <select id="functionType" onChange="GenerateBitMap()">
- <option value="function" selected="selected">function</option>
- <option value="method">method</option>
- </select>
- </td></tr>
- <tr><td align="left">Function Name:</td></tr>
- <tr><td align="left"><input type="text" value="draw" id="functionName" onkeyup="GenerateBitMap()"/></td></tr>
- <tr><td></td></tr>
- <tr><td align="center"><input type="button" value="Generate Code >>" onclick="GenerateBitMap()"/></td></tr>
- </table>
- </form>
- </td>
- <td><textarea id="generatedCode" cols="50" rows="20" readonly="read-only"></textarea></td>
- </tr>
- <tr>
- <table>
- <tr>
- <td align="center"><input type="button" value="Rotate right" onclick="RotateBitmapRight()"/></td>
- <td align="center"><input type="button" value="Vertical Mirror" onclick="MirrorBitmap()"/></td>
- </tr>
- </table>
- </tr>
- </table>
-</body>
-</html> \ No newline at end of file