|
Katana Plug-in APIs 0.1
|
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
1.7.3