18
FVS 2010 FvOverlay Interfaces 1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute http://www.falconview.org http://www.defense.gatech.edu/

FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

Embed Size (px)

Citation preview

Page 1: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 1

The FalconView Overlay Wizard

Presenters:George MenhornDaniel Longhurst

Georgia Tech Research Institutehttp://www.falconview.orghttp://www.defense.gatech.edu/

Page 2: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FalconView Overlay Wizard

• What is the FalconView Overlay Wizard?

• Can I start using the tool?• FvwWizards

• What is a plug-in overlay?• GetTheSdk

FVS 2010 FalconView Overlay Wizard 2

Page 3: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 3

Next Generation plug-in overlays• FalconView 4.2.1+• Why a “next generation”?

• Extended capabilities• Easier to write a plug-in overlay• More efficient• Future proofed

• The remaining internal FalconView overlays will be migrated out to plug-ins in 5.1

Page 4: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

Overlay Types Configuration File• FvOverlayTypes.xml<OverlayType

displayName="Geodata“ iconFile="ovlmgr\geodata.ico"

enabled="true“ defaultRestoreAtStartup="false"

uid="6EA5B9FC-0344-4f8d-9F2F-F6B1CB0D03D7">

<FileOverlayTypeDescriptor defaultDir="FOLDERID_PublicDocuments\PFPS\data\Geodata" defaultFileExtension=".kml" openFileDialogFilter="KML files (*.kml;*.kmz)|*.kml;*.kmz|GPX files (*.gpx)|*.gpx|ArcInfo (*.E00)|*.E00|GeoRSS (*.rss)|*.rss|GML files (*.gml)|*.gml" saveFileDialogFilter="KML files (*.kml;*.kmz)|*.kml;*.kmz" />

<OverlayFactory overlayClsid="641E4D02-4A04-4315-93F3-F32FBFC85E21" />

</OverlayType>

FVS 2010 FvOverlay Interfaces 4

Page 5: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 5

• IFvOverlay – the only required interface• Read only property for overlay unique id• Read/write property for visibility• Receives overlay event sink

• IPropertyNotifySink• IDisplayChangeNotifyEvents• IMapChangeNotifyEvents

• Lifetime of object corresponds with lifetime of overlay: Initialize / Terminate

Overlay Objects

Page 6: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

File-based overlay types• If a FileOverlayTypeDescriptor is

specified in the configuration file, then implementing IFvOverlayPersistence is required

• Methods: FileNew, FileOpen, and FileSaveAs

• Properties: FileSpecification (read-only), HasBeenSaved, IsDirty, IsReadOnly

FVS 2010 FvOverlay Interfaces 6

Page 7: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

Overlay Rendering• Implement IFvOverlayRenderer on the

overlay object

• OnDraw called to render to a surface• Screen• Printer• DIB

• Receive current map projection for geographic to projected coordinate system transforms

FVS 2010 FvOverlay Interfaces 7

Page 8: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

User Interface Events• Implement IFvOverlayUIEvents on the overlay

object• Mouse move, mouse buttons down/up, mouse

wheel, double-click, and key up/down events• Events are routed from the top-most overlay in

the overlay stack to the bottom-most overlay until an overlay handles the event

• Implement IFvOverlayUIEventRoutingOverrides to override default event routing behavior

FVS 2010 FvOverlay Interfaces 8

Page 9: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

Context Menu Support• Implement IFvOverlayContextMenu on the

overlay object• AppendMenuItems called when user right-clicks

on the map, passed an IFvContextMenu• Call AppendMenuItem passing in a context menu

item object• Context menu item object should implement the

IFvContextMenuItem interface• MenuItemEnabled• MenuItemName• MenuItemSelected

FVS 2010 FvOverlay Interfaces 9

Page 10: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

Playback events• IFvPlaybackEventsObserver

• Notifications of playback started/stopped, playback time changed, playback rate changed

• IFvPlaybackTimeInterval

• Used to specify an time interval for overlay

FVS 2010 FvOverlay Interfaces 10

Page 11: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

Copy and Paste Operations• IFvOverlayCopyPaste

• Copy and paste from “clipboard”

• Handling dropping of IDataObject

FVS 2010 FvOverlay Interfaces 11

Page 12: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

Snappable Points• IFvOverlaySnappablePoints

• Allow other overlays to snap-to objects in your overlay

FVS 2010 FvOverlay Interfaces 12

Page 13: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 13

• Other optional interfaces and their capabilities

• Render to the base map IFvOverlayBaseMapRenderer• Enumeration of overlay IFvOverlayElement

elements IFvOverlayElementEnumerator• Point Export IFvOverlayExportablePoints• Overlay Type Override IFvOverlayTypeOverrides• Vertical View Rendering IFvOverlayVerticalViewRenderer

IFvOverlayVerticalViewUIEvents

FalconView 4.2.1 interfaces

Page 14: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 14

• Editor Object• single object created per overlay type• Manages the editor state, UI, and toolbar

• IFvOverlayEditor• ActivateEditor• DeactivateEditor• DefaultCursor• EditorToolbar• OnToolbarButtonClick

Optional Objects

Page 15: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 15

• Property Page

• FvOverlayPropertyPages.xml

• IFvOverlayPropertyPage• OnCreate• OnApply

Optional Objects

Page 16: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 16

• Runtime Enable• Allow runtime disabling of an overlay

i.e. Required resources not available (e.g., ArcEngine)

• Most overlays will not require this

• IFvOverlayTypeRuntimeEnabled• IsOverlayTypeEnabled

Optional Objects

Page 17: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 17

• File Overlay Type Descriptor• Runtime specification of file specifics• Normally specified in configuration

• IFvFileOverlayTypeDescriptor• GetDefaultDirectory• GetDefaultFileExtension• GetFileDialogFilter

Optional Objects

Page 18: FVS 2010 FvOverlay Interfaces1 The FalconView Overlay Wizard Presenters: George Menhorn Daniel Longhurst Georgia Tech Research Institute

FVS 2010 FvOverlay Interfaces 18

• Custom Initializer• Optionally implemented to initialize an

overlay type during the startup sequence• Unusual object ~ can slow startup time

• IFvCustomInitializer• InitializeAtStartup(

IFvSplashWnd pFvSplashWnd, IFvOverlayManager

pFvOverlayManager)• TerminateAtShutdown()

Optional Objects