Skip to content

Commit

Permalink
WIP: Extend API with "presentation state" support
Browse files Browse the repository at this point in the history
This will expose a sorted list of slice/rendering "views" that clients can utilize to reconstruct slice/rendering views that are similar to the views shown on screen when saving the original data.

Out of scope for now:
* The on-screen layout is currently _not_ exposed. Clients will need to handle positioning themselves, which might not match the original layout.
* Perspective projections is not currently supported, only a orthographic cube. Clip-planes is similarly not supported either. Implementers will therefore need to expose the orthographic representation that most closely resembles what is displayed on the original system.
  • Loading branch information
forderud authored and Fredrik Orderud committed Nov 11, 2019
1 parent 93a73ef commit da70506
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
19 changes: 19 additions & 0 deletions Image3dAPI/IImage3d.idl
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,22 @@ cpp_quote("#else")
cpp_quote("static_assert(sizeof(EcgSeries) == 2*8+2*4, \"EcgSeries size mismatch\");")
cpp_quote("#endif")


[object,
oleautomation, // use "automation" marshaler (oleaut32.dll)
uuid(DCAC585F-3EC1-4440-96B6-83090408B027),
helpstring("Interface for retrieving the default slice/rendering 'views' of the 3D data.")]
interface IPresentationState : IUnknown {
[helpstring("Get number of default slice/rendering views.\n"
"Shall return 0 if no default views are available.")]
HRESULT GetViewCount ([out, retval] unsigned int * count);

[helpstring("Get slice/rendering view by index.\n"
"The views shall by sorted by 'importance'. Clients unable to display all views should therefore display the first 'N' views.\n"
"Slices are indicated by the 'dir3' vector being empty, whereas it is non-empty for renderings.")]
HRESULT GetView ([in] unsigned int index, [out, retval] Cart3dGeom * view);
};

[ object,
oleautomation, // use "automation" marshaler (oleaut32.dll)
uuid(D483D815-52DD-4750-8CA2-5C6C489588B6),
Expand All @@ -297,6 +313,9 @@ interface IImage3dSource : IUnknown {
[helpstring("Get ECG data if available [optional]. Shall return S_OK with an empty EcgSeries if EGC is not available.")]
HRESULT GetECG ([out,retval] EcgSeries * ecg);

[helpstring("Get presentation state corresponding to the 'views' shown on screen when the data was originally stored [optional].")]
HRESULT GetPresentationState (IPresentationState * pstate);

[helpstring("")]
HRESULT GetProbeInfo ([out,retval] ProbeInfo * probe);

Expand Down
1 change: 1 addition & 0 deletions Image3dAPI/UNREGISTER_Image3dAPI.bat
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ for %%P in (32 64) do (
:: IImage3d.idl
reg delete "HKCR\Interface\{D483D815-52DD-4750-8CA2-5C6C489588B6}" /f /reg:%%P 2> NUL
reg delete "HKCR\Interface\{CD30759B-EB38-4469-9CA5-4DF75737A31B}" /f /reg:%%P 2> NUL
reg delete "HKCR\Interface\{DCAC585F-3EC1-4440-96B6-83090408B027}" /f /reg:%%P 2> NUL
)

::pause

0 comments on commit da70506

Please sign in to comment.