fbcontrols/fbdevicelayout.h Source File

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
63  FB_FORWARD( FBDeviceCameraInstrument );
64  FB_FORWARD( FBDeviceCamera );
65 #endif
66 
67 #if !defined(K_NO_OPTICAL)
68  FB_FORWARD( FBDeviceOptical );
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
112 __FB_FORWARD( FBDeviceLayout );
113 
120 
121 public:
125  FBDeviceLayout( FBDevice* pDevice = NULL );
126 
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
HKEventBase HKEvent
HKEvent.
Definition: fbcomponent.h:394
FBLabel mLabelNodalX
Instrument layout: Nodal shift label.
FBButton mButtonInvertZoom
Instrument layout: Invert zoom toggle.
FBButton mButtonInvertFocus
Instrument layout: Invert focus toggle.
#define __FBClassDeclare(Name, Parent)
For internal use only.
Definition: fbcomponent.h:132
FBPropertyBool CustomLayout
Custom layout?
FBDeviceOptical * mDeviceOptical
Optical device.
FBEditNumber mEditNumberCenterX
Instrument layout: Optical center X numberical edit box.
Number edit box.
Definition: fbcontrols.h:1238
Optical device class.
Definition: fboptical.h:807
FBLabel mLabelOffsetR
Instrument layout: Rotation offset label.
Layout for optical device.
FBSlider mSliderZoomX
Instrument layout: Zoom multiplier slider.
FBSlider mSliderSyncDelay
Communications layout: Sync delay slider.
FBSlider mSliderCenterY
Instrument layout: Optical center Y slider.
#define NULL
Definition: kaydara.h:169
FBButton mButtonActive
Instrument layout: Active button.
FBEdit mEditAddress
Communications layout: Shared Memory: Address text edit.
FBEditNumber mEditNumberSimulatorFocus
Communications layout: Simulator: Focus numerical edit.
FBLabel mLabelNetworkAddress
Communications layout: Network: Address label.
FBLabel mLabelAspectRatioPresets
Instrument layout: Aspect ratio preset label.
FBLayout mLayoutInfo
Information layout.
FBSlider mSliderSimulatorAmplitude
Communications layout: Simulator: Amplitude slider.
FBLayout mLayoutCustom
Custom layout.
Contains definitions for devices, boxes and models.
FBLabel mLabelLensfileName
Instrument layout: Lensfile filename label.
FBEditNumber mEditNumberZoomX
Instrument layout: Zomm multiplier numerical edit.
List of items.
Definition: fbcontrols.h:1317
FBSlider mSliderSimulatorFocus
Communications layout: Simulator: Focus slider.
FBLabel mLabelSimulatorAmplitude
Communications layout: Simulator: Amplitude label.
Contains the user interface components for the SDK.
FBEditNumber mEditNumberSyncDelay
Communications layout: Sync delay numerical edit box.
FBList mListSerialBaudRate
Communications layout: Serial: Baud rate list.
FBEditVector mEditVectorOffsetT
Instrument layout: Translation offset vector edit.
FBLabel mLabelCenterY
Instrument layout: Optical center Y label.
FBLabel mLabelFovX
Instrument layout: FOV X label.
FBButton mButtonFovUnitsDeg
Instrument layout: FOV in degrees button.
FBList mListSerialPort
Communications layout: Serial: Port list.
FBEditVector mEditVectorOffsetR
Instrument layout: Rotation offset vector edit.
Used to build the user interface.
Definition: fbcontrols.h:776
Camera device base class.
Definition: fbtracker.h:286
class FBPropertyBase< bool, kFBPT_bool > FBPropertyBool
Property: bool
FBButton mButtonEnableSharedMemory
Communications layout: Enable shared memory button.
FBEditNumber mEditNumberNodalX
Instrument layout: Nodal shift numerical edit.
FBButton mButtonEnableSimulator
Communications layout: Enable simulator button.
FBPropertyInt SupportedCommTypes
Supported comm types.
FBEdit mEditNetworkPort
Communications layout: Network: Port text edit.
FBLabel mLabelOffsetT
Instrument layout: Translation offset label.
Used to create and manage buttons in a user interface.
Definition: fbcontrols.h:1060
FBSlider mSliderCenterX
Instrument layout: Optical center X slider.
FBLabel mLabelSimulatorZoom
Communications layout: Simulator: Zoom label.
Text edit box.
Definition: fbcontrols.h:1219
FBSlider mSliderSimulatorFrequency
Communications layout: Simulator: Frequency slider.
FBLabel mLabelNetworkPort
Communications layout: Network: Port label.
FBEdit mEditHandle
Communications layout: Shared Memory: Handle text edit.
FBPropertyInt GenericUIOptions
Property: GUI options.
FBEditNumber mEditNumberSimulatorAmplitude
Communications layout: Simulator: Amplitude numerical edit.
Base Device class. Cannot be instantiated from Python.
Definition: fbcore.h:777
HIRegister HISender
HISender.
Definition: fbcomponent.h:391
FBButton mButtonLoadLensfile
Instrument layout: Load lensfile button.
FBPropertyDevice Device
Property(R-): Handle on device.
FBLabel mLabelSimulatorFrequency
Communications layout: Simulator: Frequency label.
FBLabel mLabelFovUnits
Instrument layout: FOV units label.
Instrument for a camera device.
Definition: fbtracker.h:227
Base spreadsheet class.
Definition: fbcontrols.h:1513
#define __FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition: fbtypes.h:68
FBSlider mSliderSimulatorZoom
Communications layout: Simulator: Zoom slider.
FBDeviceCamera * mDeviceCamera
Handle onto device.
FBLabel mLabelAddress
Communications layout: Shared Memory: Address label.
FBLabel mLabelZoomX
Instrument layout: Zoom multiplier label.
Camera device layout.
FBButton mButtonEnableSerial
Communications layout: Enable serial button.
FBButton mButtonSyncInfo
Communications layout: Sync information (debug) button.
#define FBSDKNamespace
FBSDKNamespace define.
Definition: fbversion.h:64
FBEditNumber mEditNumberFovY
Instrument layout: FOV Y numerical edit box.
FBTabPanel mTabPanel
Main tab panel.
FBEdit mEditNetworkAddress
Communications layout: Network: Address text edit.
FBDeviceOpticalGUIOptions
Different options for optical device GUI.
FBButton mButtonManualCenter
Instrument layout: Manual optical center button.
FBEditNumber mEditNumberSimulatorZoom
Communications layout: Simulator: Zoom numerical edit.
FBLayout mLayoutInstruments
Instrument layout.
FBLabel mLabelAspectRatio
Instrument layout: Aspect ratio label.
FBLabel mLabelInversion
Instrument layout: Inversion label.
FBSlider mSliderAspectRatio
Instrument layout: Aspect ratio slider.
FBButton mButtonEnableNetwork
Communications layout: Enable network button.
FBLabel mLabelCenterX
Instrument layout: Optical center X label.
FBEditNumber mEditNumberSimulatorFrequency
Communications layout: Simulator: Frequency numerical edit.
FBList mListAspectRatioPresets
Instrument layout: Aspect ratio preset list.
FBList mListInstruments
Instrument layout: List of instruments.
FBButton mButtonFovUnitsRad
Instrument layout: FOV in radians button.
FBButton mButtonResetLensfile
Instrument layout: Reset lensfile status button.
Device layout class.
FBLabel mLabelSerialPort
Communications layout: Serial: Port label.
Vector edit widget.
Definition: fbcontrols.h:1278
#define FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition: fbtypes.h:62
FBLabel mLabelNetworkProtocol
Communications layout: Network: Protocol label.
FBSlider mSliderFovY
Instrument layout: FOV Y slider.
FBSlider mSliderNodalX
Instrument layout: Nodal shift slider.
Text label.
Definition: fbcontrols.h:1171
FBEditNumber mEditNumberCenterY
Instrument layout: Optical center Y numberical edit box.
FBLabel mLabelHandle
Communications layout: Shared Memory: Handle label.
FBEditNumber mEditNumberFovX
Instrument layout: FOV X numerical edit box.
class FBPropertyBase< int, kFBPT_int > FBPropertyInt
Property: int
#define FBSDK_DLL
Be sure that FBSDK_DLL is defined only once...
FBEditNumber mEditNumberAspectRatio
Instrument layout: Aspect ratio edit number.
FBLabel mLabelFovY
Instrument layout: FOV Y label.
FBSlider mSliderFovX
Instrument layout: FOV X slider.
FBLayout mLayoutCommunication
Communications layout.
FBButton mButtonManualFov
Instrument layout: Manual FOV control button.
FBSpread mSpreadInfo
Information layout: Spreadsheet.
FBLabel mLabelSimulatorFocus
Communications layout: Simulator: Focus label.
class FBPropertyBaseComponent< FBDevice * > FBPropertyDevice
Definition: fbcore.h:67
FBLabel mLabelSerialBaudRate
Communications layout: Serial: Baud rate label.
FBList mListNetworkProtocol
Communications layout: Network: Protocol list.
FBLabel mLabelSyncDelay
Communications layout: Sync delay label.