Open Reality Reference Guide
fbdevicelayout.h
Go to the documentation of this file.
1 #ifndef __FBDEVICELAYOUT_H__
2 #define __FBDEVICELAYOUT_H__
3 /**************************************************************************
4  Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
5  All Rights Reserved.
6 
7  The coded instructions, statements, computer programs, and/or related
8  material (collectively the "Data") in these files contain unpublished
9  information proprietary to Autodesk, Inc. and/or its licensors, which is
10  protected by Canada and United States of America federal copyright law
11  and by international treaties.
12 
13  The Data may not be disclosed or distributed to third parties, in whole
14  or in part, without the prior written consent of Autodesk, Inc.
15  ("Autodesk").
16 
17  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
18  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
19  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR
20  ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES
21  OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
22  PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT
23  WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR
24  FREE.
25 
26  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
27  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR
28  EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE
29  DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS
30  OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR
31  DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF
32  LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT
33  LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE
34  DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS
35  BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
36 
37 **************************************************************************/
38 
43 #include <kaydaradef.h>
44 #ifndef FBSDK_DLL
45 
48  #define FBSDK_DLL K_DLLIMPORT
49 #endif
50 
51 // Core includes
52 #include <fbsdk/fbcore.h> // FBPropertyDevice
53 
54 // UI includes
55 #include <fbcontrols/fbcontrols.h>
56 
57 // Namespace declaration
58 #ifdef FBSDKUseNamespace
59  namespace FBSDKNamespace {
60 #endif
61 
62 #ifndef FB_KERNEL
65 #endif
66 
67 #if !defined(K_NO_OPTICAL)
69 #endif
70 
76 #define FBRegisterDeviceLayout( ClassName,UniqueNameStr, IconFilename ) \
77  HIObject RegisterDeviceLayout##ClassName( HIObject /*pOwner*/,const char * /*pName*/,void *pData) \
78  {\
79  ClassName *Class = new ClassName( (FBDevice*)FBGetFBObject((HIObject)pData) ); \
80  Class->mAllocated = true; \
81  if (Class->FBCreate()) { \
82  return Class->GetHIObject(); \
83  } else { \
84  delete Class; \
85  return NULL; \
86  } \
87  } \
88  FBLibraryModule( ClassName ) \
89  { \
90  FBRegisterObject( ClassName,"UI_Associated_ClassName",UniqueNameStr,UniqueNameStr" Device Layout",RegisterDeviceLayout##ClassName, true, IconFilename );\
91  }
92 
97 #define FBDeviceLayoutDeclare( ClassName,Parent ) \
98  FBClassDeclare( ClassName,Parent ); \
99  public: \
100  ClassName(FBDevice* pDevice):Parent(pDevice) { FBClassInit; } \
101  private:
102 
106 #define FBDeviceLayoutImplementation( ThisComponent ) \
107  FBClassImplementation( ThisComponent )
108 
110 // FBDeviceLayout
113 
120 
121 public:
125  FBDeviceLayout( FBDevice* pDevice = NULL );
126 
127  FBPropertyDevice Device;
128 };
129 
130 #if !defined(K_NO_OPTICAL)
131 // FBDeviceOpticalLayout
135 
138 {
139  // Basic declaration macros
141 
142  public:
145  kGUIModelOpticalList = 1<<0,
146  kGUIModelOpticalCreate = 1<<1,
147  kGUIModelOpticalDampingTime = 1<<2,
148  kGUIDeviceStatus = 1<<3,
149  kGUIDeviceReset = 1<<4,
150  kGUIViewer = 1<<5
151  };
152 
156  FBDeviceOpticalLayout( FBDevice* pDevice = NULL );
157 
158  //---- See base class ----
159  // Standard device virtual functions creation
160  virtual bool FBCreate();
161 
162  public:
165 };
166 #endif
167 
168 #ifndef FB_KERNEL
169 /**************************************************************************
170  **************************************************************************/
173 #define FBTRACKER_NO_LENSFILE "-- no lens file --"
174 
177 {
178  //--- Open Reality declaration.
180  public:
181  FBDeviceCameraLayout(FBDevice* pDevice);
182 
183  //--- Open Reality Creation/Destruction.
184  virtual bool FBCreate();
185  virtual void FBDestroy();
186 
187 public:
188  //--- UI Management
189  virtual void UICreate ();
190  virtual void UICreateLayoutInstruments ();
191  virtual void UICreateLayoutCommunication ();
192  virtual void UICreateLayoutInfo ();
193  virtual void UICreateLayoutCustom ();
194  virtual void UIConfigure ();
195  virtual void UIConfigureLayoutInstruments ();
196  virtual void UIConfigureLayoutCommunication ();
197  virtual void UIConfigureLayoutInfo ();
198  virtual void UIConfigureLayoutCustom ();
199  virtual void UIRefresh ();
200  virtual void UIRefreshLayoutInstruments ();
201  virtual void UIRefreshLayoutCommunications ();
202  virtual void UIRefreshLayoutCustom ();
203  virtual void UIUpdateEnabled ();
204  virtual void UIReset ();
205  virtual void UIResetLayoutInstruments ();
206  virtual void UIResetLayoutCommunications ();
207  virtual void UIResetLayoutCustom ();
208 
213  virtual FBDeviceCameraInstrument* GetCurrentInstrument();
214 
215 protected:
217 
221 
222  // Fov
230 
231  // Optical Center
239 
240  // Offsets
245 
246  // Lens Calibration
262 
263  // Video format
269 
271  // Sync
276 
277  // Serial port
283 
284  // Network
292 
293  // Shared Memory
299 
300  // Simulator
314 
317 
319 
320 public:
321  // Device/Idle callbacks
322  virtual void OnDeviceStatusChange ( HISender pSender, HKEvent pEvent );
323  virtual void OnUIIdle ( HISender pSender, HKEvent pEvent );
324 
325  // Base UI manipulation callbacks
326  virtual void OnTabPanelChange ( HISender pSender, HKEvent pEvent );
327  virtual void OnListInstrumentsChange ( HISender pSender, HKEvent pEvent );
328 
329  // Instrument/lens
330  // These should be fine
331  virtual void OnButtonActiveClick ( HISender pSender, HKEvent pEvent );
332  virtual void OnButtonManualChange ( HISender pSender, HKEvent pEvent );
333  virtual void OnButtonManualFovClick ( HISender pSender, HKEvent pEvent );
334  virtual void OnButtonManualCenterClick ( HISender pSender, HKEvent pEvent );
335  virtual void OnFovChange ( HISender pSender, HKEvent pEvent );
336  virtual void OnFovXSliderChange ( HISender pSender, HKEvent pEvent );
337  virtual void OnFovYSliderChange ( HISender pSender, HKEvent pEvent );
338  virtual void OnFovXEditNumberChange ( HISender pSender, HKEvent pEvent );
339  virtual void OnFovYEditNumberChange ( HISender pSender, HKEvent pEvent );
340  virtual void OnCenterChange ( HISender pSender, HKEvent pEvent );
341  virtual void OnCenterXSliderChange ( HISender pSender, HKEvent pEvent );
342  virtual void OnCenterYSliderChange ( HISender pSender, HKEvent pEvent );
343  virtual void OnCenterXEditNumberChange ( HISender pSender, HKEvent pEvent );
344  virtual void OnCenterYEditNumberChange ( HISender pSender, HKEvent pEvent );
345  virtual void OnOffsetChange ( HISender pSender, HKEvent pEvent );
346  virtual void OnOffsetTChange ( HISender pSender, HKEvent pEvent );
347  virtual void OnOffsetRChange ( HISender pSender, HKEvent pEvent );
348  virtual void OnLensfileChange ( HISender pSender, HKEvent pEvent );
349  virtual void OnButtonLoadLensfileClick ( HISender pSender, HKEvent pEvent );
350  virtual void OnButtonResetLensfileClick ( HISender pSender, HKEvent pEvent );
351  virtual void OnInvertChange ( HISender pSender, HKEvent pEvent );
352  virtual void OnInvertFocusClick ( HISender pSender, HKEvent pEvent );
353  virtual void OnInvertZoomClick ( HISender pSender, HKEvent pEvent );
354  virtual void OnFovUnitsChange ( HISender pSender, HKEvent pEvent );
355  virtual void OnFovUnitsDegClick ( HISender pSender, HKEvent pEvent );
356  virtual void OnFovUnitsRadClick ( HISender pSender, HKEvent pEvent );
357  virtual void OnNodalXChange ( HISender pSender, HKEvent pEvent );
358  virtual void OnNodalXSliderChange ( HISender pSender, HKEvent pEvent );
359  virtual void OnNodalXEditNumberChange ( HISender pSender, HKEvent pEvent );
360  virtual void OnZoomXChange ( HISender pSender, HKEvent pEvent );
361  virtual void OnZoomXSliderChange ( HISender pSender, HKEvent pEvent );
362  virtual void OnZoomXEditNumberChange ( HISender pSender, HKEvent pEvent );
363  virtual void OnAspectRatioChange ( HISender pSender, HKEvent pEvent );
364  virtual void OnAspectRatioSliderChange ( HISender pSender, HKEvent pEvent );
365  virtual void OnAspectRatioEditNumberChange ( HISender pSender, HKEvent pEvent );
366  virtual void OnAspectRatioPresetChange ( HISender pSender, HKEvent pEvent );
367 
368  // Communications
369  // These need to be overloaded.
370  virtual void OnSyncDelayChange ( HISender pSender, HKEvent pEvent );
371  virtual void OnSyncDelaySliderChange ( HISender pSender, HKEvent pEvent );
372  virtual void OnSyncDelayEditNumberChange ( HISender pSender, HKEvent pEvent );
373  virtual void OnButtonSyncInfoClick ( HISender pSender, HKEvent pEvent );
374 
375  virtual void OnEnableChange ( HISender pSender, HKEvent pEvent );
376  virtual void OnEnableSerialClick ( HISender pSender, HKEvent pEvent );
377  virtual void OnEnableSimulatorClick ( HISender pSender, HKEvent pEvent );
378  virtual void OnEnableNetworkClick ( HISender pSender, HKEvent pEvent );
379  virtual void OnEnableSharedMemoryClick ( HISender pSender, HKEvent pEvent );
380 
381  virtual void OnSerialChange ( HISender pSender, HKEvent pEvent );
382  virtual void OnSerialPortChange ( HISender pSender, HKEvent pEvent );
383  virtual void OnSerialBaudRateChange ( HISender pSender, HKEvent pEvent );
384  virtual void OnNetworkChange ( HISender pSender, HKEvent pEvent );
385  virtual void OnNetworkAddressChange ( HISender pSender, HKEvent pEvent );
386  virtual void OnNetworkPortChange ( HISender pSender, HKEvent pEvent );
387  virtual void OnNetworkProtocolChange ( HISender pSender, HKEvent pEvent );
388  virtual void OnSimulatorChange ( HISender pSender, HKEvent pEvent );
389  virtual void OnSimulatorAmplitudeEditNumberChange ( HISender pSender, HKEvent pEvent );
390  virtual void OnSimulatorAmplitudeSliderChange ( HISender pSender, HKEvent pEvent );
391  virtual void OnSimulatorFrequencyEditNumberChange ( HISender pSender, HKEvent pEvent );
392  virtual void OnSimulatorFrequencySliderChange ( HISender pSender, HKEvent pEvent );
393  virtual void OnSimulatorZoomEditNumberChange ( HISender pSender, HKEvent pEvent );
394  virtual void OnSimulatorZoomSliderChange ( HISender pSender, HKEvent pEvent );
395  virtual void OnSimulatorFocusEditNumberChange ( HISender pSender, HKEvent pEvent );
396  virtual void OnSimulatorFocusSliderChange ( HISender pSender, HKEvent pEvent );
397  virtual void OnSharedMemoryChange ( HISender pSender, HKEvent pEvent );
398  virtual void OnSharedMemoryHandleChange ( HISender pSender, HKEvent pEvent );
399  virtual void OnSharedMemoryAddressChange ( HISender pSender, HKEvent pEvent );
400 
401 protected:
405 };
406 #endif
407 
408 #ifdef FBSDKUseNamespace
409  }
410 #endif
411 #endif
FBLabel mLabelFovY
Instrument layout: FOV Y label.
#define __FBClassDeclare(Name, Parent)
For internal use only.
Definition: fbcomponent.h:132
FBEdit mEditAddress
Communications layout: Shared Memory: Address text edit.
FBEdit mEditHandle
Communications layout: Shared Memory: Handle text edit.
FBLabel mLabelSimulatorFrequency
Communications layout: Simulator: Frequency label.
Base Device class. Cannot be instantiated from Python.
Definition: fbcore.h:777
FBEdit mEditNetworkAddress
Communications layout: Network: Address text edit.
FBLabel mLabelFovX
Instrument layout: FOV X label.
FBLayout mLayoutCustom
Custom layout.
FBLabel mLabelSimulatorZoom
Communications layout: Simulator: Zoom label.
Slider.
Definition: fbcontrols.h:1357
FBLabel mLabelInversion
Instrument layout: Inversion label.
FBLabel mLabelZoomX
Instrument layout: Zoom multiplier label.
FBLabel mLabelSimulatorAmplitude
Communications layout: Simulator: Amplitude label.
FBSlider mSliderSimulatorAmplitude
Communications layout: Simulator: Amplitude slider.
FBDeviceCamera * mDeviceCamera
Handle onto device.
Tab panel.
Definition: fbcontrols.h:989
FBEditNumber mEditNumberCenterY
Instrument layout: Optical center Y numberical edit box.
FBLabel mLabelNetworkPort
Communications layout: Network: Port label.
FBButton mButtonEnableSimulator
Communications layout: Enable simulator button.
FBSlider mSliderFovX
Instrument layout: FOV X slider.
FBList mListInstruments
Instrument layout: List of instruments.
FBLabel mLabelNetworkProtocol
Communications layout: Network: Protocol label.
FBDeviceOptical * mDeviceOptical
Optical device.
FBSlider mSliderSimulatorZoom
Communications layout: Simulator: Zoom slider.
FBEditNumber mEditNumberNodalX
Instrument layout: Nodal shift numerical edit.
FBButton mButtonEnableSharedMemory
Communications layout: Enable shared memory button.
FBList mListNetworkProtocol
Communications layout: Network: Protocol list.
Contains definitions for devices, boxes and models.
FBEdit mEditNetworkPort
Communications layout: Network: Port text edit.
Used to create and manage buttons in a user interface.
Definition: fbcontrols.h:1065
FBEditVector mEditVectorOffsetR
Instrument layout: Rotation offset vector edit.
FBSlider mSliderSyncDelay
Communications layout: Sync delay slider.
Contains the user interface components for the SDK.
Base spreadsheet class.
Definition: fbcontrols.h:1518
Optical device class.
Definition: fboptical.h:814
FBLabel mLabelSyncDelay
Communications layout: Sync delay label.
FBEditNumber mEditNumberSimulatorFrequency
Communications layout: Simulator: Frequency numerical edit.
FBLayout mLayoutInstruments
Instrument layout.
FBSlider mSliderCenterY
Instrument layout: Optical center Y slider.
FBLabel mLabelAddress
Communications layout: Shared Memory: Address label.
class K_DLLIMPORT FBPropertyBase< bool, kFBPT_bool > FBPropertyBool
Property: bool
FBButton mButtonLoadLensfile
Instrument layout: Load lensfile button.
FBTabPanel mTabPanel
Main tab panel.
Used to build the user interface.
Definition: fbcontrols.h:781
FBSlider mSliderSimulatorFrequency
Communications layout: Simulator: Frequency slider.
Device layout class.
FBLabel mLabelHandle
Communications layout: Shared Memory: Handle label.
FBButton mButtonResetLensfile
Instrument layout: Reset lensfile status button.
FBList mListSerialPort
Communications layout: Serial: Port list.
List of items.
Definition: fbcontrols.h:1322
FBLabel mLabelSimulatorFocus
Communications layout: Simulator: Focus label.
FBEditNumber mEditNumberSyncDelay
Communications layout: Sync delay numerical edit box.
FBLabel mLabelAspectRatio
Instrument layout: Aspect ratio label.
FBEditNumber mEditNumberSimulatorFocus
Communications layout: Simulator: Focus numerical edit.
FBPropertyDevice Device
Property(R-): Handle on device.
Camera device layout.
Camera device base class.
Definition: fbtracker.h:286
FBSlider mSliderZoomX
Instrument layout: Zoom multiplier slider.
#define __FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition: fbtypes.h:68
FBLabel mLabelLensfileName
Instrument layout: Lensfile filename label.
FBButton mButtonFovUnitsRad
Instrument layout: FOV in radians button.
FBButton mButtonInvertZoom
Instrument layout: Invert zoom toggle.
FBDeviceOpticalGUIOptions
Different options for optical device GUI.
FBButton mButtonManualCenter
Instrument layout: Manual optical center button.
FBLabel mLabelFovUnits
Instrument layout: FOV units label.
HKEventBase HKEvent
HKEvent.
Definition: fbcomponent.h:394
#define FBSDKNamespace
FBSDKNamespace define.
Definition: fbversion.h:64
FBLabel mLabelSerialPort
Communications layout: Serial: Port label.
FBEditNumber mEditNumberSimulatorAmplitude
Communications layout: Simulator: Amplitude numerical edit.
FBSpread mSpreadInfo
Information layout: Spreadsheet.
Number edit box.
Definition: fbcontrols.h:1243
FBSlider mSliderNodalX
Instrument layout: Nodal shift slider.
FBEditNumber mEditNumberFovX
Instrument layout: FOV X numerical edit box.
Text edit box.
Definition: fbcontrols.h:1224
FBEditNumber mEditNumberSimulatorZoom
Communications layout: Simulator: Zoom numerical edit.
FBPropertyBool CustomLayout
Custom layout?
FBLayout mLayoutInfo
Information layout.
FBEditNumber mEditNumberCenterX
Instrument layout: Optical center X numberical edit box.
FBSlider mSliderAspectRatio
Instrument layout: Aspect ratio slider.
FBSlider mSliderFovY
Instrument layout: FOV Y slider..
FBLabel mLabelNodalX
Instrument layout: Nodal shift label.
Instrument for a camera device.
Definition: fbtracker.h:227
FBPropertyInt SupportedCommTypes
Supported comm types.
FBList mListAspectRatioPresets
Instrument layout: Aspect ratio preset list.
FBLabel mLabelSerialBaudRate
Communications layout: Serial: Baud rate label.
#define FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition: fbtypes.h:62
Text label.
Definition: fbcontrols.h:1176
FBEditNumber mEditNumberFovY
Instrument layout: FOV Y numerical edit box.
FBLabel mLabelOffsetR
Instrument layout: Rotation offset label.
FBEditVector mEditVectorOffsetT
Instrument layout: Translation offset vector edit.
class K_DLLIMPORT FBPropertyBase< int, kFBPT_int > FBPropertyInt
Property: int
FBEditNumber mEditNumberZoomX
Instrument layout: Zomm multiplier numerical edit.
Vector edit widget.
Definition: fbcontrols.h:1283
FBButton mButtonInvertFocus
Instrument layout: Invert focus toggle.
FBSlider mSliderSimulatorFocus
Communications layout: Simulator: Focus slider.
FBEditNumber mEditNumberAspectRatio
Instrument layout: Aspect ratio edit number.
#define FBSDK_DLL
Be sure that FBSDK_DLL is defined only once...
FBPropertyInt GenericUIOptions
Property: GUI options.
FBButton mButtonEnableNetwork
Communications layout: Enable network button.
FBLabel mLabelAspectRatioPresets
Instrument layout: Aspect ratio preset label.
Layout for optical device.
FBLabel mLabelCenterX
Instrument layout: Optical center X label.
FBLabel mLabelNetworkAddress
Communications layout: Network: Address label.
FBButton mButtonEnableSerial
Communications layout: Enable serial button.
FBLabel mLabelOffsetT
Instrument layout: Translation offset label.
FBButton mButtonSyncInfo
Communications layout: Sync information (debug) button.
FBLabel mLabelCenterY
Instrument layout: Optical center Y label.
FBButton mButtonManualFov
Instrument layout: Manual FOV control button.
FBButton mButtonFovUnitsDeg
Instrument layout: FOV in degrees button.
FBButton mButtonActive
Instrument layout: Active button.
FBList mListSerialBaudRate
Communications layout: Serial: Baud rate list.
FBLayout mLayoutCommunication
Communications layout.
FBSlider mSliderCenterX
Instrument layout: Optical center X slider.
HIRegister HISender
HISender.
Definition: fbcomponent.h:391