28namespace Experimental {
84 if (ndim*2 >
values.size()) {
86 flags.resize(ndim*2,
false);
109 flags[ndim*2+1] =
true;
114 if (ndim*2+1 <
flags.size())
117 if (ndim*2+1 <
values.size())
124 return (ndim*2+1 <
flags.size()) && (ndim*2+1 <
values.size()) &&
132 for (
auto fl :
flags)
174 explicit RFrame(std::vector<std::unique_ptr<RPadUserAxisBase>> &&coords);
176 void SetClientRanges(
unsigned connid,
const RUserRanges &ranges,
bool ismainconn);
191 std::unique_ptr<RDrawableReply>
Process()
override
261 std::array<RPadLength::Normal, 2>
UserToNormal(
const std::array<RPadLength::User, 2> &pos)
const
All supported axes attributes for: line, ticks, labels, title, min/max, log, reverse,...
Drawing fill attributes for different objects.
Drawing line attributes for different objects.
A margins attributes. Only relative and pixel coordinates are allowed.
Template class to access single value from drawable or other attributes.
Base class for requests which can be submitted from the clients.
const RDrawable::RDisplayContext & GetContext() const
unsigned GetConnId() const
RDrawable * GetDrawable() const
Base class for drawable entities: objects that can be painted on a RPad.
bool IsUnzoom(unsigned ndim) const
Returns true if axis configured as unzoomed, can be specified from client.
bool HasMin(unsigned ndim) const
void Update(const RUserRanges &src)
void AssignMin(unsigned ndim, double value)
RUserRanges(double xmin, double xmax, double ymin, double ymax)
bool HasMax(unsigned ndim) const
std::vector< double > values
min/max values for all dimensions
void UpdateDim(unsigned ndim, const RUserRanges &src)
double GetMax(unsigned ndim) const
RUserRanges(double xmin, double xmax)
std::vector< bool > flags
flag if values available
double GetMin(unsigned ndim) const
void AssignMax(unsigned ndim, double value)
void Extend(unsigned ndim=3)
void ClearMinMax(unsigned ndim)
std::unique_ptr< RDrawableReply > Process() override
Holds an area where drawing on user coordinate-system can be performed.
std::array< RPadLength::Normal, 2 > UserToNormal(const std::array< RPadLength::User, 2 > &pos) const
Convert user coordinates to normal coordinates.
RFrame & SetAttrX(const RAttrAxis &axis)
RFrame & SetGridX(bool on=true)
std::map< unsigned, RUserRanges > fClientRanges
! individual client ranges
RAttrValue< int > fTicksY
! Y ticks drawing
const RAttrAxis & GetAttrY() const
RFrame & SetAttrFill(const RAttrFill &fill)
RAttrMargins fMargins
! frame margins relative to pad
RFrame(const RFrame &)=delete
RAttrValue< bool > fGridX
! show grid for X axis
RAttrAxis fAttrX
! drawing attributes for X axis
RFrame & SetSwapX(bool on=true)
const RAttrAxis & GetAttrZ() const
RAttrValue< bool > fGridY
! show grid for Y axis
void AssignZoomRange(unsigned ndim, RAttrAxis &axis, const RUserRanges &ranges)
Internal - assign client zoomed range to specified axis.
RFrame & SetTicksY(int v=1)
Configure Y ticks drawing 0 - off, 1 - as configured for axis, 2 - both sides, 3 - labels on both sid...
void GetAxisRanges(unsigned ndim, const RAttrAxis &axis, RUserRanges &ranges) const
Internal - extract range for specified axis.
RFrame & SetMargins(const RAttrMargins &margins)
const RAttrAxis & GetAttrX() const
void GetClientRanges(unsigned connid, RUserRanges &ranges)
Return ranges configured for the client.
RFrame & operator=(const RFrame &)=delete
size_t GetNDimensions() const
Get the number of axes.
RAttrValue< bool > fSwapX
! swap position of X axis
void SetUserAxis(std::vector< std::unique_ptr< RPadUserAxisBase > > &&axes)
Set the user coordinate system.
RFrame & SetAttrZ(const RAttrAxis &axis)
const RAttrMargins & GetMargins() const
RFrame & SetSwapY(bool on=true)
RAttrLine fAttrBorder
! line attributes for border
RAttrAxis fAttrY
! drawing attributes for Y axis
const RAttrFill & GetAttrFill() const
const RAttrLine & GetAttrBorder() const
std::vector< std::unique_ptr< RPadUserAxisBase > > fUserCoord
Mapping of user coordinates to normal coordinates, one entry per dimension.
RFrame & SetAttrBorder(const RAttrLine &border)
RAttrFill fAttrFill
! fill attributes for the frame
RAttrValue< int > fTicksX
! X ticks drawing:
RPadUserAxisBase & GetUserAxis(size_t dimension) const
Get the current user coordinate system for a given dimension.
RFrame & SetTicksX(int v=1)
Configure X ticks drawing 0 - off, 1 - as configured for axis, 2 - both sides, 3 - labels on both sid...
void SetClientRanges(unsigned connid, const RUserRanges &ranges, bool ismainconn)
Remember client range, can be used for drawing or stats box calculations.
RFrame & SetAttrY(const RAttrAxis &axis)
RAttrAxis fAttrZ
! drawing attributes for Z axis
RAttrValue< bool > fSwapY
! swap position of Y axis
void PopulateMenu(RMenuItems &) override
Provide context menu items.
RFrame & SetGridY(bool on=true)
void GrowToDimensions(size_t nDimensions)
Create nDimensions default axes for the user coordinate system.
Base class for graphic containers for RDrawable-s.
Base class for user coordinates (e.g.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...