diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/present/views/SlideView.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/present/views/SlideView.mxml index b4c16f11f0721f80ea77425f37429b69c402fb58..4521e3f0f2ce377c40c904c8b067bd131f771a2d 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/present/views/SlideView.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/present/views/SlideView.mxml @@ -106,8 +106,8 @@ private var dispatcher:Dispatcher = new Dispatcher(); private function onCreationComplete():void{ - swfSlideLoader.width = canvasWidth(); - swfSlideLoader.height = canvasHeight(); + swfSlideLoader.width = this.width; + swfSlideLoader.height = this.height; cursor = new Shape(); cursor.graphics.lineStyle(6, 0xFF0000, 0.6); @@ -140,41 +140,33 @@ } private function onMouseDown(e:MouseEvent):void{ - canvasMouseXOnMouseDown = canvasMouseX(); - canvasMouseYOnMouseDown = canvasMouseY(); - loaderXOnMouseDown = loaderX(); - loaderYOnMouseDown = loaderY(); + canvasMouseXOnMouseDown = this.mouseX; + canvasMouseYOnMouseDown = this.mouseY; + loaderXOnMouseDown = swfSlideLoader.x; + loaderYOnMouseDown = swfSlideLoader.y; addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } private function onMouseMove(e:MouseEvent):void { - var deltaCanvasMouseX:int = canvasMouseX() - canvasMouseXOnMouseDown; - var deltaCanvasMouseY:int = canvasMouseY() - canvasMouseYOnMouseDown; - - moveLoaderTo(loaderXOnMouseDown + deltaCanvasMouseX, loaderYOnMouseDown + deltaCanvasMouseY); + var deltaCanvasMouseX:Number = this.mouseX - canvasMouseXOnMouseDown; + var deltaCanvasMouseY:Number = this.mouseY - canvasMouseYOnMouseDown; + + swfSlideLoader.x = loaderXOnMouseDown + deltaCanvasMouseX/2; + swfSlideLoader.y = loaderYOnMouseDown + deltaCanvasMouseY/2; + fitSlideToLoader(); notifyOtherParticipantsOfSlideMoving(); } - private function moveLoaderTo(xOffset:int, yOffset:int):void { - swfSlideLoader.x = xOffset; - swfSlideLoader.y = yOffset; - } - private function notifyOtherParticipantsOfSlideMoving():void { var presentEvent:PresenterCommands = new PresenterCommands(PresenterCommands.MOVE); - presentEvent.xOffset = getLoaderXOffsetWithCanvas(); - presentEvent.yOffset = getLoaderYOffsetWithCanvas(); - presentEvent.slideToCanvasWidthRatio = getWidthRatioBetweenCanvasAndLoader(); - presentEvent.slideToCanvasHeightRatio = getHeightRatioBetweenCanvasAndLoader(); + presentEvent.xOffset = swfSlideLoader.x/swfSlideLoader.width; + presentEvent.yOffset = swfSlideLoader.y/swfSlideLoader.height; + presentEvent.slideToCanvasWidthRatio = swfSlideLoader.width/this.width; + presentEvent.slideToCanvasHeightRatio = swfSlideLoader.height/this.height; dispatchEvent(presentEvent); } - - private function participantShouldHandleMessage():Boolean { - // If presenter, then ignore the message because the presenter was the one who sent the event. - return ! isPresenter; - } private function onMouseUp(e:MouseEvent):void{ removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); @@ -191,29 +183,33 @@ } private function resizeAndMoveLoaderInRelationToCanvas():void { - resizeLoaderInRelationToCanvas(presentersLoaderCanvasWidthRatio, presentersLoaderCanvasHeightRatio); - moveLoaderInRelationToCanvas(presentersLoaderXOffsetFromCanvas, presentersLoaderYOffsetFromCanvas); + swfSlideLoader.width = this.width * presentersLoaderCanvasWidthRatio; + swfSlideLoader.height = this.height * presentersLoaderCanvasHeightRatio; + + swfSlideLoader.x = swfSlideLoader.width * presentersLoaderXOffsetFromCanvas; + swfSlideLoader.y = swfSlideLoader.width * presentersLoaderYOffsetFromCanvas; + fitSlideToLoader(); } private function fitSlideToLoader():void { if (noSlideContentLoaded()) return; - swfSlideLoader.content.x = loaderX(); - swfSlideLoader.content.y = loaderY(); - swfSlideLoader.content.width = loaderWidth(); - swfSlideLoader.content.height = loaderHeight(); + swfSlideLoader.content.x = swfSlideLoader.x; + swfSlideLoader.content.y = swfSlideLoader.y; + swfSlideLoader.content.width = swfSlideLoader.width; + swfSlideLoader.content.height = swfSlideLoader.height; - zoomCanvas(loaderWidth(), loaderHeight()); + zoomCanvas(swfSlideLoader.width, swfSlideLoader.height); } private function fitLoaderToCanvas():void{ if (noSlideContentLoaded()) return; - swfSlideLoader.width = canvasWidth(); - swfSlideLoader.height = canvasHeight(); - swfSlideLoader.x = canvasX(); - swfSlideLoader.y = canvasY(); + swfSlideLoader.width = this.width; + swfSlideLoader.height = this.height; + swfSlideLoader.x = this.x; + swfSlideLoader.y = this.y; fitSlideToLoader(); } @@ -221,34 +217,38 @@ private function resizeAndMoveLoaderBy(percent:Number):void { // Save the old loader dimensions. We need these to calculate // the new position of the loader; - var oldLoaderHeight:int = loaderHeight(); - var oldLoaderWidth:int = loaderWidth(); - - resizeLoaderInRelationToCanvas(percent/100, percent/100); - moveLoaderTo(calculateNewLoaderX(oldLoaderWidth), calculateNewLoaderY(oldLoaderHeight)); + var oldLoaderHeight:int = swfSlideLoader.height; + var oldLoaderWidth:int = swfSlideLoader.width; + + swfSlideLoader.width = this.width * percent/100; + swfSlideLoader.height = this.height * percent/100; + + swfSlideLoader.x = calculateNewLoaderX(oldLoaderWidth); + swfSlideLoader.y = calculateNewLoaderY(oldLoaderHeight); + fitSlideToLoader(); } private function calculateNewLoaderY(oldLoaderHeight:int):int { - var deltaPercentHeight:Number = (loaderHeight() - oldLoaderHeight) /oldLoaderHeight; + var deltaPercentHeight:Number = (swfSlideLoader.height - oldLoaderHeight) /oldLoaderHeight; - var newLoaderY:int = (loaderY()/loaderHeight()) * deltaPercentHeight; + var newLoaderY:int = (swfSlideLoader.y/swfSlideLoader.height) * deltaPercentHeight; if (newLoaderY == 0) { - newLoaderY = loaderY() - (deltaPercentHeight * 100); + newLoaderY = swfSlideLoader.y - (deltaPercentHeight * 100); } else { - newLoaderY = loaderY() - newLoaderY; + newLoaderY = swfSlideLoader.y - newLoaderY; } return newLoaderY; } private function calculateNewLoaderX(oldLoaderWidth:int):int { - var deltaPercentWidth:Number = (loaderWidth() - oldLoaderWidth) / oldLoaderWidth; - var newLoaderX:int = (loaderX()/loaderWidth()) * deltaPercentWidth; + var deltaPercentWidth:Number = (swfSlideLoader.width - oldLoaderWidth) / oldLoaderWidth; + var newLoaderX:int = (swfSlideLoader.x/swfSlideLoader.width) * deltaPercentWidth; if (newLoaderX == 0) { - newLoaderX = loaderX() - (deltaPercentWidth * 100); + newLoaderX = swfSlideLoader.x - (deltaPercentWidth * 100); } else { - newLoaderX = loaderX() - newLoaderX; + newLoaderX = swfSlideLoader.x - newLoaderX; } return newLoaderX; @@ -294,10 +294,10 @@ private function notifyOthersOfZoomEvent():void { var presentEvent:PresenterCommands = new PresenterCommands(PresenterCommands.ZOOM); - presentEvent.xOffset = getLoaderXOffsetWithCanvas(); - presentEvent.yOffset = getLoaderYOffsetWithCanvas(); - presentEvent.slideToCanvasWidthRatio = getWidthRatioBetweenCanvasAndLoader(); - presentEvent.slideToCanvasHeightRatio = getHeightRatioBetweenCanvasAndLoader(); + presentEvent.xOffset = swfSlideLoader.x/swfSlideLoader.width; + presentEvent.yOffset = swfSlideLoader.y/swfSlideLoader.height; + presentEvent.slideToCanvasWidthRatio = swfSlideLoader.width/this.width; + presentEvent.slideToCanvasHeightRatio = swfSlideLoader.height/this.height; dispatchEvent(presentEvent); } @@ -308,20 +308,20 @@ private function handleMoveEvent(e:MoveEvent):void{ savePresentersSettings(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio); - if (participantShouldHandleMessage()) { + if (!isPresenter) { resizeAndMoveLoaderInRelationToCanvas(); } - moveCanvas(loaderX(), loaderY()); + moveCanvas(swfSlideLoader.x, swfSlideLoader.y); } private function handleZoomEvent(e:ZoomEvent):void { savePresentersSettings(e.xOffset, e.yOffset, e.slideToCanvasWidthRatio, e.slideToCanvasHeightRatio); - if (participantShouldHandleMessage()) { + if (!isPresenter) { resizeAndMoveLoaderInRelationToCanvas(); } - zoomCanvas(loaderWidth(), loaderHeight()); + zoomCanvas(swfSlideLoader.width, swfSlideLoader.height); } private function handleSlideLoadedEvent(e:SlideEvent):void{ @@ -352,21 +352,21 @@ public function mouseCursorUpdateListener(e:MouseEvent):void{ if (noSlideContentLoaded()) return; - notifyOthersOfPresentersCursorPosition(canvasMouseX(), canvasMouseY()); + notifyOthersOfPresentersCursorPosition(this.mouseX, this.mouseY); } private function notifyOthersOfPresentersCursorPosition(cursorXPosition:int, cursorYPosition:int):void { var command:PresenterCommands = new PresenterCommands(PresenterCommands.SEND_CURSOR_UPDATE); - command.xPercent = cursorXPosition / canvasWidth(); - command.yPercent = cursorYPosition / canvasHeight(); + command.xPercent = cursorXPosition / this.width; + command.yPercent = cursorYPosition / this.height; dispatchEvent(command); } private function handleUpdateCursorEvent(e:CursorEvent):void{ if (noSlideContentLoaded()) return; - cursor.x = e.xPercent * canvasWidth(); - cursor.y = e.yPercent * canvasHeight(); + cursor.x = e.xPercent * this.width; + cursor.y = e.yPercent * this.height; if (isCursorOutsideWindow(e)) { hideCursor() @@ -390,32 +390,6 @@ * Helper functions to determine offsets ******************************************************/ - private function getLoaderXOffsetWithCanvas():Number { - return loaderX()/loaderWidth(); - } - - private function getLoaderYOffsetWithCanvas():Number { - return loaderY()/loaderHeight(); - } - - private function getWidthRatioBetweenCanvasAndLoader():Number { - return loaderWidth()/canvasWidth(); - } - - private function getHeightRatioBetweenCanvasAndLoader():Number { - return loaderHeight()/canvasHeight(); - } - - private function resizeLoaderInRelationToCanvas(widthRatio:Number, heightRatio:Number):void { - swfSlideLoader.width = canvasWidth() * widthRatio; - swfSlideLoader.height = canvasHeight() * heightRatio; - } - - private function moveLoaderInRelationToCanvas(loaderXOffset:Number, loaderYOffset:Number):void { - swfSlideLoader.x = loaderWidth() * loaderXOffset; - swfSlideLoader.y = loaderHeight() * loaderYOffset; - } - /* * Fire an event when a single slide has been loaded. */ @@ -424,8 +398,8 @@ } private function handleSlideLoadedCompleteEvent(event:Event):void { - var slideRealWidth:int = slideWidth(); - var slideRealHeight:int = slideHeight(); + var slideRealWidth:int = swfSlideLoader.content.width; + var slideRealHeight:int = swfSlideLoader.content.height; fitLoaderToCanvas(); dispatchNewSlideDisplayedEvent(slideRealWidth, slideRealHeight); } @@ -436,84 +410,6 @@ dispEvent.slideHeight = slideRealHeight; dispatcher.dispatchEvent(dispEvent); } - - /***************************************** - * Helper functions - *****************************************/ - /****** Slide/Content ************/ - private function slideX():int { - return swfSlideLoader.content.x; - } - - private function slideY():int { - return swfSlideLoader.content.y; - } - - private function slideMouseX():int { - return swfSlideLoader.content.mouseX; - } - - private function slideMouseY():int { - return swfSlideLoader.content.mouseY; - } - - private function slideWidth():int { - return swfSlideLoader.content.width; - } - - private function slideHeight():int { - return swfSlideLoader.content.height; - } - - /************ Canvas *****************/ - private function canvasX():int { - return this.x; - } - - private function canvasY():int { - return this.y; - } - - private function canvasMouseX():int { - return this.mouseX; - } - - private function canvasMouseY():int { - return this.mouseY; - } - - private function canvasWidth():int { - return this.width; - } - - private function canvasHeight():int { - return this.height; - } - - /************ Loader ******************/ - private function loaderX():int { - return swfSlideLoader.x; - } - - private function loaderY():int { - return swfSlideLoader.y; - } - - private function loaderMouseX():int { - return swfSlideLoader.mouseX; - } - - private function loaderMouseY():int { - return swfSlideLoader.mouseY; - } - - private function loaderWidth():int { - return swfSlideLoader.width; - } - - private function loaderHeight():int { - return swfSlideLoader.height; - } private function isCursorOutsideWindow(e:CursorEvent):Boolean { return (e.xPercent > 1 && e.yPercent > 1) || (cursor.x > this.width || cursor.y > this.height); @@ -549,8 +445,8 @@ } public function moveCanvas(x:int, y:int):void{ - overlayChildrenHolder.x = loaderX() * 2; - overlayChildrenHolder.y = loaderY() * 2; + overlayChildrenHolder.x = swfSlideLoader.x * 2; + overlayChildrenHolder.y = swfSlideLoader.y * 2; if (overlayCanvas != null) overlayCanvas.moveCanvas(overlayChildrenHolder.x, overlayChildrenHolder.y); } @@ -558,7 +454,7 @@ public function zoomCanvas(width:int, height:int):void{ overlayChildrenHolder.width = width; overlayChildrenHolder.height = height; - moveCanvas(loaderX(), loaderY()); + moveCanvas(swfSlideLoader.x, swfSlideLoader.y); if (overlayCanvas != null) overlayCanvas.zoomCanvas(width, height); }