| videojs-adapter.coffeesrc/ | |
|---|---|
| When the Lime player gets instantiated, it calls the VideoPlayerInit method with the three parameters (domElement, optionsHash, callback) and waits for the callback to be called with the instantiated video player. The form of call is  | window.LIMEPlayer.VideoPlayerInit = (el, options, cb) ->
  unless _V_
    console.error "VideoJS not loaded!"
    cb "VideoJS not loaded"
    return | 
| Defer makes the instantiation asynchron and makes sure the previous rendering activities are finished. |   _.defer =>
    console.info "1. Player initialisation" | 
| We create the |     player = | 
| The player instance is the (could be even) hidden player instance that we wrap. |       instance: _V_(el, {
        flash: iFrameMode: true
        swf: "lib/videojs/video-js.swf" # SORIN - added to fix flash fallback bug
      })
      isFullscreen: ->
        @instance.isFullScreen | 
| Methods: | |
| play() |       play: ->
        @instance.play() | 
| pause() |       pause: ->
        @instance.pause() | 
| getLength() |       getLength: ->
        @instance.duration() | 
| seek(pos) |       seek: (pos) ->
        if pos isnt undefined
          @instance.currentTime pos | 
| currentTime() |       currentTime: ->
        @instance.currentTime()
      currentSource: ->
        this.instance.tag.currentSrc or @instance.tag.src or jQuery('source',this.instance.tag).attr('src')
      paused: ->
        @instance.paused() | 
| @player.addComponent 'Annotations', player: @player | |
| Listen to error event |     player.instance.addEvent "error", (e) =>
      cb e | 
| Setting up the player instance |     player.instance.addEvent "loadedmetadata", =>
      console.info "3. Player.loadedmetadata"
      player.instance.isFullScreen = options.fullscreen | 
| player.videoOverlay is the DOM element over the entire video element |       videoOverlay = player.instance.addComponent("VideoOverlay")  # add component to display 4 regions of annotations
      player.videoOverlay = jQuery videoOverlay.el
      player.videoOverlay.css
        height: '100%' | 
| player.timelineOverlay is the DOM element over the timeline |       timelineOverlay = player.instance.controlBar.progressControl.addComponent "VideoOverlay"
      player.timelineOverlay = jQuery timelineOverlay.el
      player.timelineOverlay.css
        position: 'absolute'
        top: 0
        right: 0
        left: 0
        height: '100%'
        padding: 0
        margin: 0
        background: 'transparent'
        'pointer-events': 'none' | 
| player.buttonContainer is the DOM element in the button bar that can accomodate switch elements (eg show/hide annotations) |       player.buttonContainer = player.instance.controlBar.el
      player.instance.controlBar.addComponent("AnnotationToggle").el | 
| Eventstimeupdate event |       player.instance.addEvent "timeupdate", (e) ->
        limeevent = jQuery.Event "timeupdate", currentTime: player.instance.currentTime()
        jQuery(player).trigger limeevent | 
| fullscreenchange event |       player.instance.addEvent 'fullscreenchange', (e) =>
        fsce = jQuery.Event 'fullscreenchange', isFullScreen: player.instance.isFullScreen
        jQuery(player).trigger fsce | 
| play event |       player.instance.addEvent 'play', (e) =>
        playevent = jQuery.Event 'play'
        jQuery(player).trigger playevent
      player.instance.play()
      cb null, player
    console.info "2. Player instantiated." | 
| Prepare Components for video overlay, button |   _V_.VideoOverlay = _V_.Component.extend #for  annotations on the sidebars
    options:
      loadEvent: "play"
    init: (player, options) ->
      @_super player, options
    createElement: ->
      el = _V_.createElement "div", | 
| className: "spacial-annotation-overlays-wrapper" |         className: "lime-overlay" | 
| style: 'border: 2px red solid' el.innerHTML = " " |       el | 
| ConnectME annotation toggler button that shows/hides the annotations on Fullscreen |   _V_.AnnotationToggle = _V_.Button.extend
    buttonText: "Annotations On/Off"
    buildCSSClass: ->
      "vjs-annotationstoggler " + @_super()
    onClick: ->
      if LimePlayer.options.annotationsVisible is false
        jQuery(".vjs-annotationstoggler").removeClass "annotationstoggler-off"
        LimePlayer.options.annotationsVisible = true
        LimePlayer.player.AnnotationOverlaysComponent.show()  if LimePlayer.player.AnnotationOverlaysComponent
        if @player.isFullScreen #show Annotations sidebars
          LimePlayer.player.AnnotationsSidebars.show()
        else #only show in fullscreen
          LimePlayer.player.AnnotationsSidebars.hide()
      else #toggle off Annotation overlays
        jQuery(".vjs-annotationstoggler").addClass "annotationstoggler-off"
        LimePlayer.player.AnnotationsSidebars.hide()
        LimePlayer.player.AnnotationOverlaysComponent.hide()  if LimePlayer.player.AnnotationOverlaysComponent
        LimePlayer.options.annotationsVisible = false
      console.log "fullscreen " + @player.isFullScreen, "visible " + LimePlayer.options.annotationsVisible
 |