viewport.h

Go to the documentation of this file.
00001 
00002 
00003 //**************************************************************************/
00004 
00005 // Copyright (c) 2008 Autodesk, Inc.
00006 
00007 // All rights reserved.
00008 
00009 //
00010 
00011 // Use of this software is subject to the terms of the Autodesk license
00012 
00013 // agreement provided at the time of installation or download, or which
00014 
00015 // otherwise accompanies this software in either electronic or hard copy form.
00016 
00017 //
00018 
00019 //**************************************************************************/
00020 
00021 // DESCRIPTION:
00022 
00023 // CREATED: October 2008
00024 
00025 //**************************************************************************/
00026 
00027 
00028 
00029 namespace mudbox {
00030 
00031 
00032 
00033 class ViewPortFilter;
00034 
00035 
00036 
00038 
00039 struct ViewPortState
00040 
00041 {
00042 
00043     Texture *m_pColor;
00044 
00045     Texture *m_pDepth;
00046 
00047     Texture *m_pPosition;
00048 
00049     Texture *m_pNormal;
00050 
00051     Texture *m_pLinearDepth;
00052 
00053     Texture *m_pFaceNormal;
00054 
00055     bool m_bHDRNeeded;
00056 
00057 };
00058 
00059 
00060 
00062 
00064 
00066 
00068 
00070 
00072 
00073 class MBDLL_DECL ViewPortFilter : public Layer
00074 
00075 {
00076 
00077     DECLARE_CLASS;
00078 
00079 public:
00080 
00081 
00082 
00084 
00086 
00088 
00090 
00091     typedef int RequirementValue;
00092 
00093     enum
00094 
00095     {
00096 
00097         eNone = 0,
00098 
00099         eColor = 1,
00100 
00101         eHDR = 2,
00102 
00103         eDepth24 = 4,
00104 
00105 //      ePosition16 = 8, // not implemented
00106 
00107         eNormal16 = 16,
00108 
00109         ePosition32 = 32,
00110 
00111 //      eNormal32 = 64, // not implemented
00112 
00113         eNormalDepth16 = 128,
00114 
00115 //      eNormalDepth32 = 256, // not implemented
00116 
00117         eLinearDepth = 512,
00118 
00119         eFaceNormal = 1024,
00120 
00121     };
00122 
00123 
00124 
00126 
00127     virtual QString StringID( const ClassDesc *pClass = 0 ) const;
00128 
00129 
00130 
00132 
00133     virtual QString DisplayName( void ) const;
00134 
00135 
00136 
00138 
00139     virtual void Initialize(void);
00140 
00141 
00142 
00144 
00146 
00148 
00150 
00152 
00154 
00155     virtual RequirementValue Requirement( void ) const;
00156 
00157 
00158 
00160 
00162 
00164 
00166 
00168 
00170 
00172 
00173     virtual void Process(
00174 
00175         ViewPortState &sState   
00176 
00177         );
00178 
00179 
00180 
00182 
00183     virtual float Transparency( void ) const;
00184 
00185 
00186 
00188 
00189     virtual void SetTransparency(float fTransparency);
00190 
00191 
00192 
00194 
00195     virtual Layer *Children( void ) const;
00196 
00197 
00198 
00200 
00201     virtual Layer *Next( void ) const;
00202 
00203 
00204 
00206 
00207     virtual Layer *Prev( void ) const;
00208 
00209 
00210 
00212 
00213     virtual class LayerContainer *Container( void ) const;
00214 
00215 
00216 
00218 
00219     void SetVisible(
00220 
00221         bool bVisible  
00222 
00223         );
00224 
00225 
00226 
00228 
00230 
00232 
00234 
00236 
00238 
00240 
00242 
00244 
00246 
00248 
00250 
00252 
00254 
00255     virtual void LockCalibration(
00256 
00257         bool bLock  
00258 
00259         );
00260 
00261 
00262 
00264 
00265     bool CalibrationLocked(void);
00266 
00267 
00268 
00270 
00271     class ViewPort *m_pViewPort;
00272 
00273 
00274 
00275 protected:
00276 
00277     bool m_bCalibrationLocked;
00278 
00279 };
00280 
00281 
00282 
00283 
00284 
00286 
00287 class MBDLL_DECL ViewPort : public LayerContainer
00288 
00289 {
00290 
00291     DECLARE_CLASS;
00292 
00293 
00294 
00295 protected:
00296 
00298 
00300 
00302 
00304 
00306 
00308 
00310 
00312 
00313     ViewPort( void );
00314 
00315 public:
00316 
00317 
00318 
00320 
00321     virtual unsigned int FilterCount( void ) const;
00322 
00323 
00324 
00326 
00327     virtual ViewPortFilter *Filter(
00328 
00329         unsigned int iIndex 
00330 
00331         ) const;
00332 
00333 
00334 
00336 
00337     virtual void AddFilter(
00338 
00339         ViewPortFilter *pFilter 
00340 
00341         );
00342 
00343 
00344 
00346 
00347     virtual void RemoveFilter(
00348 
00349         unsigned int iIndex 
00350 
00351         );
00352 
00353 
00354 
00356 
00357     void LockFilterCalibration(
00358 
00359         bool bLocked 
00360 
00361         );
00362 
00363 
00364 
00366 
00368 
00370 
00372 
00374 
00376 
00377     virtual void SaveScreenshot(
00378 
00379         const QString &sFileName    
00380 
00381         ) const;
00382 
00383 
00384 
00386 
00387     virtual int Width( void );
00388 
00389 
00390 
00392 
00393     virtual int Height( void );
00394 
00395 
00396 
00398 
00399     class ImagePlaneInterface *ActiveImagePlane();
00400 
00401 
00402 
00404 
00405     virtual float CursorXPosition( void ) const;
00406 
00407 
00408 
00410 
00411     virtual float CursorYPosition( void ) const;
00412 
00413 
00414 
00416 
00417     const SurfacePoint *CursorSurfacePoint( 
00418 
00419          bool bMirrored = false 
00420 
00421          ) const;
00422 
00423 
00424 
00426 
00427     unsigned int LayerCount( void ) const;
00428 
00429 
00430 
00432 
00433     class Layer *Layer(
00434 
00435         unsigned int iLayerIndex    
00436 
00437         ) const;
00438 
00439 
00440 
00442 
00443     void UnlinkLayer(
00444 
00445         class Layer *pLayer 
00446 
00447         );
00448 
00449 
00450 
00452 
00453     class Layer *CreateLayer( void );
00454 
00455 
00456 
00458 
00459     void AddLayer(
00460 
00461         class Layer *pLayer 
00462 
00463         );
00464 
00465 
00466 
00468 
00469     class Layer *ActiveLayer( void ) const;
00470 
00471 
00472 
00474 
00475     void SetActiveLayer(
00476 
00477         class Layer *pLayer 
00478 
00479         );
00480 
00481 
00482 
00484 
00485     ViewPortFilter::RequirementValue ViewPortFilterRequirements( void ) const;
00486 
00487 
00488 
00490 
00491     enum RedrawType
00492 
00493     {
00494 
00495         eFull, 
00496 
00497         eArea, 
00498 
00499         eOverlayOnly 
00500 
00501     };
00502 
00503 
00504 
00506 
00507     void Redraw( 
00508 
00509         RedrawType eType = eFull, 
00510 
00511         float fXStart = 0, 
00512 
00513         float fYStart = 0, 
00514 
00515         float fXEnd = 0, 
00516 
00517         float fYEnd = 0 
00518 
00519         );
00520 
00522 
00523     virtual struct ViewPortState ViewPortState( void );
00524 
00525 
00526 
00527     aevent MouseMoveEvent;
00528 
00529     aevent LeftMouseButtonPressEvent;
00530 
00531     aevent LeftMouseButtonReleaseEvent;
00532 
00533 };
00534 
00535 
00536 
00537 }; // end of namespace mudbox
00538