Commit Graph

344 Commits

Author SHA1 Message Date
Joel Martin d5fe15096b include/webutil.js: fix when 'chrome' global not present. 2012-09-17 17:18:44 -05:00
Joel Martin 6f955236e6 include/ui.js: call setBarPosition on initial load.
Call setBarPosition on initial load and not just when the window size
changes or scrolling happens.
2012-09-17 17:15:50 -05:00
Joel Martin 5f03c3d093 tcp-client.js: after read, try read again.
After a read completes it's possible more data is pending so issue an
immediate read again to pick this up quickly.
2012-09-17 17:15:50 -05:00
Joel Martin 2cde6e4380 include/vnc.js: dynamic load without document.write.
Instead of using document.write to load scripts, use createElement to
create and append script tags. document.write is problematic in a lot
of situation and in particular is not allowed in a Chrome
extension/packaged app.

Also, in webutil.js, instead of calling init_logging during parsing of
include/webutil.js, rely on the caller to do this. The problem is that
calling init_logging on parse tries to call Util logging functions and
the new model of dynamic load may not having Util loaded by the time
webutil is parsed.
2012-09-17 17:15:49 -05:00
Joel Martin 26945049be vnc.html, ui.js: move all Javascript to ui.js.
Move all the inline Javascript event handlers from vnc.html to
include/ui.js except the load handler which is moved to
include/start.js). This is on the path towards a Chrome
extension/packaged app since inline Javascript is prohibited in that
situation.
2012-09-17 17:15:49 -05:00
Joel Martin ee1af44161 ui.js: use localStorage/chrome.storage for settings.
Switch from using cookies to store setting to using localStorage (or
chrome.storage.sync if available in extension/app mode) for the
settings. Also refactor to make the initializing of the setting and
and loading of the UI to be more asynchronous.
2012-09-17 17:15:49 -05:00
Joel Martin 3af1c2751b webutil.js: add localStorage/chrome.storage settings.
Add routines to store/read settings in either localStorage or in
chrome.storage.sync (which is synchronized between browsers for
extensions/apps).

Before using chrome.storage.sync the initSettings routine must to
called setup the intermediate cache which speeds up access and allows
multiple setting changes to be coallesced to avoid hitting storage
change frequency limits/quotas.
2012-09-17 17:15:49 -05:00
Joel Martin 51fc3b5f03 rfb.js: add onFBResize event callback. 2012-09-17 17:15:48 -05:00
Joel Martin 8ec3cfaacd tcp-client.js: read/write arraybuffer. Read/disconnect handling.
- enable sending and receiving of raw array buffers in addition to
  strings.

- add a read poll interval and set it to 15ms by default to detect
  and handle quickly when a message is pending.

- also, detect a disconnected state and add call registration for
  disconnect events.
2012-09-17 17:15:48 -05:00
Joel Martin 07392d4fb8 include/chrome-app/tcp-client.js: import upstream.
Import upstream code from Chrome extension telnet demo:
https://raw.github.com/GoogleChrome/chrome-app-samples/0ce28768087863c08aa04a2b9b27bd50796a77ec/telnet/tcp-client.js
2012-09-17 17:15:47 -05:00
Joel Martin 204675c85d Update websockify/websock.js.
This change pulls websockify 6d9deda9c5.

Most note worthy changes:
- Pulls in web-socket-js 7677e7a954 which updates to IETF 6455 (from
  Hixie)
- Binary support detection and use in include/websock.js
- Add ssl and unix target support
- Add multiple target support via config file/dir.
- Idle timeout exit
2012-09-17 17:00:01 -05:00
Joel Martin 3435491edb Merge branch 'binary', fix encode_message
Conflicts:
	include/websock.js

For some reason encode_message was missed. But I'm just punting and
doing the fixup in the merge. Yeah, tsk, tsk.
2012-09-14 17:46:48 -05:00
Joel Martin fa5b334dcb webutil.js: use decodeURIComponent on getQueryVar values. 2012-08-21 09:46:11 -05:00
Joel Martin fcff386b92 websock.js: simpler binary support, protocols param.
Use a simpler method of enabling binary transfer over WebSockets. This
still presents the user of websock.js with a plain javascript array
for the receive queue data. However, if binary support is supported
and requested then the transfer will be raw frames instead of base64
encoded.

Lots of room for optimization here but for now correct is better than
fast.

Pull from websockify 17175afd7311c55abd8d
2012-08-16 13:31:31 -05:00
Joel Martin fc003a13e7 Revert "Pull in latest websockify."
This reverts commit 4dd1bb1ecb.
2012-08-15 13:48:03 -05:00
Joel Martin ca6b3f4cb1 Revert "Fix tight decoding when using binary/non-base64 connection."
This reverts commit 14717eb468.
2012-08-15 13:47:37 -05:00
Joel Martin 14717eb468 Fix tight decoding when using binary/non-base64 connection. 2012-08-15 12:45:53 -05:00
Joel Martin 4dd1bb1ecb Pull in latest websockify.
Pull in version 376872d99.

Several changes including:
- binary/typed array support in websock.js
- unix socket support
- multiple target support via config file(s)
- prefer IPv6 option
2012-08-14 15:35:48 -05:00
BLINDAUER EMMANUEL 50b81d4470 AltGR support (Firefox 15 currently) 2012-08-02 09:09:35 +02:00
Joel Martin af1527b276 timers: fix over repeated connects.
With tight we can't ever use FBU.rects being 0 as an indication of
a full frame having been drawn.
2012-06-28 10:29:12 -05:00
Joel Martin e5d5a7d3fd websock.js: comment out debug options. 2012-06-25 21:42:56 -05:00
Joel Martin d58f8b5144 License clarification: HTML,CSS,images,fonts under permissive licenses.
Clarify in LICENSE.txt that the noVNC core library is the part that is
LGPLv3 licensed. The HTML, CSS, images and fonts are separate from the
core library and can be modified and distributed with the noVNC core
but under their own license conditions.

HTML and CSS: 2-Clause BSD
Fonts: SIL OFL 1.1
Images: CC BY SA 3.0

In other words, you can modify the layout and appearance of of noVNC
to integrate with an existing or new web site or application without
having to publish the source for those modifications under the LGPLv3.
However, use of and modification of the noVNC core library (i.e. the
core Javascript that makes up noVNC) must still be according to the
LGPLv3.

Chris Gordon was the other contributor to the HTML, CSS, and images
included with noVNC and gave permission for this license clarification
on June 23, 2012.
2012-06-24 16:29:44 -05:00
Joel Martin b50f340674 UltraVNC repeaterID cleanup.
https://github.com/kanaka/noVNC/issues/103
https://github.com/kanaka/noVNC/pull/170
2012-06-23 14:22:47 -05:00
Joel Martin 2090f1af67 Merge remote branch 'kassah/master' 2012-06-23 14:16:49 -05:00
William Lightning a997c5fd94 Make repeaterID show up in config options on vnc.html 2012-06-22 22:30:57 -07:00
William Lightning 12acb663eb Change RepeaterID to be a config option 2012-06-22 22:30:05 -07:00
Joel Martin bee36506e1 Fix forcing of web-socket-js even when native available. 2012-06-08 10:42:26 -05:00
William Lightning 8d0c7fb5ac Add ultravnc_repeater.pl support to rfb.js and vnc_auto.html 2012-06-06 23:10:13 -07:00
Joel Martin 72a5596e50 rfb: Use the render queue for copyrect.
This will keep copyrect rendering actions in order with tight and tightPNG
rendering actions (otherwise you can get visual image corruption when
they are mixed together).

Warning:

RAW, RRE and HEXTILE still use immediate render commands so there is
still the risk of out-of-order rendering if RAW, RRE, and HEXTILE are
mixed with tight and tightPNG. Copyrect will work with either because
the renderQ_push function will render copyrects immediately if they
are the only thing being pushed on the queue.
2012-05-17 11:24:58 -05:00
Joel Martin 34d8b844ae Move render queue processing to Display and use requestAnimationFrame
The imgQ code in RFB should be a generic rendering queue system in
Display.

The reason for the render queue in the first place is that images
loaded from raw data URI strings aren't immediately ready to display
so we have to wait for them to complete 'loading'. However, when data
URI images are mixed with other types of rendering actions then things
can get out of order. This is the reason for the rendering queue.

Currently this only keeps display actions for tight and tightPNG
related actions in order (because they use a mix of fills, raw pixel
data and data URI images).
2012-05-17 11:13:08 -05:00
Joel Martin a0726a4b56 rfb: debug output cleanup. 2012-05-17 11:07:07 -05:00
Joel Martin dc6e501f20 Fail the connection on unexpected tightPNG cmode.
This related to https://github.com/kanaka/noVNC/issues/145

The real fix is to QEMU so that this doesn't happen which was
submitted as a patch to the mailinglist right before this.
2012-05-16 18:07:18 -05:00
Joel Martin bc28395abf Add/use display.drawImage which is viewport relative.
Fixes https://github.com/kanaka/noVNC/issues/163

When using an encoding with raw images (tight, tightPNG) we need to
draw those image relative to the viewport so that clipping works when
the viewport isn't at 0, 0.
2012-05-10 18:16:27 -05:00
Todd Freese 58ad83878c Added support for RealVNC Mac. 2012-05-10 12:29:36 -05:00
Joel Martin 483157f87f Comment out duplicates in unicodeTable.
Unfortunately the values for those duplicate keys are not the same and
I'm not sure which ones are more correct. However, for now, I've
commented out the second occurrence.

This data is generated from /usr/include/X11/keysymdef.h using the
utils/u2x11 script.
2012-04-26 08:18:27 -05:00
Joel Martin dcf1994d3e Don't treat onerror as a close.
The close event will also fire so trying to fail the connection twice
is unhelpful and hiding status information.
2012-04-25 20:13:25 -05:00
Joel Martin f8380ff939 Add code/reason to close event messages. Remove useless object print in error event. 2012-04-13 11:25:04 -05:00
Joel Martin bd96e91932 Use page host:port as default for WebSocket host/port. 2012-04-03 16:58:21 -05:00
Joel Martin f84504bc63 Support Apple Remote Desktop.
https://github.com/kanaka/noVNC/issues/58
2012-03-23 12:21:23 -05:00
Joel Martin 6671c7624d Release down/pressed keys when window loses focus.
May window managers have a keyboard shortcut that switch away from the
current desktop (e.g. desktop switcher). Unfortunately, when this
happens, the meta/control keys that are used with the shortcut will
send a down event to the browser, but the up event will never be sent
because the browser no longer has focus at the point when the up event
happens. This can cause weird stuck key issues for VNC clients (not
just noVNC). To get around this, we try and detect when the browser
loses focus and release any keys that are on the keyDownList.

As an aside, if you run into this situation (in noVNC or another VNC
client), you can unstick the state by pressing and releasing the Ctrl,
Shift, Alt, etc.

Addresses: https://github.com/kanaka/noVNC/pull/135
2012-03-14 11:10:06 -05:00
Joel Martin ce86f5c954 Squelch noisy debug logs. 2012-03-13 20:24:24 -05:00
Joel Martin c0c20581f5 Merge tight/tightPNG routine.
Mostly duplicate code so merge it and wrap with closures that pass in
the isTightPNG parameter.

Still detect and error if copy/filter when tightPNG.
2012-03-12 15:34:56 -07:00
Joel Martin d065cad99e General code formatting and cleanliness. 2012-03-10 20:32:01 -06:00
Joel Martin a09a75e8f2 Stats: count pixels instead of just FBU.rects.
With last_rect, the rects count can be high until a last_rect
pseudo-encoding is received which messes with the timing stats. So
count up the number of pixels rendered and show timing after the pixel
count reaches the width*height of the screen.
2012-03-10 19:56:19 -06:00
Joel Martin 4cd0070a1c Cleanup vnc.js includes. 2012-03-10 19:54:56 -06:00
Joel Martin 35d7574b09 Merge commit 'd38db74abd0efa34f7297dc19bf603b7f765e0f5'
Conflicts:
	README.md
2012-03-10 19:52:11 -06:00
Mike Tinglof d38db74abd add some documentation; default to existing websocket transport 2012-03-09 11:02:18 -05:00
Joel Martin c6f3919cb0 Better base64 illegal character output. 2012-02-20 15:48:39 -06:00
Joel Martin 0ce93900ae Add message panel when hosted at kanaka.github.com.
Add a helpful popup/panel message for when noVNC is used at
kanaka.github.com (e.g. where novnc.com redirects).
2012-02-15 14:12:27 -06:00
Joel Martin 9e6e6662c7 Set $D on window directly.
Addresses: https://github.com/kanaka/websockify/issues/29
2012-02-14 17:23:14 -06:00
Joel Martin 32f135d730 Add array map function for IE9. 2012-02-14 07:53:39 -06:00
Joel Martin 1af3e54bef Make WebSocket encrypt setting default to page protocol.
I.e. if the page is https:// then the WebSocket encrypt setting will
default to wss:// (TLS encryption).

Note that since noVNC settings are saved in cookies, this will only
affect first load. If you have already loaded the page, then the
encrypt setting will be whatever you last set it to.
2012-02-02 09:29:02 -06:00
Joel Martin 6a02f88e4d Default path to 'websockify' in include/ui.js 2012-01-31 13:37:20 -06:00
Mike Tinglof 9b75bcaada add tight zlib stream reset; add error if tight encoding is used w/o true color 2012-01-31 00:15:56 -05:00
Mike Tinglof a14b8fae2a comment out per-decompress checksum and logging 2012-01-30 02:26:36 -05:00
Mike Tinglof 2cedf48397 add last rect special encoding; fix tight fill subencoding color handling; fix mono indexed rect handling 2012-01-30 02:19:18 -05:00
Mike Tinglof c514fd5e1c don't need to copy palette data until we have all data for rect; change a few comments 2012-01-29 02:10:25 -05:00
Mike Tinglof 5ca5e2d8cd implement tight indexed rectangle; remove some debug code 2012-01-29 01:55:41 -05:00
Mike Tinglof 6fbc37489f fix handling of min compression size 2012-01-28 02:56:19 -05:00
Mike Tinglof b0ac240f31 re-enable history buffer (used as sliding window for decompress) 2012-01-28 01:56:55 -05:00
Mike Tinglof 0fa6748c52 fix issue with parsing distance of more then 8 bits; convert to just supporting arrays for buffers 2012-01-26 14:35:36 -05:00
Mike Tinglof a820f1267a added rgb image drawing, some zlib changes (huffman coding working, but lz77 not so much) 2012-01-25 18:09:55 -05:00
Mike Tinglof c577ca2305 keep zlib history so we can decode as a stream 2012-01-24 21:18:29 -05:00
Mike T de84e09854 basic framing for tight is working (decode not complete) 2012-01-24 13:56:33 -05:00
Mike 682f33a790 add javascript zlib 2012-01-24 13:49:49 -05:00
Joel Martin e79917c3db Merge remote branch 'origin/issue-70'
Conflicts:
	include/display.js
	include/rfb.js

This merges in the fix for https://github.com/kanaka/noVNC/issues/70

This changes noVNC to use the preferred color ordering that most VNC
server prefer and that VMWare VNC requires. It's possible this may
break some VNC servers out there in which case we might have to do
something a bit more subtle such as having alternate render functions
for little and big endian color ordering.
2012-01-12 17:17:11 -06:00
Joel Martin a9a7f0e18c Fix Intel AMT KVM: disable true color.
Issue: https://github.com/kanaka/noVNC/issues/118
Reporter @maxnet also found and suggested the fix.

Probably could be more intelligent/generic by keying off the depth
sent by the server, but this will do for now.
2012-01-12 12:52:09 -06:00
Joel Martin ff4bfcb773 Linting.
Switched to using: http://www.jshint.com/
2012-01-12 12:38:55 -06:00
Joel Martin f2d856767d websockify: better multi-python version support.
Pull from websockify: 008a5118e728.

Should address issue https://github.com/kanaka/noVNC/issues/107

- Also add ability to force use of web-socket-js using
  window.WEB_SOCKET_FORCE_FLASH

- in websock.js, for rQshift*, assume length is the full length if not
  specified.
2011-12-15 15:26:16 -06:00
Joel Martin b688a909b0 Show close code and reason.
Also add commented out web-socket-js debug variable in
include/websock.js
2011-12-15 13:59:35 -06:00
Joel Martin 06a9ef0c6c Add View Only mode setting.
Resolve issue: https://github.com/kanaka/noVNC/pull/101

Based on proposal from @mightpenguin:
Matthew Balman <emperor@mightypenguin.org>

If view_only option is set then do not send mouse and keyboard events.
This is not a secure/enforced way to make a client view only. To
enforce view only at the server, most VNC servers support setting
a view only password.
2011-12-01 09:05:16 -06:00
Joel Martin c3a172b98c Typo in Opera 11.60 fix. 2011-11-19 17:59:06 -06:00
Joel Martin aa67056785 Fix issue #102 - Opera 11.60 doesn't work.
Opera presto engine version detection is broken. For now, just return
true or false. That should cover most cases.
2011-11-19 17:37:18 -06:00
Joel Martin f4bce78307 Re-organize CSS. Remove broken IE filter statement. 2011-09-29 12:09:32 -05:00
Joel Martin 5299db1a00 Formatting. Image renames/cleanup.
- Remove the images using the old font.

- Simplify the naming of the new control bar icon images.

- Change keyboard input type to 'email'. 'url' type doesn't have
  a space bar.

- Some clarifications to main LICENSE.txt file.
2011-09-29 09:32:09 -05:00
Chris Gordon 938daad1c9 Mobile icons.
- CSS highlighting of buttons when selected.
- Keyboard button tweaked to allow show/hide toggle of keyboard.

Signed-off-by: Chris Gordon <snorkeyg@gmail.com>
2011-09-29 09:05:15 -05:00
Joel Martin 479bfa9964 Add local copy of Orbitron font.
Instead of using Google Font API, use local copy of Orbitron for speed
and also in case Internet connection is flaky or unavailable.

More info about Orbitron font here:
http://www.google.com/webfonts/specimen/Orbitron

Orbitron font is:
Copyright (c) 2009, Matt McInerney <matt@pixelspread.com>

Licensed under SIL Open Font License 1.1
see docs/LICENSE.OFL-1.1 or http://scripts.sil.org/OFL
2011-09-27 16:53:09 -05:00
Joel Martin 6209639f2c Add WebSocket URL path to UI settings. 2011-09-27 12:36:06 -05:00
Joel Martin 7cd6118ce5 Move viewport functions.
Move viewportChange(), getCleanDirtyReset(), absX() and absY() to the
public API section. Also add some function comments.
2011-09-26 17:09:29 -05:00
Joel Martin 490d471c53 Remove support for non-HTML5 browsers.
Display API change:
    - getTile -> startTile (no longer returns a tile)
    - setSubTile -> subTile (drop img/tile first parameter)
    - putTile -> finishTile (no longer takes img/tile paramter)

The Display tile logic uses canvas image data directly and
caches/reuses a 16x16 imageData tile (for other sizes, the tile is
create for each call). This gives a 30% speedup on Chrome
13 (and no significant change for Firefox 3.6/4.0).

Other:

- Remove rgbxImageFill and cmapImageFill routines.

- Simplify constructor tests and just error if createImageData is not
  supported by canvas instead of .

- Remove webkit canvas bug workaround that effects Chrome 7. Chrome
  7 usage share is now less than 0.5 percent and the workaround is
  ugly. Drop the function wrapping in the constructor and the canvas
  flush() routine.

- Remove support for getImageData (Opera 11+ now required)

Update browser support list:

    - Chrome 8+ (really any except 7)
    - Firefox 3.6+
    - Safari 4+
    - Opera 11+
    - IE9+
    - iOS 4.2+
2011-09-26 11:28:24 -05:00
Joel Martin 859fc7f18f include/ui.js: remove console.log debug. 2011-09-26 11:16:16 -05:00
Joel Martin a7db50597c Fixing iOS clipping, keyboard issues.
- Make sure that on iOS the clipping setting is always forced to be
  enabled.
- Hide the showKeyboard button unless connected.
- Use the URL text entry method and disable autocorrect and
  autocapitalize in the show keyboard input box.
2011-09-23 00:51:55 -05:00
Joel Martin c506a48154 Only show move/drag button when clipping. Cleanup.
Cleanup:

- remove unused changeViewportMeta function from include/ui.js
- remove some debug output and debug CSS.
- rename panel toggle functions and put them in same location in the
  code.
- refactor some code from updateState to updateVisualState routine
  (renamed from updateSettingsState).
2011-09-23 00:04:01 -05:00
Joel Martin a5df24b488 Viewport clip/drag for mobile/touchscreen devices.
API changes (forward compatible):

- Display: add 'viewport' conf option to turn on and off viewport
  mode.
- RFB: add 'viewportDrag' option to enable/disable viewport dragging
  mode.

Other:

- Add clip mode setting to default UI. For touch devices, clipping is
  forced on.
- Use CSS media queries to adjust visual elements based on screen
  size. Especially disconnected logo size/position and button text size.
- Catch page unload while connected and give a confirm dialog.
- Change mouse button selector to a single button that changes between
  ' ', 'L', 'M', 'R' when clicked (empty means mouse is just being
  moved and doesn't send clicks).
- include/ui.js:setViewClip() routine sets the clipping of the
  viewport to the current size of the viewport area (if clipping is
  enabled).
- include/ui.js:setViewDrag() toggles/enables/disables viewport
  dragging mode.
- Add several images for the UI and for Apple devices:
    - images/clipboard.png: clipboard menu icon
    - images/connect.png: connect menu icon
    - images/disconnect.png: disconnect button icon
    - images/keyboard.png: show keyboard button
    - images/move.png: viewport drag/move toggle button
    - images/settings.png: settings menu icon
    - images/screen_320x460.png: iOS app/desktop link start image
    - images/screen_57x57.png: iOS app icon
    - images/screen_700x700.png: full size noVNC image
2011-09-22 10:36:23 -05:00
Joel Martin e0b23efe95 Fix fbUpdateRequest undefined parameter logic. 2011-09-14 10:42:15 -05:00
Joel Martin 608e0f52ee Some CSS style and DOM id/class cleanup. 2011-09-14 09:24:30 -05:00
Joel Martin 7e5f81f255 Merge branch 'master' into mobile 2011-09-13 16:53:04 -05:00
Joel Martin 832c744578 Framebuffer requests based on clean/dirty areas.
New routine fbUpdateRequests that builds the update request messages
based on the result of display.getCleanDirtyReset().

- Also, fix fbUpdateRequest to properly accept x,y,xw,yw parameters.
2011-09-13 14:42:38 -05:00
Joel Martin b70ce07706 Fix window/document sizing in firefox.
Another firefox issue is that height: 100% is calculated as 100% of
the containing element even when the containing element is the window.
This means that the size of any sibling element shifts the window size
down by that much and causes the vertical scroll bars to appear. This
doesn't happen in Chrome.

- So instead, put a pad element inside the noVNC_screen element that
  is the size of the control bar. This is hidden by the control bar,
  however, it causes things to be sized correctly.

- Also, rename noVNC_defaultScreen to noVNC_logo.

- Clean some style specification out of the HTML.
2011-09-13 13:14:11 -05:00
Joel Martin 1c3df652de Firefox offset bug: use margin instead of padding.
For some reason, the position calculation is broken in firefox when
a DOM object in the ancestry change uses padding. So use margin to
shift the view area down.
2011-09-13 12:17:44 -05:00
Joel Martin 9192cbe39c Merge branch 'master' into mobile
Conflicts:
	include/rfb.js
2011-09-13 10:14:53 -05:00
Joel Martin 54e7cbdf8f Viewport handling in include/display.js
Part of mobile device support:
https://github.com/kanaka/noVNC/issues/48

The Display object is redefined as a larger display region with
an equal or smaller visible viewport. The size of the full display
region is set/changed using resize(). The viewport is set/changed
using viewportChange().

All exposed routines that draw on the display now take coordinates
that are absolute (relative to the full display region). For example,
the result of fillRect(100, 100, 10, 10, [255,0,0]) will appear in the
canvas at (0,0) if the viewport is set to (100,100).

Details:

- Move the generic part of the viewport code from tests/viewport.html
  into include/display.

- Add two new routines to the Display interface:

    - viewportChange(deltaX, deltaY, width, height)
        - This adjusts the position of the visible viewport and/or the
          size of the viewport.

        - deltaX and deltaY specify how the position of the viewport
          should be shifted. The position of the viewport is clamped
          to the full region size (i.e. cannot outside the display
          region).

        - The clean and dirty regions of the display are updated based
          on calls to this routine. For example, if the viewport width
          is increased, then there is now a dirty box on the right
          side of the viewport. Another example, if the viewport is
          shifted down and to the left over the display region, there
          are now two dirty boxes: one on the left side and one
          on the bottom of the viewport.

    - getCleanDirtyReset()
        - This returns an object with the clean box and a list of
          dirty boxes (that need to be redrawn).

            {'cleanBox':
                {'x': x, 'y': y, 'w': w, 'h': h},
             'dirtyBoxes':
                [{'x': x, 'y': y, 'w': w, 'h': h}, ...]
             }

        - The coordinates in the clean and dirty boxes are absolute
          coordinates (relative to the full display region) but they
          are clipped to the visible viewport.

        - Calling this function also resets the clean rectangle to be
          the whole viewport (i.e. nothing visible needs to be redrawn
          dirty) so the caller of this routine is responsible for
          redrawing any
2011-09-13 09:54:44 -05:00
Joel Martin 6ea8bece9b Fix setBarPosotion runtime errors. 2011-09-08 10:10:46 -05:00
Joel Martin 01a9eee991 HTML, CSS and Javascript indent/formatting.
- 4 space indenting for HTML and Javascript.
- 2 space indenting for CSS
- Use hanging start curly for conditional blocks
2011-09-08 10:00:09 -05:00
Joel Martin 0911173a89 Disable static canvas logo. 2011-09-08 09:29:05 -05:00
Joel Martin 42e04907ff Merge remote branch 'kanaka/master' into mobile 2011-09-08 08:50:18 -05:00
Joel Martin d29c54c476 Remove unused include/plain.css. 2011-09-08 08:41:50 -05:00
Chris Gordon 89a76c785c New theme. File: include/blue.css 2011-09-08 08:38:36 -05:00
Chris Gordon a7eb596d89 Updated to use CSS3 gradients instead of images.
Fixed display bug with keyboard textbox.
2011-09-08 08:36:42 -05:00
Chris Gordon 8e0f008841 Fixed bugs with connection panel, and moved functions into UI class. 2011-09-08 08:35:27 -05:00