DK for Delphi | GisViewer.TGIS_Viewer | Classes | Constructors | Fields | Methods | Properties | Events
Encapsulation of the generic viewer. This viewer will not be accessed directly. Instead you can use TGIS_ViewerWnd, TGIS_ViewerBmp, or any future successors.
// Delphi type TGIS_Viewer = class( TGIS_UncountedInterfacedObject, IGIS_Viewer ) end;
// C++ Builder class PASCALIMPLEMENTATION TGIS_Viewer : public TGIS_UncountedInterfacedObject { };
| Name | Visibility | Description | |
|---|---|---|---|
| Create | public | Standard constructor. | |
| Name | Visibility | Description | |
|---|---|---|---|
| asapInterrupted | protected | Interrupte ASAP | |
| bPaintTexture | protected | True current paint mode is done for preparing 3D texture. | |
| bUpgradable | protected | Project can be upgraded to a new version. | |
| bUponOpen | protected | Open function call. | |
| FOnBusy | protected | Busy event. | |
| FOnExtentChange | protected | ExtentChange event. | |
| FOnHelp | protected | Handler for Help event. | |
| FOnLayerAdd | protected | LayerAdd event. | |
| FOnLayerDelete | protected | LayerDelete event. | |
| FOnPaintException | protected | PaintException event. | |
| FOnPassword | protected | Will be fired upon opening layer to resolve any username/password | |
| FOnProjectClose | protected | On project close event. | |
| FOnProjectOpen | protected | On project open event. | |
| FOnVisibleExtentChange | protected | VisibleExtentChange event. | |
| FOnZoomChange | protected | ZoomChange event. | |
| hourglassInterrupted | protected | Hourglass state variable. | |
| hourglassInterval | protected | Hourglass state variable. | |
| hourglassProgressive | protected | Hourglass state variable. | |
| hourglassState | protected | Hourglass state variable. | |
| hourglassVisible | protected | Hourglass state variable. | |
| iLastHash | protected | Hash of last opened project. | |
| iUponSave | protected | Saved level called - to avoid save-upon-save case. | |
| lastPaint | protected | State (zoom, visible extent etc) after last paint. | |
| lstSubscribers | protected | notification subscribers list. | |
| oldColor | protected | Color of screen to be restored after project changes. | |
| oldProperties | protected | Old viewer properties state (to restore upon Close) | |
| originalViewport | protected | Saved originalViewport value. | |
| rotateCos | protected | Helper for rotations. | |
| rotateSin | protected | Helper for rotations. | |
| unrotateCos | protected | Helper for rotations. | |
| unrotateSin | protected | Helper for rotations. | |
| Name | Visibility | Description | |
|---|---|---|---|
| Add | public | Add a layer to the Viewer. (Implements IGIS_Viewer.Add) |
|
| AddHierarchy | public | Read hierarchy and build groups with layers. (Implements IGIS_Viewer.AddHierarchy) |
|
| AssignedBusyEvent | public | Reference to a help event handler assigned to the Viewer. (Implements IGIS_Viewer.AssignedBusyEvent) |
|
| AssignedHelpEvent | public | Reference to a busy event handler assigned to the Viewer. (Implements IGIS_Viewer.AssignedHelpEvent) |
|
| AttachLayer | public | Attach layer to the viewer by re-parenting. (Implements IGIS_Viewer.AttachLayer) |
|
| BeginPaintInternal | public | Notify viewer about entering of a paint mode. (Implements IGIS_Viewer.BeginPaintInternal) |
|
| BusyPrepare | public | Prepare BusyEvent for long-term operation. (Implements IGIS_Viewer.BusyPrepare) |
|
| BusyRelease | public | Release Busy state. (Implements IGIS_Viewer.BusyRelease) |
|
| BusyShake | public | Shake Busy state. (Implements IGIS_Viewer.BusyShake) |
|
| CenterViewport | public | Set viewport to the vale when _ptg will be visible on the center of the screen. (Implements IGIS_Viewer.CenterViewport) |
|
| ChangeHash | public | Change hash. (Implements IGIS_Viewer.ChangeHash) |
|
| Close | public | Close a project. (Implements IGIS_Viewer.Close) |
|
| Delete | public | Delete the layer identified by a name. (Implements IGIS_Viewer.Delete) |
|
| doCreate | protected | Called by Create method. | |
| Draw | public | Draw all layers on a current renderer. (Implements IGIS_Viewer.Draw) |
|
| EndPaintInternal | public | Notify viewer about leaving of a paint mode. (Implements IGIS_Viewer.EndPaintInternal) |
|
| FullExtent | public | Calculate the screen origin, zoom, and viewport to place the whole map in the window. (Implements IGIS_Viewer.FullExtent) |
|
| FullExtentZoom | public | Calculates a zoom which places the whole map inside the window (Implements IGIS_Viewer.FullExtentZoom) |
|
| Get | public | Retrieve the layer identified by a name. (Implements IGIS_Viewer.Get) |
|
| GetGrid | public | Fills provided _grid array with values defined by _extent. (Implements IGIS_Viewer.GetGrid) |
|
| GetRenderContext | public | Return current context object. (Implements IGIS_Viewer.GetRenderContext) |
|
| HourglassActive | public | Test is hourglass is active. (Implements IGIS_Viewer.HourglassActive) |
|
| HourglassPrepare | public | Prepare Hourglass cursor for timely operation. (Implements IGIS_Viewer.HourglassPrepare) |
|
| HourglassRelease | public | Release Hourglass. (Implements IGIS_Viewer.HourglassRelease) |
|
| HourglassRestart | public | Restart hourglass timing used for progressive updates. (Implements IGIS_Viewer.HourglassRestart) |
|
| HourglassShake | public | Shake Hourglass. (Implements IGIS_Viewer.HourglassShake) |
|
| Interrupt | public | Will terminate timely operation as soon as possible. (Implements IGIS_Viewer.Interrupt) |
|
| Interrupted | public | Test if any pending operation must be aborted. (Implements IGIS_Viewer.Interrupted) |
|
| InvalidateBasemap | public | Invalidate only basemap layers. (Implements IGIS_Viewer.InvalidateBasemap) |
|
| InvalidateEditor | public | Invalidate editor. (Implements IGIS_Viewer.InvalidateEditor) |
|
| InvalidateExtent(TGIS_Extent) | public | Invalidate an extent for full map redraw (Implements IGIS_Viewer.InvalidateExtent) |
|
| InvalidateExtent(TGIS_Extent; Boolean) | public | Invalidate an extent. (Implements IGIS_Viewer.InvalidateExtent) |
|
| InvalidateSelection | public | Invalidate selection. (Implements IGIS_Viewer.InvalidateSelection) |
|
| InvalidateTopmost | public | Invalidate only topmost layers. (Implements IGIS_Viewer.InvalidateTopmost) |
|
| InvalidateWholeMap | public | Invalidate whole map. (Implements IGIS_Viewer.InvalidateWholeMap) |
|
| Locate(TGIS_Point; Double) | public | Locate a shape that is near _ptg, but is closer than _prec distance. (Implements IGIS_Viewer.Locate) |
|
| Locate(TGIS_Point; Double; Boolean) | public | Locate a shape that is near _ptg, but is closer than _prec distance. (Implements IGIS_Viewer.Locate) |
|
| Locate(TPoint; Integer) | public | Locate a shape that is near _pt, but is closer than _prec distance. (Implements IGIS_Viewer.Locate) |
|
| LocateEx | public | Locate shapes on layers that are near _ptg, but closer than _prec distance. (Implements IGIS_Viewer.LocateEx) |
|
| Lock | public | Lock viewer. (Implements IGIS_Viewer.Lock) |
|
| MapToScreen | public | Converts point coordinates from map related to screen related. (Implements IGIS_Viewer.MapToScreen) |
|
| MapToScreen3D | public | Converts 3D point coordinates from map related to screen related. (Implements IGIS_Viewer.MapToScreen3D) |
|
| MapToScreenEx | public | Converts point coordinates from map related to screen related, but result will be in TGIS_Point. (Implements IGIS_Viewer.MapToScreenEx) |
|
| MapToScreenRect | public | Converts rectangle coordinates from map related to screen related. (Implements IGIS_Viewer.MapToScreenRect) |
|
| MarkModified | public | Mark viewer upon some modifications. (Implements IGIS_Viewer.MarkModified) |
|
| MoveViewport | public | Move the screen origin of the map by delta values. (Implements IGIS_Viewer.MoveViewport) |
|
| MoveViewportEx | public | Move the screen origin of the map by delta values. (Implements IGIS_Viewer.MoveViewportEx) |
|
| MustSave | public | Check if any layer or the project file was modified by editing. (Implements IGIS_Viewer.MustSave) |
|
| NotifyPaintException | public | Transform underlying exception into TGIS_Viewer.OnPaintException (Implements IGIS_Viewer.NotifyPaintException) |
|
| NotifySubscribers | public | Send notification to subscribers. (Implements IGIS_Viewer.NotifySubscribers) |
|
| Open(String) | public | Open project. (Implements IGIS_Viewer.Open) |
|
| Open(String; Boolean) | public | Open project. (Implements IGIS_Viewer.Open) |
|
| OpenEx(TGIS_ConfigAbstract; String) | public | Open project file from the memory. (Implements IGIS_Viewer.OpenEx) |
|
| OpenEx(TGIS_ConfigAbstract; String; Boolean) | public | Open project file from the memory. (Implements IGIS_Viewer.OpenEx) |
|
| PixelsToTwips | public | Convert size from device dependent pixels to device independent Twips (1/1440 inch). (Implements IGIS_Viewer.PixelsToTwips) |
|
| PrintPdf(String) | public | Print current extent to PDF on the default size page. (Implements IGIS_Viewer.PrintPdf) |
|
| PrintPdf(String; Single; Single) | public | Print current extent to PDF. (Implements IGIS_Viewer.PrintPdf) |
|
| PrintPdf(TStream) | public | Print current extent to PDF on the default size page. (Implements IGIS_Viewer.PrintPdf) |
|
| PrintPdf(TStream; Single; Single) | public | Print current extent to PDF. (Implements IGIS_Viewer.PrintPdf) |
|
| RaiseBusyEvent | public | Fire Busy event of a viewer. (Implements IGIS_Viewer.RaiseBusyEvent) |
|
| RaiseHelpEvent | public | Fire Busy event of a viewer. (Implements IGIS_Viewer.RaiseHelpEvent) |
|
| ReadConfig | public | Read all configuration data from project. (Implements IGIS_Viewer.ReadConfig) |
|
| RecalcExtent | public | Calculates a common extent. (Implements IGIS_Viewer.RecalcExtent) |
|
| ReParent | public | Set a new parent for the viewer. (Implements IGIS_Viewer.ReParent) |
|
| ReParentLock | public | Block reparenting. (Implements IGIS_Viewer.ReParentLock) |
|
| ReParentUnlock | public | Unblock reparenting. (Implements IGIS_Viewer.ReParentUnlock) |
|
| Reposition | public | Reposition the map within the component window. (Implements IGIS_Viewer.Reposition) |
|
| RereadConfig | public | Reread all configuration data from project and layer configuration files. (Implements IGIS_Viewer.RereadConfig) |
|
| ResetPPI | public | Allow PPI recalculation. | |
| RestorePaintState | public | Restore and free the current paint state. (Implements IGIS_Viewer.RestorePaintState) |
|
| RevertAll | public | Revert all layers to a file-based original. (Implements IGIS_Viewer.RevertAll) |
|
| RotatedExtent | public | Compute extent (encompassing area of the extent) after the viewer rotation. (Implements IGIS_Viewer.RotatedExtent) |
|
| RotatedPoint | public | Compute position of the point after the viewer rotation. (Implements IGIS_Viewer.RotatedPoint) |
|
| RotatedPoint3D | public | Compute position of the 3D point after the viewer rotation. (Implements IGIS_Viewer.RotatedPoint3D) |
|
| RotatedPoint3D_ref | public | Compute position of the 3D point after the viewer rotation. (Implements IGIS_Viewer.RotatedPoint3D_ref) |
|
| SaveAll | public | Save all layers (parameters and data) (Implements IGIS_Viewer.SaveAll) |
|
| SaveData | public | Save all changes to the data. (Implements IGIS_Viewer.SaveData) |
|
| SaveProject | public | Save current project. (Implements IGIS_Viewer.SaveProject) |
|
| SaveProject(Boolean) | public | Save current project. (Implements IGIS_Viewer.SaveProject) |
|
| SaveProjectAs(String) | public | Save current project under new name. (Implements IGIS_Viewer.SaveProjectAs) |
|
| SaveProjectAs(String; Boolean) | public | Save current project under new name. (Implements IGIS_Viewer.SaveProjectAs) |
|
| SaveProjectAsEx(TGIS_ConfigAbstract; String) | public | Save current project under new name. (Implements IGIS_Viewer.SaveProjectAsEx) |
|
| SaveProjectAsEx(TGIS_ConfigAbstract; String; Boolean) | public | Save current project under new name. (Implements IGIS_Viewer.SaveProjectAsEx) |
|
| ScreenToMap | public | Converts point coordinates from screen related to map related. (Implements IGIS_Viewer.ScreenToMap) |
|
| ScreenToMap3D | public | Converts point coordinates from screen related to map related. (Implements IGIS_Viewer.ScreenToMap3D) |
|
| ScreenToMapEx | public | Converts point coordinates from screen related to map related, but source will be in TGIS_Point. (Implements IGIS_Viewer.ScreenToMapEx) |
|
| ScreenToMapRect(Integer; Integer; Integer; Integer) | public | Converts point coordinates from screen related to map related. | |
| ScreenToMapRect(TRect) | public | Converts rectangle coordinates from screen related to map related. (Implements IGIS_Viewer.ScreenToMapRect) |
|
| SetCSByEPSG | public | Setup Coordinate System to a coordinate system provided by EPSG code. (Implements IGIS_Viewer.SetCSByEPSG) |
|
| SetCSByWKT | public | Setup Coordinate System to a coordinate system provided by WKT string (GEOGCS or PROJCS). (Implements IGIS_Viewer.SetCSByWKT) |
|
| SetCSByWKTFile | public | Setup Coordinate System to a coordinate system provided by file which contains WKT string (GEOGCS or PROJCS). (Implements IGIS_Viewer.SetCSByWKTFile) |
|
| SetViewport | public | Set viewport to a given position. (Implements IGIS_Viewer.SetViewport) |
|
| StorePaintState | public | Store the current paint state. (Implements IGIS_Viewer.StorePaintState) |
|
| Subscribe | public | Add provided control to the notification subscription list. (Implements IGIS_Viewer.Subscribe) |
|
| SynchronizePaint | public | Wait for pending paint operation to be finalized. (Implements IGIS_Viewer.SynchronizePaint) |
|
| TwipsToPixels | public | Convert the size from to device independent Twips (1/1440 inch) to device dependent pixels. (Implements IGIS_Viewer.TwipsToPixels) |
|
| TwipsToPoints | public | Convert the size from to device independent Twips (1/1440 inch) to device points. (Implements IGIS_Viewer.TwipsToPoints) |
|
| Unlock | public | Unlock viewer. (Implements IGIS_Viewer.Unlock) |
|
| Unlock(Boolean) | public | Unlock the viewer but do not redraw (Implements IGIS_Viewer.Unlock) |
|
| UnrotatedExtent | public | Compute original extent of the rotated extent. (Implements IGIS_Viewer.UnrotatedExtent) |
|
| UnrotatedPoint | public | Compute original position of the rotated point. (Implements IGIS_Viewer.UnrotatedPoint) |
|
| UnrotatedPoint3D | public | Compute original position of the rotated 3D point. (Implements IGIS_Viewer.UnrotatedPoint3D) |
|
| UnrotatedPoint3D_ref | public | Compute original position of the rotated 3D point. (Implements IGIS_Viewer.UnrotatedPoint3D_ref) |
|
| UnSubscribe | public | Remove provided control from the notification subscription list. (Implements IGIS_Viewer.UnSubscribe) |
|
| WaitForBackgroundProcesses | public | Wait for any pending background processes that must be finalized before app can continue. (Implements IGIS_Viewer.WaitForBackgroundProcesses) |
|
| WaitForNotBusy | public | Call _proc when viewer will fully end painting process. (Implements IGIS_Viewer.WaitForNotBusy) |
|
| WriteConfig | public | Write all configuration data to the project or layer ini file. (Implements IGIS_Viewer.WriteConfig) |
|
| Name | Visibility | Description | |
|---|---|---|---|
| AutoStyle | published | If True, layers added to the viewer will have a unique style applied; Default is False. (Implements IGIS_Viewer.AutoStyle) |
|
| BigExtent | public | Map extent. (Implements IGIS_Viewer.BigExtent) |
|
| BigExtentMargin | published | Map extent margin. (Implements IGIS_Viewer.BigExtentMargin) |
|
| BusyLevel | public | Level of current busy state. (Implements IGIS_Viewer.BusyLevel) |
|
| BusyText | public | Text related to current busy state. (Implements IGIS_Viewer.BusyText) |
|
| Center | public | Center the screen based on given point. (Implements IGIS_Viewer.Center) |
|
| CenterPtg | public | Point on which Viewer will be centered during Zoom. (Implements IGIS_Viewer.CenterPtg) |
|
| Color | published | Background color. (Implements IGIS_Viewer.Color) |
|
| Copyright | public | Legal notice and product version. (Implements IGIS_Viewer.Copyright) |
|
| CS | public | Coordinate System assigned to the viewer. (Implements IGIS_Viewer.CS) |
|
| CustomData | published | List of custom, user-defined data. (Implements IGIS_Viewer.CustomData) |
|
| CustomPPI | published | Custom resolution in pixels-per-inch. (Implements IGIS_Viewer.CustomPPI) |
|
| DelayedUpdate | public | Delayed update threshold in milliseconds. (Implements IGIS_Viewer.DelayedUpdate) |
|
| Editor | public | Editor context. (Implements IGIS_Viewer.Editor) |
|
| Extent | public | Map extent. (Implements IGIS_Viewer.Extent) |
|
| FileCopyrights | public | List Copyrights (Implements IGIS_Viewer.FileCopyrights) |
|
| FontScale | published | Font magnifying factor in percents. (Implements IGIS_Viewer.FontScale) |
|
| FullDrawExtent | public | Extent of full current/last drawing area including margin and w/o tiling. (Implements IGIS_Viewer.FullDrawExtent) |
|
| Hierarchy | public | Hierarchy list. (Implements IGIS_Viewer.Hierarchy) |
|
| IncrementalPaint | published | Is partial drawing to screen done in incremental mode? (Implements IGIS_Viewer.IncrementalPaint) |
|
| InPaint | public | True if Viewer is busy in Paint procedure. (Implements IGIS_Viewer.InPaint) |
|
| IsBusy | public | True if Viewer is busy. (Implements IGIS_Viewer.IsBusy) |
|
| IsEmpty | public | True if Viewer is empty (no layers). (Implements IGIS_Viewer.IsEmpty) |
|
| IsLocked | public | True if Viewer is in locked state Lock. (Implements IGIS_Viewer.IsLocked) |
|
| IsTopmost | public | True if Viewer has a topmost layer. (Implements IGIS_Viewer.IsTopmost) |
|
| Items | public | All layers. (Implements IGIS_Viewer.Items) |
|
| KeepScale | published | True if a viewer should maintain scale upon resize. (Implements IGIS_Viewer.KeepScale) |
|
| LabelsReg | public | Labels position allocator object. (Implements IGIS_Viewer.LabelsReg) |
|
| Level | public | Sets and gets zoom level for a viewer. (Implements IGIS_Viewer.Level) |
|
| MasterViewer | public | Master Viewer reference. (Implements IGIS_Viewer.MasterViewer) |
|
| MultiUserMode | published | Multiuser mode. (Implements IGIS_Viewer.MultiUserMode) |
|
| OverlappedExtentMargin | public | Overlapped extent margin (in pixels). (Implements IGIS_Viewer.OverlappedExtentMargin) |
|
| Parent | public | Parent viewer. | |
| PPI | public | Rendering resolution in pixels-per-inch. (Implements IGIS_Viewer.PPI) |
|
| ProgressiveUpdate | public | Progressive update threshold in milliseconds. (Implements IGIS_Viewer.ProgressiveUpdate) |
|
| ProjectFile | public | Project file itself as opened in Open procedure. (Implements IGIS_Viewer.ProjectFile) |
|
| ProjectName | public | Project file name as opened in Open procedure. (Implements IGIS_Viewer.ProjectName) |
|
| RestrictedDrag | published | If true, then you can not drag outside the map Extent. (Implements IGIS_Viewer.RestrictedDrag) |
|
| RestrictedExtent | public | Restricted Map extent. (Implements IGIS_Viewer.RestrictedExtent) |
|
| RotationAngle | public | Angle of viewer rotation in radians. (Implements IGIS_Viewer.RotationAngle) |
|
| RotationPoint | public | Point of viewer rotation in map units. (Implements IGIS_Viewer.RotationPoint) |
|
| Scale | public | Setting up and reading the scale factor. (Implements IGIS_Viewer.Scale) |
|
| ScaleAsFloat | public | Setting up and reading the scale factor. (Implements IGIS_Viewer.ScaleAsFloat) |
|
| ScaleAsText | public | Setting up and reading the scale factor as text in format '1:10000'. (Implements IGIS_Viewer.ScaleAsText) |
|
| SelectionGisColor | published | Color used for selecting object. (Implements IGIS_Viewer.SelectionGisColor) |
|
| SelectionOutlineOnly | published | If true then polygons will be marked only with outline not a full fill. (Implements IGIS_Viewer.SelectionOutlineOnly) |
|
| SelectionTransparency | published | Transparency value for selection; if 100 SelectionGisColor will not be transparent. (Implements IGIS_Viewer.SelectionTransparency) |
|
| SelectionWidth | published | Outline width of selection area (>0 in twips, <0 in pixels). (Implements IGIS_Viewer.SelectionWidth) |
|
| SystemPPI | public | System resolution in pixels-per-inch. (Implements IGIS_Viewer.SystemPPI) |
|
| TemporaryScaleInternal | public | Used to force rendering in a different scale then actual. (Implements IGIS_Viewer.TemporaryScaleInternal) |
|
| TemporaryVisibleExtent | public | Used to force rendering labels while drawing with tiles. (Implements IGIS_Viewer.TemporaryVisibleExtent) |
|
| TiledPaint | published | Is partial drawing to screen done in tiled mode? (Implements IGIS_Viewer.TiledPaint) |
|
| UponDestroy | public | True if viewer is upon destruction so some operations (like screen updates) should not be performed (Implements IGIS_Viewer.UponDestroy) |
|
| UseAnimations | published | True if animation upon zooming are allowed. (Implements IGIS_Viewer.UseAnimations) |
|
| UseRTree | published | True if RTree will be used by default upon creation of any layer. (Implements IGIS_Viewer.UseRTree) |
|
| ViewerParent | public | Parent for the current IGIS_Viewer object. (Implements IGIS_Viewer.ViewerParent) |
|
| ViewerParentRoot | public | Parent for the current IGIS_Viewer object. (Implements IGIS_Viewer.ViewerParentRoot) |
|
| Viewport | public | Setting an upper left corner position of the components window within the map. (Implements IGIS_Viewer.Viewport) |
|
| VisibleExtent | public | Extent of the map that is visible in the window. (Implements IGIS_Viewer.VisibleExtent) |
|
| Zoom | public | Setting up and reading the related zoom factor. (Implements IGIS_Viewer.Zoom) |
|
| ZoomEx | public | Setting up and reading the absolute zoom factor. (Implements IGIS_Viewer.ZoomEx) |
|
| Name | Visibility | Description | |
|---|---|---|---|
| BusyEvent | published | Busy event handler. | |
| EditorPointChangeEvent | published | EditorPointChangeEvent event. | |
| EditorPointMoveEvent | published | EditorPointMoveEvent event. | |
| EditorSnapPointEvent | published | EditorSnapPoint event. | |
| ExtentChangeEvent | published | ExtentChanged event. | |
| HelpEvent | published | Help event. | |
| LayerAddEvent | published | LayerAdd event. | |
| LayerDeleteEvent | published | LayerDelete event. | |
| PaintExceptionEvent | published | PaintException event. | |
| PasswordEvent | published | Password event. | |
| ProjectCloseEvent | published | ProjectClose event. | |
| ProjectOpenEvent | published | ProjectOpen event. | |
| VisibleExtentChangeEvent | published | ExtentChanged event. | |
| ZoomChangeEvent | published | ZoomChange event. | |
Available metadata keys:
| Metadata | Values | Default | Description |
|---|---|---|---|
| TGIS_Viewer.UpgradeProject | TRUE FALSE | TRUE | If true, then the old ttkgp project (ini) will be upgraded to the new ttkproject format (xml) |
| TGIS_Viewer.ScaleAtCsOrigin | TRUE FALSE | FALSE | If true, the scale is at the coordinate system origin (normally is calculated at the viewer center) |