Donner SVG main
0.8.0 ยท 382bd0190.8.0 main
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::svg::components::GeometryPreparationResourceBudget Class Reference

Owns the current computed-path reservation for one document registry. More...

#include "donner/svg/components/GeometryPreparationResourceBudget.h"

Classes

struct  Limits
 Local ceiling for geometry reservations. More...

Public Member Functions

 GeometryPreparationResourceBudget (std::shared_ptr< DocumentResourceFamilyBudget > family=nullptr)
 Create a geometry budget with the default local limit.
 GeometryPreparationResourceBudget (std::shared_ptr< DocumentResourceFamilyBudget > family, Limits limits)
 Create a geometry budget with a caller-selected local limit.
 GeometryPreparationResourceBudget (const GeometryPreparationResourceBudget &)=delete
GeometryPreparationResourceBudget & operator= (const GeometryPreparationResourceBudget &)=delete
 GeometryPreparationResourceBudget (GeometryPreparationResourceBudget &&other) noexcept
 Transfer reservations without releasing the shared family's retained bytes.
GeometryPreparationResourceBudget & operator= (GeometryPreparationResourceBudget &&)=delete
bool reserve (Entity entity, std::size_t bytes)
 Replace one entity's geometry reservation, releasing bytes when it shrinks.
void release (Entity entity)
 Release one entity's geometry reservation.
void reset ()
 Release every reservation and clear the rejection state.
std::size_t retainedBytes () const
 Aggregate geometry bytes currently reserved by this budget.
bool rejected () const
 Whether a reservation increase has exceeded a resource limit.
const Limits & limits () const
 Configured local retained-byte limit.

Static Public Attributes

static constexpr std::size_t kMaximumBytes = 64 * 1024 * 1024
 Default ceiling for retained computed-path geometry in one document.

Detailed Description

Owns the current computed-path reservation for one document registry.


Class Documentation

◆ donner::svg::components::GeometryPreparationResourceBudget::Limits

struct donner::svg::components::GeometryPreparationResourceBudget::Limits

Local ceiling for geometry reservations.

Class Members
size_t maximumBytes = kMaximumBytes Maximum aggregate bytes reserved for prepared geometry.

Constructor & Destructor Documentation

◆ GeometryPreparationResourceBudget() [1/3]

donner::svg::components::GeometryPreparationResourceBudget::GeometryPreparationResourceBudget ( std::shared_ptr< DocumentResourceFamilyBudget > family = nullptr)
inlineexplicit

Create a geometry budget with the default local limit.

Parameters
familyShared document resource budget, or null for local accounting only.

◆ GeometryPreparationResourceBudget() [2/3]

donner::svg::components::GeometryPreparationResourceBudget::GeometryPreparationResourceBudget ( std::shared_ptr< DocumentResourceFamilyBudget > family,
Limits limits )
inline

Create a geometry budget with a caller-selected local limit.

Parameters
familyShared document resource budget, or null for local accounting only.
limitsLocal retained-byte limit.

◆ GeometryPreparationResourceBudget() [3/3]

donner::svg::components::GeometryPreparationResourceBudget::GeometryPreparationResourceBudget ( GeometryPreparationResourceBudget && other)
inlinenoexcept

Transfer reservations without releasing the shared family's retained bytes.

Parameters
otherBudget whose reservations are moved into this object.

Member Function Documentation

◆ release()

void donner::svg::components::GeometryPreparationResourceBudget::release ( Entity entity)
inline

Release one entity's geometry reservation.

Parameters
entityOwner whose reservation is removed.

◆ reserve()

bool donner::svg::components::GeometryPreparationResourceBudget::reserve ( Entity entity,
std::size_t bytes )
inline

Replace one entity's geometry reservation, releasing bytes when it shrinks.

Parameters
entityOwner of the prepared geometry.
bytesNew retained-byte reservation for this entity.
Returns
False if an increase exceeds the local or shared family limit.

The documentation for this class was generated from the following file: