// @(#)root/hist:$Id$
// Author: Rene Brun   30/08/99
/*************************************************************************
 * 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.             *
 *************************************************************************/

#include "TROOT.h"
#include "TVirtualHistPainter.h"
#include "TPluginManager.h"
#include "TClass.h"

TClass *TVirtualHistPainter::fgPainter = 0;


ClassImp(TVirtualHistPainter)

//______________________________________________________________________________
//
//  TVirtualHistPainter is an abstract interface to a histogram painter.
//


//______________________________________________________________________________
TVirtualHistPainter *TVirtualHistPainter::HistPainter(TH1 *obj)
{
   // Static function returning a pointer to the current histogram painter.
   // The painter will paint the specified obj. If the histogram painter
   // does not exist a default painter is created.

   // if no painter set yet, create a default painter via the PluginManager
   if (!fgPainter) {
      TPluginHandler *h;
      if ((h = gROOT->GetPluginManager()->FindHandler("TVirtualHistPainter"))) {
         if (h->LoadPlugin() == -1)
            return 0;
         TVirtualHistPainter::SetPainter(h->GetClass());
         if (!fgPainter) return 0;
      } else {
         // fgPainter is still null
         return 0;
      }
   }

   //create an instance of the histogram painter
   TVirtualHistPainter *p = (TVirtualHistPainter*)fgPainter->New();
   if (p) p->SetHistogram(obj);
   return p;
}

//______________________________________________________________________________
void TVirtualHistPainter::SetPainter(const char *painter)
{
   // Static function to set an alternative histogram painter.

   fgPainter = TClass::GetClass(painter);
}
 TVirtualHistPainter.cxx:1
 TVirtualHistPainter.cxx:2
 TVirtualHistPainter.cxx:3
 TVirtualHistPainter.cxx:4
 TVirtualHistPainter.cxx:5
 TVirtualHistPainter.cxx:6
 TVirtualHistPainter.cxx:7
 TVirtualHistPainter.cxx:8
 TVirtualHistPainter.cxx:9
 TVirtualHistPainter.cxx:10
 TVirtualHistPainter.cxx:11
 TVirtualHistPainter.cxx:12
 TVirtualHistPainter.cxx:13
 TVirtualHistPainter.cxx:14
 TVirtualHistPainter.cxx:15
 TVirtualHistPainter.cxx:16
 TVirtualHistPainter.cxx:17
 TVirtualHistPainter.cxx:18
 TVirtualHistPainter.cxx:19
 TVirtualHistPainter.cxx:20
 TVirtualHistPainter.cxx:21
 TVirtualHistPainter.cxx:22
 TVirtualHistPainter.cxx:23
 TVirtualHistPainter.cxx:24
 TVirtualHistPainter.cxx:25
 TVirtualHistPainter.cxx:26
 TVirtualHistPainter.cxx:27
 TVirtualHistPainter.cxx:28
 TVirtualHistPainter.cxx:29
 TVirtualHistPainter.cxx:30
 TVirtualHistPainter.cxx:31
 TVirtualHistPainter.cxx:32
 TVirtualHistPainter.cxx:33
 TVirtualHistPainter.cxx:34
 TVirtualHistPainter.cxx:35
 TVirtualHistPainter.cxx:36
 TVirtualHistPainter.cxx:37
 TVirtualHistPainter.cxx:38
 TVirtualHistPainter.cxx:39
 TVirtualHistPainter.cxx:40
 TVirtualHistPainter.cxx:41
 TVirtualHistPainter.cxx:42
 TVirtualHistPainter.cxx:43
 TVirtualHistPainter.cxx:44
 TVirtualHistPainter.cxx:45
 TVirtualHistPainter.cxx:46
 TVirtualHistPainter.cxx:47
 TVirtualHistPainter.cxx:48
 TVirtualHistPainter.cxx:49
 TVirtualHistPainter.cxx:50
 TVirtualHistPainter.cxx:51
 TVirtualHistPainter.cxx:52
 TVirtualHistPainter.cxx:53
 TVirtualHistPainter.cxx:54
 TVirtualHistPainter.cxx:55
 TVirtualHistPainter.cxx:56
 TVirtualHistPainter.cxx:57
 TVirtualHistPainter.cxx:58
 TVirtualHistPainter.cxx:59
 TVirtualHistPainter.cxx:60