Website/slides/cse662fa2017/2017-09-01-FunctionalDataStructures/assets/player/DisplayManager.js

1 line
14 KiB
JavaScript
Raw Normal View History

2017-09-01 12:07:46 -04:00
var kStageSizeDidChangeEvent="DisplayManager:StageSizeDidChangeEvent";var kTimeoutValueForCursor=1000;var kMobilePortraitModeHorizontalMargin=8;var kMobilePortraitModeTopMargin=47;var kMobilePortraitModeVerticalCenterLine=161;var kMobilePortraitModeMaxStageHeight=228;var kMobilePortraitMaxStageHeight=0;var kMobilePortraitMaxStageWidth=0;var kMobileLandscapeModeVerticalMargin=7;var kMobileLandscapeModeHorizontallMargin=15;var kBottomButtonHeight=50;var kNavigationArrowSize=27;var kNavigationAreaHeight=kNavigationArrowSize;var kHelpAreaHeight=16;var kMobilePortraitModeVerticalCenterLineToNavigationAreaGap=148;var kStageToNavigationAreaGap=31;var kNavigationAreaToHelpAreaGap=52;var kHelpAreaToBottomGap=12;var kMobilePortraitModeNavigationAreaSideMargin=32;var kMobilePortraitModeHelpAreaSideMargin=16;var kMobileLandscapeModeMinSideSpacerWidth=kNavigationArrowSize+10;var kPadPortraitModeHorizontalMargin=8;var kPadPortraitModeMaxStageHeight=540;var kPadPortraitModeVerticalCenterLine=400;var kPadLandscapeModeHorizontallMargin=15;var kPadLandscapeModeVerticalMargin=7;var DisplayManager=Class.create({initialize:function(){document.observe(kShowSizeDidChangeEvent,this.handleShowSizeDidChangeEvent.bind(this));document.observe(kOrientationChangedEvent,this.handleOrientationDidChangeEvent.bind(this));this.body=document.getElementById("body");this.stageArea=document.getElementById("stageArea");this.stage=document.getElementById("stage");this.hyperlinkPlane=document.getElementById("hyperlinkPlane");this.waitingIndicator=document.getElementById("waitingIndicator");this.helpText=document.getElementById("helpText");this.previousButton=document.getElementById("previousButton");this.nextButton=document.getElementById("nextButton");this.slideCounter=document.getElementById("slideCounter");this.waitingIndicatorTimeout=null;this.orientation=kOrientationUnknown;this.showWidth=0;this.showHeight=0;this.stageAreaWidth=0;this.stageAreaHeight=0;this.stageAreaTop=0;this.stageAreaLeft=0;this.usableDisplayWidth=0;this.usableDisplayHeight=0;this.inLaunchMode=true;this.initialAddressBarScrollPerformed=false;this.updateUsableDisplayArea();this.positionWaitingIndicator();this.showWaitingIndicator();this.hyperlinksOnly=false;this.showStatisticsDisplay=gIpad&&getUrlParameter("statistics")==="1";this.hasCacheEverGoneOverPixelLimit=false;this.hhasStageEverGoneOverPixelLimit=false;this.cacheHighWaterMark=0;this.stageHighWaterMark=0;if(gMode===kModeMobile){this.stageArea.style.backgroundColor="black";this.helpText.innerHTML=kTapOrSwipeToAdvance}else{Event.observe(this.body,"mousemove",this.handleMouseMove.bind(this));this.lastMouseX=-1;this.lastMouseY=-1;this.cursorTimeout=null;this.setTimeoutForCursor()}},setHyperlinksOnlyMode:function(){this.hyperlinksOnly=true;this.setPreviousButtonEnabled(false);this.setNextButtonEnabled(false);this.helpText.style.display="none"},handleMouseMove:function(a){a=a||window.event;var b=Math.abs(this.lastMouseX-a.clientX)+Math.abs(this.lastMouseY-a.clientY);if(b>10){if(this.cursorIsShowing===false){this.showCursor()}else{if(!this.navigatorIsShowing){this.setTimeoutForCursor()}}}else{if(!this.navigatorIsShowing){this.setTimeoutForCursor()}}this.lastMouseX=a.clientX;this.lastMouseY=a.clientY},updateSlideNumber:function(b,a){var d="";var c=null;if(gMode!=kModeDesktop){d=kSlideLabel+" "+b+"/"+a;c=this.slideCounter}if(c!=null){c.innerHTML=d}},handleShowSizeDidChangeEvent:function(a){this.showWidth=a.memo.width;this.showHeight=a.memo.height;this.layoutDisplay()},handleOrientationDidChangeEvent:function(a){this.orientation=a.memo.orientation;clearTimeout(this.resizeTimer);this.resizeTimer=setTimeout(this.handleOrientationDidChangeEvent_partTwo.bind(this),300)},handleOrientationDidChangeEvent_partTwo:function(){this.layoutDisplay();if(this.inLaunchMode===false){this.showApplicableControls()}},showCursor:function(){if(this.inLaunchMode){return}this.body.style.cursor="default";this.cursorIsShowing=true;this.setTimeoutForCursor()},hideCursor:function(){this.body.style.cursor="none";this.cursorIsShowing=false},setTimeoutForCursor:function(){