/// \file
/// \ingroup tutorial_graphics
/// Macro illustrating how to animate a picture using a Timer.
///
/// \macro_code
///
/// \author Rene Brun

#include "TStyle.h"
#include "TCanvas.h"
#include "TF2.h"
#include "TTimer.h"

Double_t pi;
TF2 *f2;
Float_t t = 0;
Float_t phi = 30;
void anim()
{
   gStyle->SetCanvasPreferGL(true);
   gStyle->SetFrameFillColor(42);
   TCanvas *c1 = new TCanvas("c1");
   c1->SetFillColor(17);
   pi = TMath::Pi();
   f2 = new TF2("f2", "sin(2*x)*sin(2*y)*[0]", 0, pi, 0, pi);
   f2->SetParameter(0, 1);
   f2->SetNpx(15);
   f2->SetNpy(15);
   f2->SetMaximum(1);
   f2->SetMinimum(-1);
   f2->Draw("glsurf1");
   TTimer *timer = new TTimer(20);
   timer->SetCommand("Animate()");
   timer->TurnOn();
}
void Animate()
{
   // just in case the canvas has been deleted
   if (!gROOT->GetListOfCanvases()->FindObject("c1"))
      return;
   t += 0.05 * pi;
   f2->SetParameter(0, TMath::Cos(t));
   phi += 2;
   gPad->SetPhi(phi);
   gPad->Modified();
   gPad->Update();
}
