Logo ROOT  
Reference Guide
ROOT::Experimental::RCanvas Class Reference

A window's topmost RPad.

Author
Axel Naumann axel@.nosp@m.cern.nosp@m..ch
Date
2015-07-08
Warning
This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback is welcome!

Definition at line 59 of file RCanvas.hxx.

Public Member Functions

 RCanvas ()=default
 Create a temporary RCanvas; for long-lived ones please use Create(). More...
 
 ~RCanvas ()=default
 
template<class PANEL >
bool AddPanel (std::shared_ptr< PANEL > &panel)
 Insert panel into the canvas, canvas should be shown at this moment. More...
 
const RCanvasGetCanvas () const override
 Access to the top-most canvas, if any (const version). More...
 
RCanvasGetCanvas () override
 Access to the top-most canvas, if any (non-const version). More...
 
uint64_t GetModified () const
 
const std::array< RPadLength::Pixel, 2 > & GetSize () const
 Return canvas pixel size as array with two elements - width and height. More...
 
const std::string & GetTitle () const
 Get the canvas's title. More...
 
std::string GetWindowAddr () const
 Returns window name used to display canvas. More...
 
void Hide ()
 Hide all canvas displays. More...
 
bool IsModified () const
 Returns true is canvas was modified since last painting. More...
 
void Modified ()
 
std::array< RPadLength::Normal, 2 > PixelsToNormal (const std::array< RPadLength::Pixel, 2 > &pos) const final
 Convert a Pixel position to Canvas-normalized positions. More...
 
void Remove ()
 Remove canvas from global canvas lists, will be destroyed when shared_ptr will be removed. More...
 
void ResolveSharedPtrs ()
 To resolve problem with storing of shared pointers Call this method when reading canvas from the file Can be called many times - after reinitialization of shared pointers no changes will be performed. More...
 
void Run (double tm=0.)
 Run canvas functionality for given time (in seconds) More...
 
bool SaveAs (const std::string &filename)
 Save canvas in image file. More...
 
RCanvasSetSize (const RPadLength::Pixel &width, const RPadLength::Pixel &height)
 Set canvas pixel size - width and height. More...
 
RCanvasSetSize (const std::array< RPadLength::Pixel, 2 > &sz)
 Set canvas pixel size as array with two elements - width and height. More...
 
RCanvasSetTitle (const std::string &title)
 Set the canvas's title. More...
 
void Show (const std::string &where="")
 Display the canvas. More...
 
void Update (bool async=false, CanvasCallback_t callback=nullptr)
 update drawing More...
 
- Public Member Functions inherited from ROOT::Experimental::RPadBase
virtual ~RPadBase ()
 
void AssignAutoColors ()
 Method collect existing colors and assign new values if required. More...
 
std::vector< std::vector< std::shared_ptr< RPad > > > Divide (int nHoriz, int nVert, const RPadExtent &padding={})
 Divide this pad into a grid of subpads with padding in between. More...
 
template<class T , class... ARGS>
auto Draw (ARGS... args)
 Create drawable of specified class T. More...
 
template<class T , class... ARGS>
auto Draw (const std::shared_ptr< T > &what, ARGS... args)
 Add object to be painted. More...
 
auto Draw (std::shared_ptr< RDrawable > &&drawable)
 Add existing drawable instance to canvas. More...
 
const RPadBaseFindPadForPrimitiveWithDisplayId (const std::string &display_id) const
 Find subpad which contains primitive with given display id. More...
 
std::shared_ptr< RDrawableFindPrimitive (const std::string &id) const
 Find primitive with specified id. More...
 
std::shared_ptr< RDrawableFindPrimitiveByDisplayId (const std::string &display_id) const
 Find primitive with unique id, produce for RDisplayItem Such id used for client-server identification of objects. More...
 
RPadUserAxisBaseGetAxis (size_t dimension) const
 Get a pad axis from the RFrame. More...
 
std::shared_ptr< RFrameGetFrame ()
 Get a frame object if exists. More...
 
const std::shared_ptr< RFrameGetFrame () const
 
RPadUserAxisBaseGetOrCreateAxis (size_t dimension)
 Get a pad axis from the RFrame. More...
 
std::shared_ptr< RFrameGetOrCreateFrame ()
 Get a frame object for the pad. More...
 
std::shared_ptr< RDrawableGetPrimitive (unsigned num) const
 returns primitive of given number More...
 
auto GetPrimitives () const
 Get all primitives contained in the pad. More...
 
unsigned NumPrimitives () const
 returns number of primitives in the pad More...
 
bool Remove (const std::shared_ptr< RDrawable > &drawable)
 Remove drawable from list of primitives. More...
 
bool Remove (const std::string &id)
 Remove an object from the list of primitives. More...
 
bool RemoveAt (unsigned indx)
 Remove drawable at specified position. More...
 
void SetAllAxisAutoBounds ()
 Set the range of an axis as bound kind and bound (up or down). More...
 
void SetAllAxisBound (const std::vector< BoundKindAndValue > &vecBoundAndKind)
 Set the range of an axis as bound kind and bound (up or down). More...
 
void SetAllAxisBounds (const std::vector< std::array< double, 2 >> &vecBeginAndEnd)
 Set the range of an axis as bound kind and bound (up or down). More...
 
void SetAxisAutoBounds (int dimension)
 Set the range of an axis as bound kind and bound (up or down). More...
 
void SetAxisBound (int dimension, RPadUserAxisBase::EAxisBoundsKind boundsKind, double bound)
 Set the range of an axis as bound kind and bound (up or down). More...
 
void SetAxisBounds (int dimension, double begin, double end)
 Set the range of an axis as begin, end. More...
 
std::array< RPadLength::Normal, 2 > UserToNormal (const std::array< RPadLength::User, 2 > &pos) const
 Convert user coordinates to normal coordinates. More...
 
void UseStyle (const std::shared_ptr< RStyle > &style) override
 Use provided style for pad and all primitives inside. More...
 
void Wipe ()
 Wipe the pad by clearing the list of primitives. More...
 
- Public Member Functions inherited from ROOT::Experimental::RDrawable
 RDrawable (const std::string &type)
 
virtual ~RDrawable ()
 
void ClearStyle ()
 
const std::string & GetCssClass () const
 
const std::string & GetCssType () const
 
const std::string & GetId () const
 
void SetCssClass (const std::string &cl)
 
void SetId (const std::string &id)
 

Static Public Member Functions

static std::shared_ptr< RCanvasCreate (const std::string &title)
 Create new canvas instance. More...
 
static const std::vector< std::shared_ptr< RCanvas > > GetCanvases ()
 Returns list of created canvases. More...
 

Private Member Functions

 RCanvas (const RCanvas &)=delete
 Disable copy construction for now. More...
 
uint64_t IncModified ()
 
RCanvasoperator= (const RCanvas &)=delete
 Disable assignment for now. More...
 

Private Attributes

Version_t fModified {1}
 Modify counter, incremented every time canvas is changed. More...
 
std::unique_ptr< Internal::RVirtualCanvasPainterfPainter
 The painter of this canvas, bootstrapping the graphics connection. More...
 
std::array< RPadLength::Pixel, 2 > fSize
 Size of the canvas in pixels,. More...
 
std::string fTitle
 to apply attributes changes More...
 

Friends

class RCanvasPainter
 use for ID generation More...
 
class RChangeAttrRequest
 used for primitives drawing More...
 
class RPadBase
 

Additional Inherited Members

- Public Types inherited from ROOT::Experimental::RPadBase
using Primitives_t = std::vector< std::shared_ptr< RDrawable > >
 
- Public Types inherited from ROOT::Experimental::RDrawable
using Version_t = uint64_t
 
- Protected Member Functions inherited from ROOT::Experimental::RPadBase
 RPadBase ()
 Allow derived classes to default construct a RPadBase. More...
 
void CollectShared (Internal::RIOSharedVector_t &) override
 Collect all shared items to resolve shared_ptr after IO. More...
 
void DisplayPrimitives (RPadBaseDisplayItem &paditem, RDisplayContext &ctxt)
 Create display items for all primitives in the pad Each display item gets its special id, which used later for client-server communication Second parameter is version id which already delivered to the client. More...
 
void SetDrawableVersion (Version_t vers) override
 Assign drawable version - for pad itself and all primitives. More...
 
- Protected Member Functions inherited from ROOT::Experimental::RDrawable
 RDrawable (const RDrawable &)=delete
 
virtual std::unique_ptr< RDisplayItemDisplay (const RDisplayContext &)
 Creates display item for drawable By default item contains drawable data itself. More...
 
virtual void Execute (const std::string &)
 
RAttrMapGetAttrMap ()
 
const RAttrMapGetAttrMap () const
 
Version_t GetVersion () const
 
virtual bool IsFrameRequired () const
 
bool MatchSelector (const std::string &selector) const
 Preliminary method which checks if drawable matches with given selector Following selector are allowed: "type" or "#id" or ".class_name" Here type is drawable kind like 'rect' or 'pad' id is drawable identifier, specified with RDrawable::SetId() method class_name is drawable class name, specified with RDrawable::SetCssClass() method. More...
 
virtual void OnDisplayItemDestroyed (RDisplayItem *) const
 
RDrawableoperator= (const RDrawable &)=delete
 
virtual void PopulateMenu (RMenuItems &)
 

#include <ROOT/RCanvas.hxx>

Inheritance diagram for ROOT::Experimental::RCanvas:
[legend]

Constructor & Destructor Documentation

◆ RCanvas() [1/2]

ROOT::Experimental::RCanvas::RCanvas ( const RCanvas )
privatedelete

Disable copy construction for now.

◆ RCanvas() [2/2]

ROOT::Experimental::RCanvas::RCanvas ( )
default

Create a temporary RCanvas; for long-lived ones please use Create().

◆ ~RCanvas()

ROOT::Experimental::RCanvas::~RCanvas ( )
default

Member Function Documentation

◆ AddPanel()

template<class PANEL >
bool ROOT::Experimental::RCanvas::AddPanel ( std::shared_ptr< PANEL > &  panel)
inline

Insert panel into the canvas, canvas should be shown at this moment.

Definition at line 132 of file RCanvas.hxx.

◆ Create()

std::shared_ptr< ROOT::Experimental::RCanvas > ROOT::Experimental::RCanvas::Create ( const std::string &  title)
static

Create new canvas instance.

Definition at line 70 of file RCanvas.cxx.

◆ GetCanvas() [1/2]

const RCanvas* ROOT::Experimental::RCanvas::GetCanvas ( ) const
inlineoverridevirtual

Access to the top-most canvas, if any (const version).

Implements ROOT::Experimental::RPadBase.

Definition at line 95 of file RCanvas.hxx.

◆ GetCanvas() [2/2]

RCanvas* ROOT::Experimental::RCanvas::GetCanvas ( )
inlineoverridevirtual

Access to the top-most canvas, if any (non-const version).

Implements ROOT::Experimental::RPadBase.

Definition at line 98 of file RCanvas.hxx.

◆ GetCanvases()

const std::vector< std::shared_ptr< ROOT::Experimental::RCanvas > > ROOT::Experimental::RCanvas::GetCanvases ( )
static

Returns list of created canvases.

Definition at line 43 of file RCanvas.cxx.

◆ GetModified()

uint64_t ROOT::Experimental::RCanvas::GetModified ( ) const
inline

Definition at line 139 of file RCanvas.hxx.

◆ GetSize()

const std::array<RPadLength::Pixel, 2>& ROOT::Experimental::RCanvas::GetSize ( ) const
inline

Return canvas pixel size as array with two elements - width and height.

Definition at line 101 of file RCanvas.hxx.

◆ GetTitle()

const std::string& ROOT::Experimental::RCanvas::GetTitle ( ) const
inline

Get the canvas's title.

Definition at line 157 of file RCanvas.hxx.

◆ GetWindowAddr()

std::string ROOT::Experimental::RCanvas::GetWindowAddr ( ) const

Returns window name used to display canvas.

Returns window name for canvas.

Definition at line 121 of file RCanvas.cxx.

◆ Hide()

void ROOT::Experimental::RCanvas::Hide ( )

Hide all canvas displays.

Definition at line 133 of file RCanvas.cxx.

◆ IncModified()

uint64_t ROOT::Experimental::RCanvas::IncModified ( )
inlineprivate

Definition at line 85 of file RCanvas.hxx.

◆ IsModified()

bool ROOT::Experimental::RCanvas::IsModified ( ) const

Returns true is canvas was modified since last painting.

Definition at line 53 of file RCanvas.cxx.

◆ Modified()

void ROOT::Experimental::RCanvas::Modified ( )
inline

Definition at line 142 of file RCanvas.hxx.

◆ operator=()

RCanvas& ROOT::Experimental::RCanvas::operator= ( const RCanvas )
privatedelete

Disable assignment for now.

◆ PixelsToNormal()

std::array<RPadLength::Normal, 2> ROOT::Experimental::RCanvas::PixelsToNormal ( const std::array< RPadLength::Pixel, 2 > &  pos) const
inlinefinalvirtual

Convert a Pixel position to Canvas-normalized positions.

Implements ROOT::Experimental::RPadBase.

Definition at line 169 of file RCanvas.hxx.

◆ Remove()

void ROOT::Experimental::RCanvas::Remove ( )

Remove canvas from global canvas lists, will be destroyed when shared_ptr will be removed.

Remove canvas from global canvas lists, will be destroyed once last shared_ptr is disappear.

Definition at line 160 of file RCanvas.cxx.

◆ ResolveSharedPtrs()

void ROOT::Experimental::RCanvas::ResolveSharedPtrs ( )

To resolve problem with storing of shared pointers Call this method when reading canvas from the file Can be called many times - after reinitialization of shared pointers no changes will be performed.

Definition at line 225 of file RCanvas.cxx.

◆ Run()

void ROOT::Experimental::RCanvas::Run ( double  tm = 0.)

Run canvas functionality for given time (in seconds)

Run canvas functionality for the given time (in seconds) Used to process canvas-related actions in the appropriate thread context.

Must be regularly called when canvas created and used in extra thread. Time parameter specifies minimal execution time in seconds - if default value 0 is used, just all pending actions will be performed. When canvas is not yet displayed - just performs sleep for given time interval.

Example of usage:

void draw_canvas(bool &run_loop, std::make_shared<RH1D> hist)
{
auto canvas = RCanvas::Create("Canvas title");
canvas->Draw(hist)->SetLineColor(RColor::kBlue);
canvas->Show();
while (run_loop) {
pHist->Fill(1);
canvas->Modified();
canvas->Update();
canvas->Run(0.1); // process canvas events
}
canvas->Remove();
}
int main()
{
RAxisConfig xaxis(100, -10., 10.);
auto pHist = std::make_shared<RH1D>(xaxis);
bool run_loop = true;
std::thread thrd(draw_canvas, run_loop, pHist);
std::this_thread::sleep_for(std::chrono::seconds(100));
run_loop = false;
thrd.join();
return 0;
}

Definition at line 211 of file RCanvas.cxx.

◆ SaveAs()

bool ROOT::Experimental::RCanvas::SaveAs ( const std::string &  filename)

Save canvas in image file.

Create image file for the canvas Supported SVG (extension .svg), JPEG (extension .jpg or .jpeg) and PNG (extension .png)

Definition at line 143 of file RCanvas.cxx.

◆ SetSize() [1/2]

RCanvas& ROOT::Experimental::RCanvas::SetSize ( const RPadLength::Pixel width,
const RPadLength::Pixel height 
)
inline

Set canvas pixel size - width and height.

Definition at line 111 of file RCanvas.hxx.

◆ SetSize() [2/2]

RCanvas& ROOT::Experimental::RCanvas::SetSize ( const std::array< RPadLength::Pixel, 2 > &  sz)
inline

Set canvas pixel size as array with two elements - width and height.

Definition at line 104 of file RCanvas.hxx.

◆ SetTitle()

RCanvas& ROOT::Experimental::RCanvas::SetTitle ( const std::string &  title)
inline

Set the canvas's title.

Definition at line 160 of file RCanvas.hxx.

◆ Show()

void ROOT::Experimental::RCanvas::Show ( const std::string &  where = "")

Display the canvas.

Create new display for the canvas The parameter where specifies which program could be used for display creation Possible values:

  • cef Chromium Embeded Framework, local display, local communication
  • qt5 Qt5 WebEngine (when running via rootqt5), local display, local communication
  • browser default system web-browser, communication via random http port from range 8800 - 9800
  • <prog> any program name which will be started instead of default browser, like firefox or /usr/bin/opera one could also specify $url in program name, which will be replaced with canvas URL
  • native either any available local display or default browser

Canvas can be displayed in several different places

Definition at line 95 of file RCanvas.cxx.

◆ Update()

void ROOT::Experimental::RCanvas::Update ( bool  async = false,
CanvasCallback_t  callback = nullptr 
)

update drawing

Update canvas.

Definition at line 61 of file RCanvas.cxx.

Friends And Related Function Documentation

◆ RCanvasPainter

friend class RCanvasPainter
friend

use for ID generation

Definition at line 61 of file RCanvas.hxx.

◆ RChangeAttrRequest

friend class RChangeAttrRequest
friend

used for primitives drawing

Definition at line 62 of file RCanvas.hxx.

◆ RPadBase

friend class RPadBase
friend

Definition at line 60 of file RCanvas.hxx.

Member Data Documentation

◆ fModified

Version_t ROOT::Experimental::RCanvas::fModified {1}
private

Modify counter, incremented every time canvas is changed.

!

Definition at line 71 of file RCanvas.hxx.

◆ fPainter

std::unique_ptr<Internal::RVirtualCanvasPainter> ROOT::Experimental::RCanvas::fPainter
private

The painter of this canvas, bootstrapping the graphics connection.

Unmapped canvases (those that never had Draw() invoked) might not have a painter. !

Definition at line 76 of file RCanvas.hxx.

◆ fSize

std::array<RPadLength::Pixel, 2> ROOT::Experimental::RCanvas::fSize
private

Size of the canvas in pixels,.

Definition at line 68 of file RCanvas.hxx.

◆ fTitle

std::string ROOT::Experimental::RCanvas::fTitle
private

to apply attributes changes

Title of the canvas.

Definition at line 65 of file RCanvas.hxx.


The documentation for this class was generated from the following files:
ROOT::Experimental::RCanvas::Create
static std::shared_ptr< RCanvas > Create(const std::string &title)
Create new canvas instance.
Definition: RCanvas.cxx:70
ROOT::Experimental::RColor::kBlue
static constexpr RGB_t kBlue
Definition: RColor.hxx:235
main
int main(int argc, char **argv)
Definition: histspeedtest.cxx:751