### TASImage - libAfterImage library

#### TASImage

- Protection added in DrawCircle. Problem seen with gcc version 4.2.3.
- Fixed byte swapping issues. With that fix the pictures generated in batch mode on Solaris and Mac are now correct (cf stressGraphics -k).
- The Alpha Blending code has been rewritten in a simpler way in order to work on linux with gcc 4.2.3. Here also the pictures generated in batch mode were wrong.
- In FillRectangleInternal when the rectangle to be drawn had its width or its height equal to 0, they were set to the current image width or height. This was not a good solution because this obscured completely the picture. In particular, some markers being drawn with a filled rectangle, they obscured the picture when they were really small because in that case the rectangle drawn had width=height=0. Now, when a rectangle has its width or height equal to 0 it is set to 1 (pixel) with makes sense because "0" means "tiny" not "huge" ...
- New method to retrieve the last zoom position on an image:

           void TASImage::GetZoomPosition(UInt_t &x, UInt_t &y, UInt_t &w, UInt_t &h) const

  This is useful when the zoom has been done interactively using the mouse.
- In batch, when a picture was saved in a binary file (gif for instance) from an image containing more than one pad, only the first pad was saved. The following macro demonstrates the problem: ccc2.gif was wrong compared to ccc1.gif.

             {
                gROOT->SetBatch();
                TCanvas *c = new TCanvas;
                c->Divide(1,2);
                TH1F *h = new TH1F("gaus", "gaus", 100, -5, 5);
                h->FillRandom("gaus", 10000);
                c->cd(1); h->Draw();
                c->cd(2); h->Draw("c*");
                c->Print("ccc1.gif");
                TImage *img = TImage::Create();
                img->FromPad(c);
                img->WriteImage("ccc2.gif");
             }

#### libAfterImage

- There no need anymore for the special version we had up to now. The modifications we needed have been introduced in the official version.

  This version also fixes the color problem on BigEndian machines. On these machines (Mac and Solaris for instance) the color of the jpeg and png images saved from the "File" menu in a TCanvas were completely wrong.

- Addition for image pixelization and color to alpha functionality.
- Fixed bunch of compilation bugs showing up on old systems.

### Graphical Output

#### PDF

- Text rotated at 270 degrees was not correct. The PDF rotation matrix contained very small values close to 0 instead of 0. Acrobat reader produced a wrong output and also printed result was wrong. "gv" worked.

#### PostScript

- The character "@" could not be printed in PostScript files.
- Change the Page numbering to make it appear nicer in postcript viewers like "gv". It is compliant with the Adobe Postscript Document Structuring Conventions (easily found on the web).
- The fonts encoding has been simplified (use ISOLatin1Encoding). The new way allows to print any character with accent etc.. like on the screen. The new encoding was done by Pierre Juillot.

### TPad

- In batch mode it was not possible to generate a bitmap file (gif, jpeg etc..) with a filename containing ")", "(", "]" or "[".
- The Tickx and Tixky attributes were not saved properly by SavePrimitive.
- PaintPolyLineNDC was not working in case of PS output.
- In ExecuteEvent. A problem was found Mathieu de Naurois <denauroi@in2p3.fr>. It can be reproduced by the following sequence:
  1. do TCanvas c
  2. do c->Divide(2,2)
  3. show the toolbar
  4. click L to enter text
  5. click on a pad to enter text
  6. move the mouse without releasing the button.
  7. entex text
  8. hit Enter.
  Before this bug fix, the canvas position changed on "hit Enter".
- On a Windows dual core machine, the WaitPrimitive call returned immediately.

### Miscellaneous

#### TView3D

- Protection was missing in ctors in case gPad does not exits.
- Allow interactive zooming on histograms painted with option CONT4

#### TMultiGraph

- Joining two multigraphs using `In TMultiGraph::Add(TMultiGraph*,Option_t *)` method issued the error:

           Error in <TList::AddLast>: argument is a null pointer

  Despite of the message the joined multigraph was correct. Internally the loop on the input multigraph was one step too long.
- Implement the fit parameters painting.

#### Histograms painting

- For 2D histograms, when all the bins' contents were negative, the boxes were not painted correctly.
- For 3D histograms painted using OpenGL (drawing options "glbox" and "glbox1") a minus sign on negative bins is added in order to distinguish them from positive bins.
- In `THistPainter::PaintH3` the palette is drawn in case of option COLZ. This is useful when a TTree 4D plot is painted with that option.
  This image has been prodiced with the command:

           ntuple->Draw("px:py:pz:px*px","","COLZ");

#### TGraph2D

- The operator "=" was not correct.

#### TGraph

- Protection added in `PaintPolyLineHatches` (division by zero in some cases).
- All the graphical code has been moved from the `TGraph` classes to `TGraphPainter`.

#### TGraphPolar

- Protection added in case a `GraphPolar` is plotted with option "E" but has no errors defined.
- The markers clipping (in `TGraphPainter`) was wrong in case of TGraphPolar.
- The constructor's parameters naming was wrong.
- Documentation: better example (easier to understand).
- In the constructors some data members were not initialized.

#### TPie

- Add the `TPie::GetEntries()` method that return the number slices. (Guido Volpi).
- Implement Editors for TPie and TPieSlice (Guido Volpi).

#### TPaletteAxis

- Attributes are now accessible in the context menu. (requested by Mathieu de Naurois <denauroi@in2p3.fr>)

#### TPolyLine

- Implement the possibility to draw TPolyLine in NDC coordinates (it was partially done but the code was not used).

#### Documentation

- Better comments in THelix.
- Option "FUNC" was not documented in THistPainter..
- Update the help for animated gif generation in TPad.
- Update TAttMarker documentation about the non scalable markers.
- Re-writting of the THistPainter documentation.

#### TCutG

- The graphical cuts applied on histograms did not work when the cut name contained a mix of lower and upper case characters. This problem occured because the option used to draw an histogram was always converted into lower case before begin stored in a pad (in Draw and DrawCopy). Now in Draw() and DrawCopy() the AppendPad() procedure is called with the option string not converted in lower case.

### QT

Version 3 of QT is not supported anymore. If you install ROOT with the QT option you must have QT version 4 already installed.