Interface CameraManagerInterface

The CameraManagerInterface interface is used to manipulate the camera, and thus to change the viewpoint.

This interface allows to create camera animations and manipulate the orientation cube (a cube that allows the user to see its current orientation).

The CameraManagerInterface also features a way to change the camera manipulator, which is the way user inputs are processed to infer a camera move, by using the CameraControllerMode. The CameraManagerInterface uses the CCM_ORBIT as default. Whenever the camera location and orientation (frame) are changed, CameraManagerInterfaceSignal signals are sent.

This interface also allows to set the camera sensibility, which is the default distance and rotation angle induced by a single user input. This may increase or lower the camera speed. The camera sensitivity is a strictly positive number, that defaults to 1.

If the developer wants to create its own camera manipulator, he may disable the CameraManagerInterface by :

/** 
* Sample to illustrate the change of camera controller.
*/
import { InfiniteEngineInterface, CameraControllerMode } from 'generated/documentation/appinfiniteapi';

let lEngine : InfiniteEngineInterface;
lEngine.getCameraManager().setCameraControllerMode(CameraControllerMode.CCM_NONE);

There is no way to create a new CameraManagerInterface, the camera handler is owned and accessed by the InfiniteEngineInterface.

The camera features a perspective projection (pyramid) expressed as frustum values. See ViewFrustum. The frustum values are used to compute the perspective projection of the virtual camera. There are a lot of online courses available if you want to get more information about perspective projections.

frustum illustration
The camera is composed of 6 planes : A near and far plane orthogonal to the camera at the distance respectively near and far. Up, Bottom, Right and Left planes go through the camera location and intersect the near plane forming 4 points (see the figure).
The coordinates of these 4 points can be expressed as :
Be P0 the bottom left point, P1 the bottom right point, P2 the top right point, P3 the top left point.
Be D the normalized directional vector of the camera, U the normalized Up vector of the camera, R the normalized right vector of the camera and L the camera location.
P0 = L + Dmin * D + Rmin * R + Umin * U
P1 = L + Dmin * D + Rmax * R + Umin * U
P2 = L + Dmin * D + Rmax * R + Umax * U
P3 = L + Dmin * D + Rmin * R + Umax * U

In cases of symmetrical frustum (usually the case) :
Rmin = -Rmax
Dmin = -Dmax.
/** 
* Sample to illustrate some CameraManagerInterface accessors.
*/
import { InfiniteEngineInterface, CameraManagerInterface } from 'generated/documentation/appinfiniteapi';

let lEngine : InfiniteEngineInterface;
const lCameraManager : CameraManagerInterface = lEngine.getCameraManager();
// and go on ...
console.log(lCameraManager.getDMax());

The CameraManagerInterface send signals when animations are started and stopped.

The orientation cube allows the user to set some specific orientation by clicking on some area of the cube (orthogonal to a face, straight to an edge, to a vertex of the cube).


3D Rendering

See

Hierarchy

Methods

  • Adds a listener to an event type.

    When an event of the type pType fires, the callback pListener will be called. This function returns a unique string id that may be used in removeEventListenerById to allow simple listener removal. It is possible to add an object that will be included in the callback to avoid creating too many closures.

    Returns

    The id of the inserted callback (actually an UUID).

    Parameters

    • pType: string
      in
      The type of the event pListener will be called upon.
    • pListener: tListenerCallback
      in
      The listener function that fires when the given event type occurs.
    • pObject: undefined | Object
      in
      The optional object the callback will be called with when the given event fires.

    Returns string

  • Adds a listener to an event type.

    When an event of the type pType fires, the callback pListener will be called. This function returns a unique string id that may be used in removeEventListenerById to allow simple listener removal.

    Returns

    The id of the inserted callback (actually an UUID).

    Parameters

    • pType: string
      in
      The type of the event pListener will be called upon.
    • pListener: tListenerCallback
      in
      The listener function that fires when the given event type occurs.

    Returns string

  • Requests an asynchronous wait for animation ended.

    The promise is signaled when the animation is over, i.e. when isCameraAnimationRunning returns false.

    An example with a animation procedure :

    /** 
    * Sample to illustrate the asynchronous screenshot procedure of the InfiniteEngineInterface.
    */
    import {
    InfiniteEngineInterface, LoadingStates, Vector3,
    InfiniteImageInterface, ScreenshotType, AsyncDataLoadedResult, AsyncResultReason, AsyncScreenshotResult
    } from 'generated/documentation/appinfiniteapi';

    // We try to make a screenshot when all data is loaded

    // the div to render the 3D display
    let lView3D: HTMLElement;

    // created previously, should receive the image data to be displayed to the user (or ask for a download maybe ?)
    let lImageData : HTMLImageElement;

    // created previously the position of the camera for the screenshot
    let lCameraLocation : Vector3;

    // created previously the camera center of interest
    let lCenterOfInterest : Vector3;

    // created previously the 3D engine
    let lInfiniteEngine: InfiniteEngineInterface;

    const takeScreenshot = async () : Promise<void> =>
    {
    // bind the 3D rendering to the div (should have been done earlier :) )
    lInfiniteEngine.setView(lView3D);

    // we will make screenshot of 1024x1024
    lInfiniteEngine.setFixedResolution(1024, 1024, 1);

    // go to the expected position / location
    lInfiniteEngine.getCameraManager().setCameraLocation(lCameraLocation);
    lInfiniteEngine.getCameraManager().lookAt(lCenterOfInterest, 0);

    // What to do when all data is loaded ?
    const lDataLoaded : AsyncDataLoadedResult = await lInfiniteEngine.asyncWaitForDataLoaded();
    if (lDataLoaded.reason !== AsyncResultReason.ARR_Success || lDataLoaded.value === undefined)
    {
    // this is an error that should not happen (perhaps the engine interface has been destroyed ?)
    console.log('screenshot procedure failed for some reason');
    return;
    }
    const lDataLoadedState : LoadingStates = lDataLoaded.value.newLoadingState;
    switch (lDataLoadedState)
    {
    case LoadingStates.S_Loading:
    // this is an unexpected error
    console.log('unexpected error');
    return;
    case LoadingStates.S_OutOfBudget:
    // some fancy message
    console.log('Taking a screenshot without everything loaded');
    // but we still make a screenshot :)
    break;
    default:
    break;
    }
    const lScreenshot : AsyncScreenshotResult = await lInfiniteEngine.asyncScreenshot(ScreenshotType.ST_Color, true, 'image/jpeg', 0.95);
    if (lScreenshot.reason !== AsyncResultReason.ARR_Success || lScreenshot.value === undefined)
    {
    // this is an error that may happen (perhaps the engine interface has been destroyed ?, or bad inputs ?)
    console.log('screenshot procedure failed for some reason');
    return;
    }
    // What to do when screenshot is ready ?

    // the image result
    const lInfiniteImage : InfiniteImageInterface = lScreenshot.value;

    // is the image valid ? and base64 encoded ?
    if ((lInfiniteImage.width === 0) || (!lInfiniteImage.data) || (!lInfiniteImage.base64))
    {
    console.log('Unexpected screenshot error, aborting')
    return;
    }

    // create the data url in base64
    // even if we did not get the expected format, we still get the result
    const lDataUrl : string = 'data:' + lInfiniteImage.format + ';base64,' + lInfiniteImage.data;

    // resize the image markup
    lImageData.width = lInfiniteImage.width;
    lImageData.height = lInfiniteImage.height;
    // and set data
    lImageData.src = lDataUrl;

    // we get back to the size of the 3d view but this is up to the application needs
    lInfiniteEngine.unsetFixedResolution();
    }

    takeScreenshot();

    Please make sure the destination browser supports promises before using async calls.

    Returns

    A promise. The promise is resolved with the reason (success, disposed).

    Returns Promise<AsyncResultReason>

  • Enables/Disables the navigation cube (i.e. it responds to user inputs).

    The navigation cube is enabled by default.

    The navigation cube is an html widget located on the bottom right of the 3d rendering area, which helps the user knowing its current orientation. Information like FRONT, LEFT etc are displayed.

    Parameters

    • pEnabled: boolean
      in
      The navigation cube is enabled if true else it is disabled.

    Returns void

  • Changes the camera position to fit the given AABB to the screen.

    The current orientation of the camera and the center of the Box are used to get a virtual line. The camera changes its position to get on that line, its orientation is unchanged. The camera position is set along this line to maximize the drawing of the Box, without any loss of content.

    /** 
    * Sample to illustrate the CameraManagerInterface fit box.
    */
    import { AABB, CameraManagerInterface, DataSessionInterface } from 'generated/documentation/appinfiniteapi';

    // created previously
    let lCameraManager : CameraManagerInterface;
    // the DataSessionInterface has been created previously and is connected
    let lDataSession : DataSessionInterface;
    // get box of given instance id (retrieved by picking ?)
    const pGeometryInstanceId : number = 10;
    // time of animation
    const pAnimationDurationInMilliseconds : number = 150;

    // create an AABB to get the box
    const lAABB : AABB = new AABB();
    // get the box
    lDataSession.getGeometricAABB(pGeometryInstanceId, lAABB);
    // and change camera orientation to fit the box
    lCameraManager.fitBox(lAABB, pAnimationDurationInMilliseconds);

    [resetCamera](CameraManagerInterface.html#resetCamera) uses FitBox internally.

    Parameters

    • pAABB: AABB
      in
      The box to fit on screen.
    • pAnimationDurationInMilliseconds: number
      in
      The duration of the animation in milliseconds. 0 means immediate movement.

    Returns void

  • Changes the camera position to fit the given AABB to the screen.

    The current orientation of the camera and the center of the Box are used to get a virtual line. The camera changes its position to get on that line, its orientation is unchanged. The camera position is set along this line to maximize the drawing of the Box, without any loss of content.

    The default animation duration is 350 ms.

    This is equivalent to :

    fitBox(pAABB,350);
    

    You may use [fitGeometry](CameraManagerInterface.html#fitGeometry) instead.

    Parameters

    • pAABB: AABB
      in
      The box to fit on screen.

    Returns void

  • Changes the camera position to fit the given geometry to the screen.

    This is equivalent to a fixBox with the AABB of the given geometry.

    This is equivalent to :

    /** 
    * Sample to illustrate the CameraManagerInterface fit box.
    */
    import { AABB, CameraManagerInterface, DataSessionInterface } from 'generated/documentation/appinfiniteapi';

    // created previously
    let lCameraManager : CameraManagerInterface;
    // the DataSessionInterface has been created previously and is connected
    let lDataSession : DataSessionInterface;
    // get box of given instance id (retrieved by picking ?)
    const pGeometryInstanceId : number = 10;
    // time of animation
    const pAnimationDurationInMilliseconds : number = 150;

    // create an AABB to get the box
    const lAABB : AABB = new AABB();
    // get the box
    lDataSession.getGeometricAABB(pGeometryInstanceId, lAABB);
    // and change camera orientation to fit the box
    lCameraManager.fitBox(lAABB, pAnimationDurationInMilliseconds);

    Please see [fitBox](CameraManagerInterface.html#fitBox).

    Parameters

    • pGeometryInstanceId: number
      in
      The geometry instance id of the object to "move to".
    • pAnimationDurationInMilliseconds: number
      in
      The duration of the animation in milliseconds. 0 means immediate movement.

    Returns void

  • Changes the camera position to fit the given geometry to the screen.

    This is equivalent to a fixBox with the AABB of the given geometry.

    The default animation duration is 350 ms.

    This is equivalent to :

    fitGeometry(pGeometryInstanceId,350);
    

    Please see [fitBox](CameraManagerInterface.html#fitBox).

    Parameters

    • pGeometryInstanceId: number
      in
      The geometry instance id of the object to "move to".

    Returns void

  • Restores the CameraManagerInterface state to the one when toJson was called.

    pJson should be the result of a toJson call, and restores the CameraManagerInterface data (such as location, orientation, coi and reference frame).

    Returns

    true if the json is parsed and if its content is correct.

    Parameters

    • pJson: string
      in
      The result from a previous [toJson](CameraManagerInterface.html#toJson) call to restore the camera parameters.

    Returns boolean

  • Gets the current frame of the camera.

    Parameters

    • pDirVector: undefined | Vector3
      out
      The directional vector of the camera.
    • Optional pUpVector: Vector3
      out
      The up vector of the camera.
    • Optional pRightVector: Vector3
      out
      The right vector of the camera.

    Returns void

  • Gets the camera location.

    Returns

    pOut.

    Parameters

    • pOut: Vector3
      out
      The camera location.

    Returns Vector3

  • Gets the current center of interest of the camera.

    The camera rotates around this point.

    Returns

    pOut.

    Parameters

    • pOut: Vector3
      out
      The current center of interest.

    Returns Vector3

  • Gets the sensibility of the controller.

    The controller sensitivity is 1 by default.

    A value greater than 1 increases the speed of the camera, a value lower than 1 decreases the speed of the camera. A zero or negative value is invalid.

    Returns the sensitivity of the camera controller in the range ]0,+∞[.

    Returns

    The actual sensitivity of the camera controller.

    Returns number

  • Gets a Json object witch contains specific settings for the specified camera mode.

    Returns

    A copy of the json based settings for the given controller.

    Parameters

    Returns Object

  • Gets the distance from the camera to the far view plane.

    Returns

    The distance from the camera to the far view plane.

    See

    ViewFrustum

    Returns number

  • Gets the distance from the camera to the near view plane.

    Returns

    The distance from the camera to the near view plane.

    See

    ViewFrustum

    Returns number

  • Gets the DMU main vectors.

    This will get the orientation of the orientation cube (FRONT, TOP etc).

    Parameters

    • pFrontDir: undefined | Vector3
      out
      The current front vector of the scene (if set to undefined, no change).
    • Optional pTopDir: Vector3
      out
      The current up vector of the scene (if set to undefined, no change).

    Returns void

  • Gets the frustum values of the camera.

    Returns

    true if pFrustum is a number array, or if pFrustum is a Float32Array of 6 values.

    See

    ViewFrustum

    Parameters

    • pFrustum: number[] | Float32Array
      out
      The frustum values will be copied there.

    Returns boolean

  • Gets the HTML representation of the navigation cube.

    You may change its look and feel.

    If no view is set, then returns undefined.

    Returns

    The HTML representation of the navigation cube or undefined if no view is set.

    Returns undefined | HTMLElement

  • Gets the "distance" to the right view plane.

    Returns

    The "distance" to the right view plane.

    See

    ViewFrustum

    Returns number

  • Gets the "distance" to the left view plane.

    Returns

    The "distance" to the left view plane.

    See

    ViewFrustum

    Returns number

  • Gets the "distance" to the top view plane.

    Returns

    The "distance" to the top view plane.

    See

    ViewFrustum

    Returns number

  • Gets the "distance" to the bottom view plane.

    Returns

    The "distance" to the bottom view plane.

    See

    ViewFrustum

    Returns number

  • (WebXR) Gets the InfiniteXRReferenceSpace that represents the current orientation / position of the camera.

    getXRReferenceFrame can be called with the WebXR api to make some computations on inputs.

    /** 
    * Sample to illustrate using a webxr session.
    */
    import { InfiniteEngineInterface, InfiniteEngineInterfaceSignal, InfiniteEvent, InfiniteXRSession, CameraManagerInterfaceSignal, InfiniteXRReferenceSpace } from 'generated/documentation/appinfiniteapi';

    // We try to make a screenshot when all data is loaded

    // created previously the 3D engine
    let lInfiniteEngine: InfiniteEngineInterface;
    // the webXR session
    let lCurSession : InfiniteXRSession;

    // store the XRSession when ready
    lInfiniteEngine.addEventListener(
    InfiniteEngineInterfaceSignal.XRSessionReady,
    (pEvent: InfiniteEvent) : void =>
    {
    lCurSession = pEvent.attachments;
    }
    );

    // make some fancy things on camera changes
    // we may have used InfiniteEngineInterfaceSignal.DisplayDone
    // to be called each frame
    lInfiniteEngine.getCameraManager().addEventListener(
    CameraManagerInterfaceSignal.CameraLocationChanged,
    (_pEvent: InfiniteEvent) : void =>
    {
    if (!lCurSession)
    {
    return;
    }
    const lXRRefSpace : InfiniteXRReferenceSpace | undefined = lInfiniteEngine.getCameraManager().getXRReferenceFrame();
    if (!lXRRefSpace)
    {
    return;
    }
    // make some computations with XRSession inputs
    console.log(lCurSession.inputSources.length);
    }
    );

    // bind the 3D rendering to the div (should have been done earlier :) )
    lInfiniteEngine.setView(undefined, { type: 'webxr', options: {} });

    Please cast InfiniteXRReferenceSpace to XRReferenceSpace.

    Returns

    The current XRReferenceSpace of the camera, or undefined if no XRSession is started (please refer to setView).

    Returns any

  • Tells if the EventDispatcher has such a callback registered for the given event type.

    Returns

    true if such a listener is installed for the given type of event.

    Parameters

    • pType: string
      in
      The type of the event to test.
    • pListener: tListenerCallback
      in
      The listener function that gets tested.

    Returns boolean

  • Tells if the camera is moving at the current time.

    Returns

    true if a camera animation is running at the moment.

    Returns boolean

  • Tells if the CameraManagerInterface prevents the camera from rotating around the up-axis (rolling).

    isConstraintUpAxis is true as default.

    Returns

    true if the CameraManagerInterface prevents the camera from rolling.

    Returns boolean

  • Tells if the navigation cube is enabled (i.e. it responds to user inputs).

    The navigation cube is enabled by default.

    The navigation cube is an html widget located on the bottom right of the 3d rendering area, which helps the user knowing its current orientation. Information like FRONT, LEFT etc are displayed.

    Returns

    true if the navigation cube is enabled.

    Returns boolean

  • Tells if the navigation cube is visible.

    The navigation cube is visible by default.

    The navigation cube is an html widget located on the bottom right of the 3d rendering area, which helps the user knowing its current orientation. Information like FRONT, LEFT etc are displayed.

    Returns

    true if the navigation cube is visible.

    Returns boolean

  • Sets the position of the center of interest (COI), the camera will turn to look at the point without changing its location.

    This function also sets the center of interest of the CameraManagerInterface. The default animation duration is 250 ms.

    Parameters

    • pCenterOfInterest: Vector3
      in
      The new center of interest.
    • pAnimationDurationInMilliseconds: number
      in
      The duration of the animation in milliseconds (default value is 250). 0 means immediate movement.

    Returns void

  • Sets the position of the center of interest (COI), the camera will turn to look at the point without changing its location.

    This function also sets the center of interest of the CameraManagerInterface.

    The default animation duration is 250 ms.

    Parameters

    • pCenterOfInterest: Vector3
      in
      The new center of interest.

    Returns void

  • Sets the position and direction of the camera.

    The camera orientation will be set on a virtual plane composed of the given direction and the reference frame of the camera.

    Parameters

    • pPosition: Vector3
      in
      The position of the camera.
    • pDirection: Vector3
      in
      The direction of the camera, up and right vectors will be calculated accordingly.
    • pAnimationDurationInMilliseconds: number
      in
      The duration of the animation in milliseconds. 0 means immediate movement.

    Returns void

  • Sets the position and direction of the camera.

    The camera orientation will be set on a virtual plane composed of the given direction and the reference frame of the camera.

    The default animation duration is 350 ms.

    This is equivalent to :

    moveTo(pPosition,pDirection,350);
    

    Up and right vectors will be recalculated.

    Parameters

    • pPosition: Vector3
      in
      The position of the camera.
    • pDirection: Vector3
      in
      The direction of the camera, up and right vectors will be calculated accordingly.

    Returns void

  • Removes a listener from an event type.

    If no such listener is found, then the function returns false and does nothing. You must use the exact parameters that were used in addEventListener to actually remove the listener.

    Returns

    true if the callback was removed else false.

    Parameters

    • pType: string
      in
      The type of the listener that gets removed.
    • pListener: tListenerCallback

      The listener function that gets removed.

    • pObject: undefined | Object

      The listener object that was used when addEventListener was called.

    Returns boolean

  • Removes a listener from an event type.

    If no such listener is found, then the function returns false and does nothing. You must use the exact parameters that were used in addEventListener to actually remove the listener.

    Returns

    true if the callback was removed else false.

    Parameters

    • pType: string
      in
      The type of the listener that gets removed.
    • pListener: tListenerCallback

      The listener function that gets removed.

    Returns boolean

  • Removes a listener by its id.

    If no such listener is found, then the function returns false and does nothing. You must use the return value of addEventListener to actually remove the listener.

    Returns

    true if the callback was removed else false.

    Parameters

    • pId: string
      in
      The id returned by the call to [addEventListener](CameraManagerInterface.html#addEventListener) that you want to remove.

    Returns boolean

  • Resets the camera position to fit the entire scene.

    The current orientation of the camera and the center of the DMU are used to get a virtual line. The camera changes its position to get on that line, its orientation is unchanged. The camera position is set along this line to maximize the drawing of the DMU, without any loss of content.

    This is actually a fitBox to the AABB of the DMU.

    Parameters

    • pAnimationDurationInMilliseconds: number
      in
      The duration of the animation in milliseconds. 0 means immediate movement.

    Returns void

  • Resets the camera position to fit the entire scene.

    The current orientation of the camera and the center of the DMU are used to get a virtual line. The camera changes its position to get on that line, its orientation is unchanged. The camera position is set along this line to maximize the drawing of the DMU, without any loss of content.

    The default animation duration is 350 ms.

    This is equivalent to :

    resetCamera(350);
    

    This is actually a fitBox to the AABB of the DMU.

    Returns void

  • Sets the camera controller mode to use when processing user inputs.

    Returns

    true if the controller mode has changed.

    Parameters

    Returns boolean

  • Sets the camera frame (orientation) of the camera.

    Warning, the three vectors must be orthogonal between them.

    Returns

    false if the three vectors do not represent an orthogonal coordinate system or at least one vector is not normalized, else true.

    Parameters

    • pDirVector: Vector3
      in
      The new camera direction.
    • pUpVector: Vector3
      in
      The new camera up.
    • pRightVector: Vector3
      in
      The new camera right.

    Returns boolean

  • Sets the camera location.

    The current orientation of the camera is left unchanged.

    Parameters

    • pLocation: Vector3
      in
      The location of the camera.

    Returns void

  • Sets the camera location.

    The current orientation of the camera is changed according to the current mode. For example, if the controller mode is CCM_ORBIT or CCM_EXAMINE, the camera frame is set according to the current Center Of Interest.

    Parameters

    • pLocation: Vector3
      in
      The location of the camera.
    • pChangeOrientationAccordingToControllerMode: boolean
      in
      If true, and if the controller mode has a COI, then the camera orientation is set from this COI.

    Returns void

  • Sets if the CameraManagerInterface should prevent the camera from rotating around the up-axis (rolling).

    setConstraintUpAxis is true as default.

    Returns

    true if the call changed the constraint.

    Parameters

    • pConstraint: boolean
      in
      If true, the camera cannot roll.

    Returns boolean

  • Specifies the sensibility of the controller.

    The controller sensitivity is 1 by default.

    A value greater than 1 will increase the speed of the camera, a value lower than 1 will decrease the speed of the camera. Setting a zero or negative value is invalid.

    Returns true if the sensitivity is valid and if the sensitivity was changed.

    Returns

    true if pSensitivity is strictly superior to 1.

    Parameters

    • pSensitivity: number
      in
      the new sensitivity of the camera (1 by default).

    Returns boolean

  • Sets the new custom settings for the given controller mode.

    Returns

    true if the settings object is valid and set.

    Parameters

    • pCustomSettings: Object
      in
      The json based settings for the given controller.
    • pCameraMode: CameraControllerMode
      in
      The camera mode to change.

    Returns boolean

  • Sets the DMU main vectors.

    This will set the orientation of the orientation cube (FRONT, TOP etc) and also sets the up vector of the DMU, which affects the way the camera is managed, since the camera needs a top reference when rotating around an object.

    Parameters

    • pFrontDir: Vector3
      in
      The new front vector of the scene.
    • pTopDir: Vector3
      in
      The new up vector of the scene.

    Returns void

  • Sets the navigation cube visible.

    The navigation cube is visible by default.

    The navigation cube is an html widget located on the bottom right of the 3d rendering area, which helps the user knowing its current orientation. Information like FRONT, LEFT etc are displayed.

    Parameters

    • pVisible: boolean
      in
      The navigation cube is visible if true else it is hidden.

    Returns void

  • (WebXR) Enables/Disables the default WebXR controllers behavior.

    Parameters

    • pLeftControllerEnabled: boolean
      in
      If true, the left controller is enabled.
    • pRightControllerEnabled: boolean
      in
      If true, the right controller is enabled.

    Returns void

  • Saves all camera manager data (such as location, orientation, coi and reference frame) to a json object, as a string.

    Returns

    The json representation of the current camera parameters.

    Returns string

  • Changes the camera location to zoom in the defined 2D screen region rectangle.

    Returns

    true if the controller accepts to move to the region.

    Parameters

    • pRegion: Rectangle
      in
      The screen region to zoom in.

    Returns boolean