#include <GA_AIFEdit.h>
Public Member Functions | |
| GA_AIFEditDelta () | |
| virtual | ~GA_AIFEditDelta () |
| virtual GA_AIFEditDelta * | createNew () const =0 |
| Create a new (empty) instance of the derived class. | |
| virtual GA_AIFEditDelta * | clone () const =0 |
| Create a copy of this delta. | |
| virtual bool | isCompatible (const GA_Attribute *attrib) const =0 |
| Test compatibility with a particular attribute. | |
| virtual bool | isCompatible (const GA_AIFEditDelta *delta) const =0 |
| virtual GA_AIFEditSnapshot * | startEdit (const GA_Attribute *attrib, GA_Offset element)=0 |
| virtual GA_AIFEditSnapshot * | startEdit (const GA_Attribute *attrib, const GA_Range &elements)=0 |
| virtual bool | endEdit (GA_AIFEditSnapshot *snapshot, const GA_AIFEditDeltaMap &map, const GA_AIFEditDeltaCoordFrames *frames=0)=0 |
| virtual bool | mergeEdit (const GA_AIFEditDelta *other, const GA_AIFEditDeltaCoordFrames *otherfr=0, const GA_AIFEditDeltaCoordFrames *localfr=0, bool inverse=false)=0 |
| virtual bool | mergeSymmetricEdit (const GA_AIFEditDelta *other, const GA_AIFEditDeltaCoordFrames *otherfr, GA_AIFEditSymmetry &symmetry, const GA_AIFEditDeltaMap &map, const GA_AIFEditDeltaCoordFrames *localfr, bool inverse=false)=0 |
| virtual bool | applyEdit (GA_Attribute *attrib, const GA_AIFEditDeltaMap &map, const UT_Int64Array *subset=0, const GA_AIFEditDeltaCoordFrames *frames=0, bool inverse=false) const =0 |
| virtual bool | applyScaledEdit (GA_Attribute *attrib, fpreal scale, const GA_AIFEditDeltaMap &map, const UT_Int64Array *subset=0, const GA_AIFEditDeltaCoordFrames *frames=0, bool inverse=false) const =0 |
| virtual GA_Size | getDeltaCount () const =0 |
| Query the number of indices that have recorded deltas. | |
| virtual bool | jsonSaveDefinition (UT_JSONWriter &w) const =0 |
| virtual bool | jsonSave (UT_JSONWriter &w) const =0 |
| Save the delta object to a JSON stream. | |
| virtual bool | jsonLoad (UT_JSONParser &p)=0 |
| Load a delta object from a JSON stream. | |
| virtual bool | legacyLoadTuple (GA_AIFEditDeltaTupleLegacyStream &) |
| Load a legacy tuple delta. Only supported by some subclasses. | |
| virtual bool | legacyLoadIndexPair (GA_AIFEditDeltaIndexPairLegacyStream &) |
| Load a legacy index pair delta. Only supported by some subclasses. | |
| virtual void | zeroDeltas ()=0 |
| virtual void | clearDeltas ()=0 |
| virtual int | getObjectSetCount () const |
| virtual void | setObjectSetCount (int n) |
| virtual const GA_AIFIndexPairObjects * | getObjects (int s=0) const |
| virtual GA_AIFIndexPairObjects * | getObjects (int s=0) |
Static Public Member Functions | |
| static bool | jsonSaveDelta (UT_JSONWriter &w, const GA_AIFEditDelta *delta) |
| static bool | jsonLoadDelta (UT_JSONParser &p, GA_AIFEditDelta *&delta) |
| static void * | operator new (size_t size) |
| static void * | operator new (size_t size, void *p) |
| In-place construction. | |
| static void | operator delete (void *p, size_t size) |
| Deletion of an allocated object. | |
| static void | getAllocationStats (int64 &used, int64 &peak) |
| Get memory statistics. | |
This class is responsible for maintaining changes to an attribute. The class must be able to save/load to a JSON stream.
The deltas are used by painting, editing and other modelling operations. For example, an undo mechanism might be implemented by:
changeAttrib()
{
GA_AIFEditDelta *delta;
GA_Attribute *P;
GA_AIFEditSnapshot *snapshot;
delta = P->getAIFEdit()->createDelta(); // TODO: NULL ptr check
snapshot = delta->startEdit(P, GA_Range(P->getIndexMap()));
letUserEditPoints(P);
delta->endEdit(snapshot, GA_AIFEditDeltaIndexMap(P->getIndexMap()));
}
doUndoRedo(GA_Attribute *P, GA_AIFEditDelta *delta, bool undo)
{
delta->applyEdit(P, GA_AIFEditDeltaIndexMap(P->getIndexMap()), undo);
}
Definition at line 215 of file GA_AIFEdit.h.
| GA_AIFEditDelta::GA_AIFEditDelta | ( | ) |
| virtual GA_AIFEditDelta::~GA_AIFEditDelta | ( | ) | [virtual] |
| virtual bool GA_AIFEditDelta::applyEdit | ( | GA_Attribute * | attrib, | |
| const GA_AIFEditDeltaMap & | map, | |||
| const UT_Int64Array * | subset = 0, |
|||
| const GA_AIFEditDeltaCoordFrames * | frames = 0, |
|||
| bool | inverse = false | |||
| ) | const [pure virtual] |
Apply this snapshot's edit delta to the attribute, optionally restricting which delta indices get applied. The optional coordinate frames will be used to apply deltas previously mapped to local space in world space (if supported).
| virtual bool GA_AIFEditDelta::applyScaledEdit | ( | GA_Attribute * | attrib, | |
| fpreal | scale, | |||
| const GA_AIFEditDeltaMap & | map, | |||
| const UT_Int64Array * | subset = 0, |
|||
| const GA_AIFEditDeltaCoordFrames * | frames = 0, |
|||
| bool | inverse = false | |||
| ) | const [pure virtual] |
Scale and apply this snapshot's edit delta to the attribute, optionally restricting which delta indices get applied. This operation is not supported by all attributes supporting AIF_Edit. The optional coordinate frames will be used to apply deltas previously mapped to local space in world space (if supported).
| virtual void GA_AIFEditDelta::clearDeltas | ( | ) | [pure virtual] |
Clear currently stored deltas. The first method, zeroDeltas(), is a lighter-weight clear that will endeavour to hold onto and reuse most allocated memory.
| virtual GA_AIFEditDelta* GA_AIFEditDelta::clone | ( | ) | const [pure virtual] |
Create a copy of this delta.
| virtual GA_AIFEditDelta* GA_AIFEditDelta::createNew | ( | ) | const [pure virtual] |
Create a new (empty) instance of the derived class.
| virtual bool GA_AIFEditDelta::endEdit | ( | GA_AIFEditSnapshot * | snapshot, | |
| const GA_AIFEditDeltaMap & | map, | |||
| const GA_AIFEditDeltaCoordFrames * | frames = 0 | |||
| ) | [pure virtual] |
After editing, the endEdit() method is called. This allows the computation of the actual delta from the snapshot. Do not use the snapshot again after calling this method. The optional coordinate frames will be used to store the delta relative to the local frame if supported.
Get memory statistics.
| virtual GA_Size GA_AIFEditDelta::getDeltaCount | ( | ) | const [pure virtual] |
Query the number of indices that have recorded deltas.
| virtual GA_AIFIndexPairObjects* GA_AIFEditDelta::getObjects | ( | int | s = 0 |
) | [virtual] |
Query and set information about objects referenced by index pair data. Only supported by some subclasses.
| virtual const GA_AIFIndexPairObjects* GA_AIFEditDelta::getObjects | ( | int | s = 0 |
) | const [virtual] |
Query and set information about objects referenced by index pair data. Only supported by some subclasses.
| virtual int GA_AIFEditDelta::getObjectSetCount | ( | ) | const [virtual] |
Query and set information about objects referenced by index pair data. Only supported by some subclasses.
| virtual bool GA_AIFEditDelta::isCompatible | ( | const GA_AIFEditDelta * | delta | ) | const [pure virtual] |
Test compatibility with another delta. Compatibility in this case refers to ability to merge the deltas.
| virtual bool GA_AIFEditDelta::isCompatible | ( | const GA_Attribute * | attrib | ) | const [pure virtual] |
Test compatibility with a particular attribute.
| virtual bool GA_AIFEditDelta::jsonLoad | ( | UT_JSONParser & | p | ) | [pure virtual] |
Load a delta object from a JSON stream.
| static bool GA_AIFEditDelta::jsonLoadDelta | ( | UT_JSONParser & | p, | |
| GA_AIFEditDelta *& | delta | |||
| ) | [static] |
| virtual bool GA_AIFEditDelta::jsonSave | ( | UT_JSONWriter & | w | ) | const [pure virtual] |
Save the delta object to a JSON stream.
| virtual bool GA_AIFEditDelta::jsonSaveDefinition | ( | UT_JSONWriter & | w | ) | const [pure virtual] |
GA_AttributeType::jsonLoadDeltaDefinition() is the counterpart to this method.
| static bool GA_AIFEditDelta::jsonSaveDelta | ( | UT_JSONWriter & | w, | |
| const GA_AIFEditDelta * | delta | |||
| ) | [static] |
[
"name" : "GA_AIFEditDelta",
"description" :
"A delta is defined by an ordered map (array) with two
elements, the definition ("type") and the private data
("data").
"type" : "orderedmap",
"properties": {
"type": {
"type" : "string",
"description" : "Ordered pair (type name, args)",
},
"data": {
"type" : "string",
"description" : "Internal delta data",
},
}
]
{
"name" : "GA_AIFEditDelta-Type",
"description" : "An ordered pair defining the attribute",
"type" : "array",
"items": [
<"Attribute Type Name">, <"Type Arguments">
],
}
| virtual bool GA_AIFEditDelta::legacyLoadIndexPair | ( | GA_AIFEditDeltaIndexPairLegacyStream & | ) | [virtual] |
Load a legacy index pair delta. Only supported by some subclasses.
| virtual bool GA_AIFEditDelta::legacyLoadTuple | ( | GA_AIFEditDeltaTupleLegacyStream & | ) | [virtual] |
Load a legacy tuple delta. Only supported by some subclasses.
| virtual bool GA_AIFEditDelta::mergeEdit | ( | const GA_AIFEditDelta * | other, | |
| const GA_AIFEditDeltaCoordFrames * | otherfr = 0, |
|||
| const GA_AIFEditDeltaCoordFrames * | localfr = 0, |
|||
| bool | inverse = false | |||
| ) | [pure virtual] |
Merge a separate edit into this edit, matching elements by the internal ordered index. The optional coordinate frames will be used to store the delta relative to the local frame if supported.
| virtual bool GA_AIFEditDelta::mergeSymmetricEdit | ( | const GA_AIFEditDelta * | other, | |
| const GA_AIFEditDeltaCoordFrames * | otherfr, | |||
| GA_AIFEditSymmetry & | symmetry, | |||
| const GA_AIFEditDeltaMap & | map, | |||
| const GA_AIFEditDeltaCoordFrames * | localfr, | |||
| bool | inverse = false | |||
| ) | [pure virtual] |
Merge the edits symmetric to those in a separate edit into this edit, matching elements by internal ordered index. The optional coordinate frames will be used to store the delta relative to the local frame if supported.
| static void GA_AIFEditDelta::operator delete | ( | void * | p, | |
| size_t | size | |||
| ) | [static] |
Deletion of an allocated object.
| static void* GA_AIFEditDelta::operator new | ( | size_t | size, | |
| void * | p | |||
| ) | [static] |
In-place construction.
| static void* GA_AIFEditDelta::operator new | ( | size_t | size | ) | [static] |
The new & delete operators are overloaded to help with memory tracking. Allocate new object
| virtual void GA_AIFEditDelta::setObjectSetCount | ( | int | n | ) | [virtual] |
Query and set information about objects referenced by index pair data. Only supported by some subclasses.
| virtual GA_AIFEditSnapshot* GA_AIFEditDelta::startEdit | ( | const GA_Attribute * | attrib, | |
| const GA_Range & | elements | |||
| ) | [pure virtual] |
| virtual GA_AIFEditSnapshot* GA_AIFEditDelta::startEdit | ( | const GA_Attribute * | attrib, | |
| GA_Offset | element | |||
| ) | [pure virtual] |
The startEdit() method allows the snapshot to see the state of the attribute before any edits are made to the data.
| virtual void GA_AIFEditDelta::zeroDeltas | ( | ) | [pure virtual] |
Clear currently stored deltas. The first method, zeroDeltas(), is a lighter-weight clear that will endeavour to hold onto and reuse most allocated memory.
1.5.9