"Fossies" - the Fresh Open Source Software archive 
<br/>
<hr/>
<a name="graf2d"></a>
<h3>2D Graphics Libraries</h3>
<h4>TCanvas</h4>
<ul>
<li>The following sequence produced a <tt>SEG FAULT</tt>:
<pre>
root [0] TFile f("can.root")
root [1] TCanvas* can = (TCanvas*)f.Get("can")
root [2] gROOT->SetBatch(1)
root [3] can->Draw()
</pre>
</li>
<li>Make sure the inspector canvas background is white.</li>
</ul>
<h4>TGraphPainter</h4>
<ul>
<li> New option E5. It draws boxes for the errors like option E2 but in addition
it allows to draw the border of the boxes.
<center>
<img alt="The new option E5" src="e5.gif"/>
</center>
</li>
</ul>
<h4>TSVG - TPDF</h4>
<ul>
<li>When saving canvas as an svg image, the "times" character (i. e. in "x10^3"
statement above axis) was saved as utf "̄" (combining macron) whereas it
schould be "×" (multiplication sign). It is now fixed.
</li>
<li> <tt>TSVG::Open</tt> and <tt>TPDF::Open</tt> now check if the output file
was successfully opened.
</li>
</ul>
<h4>TText</h4>
<ul>
<li> <tt>TText::GetBoundingBox</tt> now returns 0 when the string is empty.
Previously it returned undefined numbers.
</li>
</ul>
<h4>TLegend</h4>
<ul>
<li> Rewrite <tt>TLegend::GetEntry()</tt> to take the number of columns in the
legend into account. The previous version considered there was always only one
column in a <tt>TLegend</tt>.
</li>
</ul>
<h4>TPaveLabel</h4>
<ul>
<li>The following macro entered an infinite loop:
<pre>
{
int x[10], y[10]; int i;
for(i = 0; i < 10; i++) {x[i] = 10*i;y[i] = i;}
TGraph *gr = new TGraph(10,x,y);
gr->Draw("AL");
TPaveLabel *hello = new TPaveLabel(0.2,0.4,0.8,0.6,"Hello World");
hello->Draw();
}
</pre>
</li>
</ul>
<h4>iOS module</h4>
<ul>
<li>New module 'ios' was added into graf2d to make it possible to use ROOT's
graphics on iOS devices (iPad, iPhone, iPod touch).
Among other things, it has the ROOT::iOS::Pad class, which is a version
of TPad for iOS (pad with TF2 example below).<br/>
<center>
<img alt="TF2 object in a ROOT::iOS::Pad" title="TF2 object in a ROOT::iOS::Pad (painted with a transparency)" src="iospad.gif"/>
</center><br/>
Two applications, based on this module, were developed for iOS (currently,
for iPad only): "Tutorials" and "RootBrowser".
They can be found in $ROOTSYS/test/ios.
</li>
<li>
<b>"Tutorials" app</b><br/>
Small application with several demos, "iOS version" of the $ROOTSYS/tutorlas/demos.C.<br/>
<center>
<img alt="Tutorials app" title="Tutorials app" src="tutorials.gif"/>
</center><br/>
<b>"Tutorials" application:</b><br/>
<ul>
<li>supports portrait and landscape orientation</li>
<li>has several demos (can be selected by tapping on table's cells)</li>
<li>supports different gestures (pinch, single and double tap, pan, etc. - active gestures are shown by hint icons)</li>
<li>has "zoom" mode - pinch or double tap gesture will zoom in/out pad's contents</li>
<li>has "selection" mode - with single tap user can select different objects inside pad - axes, histograms, pavestats etc.; 3D objects can be rotated.</li>
<li>has a simple editor to modify pad's parameters : fill color, logarithmic scale, grid, ticks, etc.</li>
</ul>
<center>
<img alt="Editor" title="Pad's editor" src="tut_editor.gif"/>
</center>
</li>
<li>
<b>"RootBrowser" app</b><br/>
<p>This application is a simplified version of TBrowser and TCanvas
for iOS. User can open ROOT's file (application uses TWebFile) and
browse file's contents.</p>
<p>RootBrower registers *.root file extension in a system, so for
example, attached root files from a mail client can be opened by
RootBrowser.</p>
<p>Application has several views. In a top level view, user can see
opened files, open new files, close files (long press gesture on
a file icon):</p>
<img alt="Top level view" width="750" height="461" title="Top level view" src="top_level.gif"/>
<br/>
<p>Tap gesture on a file's icon will open "File contents" view. This
view shows objects and nested directories. For objects small
previews are generated. Tapping on a directory's icon will open
new view with directory's contents. Simple search is supported
(in the current TDirectoryFile).</p>
<img alt="File contents view" width="750" height="461" title="File's contents view" src="file_contents.gif"/>
<br/>
<p>Tap on a object's preview will open detailed view for this object.
Using pinch gesture or double tap, you can zoom in/zoom out pad's
contents.</p>
<p>If you have several objects in a file or directory, you can
navigate through directory contents by using swipe gesture,
scrolling your objects.</p>
<img alt="Detail view" width="750" height="315" title="Detail view" src="detail_view.gif"/>
<br/>
<p>It's possible to modify properties of objects the same way you
can do it in TCanvas - RootBrowser has an editor. After you
press "Edit" button, you can pick histogram, axis, frame,
pavestats, etc. in a pad and modify its properties in the
editor (selected object is highlihgted in a pad).</p>
<p>At the moment, there are editors for:</p>
<ul>
<li>TH1 objects</li>
<li>TGraph objects</li>
<li>Objects derived from TAttLine (line attributes)</li>
<li>Objects derived from TAttFill (filled area attributes)</li>
<li>Pad object (fill properties, log scales, ticks, grid)</li>
<li>Markers</li>
</ul>
<img alt="Editors" width="750" height="264" title="Editors" src="editors.gif"/>
<br/>
<p>Using pan gesture along the selected axis, you can change the
axis range - "zoom".</p>
<p>Modified object can be saved locally (in application's directory)
and sent as an e-mail attachment ("Save" functionality will be
improved soon).</p>
</li>
</ul>