Katana Plug-in APIs 0.1

FnViewportCameraSuite.h

00001 // Copyright (c) 2017 The Foundry Visionmongers Ltd. All Rights Reserved.
00002 
00003 #ifndef FNVIEWER_FNVIEWPORTCAMERASUITE_H
00004 #define FNVIEWER_FNVIEWPORTCAMERASUITE_H
00005 
00006 extern "C"
00007 {
00008     typedef struct FnViewportCameraPluginStruct* FnViewportCameraPluginHandle;
00009     typedef struct FnViewportCameraHostStruct* FnViewportCameraHostHandle;
00010 
00011     struct FnViewportPluginSuite_v2;  // Forward declaration
00012 
00013     #include <FnAttribute/suite/FnAttributeSuite.h>
00014     #include <FnGeolib/suite/FnGeolibRuntimeSuite.h>
00015 
00016     #include "FnViewportSuite.h"
00017 
00018     #define FnViewportCameraPluginSuite_version 2
00019     #define FnViewportCameraHostSuite_version 2
00020 
00021     // Client Suites:
00022 
00023     struct FnViewportCameraPluginSuite_v1 // old version
00024     {
00025         FnViewportCameraPluginHandle (*create)(
00026             FnViewportCameraHostHandle hostHandle);
00027 
00028         void (*destroy)(FnViewportCameraPluginHandle handle);
00029         int (*getCameraTypeID)(FnViewportCameraPluginHandle handle);
00030         void (*setViewportDimensions)(FnViewportCameraPluginHandle handle,
00031             unsigned int width, unsigned int height);
00032         void (*setOption)(FnViewportCameraPluginHandle handle, uint64_t optionId,
00033             FnAttributeHandle attr);
00034         FnAttributeHandle (*getOption)(FnViewportCameraPluginHandle handle,
00035             uint64_t optionId);
00036         void (*translate)(FnViewportCameraPluginHandle handle, double x,
00037             double y, double z);
00038         void (*rotate)(FnViewportCameraPluginHandle handle, double x, double y,
00039             double z);
00040         void (*setup)(FnViewportCameraPluginHandle handle, FnAttributeHandle attr);
00041         FnAttributeHandle (*asAttribute)(FnViewportCameraPluginHandle handle);
00042         bool (*getPointOnPlane)(FnViewportCameraPluginHandle handle, int x, int y,
00043             const double originX, const double originY, const double originZ,
00044             const double normalX, const double normalY, const double normalZ,
00045             double* intersectionX, double* intersectionY, double* intersectionZ);
00046         void (*projectObjectIntoWindow)(FnViewportCameraPluginHandle handle,
00047             const double objectX, const double objectY, const double objectZ,
00048             double* windowX, double* windowY, double* windowZ);
00049         void (*projectWindowIntoObject)(FnViewportCameraPluginHandle handle,
00050             const double windowX, const double windowY, const double windowZ,
00051             double* objectX, double* objectY, double* objectZ);
00052     };
00053 
00054     struct FnViewportCameraPluginSuite_v2
00055     {
00056         FnViewportCameraPluginHandle (*create)(
00057             FnViewportCameraHostHandle hostHandle);
00058 
00059         void (*destroy)(FnViewportCameraPluginHandle handle);
00060         int (*getCameraTypeID)(FnViewportCameraPluginHandle handle);
00061         void (*setViewportDimensions)(FnViewportCameraPluginHandle handle,
00062             unsigned int width, unsigned int height);
00063         void (*setOption)(FnViewportCameraPluginHandle handle, uint64_t optionId,
00064             FnAttributeHandle attr);
00065         FnAttributeHandle (*getOption)(FnViewportCameraPluginHandle handle,
00066             uint64_t optionId);
00067         void (*translate)(FnViewportCameraPluginHandle handle, double x,
00068             double y, double z);
00069         void (*rotate)(FnViewportCameraPluginHandle handle, double x, double y,
00070             double z);
00071         void (*setup)(FnViewportCameraPluginHandle handle, FnAttributeHandle attr);
00072         FnAttributeHandle (*asAttribute)(FnViewportCameraPluginHandle handle);
00073         bool (*getPointOnPlane)(FnViewportCameraPluginHandle handle, int x, int y,
00074             const double originX, const double originY, const double originZ,
00075             const double normalX, const double normalY, const double normalZ,
00076             double* intersectionX, double* intersectionY, double* intersectionZ);
00077         void (*projectObjectIntoWindow)(FnViewportCameraPluginHandle handle,
00078             const double objectX, const double objectY, const double objectZ,
00079             double* windowX, double* windowY, double* windowZ);
00080         void (*projectWindowIntoObject)(FnViewportCameraPluginHandle handle,
00081             const double windowX, const double windowY, const double windowZ,
00082             double* objectX, double* objectY, double* objectZ);
00083         // New functions in v2:
00084         void (*startInteraction)(FnViewportCameraPluginHandle handle);
00085         void (*endInteraction)(FnViewportCameraPluginHandle handle);
00086 
00087         void(*setDirty)(FnViewportCameraPluginHandle handle,
00088             int32_t dirtyBits);
00089 
00090         void (*getRay)(FnViewportCameraPluginHandle handle,
00091             int x, int y,
00092             double* posX, double* posY, double* posZ,
00093             double* dirX, double* dirY, double* dirZ);
00094     };
00095 
00096     // Host Suite:
00097 
00098     struct FnViewportCameraHostSuite_v1
00099     {
00100 
00101         const double* (*getViewMatrix)(FnViewportCameraHostHandle handle);
00102         void (*setViewMatrix)(FnViewportCameraHostHandle handle,
00103             const double* matrix);
00104 
00105         const double* (*getProjectionMatrix)(FnViewportCameraHostHandle handle);
00106         void (*setProjectionMatrix)(FnViewportCameraHostHandle handle,
00107             const double* matrix);
00108 
00109         double (*getCenterOfInterest)(FnViewportCameraHostHandle handle);
00110         void (*setCenterOfInterest)(FnViewportCameraHostHandle handle,
00111             double coi);
00112 
00113         double (*getFOV)(FnViewportCameraHostHandle handle);
00114         void (*setFOV)(FnViewportCameraHostHandle handle, double fov);
00115 
00116         double (*getOrthographicWidth)(FnViewportCameraHostHandle handle);
00117         void (*setOrthographicWidth)(FnViewportCameraHostHandle handle,
00118             double width);
00119 
00120         void (*getNearFar)(FnViewportCameraHostHandle handle, double *near,
00121             double *far);
00122         void (*setNearFar)(FnViewportCameraHostHandle handle, double near,
00123             double far);
00124 
00125         void (*getScreenWindow)(FnViewportCameraHostHandle handle,
00126             double *left, double *right, double *bottom, double *top);
00127         void (*setScreenWindow)(FnViewportCameraHostHandle handle,
00128             double left, double right, double bottom, double top);
00129 
00130         void (*getOrigin)(FnViewportCameraHostHandle handle, double* x,
00131             double* y, double* z);
00132         void (*getDirection)(FnViewportCameraHostHandle handle, double* x,
00133             double* y, double* z);
00134         void (*getUp)(FnViewportCameraHostHandle handle, double* x, double* y,
00135             double* z);
00136         void (*getLeft)(FnViewportCameraHostHandle handle, double* x, double* y,
00137             double* z);
00138 
00139         void (*getViewport)(
00140             FnViewportCameraHostHandle handle,
00141             FnViewportHostHandle* viewportHostHandle,
00142             FnViewportPluginHandle* viewportPluginHandle,
00143             FnViewportPluginSuite_v2** viewportPluginSuite);
00144     };
00145 
00146 
00147     struct FnViewportCameraHostSuite_v2
00148     {
00149 
00150         const double* (*getViewMatrix)(FnViewportCameraHostHandle handle);
00151         void (*setViewMatrix)(FnViewportCameraHostHandle handle,
00152             const double* matrix);
00153 
00154         const double* (*getProjectionMatrix)(FnViewportCameraHostHandle handle);
00155         void (*setProjectionMatrix)(FnViewportCameraHostHandle handle,
00156             const double* matrix);
00157 
00158         double (*getCenterOfInterest)(FnViewportCameraHostHandle handle);
00159         void (*setCenterOfInterest)(FnViewportCameraHostHandle handle,
00160             double coi);
00161 
00162         double (*getFOV)(FnViewportCameraHostHandle handle);
00163         void (*setFOV)(FnViewportCameraHostHandle handle, double fov);
00164 
00165         double (*getOrthographicWidth)(FnViewportCameraHostHandle handle);
00166         void (*setOrthographicWidth)(FnViewportCameraHostHandle handle,
00167             double width);
00168 
00169         void (*getNearFar)(FnViewportCameraHostHandle handle, double *near,
00170             double *far);
00171         void (*setNearFar)(FnViewportCameraHostHandle handle, double near,
00172             double far);
00173 
00174         void (*getScreenWindow)(FnViewportCameraHostHandle handle,
00175             double *left, double *right, double *bottom, double *top);
00176         void (*setScreenWindow)(FnViewportCameraHostHandle handle,
00177             double left, double right, double bottom, double top);
00178 
00179         void (*getOrigin)(FnViewportCameraHostHandle handle, double* x,
00180             double* y, double* z);
00181         void (*getDirection)(FnViewportCameraHostHandle handle, double* x,
00182             double* y, double* z);
00183         void (*getUp)(FnViewportCameraHostHandle handle, double* x, double* y,
00184             double* z);
00185         void (*getLeft)(FnViewportCameraHostHandle handle, double* x, double* y,
00186             double* z);
00187 
00188         void (*getViewport)(
00189             FnViewportCameraHostHandle handle,
00190             FnViewportHostHandle* viewportHostHandle,
00191             FnViewportPluginHandle* viewportPluginHandle,
00192             FnViewportPluginSuite_v2** viewportPluginSuite);
00193 
00194         int (*hasLocationPath)(FnViewportCameraHostHandle handle);
00195 
00196         const char* (*getLocationPath)(FnViewportCameraHostHandle handle);
00197 
00198         void (*setLocationPath)(FnViewportCameraHostHandle handle,
00199             const char* locationPath);
00200 
00201         bool (*isInteractionDisabled)(FnViewportCameraHostHandle handle);
00202         void (*disableInteraction)(FnViewportCameraHostHandle handle,
00203             bool disabled);
00204     };
00205 
00206 }
00207 
00208 #endif //FNVIEWER_FNVIEWPORTCAMERASUITE_H
 All Classes Functions Variables Typedefs Enumerations Enumerator