/// <summary> /// Draws the UI when in scan mode. /// Automatically shows Help dialog when starting and after timeout. /// </summary> public void DrawUI(ImageTargetBuilder.FrameQuality frameQuality) { if (frameQuality != ImageTargetBuilder.FrameQuality.FRAME_QUALITY_NONE) { // draw the view finder UI... if (frameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_MEDIUM || frameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_HIGH) { // draw the view finder with green marks mUserInterface.DrawViewFinder(Color.green); } else { // draw the basic viewfinder with white marks and show the scanning message mUserInterface.DrawViewFinder(Color.white); } UserDefinedTargetBuildingUI.ButtonID buttonId = UserDefinedTargetBuildingUI.ButtonID.NONE_PRESSED; if (QCARRuntimeUtilities.IsLandscapeOrientation) { // Draws the Landscape UI for the Scanning Mode buttonId = mUserInterface.DrawScanningModeLandscapeUI(); } else { // Draws the Portrait UI for the scanning mode buttonId = mUserInterface.DrawScanningModePortraitUI(); } // Checks Button actions if (buttonId == UserDefinedTargetBuildingUI.ButtonID.CANCEL_PRESSED) { mStopScanningCallback(); } else if (buttonId == UserDefinedTargetBuildingUI.ButtonID.BUILD_TARGET_PRESSED) { // check if the current frame has too low quality to create a good target if (frameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_LOW) { ErrorMsg.New("Low Quality Image", "The image has very little detail, please try another.", () => mUserInterface.ButtonPressed = true); } mStartBuildingCallback(); } } // Draws possible error messages ErrorMsg.Draw(); }
/// <summary> /// Renders the UI, depending on the current state /// </summary> void OnGUI() { if (mOnInitializedCalled) { // BeginOnGUI tells the user interface to reset some values and set the right GUISkin mUserInterface.BeginOnGUI(); // check in which mode we are if (mFrameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_NONE) { if (QCARRuntimeUtilities.IsLandscapeOrientation) { if (!mDrawInstructionsFlag) { // Draws Landscape UI for ViewFinder Mode & process button actions if (mUserInterface.DrawViewFinderModeLandscapeUI() == UserDefinedTargetBuildingUI.ButtonID.ENTER_SCANNING_MODE_PRESSED) { // Checks if the instructions Screen need to be displayed if (mDoShowInstructions) { // Draws the instructions UI mDrawInstructionsFlag = true; } else { // Enters the scanning mode mTargetBuildingBehaviour.StartScanning(); } } } else { // Draws the Landscape Instructions UI UserDefinedTargetBuildingUI.ButtonID buttonPreessedId = mUserInterface.DrawInstructionsLandscapeUI(); // Checks Instructions button pressed if (buttonPreessedId == UserDefinedTargetBuildingUI.ButtonID.INSTRUCTIONS_OK_PRESSED) { mDrawInstructionsFlag = false; mDoShowInstructions = false; mTargetBuildingBehaviour.StartScanning(); } else if (buttonPreessedId == UserDefinedTargetBuildingUI.ButtonID.CANCEL_PRESSED) { mDrawInstructionsFlag = false; } } } else { if (!mDrawInstructionsFlag) { // Draws Portrait mode for ViewFinder Mode & process button actions if (mUserInterface.DrawViewFinderModePortraitUI() == UserDefinedTargetBuildingUI.ButtonID.ENTER_SCANNING_MODE_PRESSED) { // Checks if the instructions Screen need to be displayed if (mDoShowInstructions) { // Draws the instructions UI mDrawInstructionsFlag = true; } else { // Enters the scanning mode mTargetBuildingBehaviour.StartScanning(); } } } else { // Draws the portrait Instructions UI UserDefinedTargetBuildingUI.ButtonID buttonPreessedId = mUserInterface.DrawInstructionsPortraitUI(); // Checks Instructions button pressed if (buttonPreessedId == UserDefinedTargetBuildingUI.ButtonID.INSTRUCTIONS_OK_PRESSED) { mDrawInstructionsFlag = false; mDoShowInstructions = false; mTargetBuildingBehaviour.StartScanning(); } else if (buttonPreessedId == UserDefinedTargetBuildingUI.ButtonID.CANCEL_PRESSED) { mDrawInstructionsFlag = false; } } } } // draw scanning mode UI, decides internally what should be rendered mScanModeUILogic.DrawUI(mFrameQuality); } }