### Graphical Output

#### PostScript and PDF

- In the following macro the minus sign was not correct:

         {
            TCanvas *c = new TCanvas;
            TLatex *l = new TLatex(0.5, 0.5, "#font[122]{a = b + c - d #pm e}");
            l->Draw();
            c->SaveAs("c.eps");
          }

  The font 122 is the greek one. With a such TLatex "a" becomes "alpha", "b" becomes " beta" etc ... It is not the recommended way to do greek characters with TLatex, but it should work anyway.
- In TPostScript::DrawPolyMarker: do not draw the markers is the marker size is 0.
- Right aligned or centered text was not correctly positioned when rotated.

#### TASImage

- The text size adjustment applied `TASImage::DrawText` was not valid (scale factor of 1.044). The text size was wrong and the following macro produced a wrong title when ran in batch:

        {
           TCanvas *canvas = new TCanvas("c5","c5",900,900);
           TH1F *histo = new TH1F("Histo","123456x_{i}abcdefy^{2}",100,0,20);
           canvas->Print("drawing.gif");
        }

- Suppress annoying messages like:

          root : looking for image "filename" in path [/home/username/icons]

  printed by libAfterImage when using `TImage::Open("filename")`
- In `TImageDump` the hollow filled areas were not correct:
  1. they used the line attributes,
  2. a line was drawn around the polygons filled with patterns.
  This fixes the problem mentionned here: https://savannah.cern.ch/bugs/index.php?59263 as well as the test #22 in stressGraphics (no need to change the reference file).

### Interface to graphviz

Thanks to three new classes (`TGraphStruct`, `TGraphNode` and `TGraphEdge`) ROOT provides an interface to the graphs visualization package graphviz. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks.
Example:
The previous image is produced by the following ROOT macro:

       // Draw a simple graph structure.
       // The graph layout is made using graphviz. This macro creates some
       // nodes and edges and change a few graphical attributes on some of them.
       // Author: Olivier Couet
       {
          TGraphStruct *gs = new TGraphStruct();

          // create some nodes and put them in the graph in one go ...
          TGraphNode *n0 = gs->AddNode("n0","Node 0");
          TGraphNode *n1 = gs->AddNode("n1","First node");
          TGraphNode *n2 = gs->AddNode("n2","Second node");
          TGraphNode *n3 = gs->AddNode("n3","Third node");
          TGraphNode *n4 = gs->AddNode("n4","Fourth node");
          TGraphNode *n5 = gs->AddNode("n5","5th node");
          TGraphNode *n6 = gs->AddNode("n6","Node number six");
          TGraphNode *n7 = gs->AddNode("n7","Node 7");
          TGraphNode *n8 = gs->AddNode("n8","Node 8");
          TGraphNode *n9 = gs->AddNode("n9","Node 9");

          n4->SetTextSize(0.03);
          n6->SetTextSize(0.03);
          n2->SetTextSize(0.04);

          n3->SetTextFont(132);

          n0->SetTextColor(kRed);

          n9->SetFillColor(kRed-10);
          n0->SetFillColor(kYellow-9);
          n7->SetFillColor(kViolet-9);

          // some edges ...
          gs->AddEdge(n0,n1)->SetLineColor(kRed);
          TGraphEdge *e06 = gs->AddEdge(n0,n6);
          e06->SetLineColor(kRed-3);
          e06->SetLineWidth(4);
          gs->AddEdge(n1,n7);
          gs->AddEdge(n4,n6);
          gs->AddEdge(n3,n9);
          gs->AddEdge(n6,n8);
          gs->AddEdge(n7,n2);
          gs->AddEdge(n8,n3);
          gs->AddEdge(n2,n3);
          gs->AddEdge(n9,n0);
          gs->AddEdge(n1,n4);
          gs->AddEdge(n1,n6);
          gs->AddEdge(n2,n5);
          gs->AddEdge(n3,n6);
          gs->AddEdge(n4,n5);

          TCanvas *c = new TCanvas("c","c",800,600);
          c->SetFillColor(38);
          gs->Draw();
          return c;
       }

This new funtionnality relies on the graphivz package. This package can be downloaded from http://www.graphviz.org/.

At installation time, to find graphviz, the ROOT's configure file looks in standard locations. It is possible to define a specific location using the configure flags:

    --with-gviz-incdir="the directory where gvc.h is"
    --with-gviz-libdir="the directory where the libgvc library is"

To install graphviz (if needed) it is recommended to use the following configure flags:

    --enable-static=yes --enable-shared=no --with-pic --prefix="graphviz installed here"

On 64 bits machines, the ROOT sources are compiled with the option -m64. In that case graphviz should be also compiled in 64 bits mode. It might be the default option, but on some machine it is not. In that case the environment variable CC should be defined as:

    CC="gcc -m64"

before doing configure.

On Windows machines it recommended to not install graphviz but to download the pre-installed version from http://www.graphviz.org/. The ROOT configure command remains the same.

### Graphics Primitives

#### New class TGraphTime

TGraphTime is used to draw a set of objects evolving with nsteps in time between tmin and tmax. each time step has a new list of objects. This list can be identical to the list of objects in the previous steps, but with different attributes. see example of use in $ROOTSYS/tutorials/graphs/gtime.C

#### TLatex

- In the following macro the `#int` and `#sum` symbols had wrong limits placement if the character just before started with "#".

         {
            TCanvas *c1 = new TCanvas("c1","c1",500,500);
            TLatex l;
            l.SetTextSize(0.1);

            l.DrawLatex(0.1,0.6,"#nu#int^{1-x}_{2#pi}");
            l.DrawLatex(0.1,0.2,"a#int^{1-x}_{2#pi}");

            l.DrawLatex(0.5,0.6,"#nu#sum^{1-x}_{2#pi}");
            l.DrawLatex(0.5,0.2,"a#sum^{1-x}_{2#pi}");
         }

  This problem is there since the 1st version of TLatex. It is fixed by:
  1. Giving "^" and "_" a lower precedence than special and greek characters.
  2. Making a special case for #int and #sum and giving them even lower precedence than "^" and "_".
  Oleksandr Grebenyuk `<ogrebenyuk@lbl.gov>` helped a lot solving this issue.

#### TMarker

- The markers picking now takes into account the marker size. This is useful for big markers, because there is no need to pick exactly the marker's center.

#### TPad

- It is now possible to zoom and unzoom axis using the mouse wheel.

#### TCanvas

- In `DrawClonePad` make sure that the cloned pad has the correct size even when the original pad has a toolbar and/or a status bar.

#### TPie

- `TPie::GetEntryVal(i)` returned `GetSlice(i)->GetRadiusOffset()` instead of `GetSlice(i)->GetValue()`. Very likely the code was copied/pasted from the method `TPie::GetEntryRadiusOffset(i)`.

#### TGaxis

- An axis with a custom scale defined by a function did not display ticks all the way along the axis, only between the lowest and the highest major tick. This behaviour could be seen with:

        {
           TF1* f = new TF1("f", "exp(x)", 0.467, 2.1345);
           TGaxis* a = new TGaxis(0.1,0.4,0.9,0.4, "f", 50510, "-");
           a->Draw();
           TGaxis* b = new TGaxis(0.1,0.7,0.9,0.7, 0.4356, 1.56789, 50510, "-");
           b->Draw();
        }