1. 12 Jan, 2012 2 commits
  2. 15 Dec, 2011 1 commit
  3. 01 Dec, 2011 1 commit
    • Joel Martin's avatar
      Add View Only mode setting. · 06a9ef0c
      Joel Martin authored
      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.
      06a9ef0c
  4. 27 Sep, 2011 1 commit
  5. 26 Sep, 2011 1 commit
    • Joel Martin's avatar
      Remove support for non-HTML5 browsers. · 490d471c
      Joel Martin authored
      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+
      490d471c
  6. 22 Sep, 2011 1 commit
    • Joel Martin's avatar
      Viewport clip/drag for mobile/touchscreen devices. · a5df24b4
      Joel Martin authored
      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
      a5df24b4
  7. 14 Sep, 2011 1 commit
  8. 13 Sep, 2011 2 commits
    • Joel Martin's avatar
      Framebuffer requests based on clean/dirty areas. · 832c7445
      Joel Martin authored
      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.
      832c7445
    • Joel Martin's avatar
      Viewport handling in include/display.js · 54e7cbdf
      Joel Martin authored
      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
      54e7cbdf
  9. 08 Sep, 2011 2 commits
  10. 06 Sep, 2011 1 commit
  11. 06 Jul, 2011 1 commit
    • Joel Martin's avatar
      Fix ordering of tightPNG fills. · a4ff1f57
      Joel Martin authored
      This addresses issue #65:
      https://github.com/kanaka/noVNC/issues/65
      
      When tightPNG encoded rects were received, any fill types were
      immediately drawn to the canvas while images (PNG, JPEGs) were queued
      for loading. This can cause screen corruption when things are changing
      rapidly due to the misordering of fills vs images.
      
      Also, remove the onload setting in each image on the queue and instead
      decrease the tight image queue scanning interval (to 40ms or 25
      scans per second).
      a4ff1f57
  12. 01 Jul, 2011 1 commit
  13. 27 Jun, 2011 1 commit
  14. 26 Jun, 2011 1 commit
    • Joel Martin's avatar
      Fix playback of recorded VNC. · fa8f14d5
      Joel Martin authored
      - Update test mode calls to work with separate websock module.
      
      - Pull in include/websock.js update 7f487fdbd from websockify.
      fa8f14d5
  15. 11 May, 2011 2 commits
    • Joel Martin's avatar
      Refactor configuration attributes. · 5210330a
      Joel Martin authored
      - Add conf_defaults which accepts an array of configuration
        attributes.
      - Split out user configuration defaults from the actual configuration
        object.
      - Add mode field and enforce read-only, write-once, read-write modes.
      5210330a
    • Joel Martin's avatar
      API changes/cleanup. · d890e864
      Joel Martin authored
      API changes:
          - include/canvas.js renamed to include/display.js
          - Display.rescale() method removed from API. Use Display.set_scale() instead.
          - Make logo configuration attribute of Display and display it when
            clear() is called if it is set.
      
      API deprecations:
          - use RFB onUpdateState instead of updateState.
          - use RFB onClipboard instead of clipboardReceive.
      
      See https://github.com/kanaka/noVNC/wiki/ModuleAPI for detailed noVNC
      modules and API description.
      
      Expand and normalize the event/callback interfaces. Standize on
      "onEventName" form for callbacks.
      
          Callback Renames:
              - RFB updateState -> onUpdateState
              - RFB clipboardReceive -> onClipboard
              - Keyboard keyPress -> onKeyPress
              - Mouse mouseButton -> onMouseButton
              - Mouse mouseMove -> onMouseMove
      
          Callback Additions:
              - RFB onPasswordRequired
              - RFB onBell
              - RFB onFBUReceive
              - RFB onFBUComplete
      
      Other:
      - Add array type support to Util.conf_default()
      - Removed a bunch of routines from the Display API that were just used
        internally and not actually by noVNC: flush, setFillColor,
        imageDataGet, imageDataCreate, rgbxImageData, rgbxImageFill,
        cmapImageData, cmapImageFill.
      - More keyboard/mouse logging when debug turned on.
      - Some JSLinting
      d890e864
  16. 05 Apr, 2011 1 commit
  17. 03 Apr, 2011 2 commits
  18. 29 Mar, 2011 1 commit
    • Joel Martin's avatar
      IE9 fixes: mouse, doctype. Adobe Flash link. · f8990704
      Joel Martin authored
      Fix mouse button mapping in IE9. All browsers have converged on
      a standard left=0, middle=1, right=2 ... all except IE that is.
      
      Add html5 doctype to tests.
      
      In vnc_perf test, use do_test instead of start for function name since
      start is a keyword in IE.
      
      In error about Flash give a link to Adobe's download page.
      f8990704
  19. 25 Mar, 2011 1 commit
  20. 22 Mar, 2011 1 commit
    • Joel Martin's avatar
      Higher connectTimeout default with web-socket-js. · 81bcf70f
      Joel Martin authored
      Current timeout is 2 seconds for connect timeout. Use 5 seconds if
      web-socket-js (Flash WebSockets emulator) is being used. On Windows XP
      with Flash 10.2.152.26, connecting seems to take quite a bit longer
      than it probably should. This should make it work more consistently.
      81bcf70f
  21. 19 Feb, 2011 1 commit
  22. 03 Feb, 2011 1 commit
    • Joel Martin's avatar
      Add logo, favicon. · 159ad55d
      Joel Martin authored
      Thanks to Michael Sersen for creating images/Logo.svg.
      
      - Add images directory with original SVG logo, favicon, and some
        derivative PNGs of the logo for different purpose.
      
      - Note that license on images/* is CC BY-SA.
      
      - Add utils/img2js.py to take an image and generate a base64 encoded
        data URI string.
      
      - Add base64 encoded data URI screen logo to display in canvas when
        disconnected.
      159ad55d
  23. 13 Jan, 2011 1 commit
    • Joel Martin's avatar
      Convert to Websock library. · 72f1348b
      Joel Martin authored
      Copy in include/websock.js from websockify and use that instead. Still
      some cleanup of network code but it's a good start.
      72f1348b
  24. 04 Jan, 2011 1 commit
  25. 25 Dec, 2010 1 commit
  26. 24 Dec, 2010 1 commit
  27. 10 Dec, 2010 1 commit
    • Joel Martin's avatar
      Make compatible with jQuery. Slight API change. · e4671910
      Joel Martin authored
      Rename the $() selector to $D() so that it doesn't collide with
      the jQuery name.
      
      The API change is that the 'target' option for Canvas and RFB objects
      must now be a DOM Canvas element. A string is no longer accepted
      because this requires that a DOM lookup is done and the Canvas and RFB
      should have no UI code in them. Modularity.
      e4671910
  28. 15 Nov, 2010 1 commit
    • Joel Martin's avatar
      rfb.js: avoid multiple b64 sequences per frame. · 79f0a095
      Joel Martin authored
      Only call encode_message when the WebSockets object is actually
      ready to send. Otherwise multiple base64 encode sequences can be
      encoded into the same WebSockets frame. This causes the C version of
      wsproxy to crash and the python version to ignore the subsequent
      base64 sequence(s).
      
      Thanks to Colin Dean (xvpsource.org) for finding this and helping
      track it down.
      79f0a095
  29. 28 Oct, 2010 1 commit
  30. 24 Oct, 2010 1 commit
  31. 14 Oct, 2010 2 commits
  32. 01 Oct, 2010 1 commit
    • Joel Martin's avatar
      rfb.js: rQwait, cuttext simplification. · 60440cee
      Joel Martin authored
      - rQwait checks the receive queue to see if there is enough data to
        satisfy the following request. If not it returns true (which is
        almost always translated into an immediate return false by the
        caller).
      
      - rQwait is called quite a bit and this generally allows 4 lines to
        become 1 line where it is called.
      
      - rQwait allows simplification of cuttext processing. No global
        tracking needed anymore.
      
      Overall, about 60 lines less code.
      60440cee
  33. 30 Sep, 2010 1 commit
    • Joel Martin's avatar
      include/des.js: trim some fat. · a9995971
      Joel Martin authored
      DES is just used once during authentication and is not performance
      sensitive so we save some space by generating and/or removing some
      lookup tables. Also, shorten some very frequently used variables.
      
      Shaves off about 100 lines.
      a9995971
  34. 29 Sep, 2010 1 commit
    • Joel Martin's avatar
      des.js: remove decrypt and simplify. · 12d2e7c1
      Joel Martin authored
      The decrypt functionality is never used so remove it. Also, we can
      assume that we are always DES encrypting 16 characters which allows
      several things to be simplified in DES.
      
      Overall this removes about 80 lines of code.
      12d2e7c1