// @(#)root/base:$Name:  $:$Id: TVirtualUtil3D.h,v 1.2 2002/09/15 19:48:47 brun Exp $
// Author: Rene Brun   14/09/2002

/*************************************************************************
 * Copyright (C) 1995-2000, 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_TVirtualUtil3D
#define ROOT_TVirtualUtil3D


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TVirtualUtil3D                                                       //
//                                                                      //
// Abstract interface to the 3-D view utility                           //
//                                                                      //
// This class is called via the TPluginManager from classes that        //
// do not require linking with libG3d except in some rare cases like    //
// rotating a 3-d object in the pad or drawing 3-d axis in the pad.     //
// The concrete implementation TUtil3D is defined in system.rootrc      //
// and can be overridden by a user to extend the functionality.         //
// This abstract interface has three main goals:                        //
//   - it decouples libG3d from the calling classes                     //
//   - it does not require the use of magic strings like when using     //
//     gROOT->ProcessLine to instantiate classes in libG3d.             //
//   - it allows advanced users to redefine or extend some functions.   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


#ifndef ROOT_TNamed
#include "TNamed.h"
#endif

class TVirtualPad;
class TList;

class TVirtualUtil3D : public TNamed {


public:
   TVirtualUtil3D();
   virtual     ~TVirtualUtil3D();
   virtual void  DrawOutlineCube(TList *outline, Double_t *rmin, Double_t *rmax) = 0;
   virtual void  ToggleRulers(TVirtualPad *pad) = 0;
   virtual void  ToggleZoom(TVirtualPad *pad) = 0;

   ClassDef(TVirtualUtil3D,0)  //Abstract interface to a the 3-D view utility
};

#endif
