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 
118 class FBSDK_DLL FBDeviceLayout : public FBLayout {
119  __FBClassDeclare( FBDeviceLayout,FBLayout );
120 
121 public:
125  FBDeviceLayout( FBDevice* pDevice = NULL );
126 
127  FBPropertyDevice Device;
128 };
129 
130 #if !defined(K_NO_OPTICAL)
131 // FBDeviceOpticalLayout
134 __FB_FORWARD( FBDeviceOpticalLayout);
135 
137 class FBSDK_DLL FBDeviceOpticalLayout : public FBDeviceLayout
138 {
139  // Basic declaration macros
140  __FBClassDeclare( FBDeviceOpticalLayout , FBDeviceLayout);
141 
142  public:
144  enum FBDeviceOpticalGUIOptions {
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:
163  FBDeviceOptical* mDeviceOptical;
164  FBPropertyInt GenericUIOptions;
165 };
166 #endif
167 
168 #ifndef FB_KERNEL
169 /**************************************************************************
170  **************************************************************************/
171 __FB_FORWARD( FBDeviceCameraLayout);
173 #define FBTRACKER_NO_LENSFILE "-- no lens file --"
174 
176 class FBSDK_DLL FBDeviceCameraLayout : public FBDeviceLayout
177 {
178  //--- Open Reality declaration.
179  __FBClassDeclare( FBDeviceCameraLayout, FBDeviceLayout );
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:
216  FBTabPanel mTabPanel;
217 
218  FBLayout mLayoutInstruments;
219  FBList mListInstruments;
220  FBButton mButtonActive;
221 
222  // Fov
223  FBButton mButtonManualFov;
224  FBLabel mLabelFovX;
225  FBLabel mLabelFovY;
226  FBSlider mSliderFovX;
227  FBSlider mSliderFovY;
228  FBEditNumber mEditNumberFovX;
229  FBEditNumber mEditNumberFovY;
230 
231  // Optical Center
232  FBButton mButtonManualCenter;
233  FBLabel mLabelCenterX;
234  FBLabel mLabelCenterY;
235  FBSlider mSliderCenterX;
236  FBSlider mSliderCenterY;
237  FBEditNumber mEditNumberCenterX;
238  FBEditNumber mEditNumberCenterY;
239 
240  // Offsets
241  FBLabel mLabelOffsetT;
242  FBLabel mLabelOffsetR;
243  FBEditVector mEditVectorOffsetT;
244  FBEditVector mEditVectorOffsetR;
245 
246  // Lens Calibration
247  FBButton mButtonLoadLensfile;
248  FBButton mButtonResetLensfile;
249  FBLabel mLabelLensfileName;
250  FBLabel mLabelInversion;
251  FBButton mButtonInvertZoom;
252  FBButton mButtonInvertFocus;
253  FBLabel mLabelFovUnits;
254  FBButton mButtonFovUnitsDeg;
255  FBButton mButtonFovUnitsRad;
256  FBLabel mLabelNodalX;
257  FBSlider mSliderNodalX;
258  FBEditNumber mEditNumberNodalX;
259  FBLabel mLabelZoomX;
260  FBSlider mSliderZoomX;
261  FBEditNumber mEditNumberZoomX;
262 
263  // Video format
264  FBLabel mLabelAspectRatio;
265  FBSlider mSliderAspectRatio;
266  FBEditNumber mEditNumberAspectRatio;
267  FBLabel mLabelAspectRatioPresets;
268  FBList mListAspectRatioPresets;
269 
270  FBLayout mLayoutCommunication;
271  // Sync
272  FBLabel mLabelSyncDelay;
273  FBSlider mSliderSyncDelay;
274  FBEditNumber mEditNumberSyncDelay;
275  FBButton mButtonSyncInfo;
276 
277  // Serial port
278  FBButton mButtonEnableSerial;
279  FBLabel mLabelSerialPort;
280  FBList mListSerialPort;
281  FBLabel mLabelSerialBaudRate;
282  FBList mListSerialBaudRate;
283 
284  // Network
285  FBButton mButtonEnableNetwork;
286  FBLabel mLabelNetworkAddress;
287  FBEdit mEditNetworkAddress;
288  FBLabel mLabelNetworkPort;
289  FBEdit mEditNetworkPort;
290  FBLabel mLabelNetworkProtocol;
291  FBList mListNetworkProtocol;
292 
293  // Shared Memory
294  FBButton mButtonEnableSharedMemory;
295  FBLabel mLabelHandle;
296  FBEdit mEditHandle;
297  FBLabel mLabelAddress;
298  FBEdit mEditAddress;
299 
300  // Simulator
301  FBButton mButtonEnableSimulator;
302  FBLabel mLabelSimulatorFrequency;
303  FBSlider mSliderSimulatorFrequency;
304  FBEditNumber mEditNumberSimulatorFrequency;
305  FBLabel mLabelSimulatorAmplitude;
306  FBSlider mSliderSimulatorAmplitude;
307  FBEditNumber mEditNumberSimulatorAmplitude;
308  FBLabel mLabelSimulatorZoom;
309  FBSlider mSliderSimulatorZoom;
310  FBEditNumber mEditNumberSimulatorZoom;
311  FBLabel mLabelSimulatorFocus;
312  FBSlider mSliderSimulatorFocus;
313  FBEditNumber mEditNumberSimulatorFocus;
314 
315  FBLayout mLayoutInfo;
316  FBSpread mSpreadInfo;
317 
318  FBLayout mLayoutCustom;
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:
402  FBDeviceCamera* mDeviceCamera;
403  FBPropertyInt SupportedCommTypes;
404  FBPropertyBool CustomLayout;
405 };
406 #endif
407 
408 #ifdef FBSDKUseNamespace
409  }
410 #endif
411 #endif
#define __FBClassDeclare(Name, Parent)
For internal use only.
Definition: fbcomponent.h:132
HIRegister HISender
HISender.
Definition: fbcomponent.h:391
#define NULL
Definition: kaydara.h:179
class FBPropertyBase< int, kFBPT_int > FBPropertyInt
Property: int
Contains definitions for devices, boxes and models.
Contains the user interface components for the SDK.
class FBPropertyBaseComponent< FBDevice * > FBPropertyDevice
Definition: fbcore.h:67
HKEventBase HKEvent
HKEvent.
Definition: fbcomponent.h:394
#define __FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition: fbtypes.h:68
#define FBSDKNamespace
FBSDKNamespace define.
Definition: fbversion.h:64
#define FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
Definition: fbtypes.h:62
#define FBSDK_DLL
Be sure that FBSDK_DLL is defined only once...
class FBPropertyBase< bool, kFBPT_bool > FBPropertyBool
Property: bool