// @(#)root/gpad:$Id$
// Author: Richard Maunder  10/3/2005

/*************************************************************************
 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TViewer3DPad
#define ROOT_TViewer3DPad

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TViewer3DPad                                                         //
//                                                                      //
// Provides 3D viewer interface (TVirtualViewer3D) support on a pad.    //
// Will be merged with TView / TView3D eventually.                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TVirtualViewer3D
#include "TVirtualViewer3D.h"
#endif

class TVirtualPad;

class TViewer3DPad : public TVirtualViewer3D {
private:
   TVirtualPad &  fPad; // the pad we paint into.
   Bool_t         fBuilding; // is scene being built?

   // Non-copyable
   TViewer3DPad(const TViewer3DPad &);
   TViewer3DPad & operator = (const TViewer3DPad &);

public:
   TViewer3DPad(TVirtualPad & pad) : fPad(pad), fBuilding(kFALSE) {};
   ~TViewer3DPad() {};

   virtual Bool_t PreferLocalFrame() const;
   virtual void   BeginScene();
   virtual Bool_t BuildingScene() const { return fBuilding; }
   virtual void   EndScene();
   virtual Int_t  AddObject(const TBuffer3D & buffer, Bool_t * addChildren = 0);
   virtual Int_t  AddObject(UInt_t placedID, const TBuffer3D & buffer, Bool_t * addChildren = 0);

   // Composite shapes not supported on this viewer currently - ignore.
   // Will result in a set of individual component shapes
   virtual Bool_t OpenComposite(const TBuffer3D & buffer, Bool_t * addChildren = 0);
   virtual void   CloseComposite();
   virtual void   AddCompositeOp(UInt_t operation);

   ClassDef(TViewer3DPad,0)  //A 3D Viewer painter for TPads
};

#endif
 TViewer3DPad.h:1
 TViewer3DPad.h:2
 TViewer3DPad.h:3
 TViewer3DPad.h:4
 TViewer3DPad.h:5
 TViewer3DPad.h:6
 TViewer3DPad.h:7
 TViewer3DPad.h:8
 TViewer3DPad.h:9
 TViewer3DPad.h:10
 TViewer3DPad.h:11
 TViewer3DPad.h:12
 TViewer3DPad.h:13
 TViewer3DPad.h:14
 TViewer3DPad.h:15
 TViewer3DPad.h:16
 TViewer3DPad.h:17
 TViewer3DPad.h:18
 TViewer3DPad.h:19
 TViewer3DPad.h:20
 TViewer3DPad.h:21
 TViewer3DPad.h:22
 TViewer3DPad.h:23
 TViewer3DPad.h:24
 TViewer3DPad.h:25
 TViewer3DPad.h:26
 TViewer3DPad.h:27
 TViewer3DPad.h:28
 TViewer3DPad.h:29
 TViewer3DPad.h:30
 TViewer3DPad.h:31
 TViewer3DPad.h:32
 TViewer3DPad.h:33
 TViewer3DPad.h:34
 TViewer3DPad.h:35
 TViewer3DPad.h:36
 TViewer3DPad.h:37
 TViewer3DPad.h:38
 TViewer3DPad.h:39
 TViewer3DPad.h:40
 TViewer3DPad.h:41
 TViewer3DPad.h:42
 TViewer3DPad.h:43
 TViewer3DPad.h:44
 TViewer3DPad.h:45
 TViewer3DPad.h:46
 TViewer3DPad.h:47
 TViewer3DPad.h:48
 TViewer3DPad.h:49
 TViewer3DPad.h:50
 TViewer3DPad.h:51
 TViewer3DPad.h:52
 TViewer3DPad.h:53
 TViewer3DPad.h:54
 TViewer3DPad.h:55
 TViewer3DPad.h:56
 TViewer3DPad.h:57
 TViewer3DPad.h:58
 TViewer3DPad.h:59