16#ifndef ROOT7_RDrawable
17#define ROOT7_RDrawable
23namespace Experimental {
25class RDrawingOptsBase;
50 virtual void Execute(
const std::string &);
60template <
class DERIVED>
103 new (&
fShared) std::shared_ptr<T>(std::move(rhs.fShared));
125 fWeak = std::move(rhs.fWeak);
126 auto shptr = rhs.fWeak.lock();
129 fUnique = std::move(rhs.fUnique);
Abstract interface for object painting on the pad/canvas.
Gives transparent access to the shared or unique pointer.
std::shared_ptr< T > fShared
The shared_ptr accessing a TUniWeak's weak_ptr.
T * fRaw
The raw, non-owning pointer accessing a TUniWeak's unique_ptr.
Accessor(const TUniWeakPtr &uniweak)
bool fIsShared
fRaw or fShared?
T * fWeakForIO
Cannot save for now :-(.
TUniWeakPtr(const std::shared_ptr< T > &ptr)
TUniWeakPtr(TUniWeakPtr &&rhs)
TUniWeakPtr(std::unique_ptr< T > &&ptr)
bool fIsWeak
fUnique or fWeak?
std::unique_ptr< T > fUnique
RDrawingOptsBase & GetOptionsBase() override
Get the reference to the drawing options as RDrawingOptsBase.
Base class for drawable entities: objects that can be painted on a RPad.
virtual void PopulateMenu(RMenuItems &)
Method can be used to provide menu items for the drawn object.
std::string GetId() const
virtual void Execute(const std::string &)
virtual RDrawingOptsBase & GetOptionsBase()=0
Get the reference to the drawing options as RDrawingOptsBase.
std::string fId
object identifier, unique inside RCanvas
virtual void Paint(Internal::RPadPainter &onPad)=0
Base class for graphic containers for RDrawable-s.
Namespace for new ROOT classes and functions.