Ion
|
An AttributeArray represents a collection of Attributes used to describe the vertices of a Shape. More...
#include "attributearray.h"
Public Types | |
enum | Changes { kAttributeChanged = kNumBaseChanges, kAttributeEnabledChanged = kAttributeChanged + kAttributeSlotCount, kNumChanges = kAttributeEnabledChanged + kAttributeSlotCount } |
Changes that affect the resource. More... | |
enum | BaseChanges { kLabelChanged, kResourceChanged, kNumBaseChanges } |
All ResourceHolders derived from this should start their own change enums from kNumBaseChanges. More... | |
Public Member Functions | |
AttributeArray () | |
size_t | GetAttributeIndexByName (const std::string &name) |
Returns the index of the first Attribute with the passed name. More... | |
size_t | AddAttribute (const Attribute &attribute) |
Adds an Attribute to this AttributeArray. More... | |
bool | ReplaceAttribute (size_t index, const Attribute &attribute) |
Replaces the attribute at an index with the supplied Attribute if both the index and the attribute are valid. More... | |
void | EnableAttribute (const size_t attribute_index, bool enabled) |
Enables or disables attributes. More... | |
bool | IsAttributeEnabled (const size_t attribute_index) const |
Returns if the Attribute at the passed index is enabled, or false if an invalid index is passed. More... | |
void | EnableBufferAttribute (const size_t i, bool enabled) |
Enables or disables the ith buffer Attribute. More... | |
bool | IsBufferAttributeEnabled (const size_t i) const |
Returns if the ith buffer Attribute is enabled, or false if i is not a valid index. More... | |
size_t | GetAttributeCount () const |
Gets the total number of Attributes in the AttributeArray. More... | |
size_t | GetBufferAttributeCount () const |
Gets the number of buffer Attributes in the AttributeArray. More... | |
size_t | GetSimpleAttributeCount () const |
Gets the number of simple Attributes in the AttributeArray. More... | |
const Attribute & | GetAttribute (const size_t attribute_index) const |
Returns the Attribute at the passed index. More... | |
const Attribute & | GetBufferAttribute (const size_t i) const |
const Attribute & | GetSimpleAttribute (const size_t i) const |
Attribute * | GetMutableAttribute (const size_t attribute_index) |
Returns a pointer to the Attribute at the passed index. More... | |
Attribute * | GetMutableBufferAttribute (const size_t i) |
Attribute * | GetMutableSimpleAttribute (const size_t i) |
void | SetResource (size_t index, ResourceKey key, ResourceBase *resource) const |
Sets the resource at the passed index and key. More... | |
ResourceBase * | GetResource (size_t index, ResourceKey key) const |
Returns the Resource at the given index and key, or NULL if no resource was previously set at that location. More... | |
int | GetResourceCount () const |
Returns the number of resources that this holder holds. More... | |
size_t | GetGpuMemoryUsed () const |
Returns the total amount of GPU memory used by this Holder's resource. More... | |
const std::string & | GetLabel () const |
Returns/sets the label of this. More... | |
void | SetLabel (const std::string &label) |
void | AddReceiver (Notifier *receiver) |
Adds a Notifier to be notified. More... | |
void | RemoveReceiver (Notifier *receiver) |
Removes a Notifier to be notified. More... | |
size_t | GetReceiverCount () const |
Returns the number of Notifiers that will be notified. More... | |
const AllocatorPtr & | GetAllocator () const |
Returns the Allocator that was used for the instance. More... | |
const AllocatorPtr & | GetNonNullAllocator () const |
Return our allocator, or the default allocator if the instance was declared on the stack. More... | |
const AllocatorPtr & | GetAllocatorForLifetime (AllocationLifetime lifetime) const |
Convenience function that returns the Allocator to use to allocate an object with a specific lifetime. More... | |
void * | operator new (size_t size) |
The standard no-parameter new operator uses the default Allocator. More... | |
void * | operator new (size_t size, AllocationLifetime lifetime) |
This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime. More... | |
void * | operator new (size_t size, const AllocatorPtr &allocator) |
This overloaded version of the new operator takes the Allocator to use directly as a parameter. More... | |
void * | operator new (size_t size, const AllocatorPtr &allocator, void *ptr) |
Special operator new for using placement new with Allocatables. More... | |
void * | operator new (size_t size, void *ptr) |
The placement new operator is defined conventionally. More... | |
void | operator delete (void *ptr) |
Define the delete operator to use specialized functions dealing with an Allocator. More... | |
void | operator delete (void *ptr, AllocationLifetime lifetime) |
Windows requires these (or it issues C4291 warnings). More... | |
void | operator delete (void *ptr, const AllocatorPtr &allocator) |
void | operator delete (void *ptr, void *ptr2) |
The placement delete operator does nothing, as usual. More... | |
int | GetRefCount () const |
GetRefCount() is part of the interface necessary for SharedPtr. More... | |
Protected Types | |
typedef WeakReferentPtr< Notifier > | NotifierPtr |
typedef AllocVector< NotifierPtr > | NotifierPtrVector |
Protected Member Functions | |
~AttributeArray () override | |
The destructor is protected because all base::Referent classes must have protected or private destructors. More... | |
void | OnChanged (int bit) const |
Forwards OnChanged to all resources. More... | |
const NotifierPtrVector & | GetReceivers () const |
Returns the set of Notifiers that will be notified. More... | |
void | Notify () const |
Notifies all contained Notifiers by calling their OnNotify(). More... | |
An AttributeArray represents a collection of Attributes used to describe the vertices of a Shape.
For the purposes of an AttributeArray, a "buffer" Attribute is an attribute of type kBufferObjectElementAttribute, while all other Attributes are "simple."
Definition at line 36 of file attributearray.h.
|
protectedinherited |
Definition at line 49 of file notifier.h.
|
protectedinherited |
Definition at line 50 of file notifier.h.
|
inherited |
All ResourceHolders derived from this should start their own change enums from kNumBaseChanges.
Enumerator | |
---|---|
kLabelChanged | |
kResourceChanged | |
kNumBaseChanges |
Definition at line 56 of file resourceholder.h.
Changes that affect the resource.
Enumerator | |
---|---|
kAttributeChanged | |
kAttributeEnabledChanged |
The entries between kAttributeChanged and kAttributeEnabledChanged are reserved for determining which attribute has changed. |
kNumChanges |
Definition at line 39 of file attributearray.h.
ion::gfx::AttributeArray::AttributeArray | ( | ) |
Definition at line 27 of file attributearray.cc.
|
overrideprotected |
The destructor is protected because all base::Referent classes must have protected or private destructors.
Definition at line 34 of file attributearray.cc.
References ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::GetValue(), and ion::base::Notifier::RemoveReceiver().
Adds an Attribute to this AttributeArray.
Returns a static index that refers to the Attribute, to be used when enabling or disabling attributes below. Attempting to add an Attribute that already exists in the array is a noop and returns the index of the existing Attribute. Returns base::kInvalidIndex if an attempt is made to add an invalid attribute.
Definition at line 65 of file attributearray.cc.
References ion::gfx::BufferObjectElement::buffer_object, ion::base::SharedPtr< T >::Get(), ion::gfx::ShaderInputRegistry::GetId(), ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::GetIndexInRegistry(), ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::GetRegistry(), ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::GetType(), ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::GetValue(), ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::IsValid(), ion::gfx::kBufferObjectElementAttribute, and ion::base::kInvalidIndex.
|
inherited |
Adds a Notifier to be notified.
Does nothing if the receiver is NULL or is already in the receiver vector.
Definition at line 25 of file notifier.cc.
Enables or disables attributes.
Disabled Attributes are ignored during rendering. Invalid Attributes are considered disabled. Only Attributes of type kBufferObjectElementAttribute can be disabled. The passed index should be the index returned by AddAttribute().
Definition at line 160 of file attributearray.cc.
Enables or disables the ith buffer Attribute.
Note that i is not necessarily the index returned by AddAttribute().
Definition at line 76 of file attributearray.h.
|
inlineinherited |
Returns the Allocator that was used for the instance.
This will be NULL if the instance was declared on the stack or created with normal placement new.
Definition at line 68 of file allocatable.h.
References allocator_.
Referenced by ion::base::DataContainer::CreateAndCopy(), ion::text::DynamicFontImage::FindContainingImageDataIndex(), and ion::text::DynamicFontImage::FindImageDataIndex().
|
inlineinherited |
Convenience function that returns the Allocator to use to allocate an object with a specific lifetime.
Definition at line 78 of file allocatable.h.
References ion::base::Allocator::GetAllocatorForLifetime().
Referenced by ion::text::BasicBuilder::BuildVertexData(), ion::text::OutlineBuilder::BuildVertexData(), ion::gfxutils::ShaderManager::CreateShaderProgram(), ion::text::DynamicFontImage::FindContainingImageDataIndex(), ion::text::DynamicFontImage::FindImageDataIndex(), ion::gfx::Renderer::Renderer(), and ion::gfx::UpdateStateTable().
Returns the Attribute at the passed index.
If attribute_index or i is not a valid index then returns an InvalidReference. Note that attribute_index is the index returned from AddAttribute(), but i is just the ith entry. The value of i may not always refer to the same attribute across calls.
Definition at line 183 of file attributearray.cc.
|
inline |
Gets the total number of Attributes in the AttributeArray.
Definition at line 90 of file attributearray.h.
size_t ion::gfx::AttributeArray::GetAttributeIndexByName | ( | const std::string & | name | ) |
Returns the index of the first Attribute with the passed name.
Returns the index of the attribute with the passed name.
This index can be passed to ReplaceAttribte(), EnableAttribute(), IsAttributeEnabled(), etc. Returns base::kInvalidIndex if there is no matching Attribute.
Definition at line 45 of file attributearray.cc.
References ion::gfx::ShaderInputRegistry::GetSpec(), and ion::base::kInvalidIndex.
Definition at line 107 of file attributearray.h.
|
inline |
Gets the number of buffer Attributes in the AttributeArray.
Definition at line 94 of file attributearray.h.
|
inlineinherited |
Returns the total amount of GPU memory used by this Holder's resource.
Definition at line 78 of file resourceholder.h.
|
inlineinherited |
Returns/sets the label of this.
Definition at line 89 of file resourceholder.h.
Returns a pointer to the Attribute at the passed index.
If attribute_index or i is not a valid index then returns NULL. Note that i is not necessarily the index returned by AddAttribute(), and may not always refer to the same attribute across calls. Triggers the AttributeArray's Resource's OnChanged() method on success.
Definition at line 196 of file attributearray.cc.
References GetMutableBufferAttribute(), and GetMutableSimpleAttribute().
Definition at line 124 of file attributearray.h.
Referenced by GetMutableAttribute().
Definition at line 127 of file attributearray.h.
Referenced by GetMutableAttribute().
|
inlineinherited |
Return our allocator, or the default allocator if the instance was declared on the stack.
Definition at line 72 of file allocatable.h.
References allocator_, and ion::base::AllocationManager::GetNonNullAllocator().
|
inherited |
Returns the number of Notifiers that will be notified.
Definition at line 71 of file notifier.cc.
|
protectedinherited |
Returns the set of Notifiers that will be notified.
Definition at line 77 of file notifier.cc.
|
inlineinherited |
GetRefCount() is part of the interface necessary for SharedPtr.
Definition at line 34 of file shareable.h.
Referenced by ion::base::Notifier::RemoveReceiver().
|
inherited |
Returns the Resource at the given index and key, or NULL if no resource was previously set at that location.
Definition at line 122 of file resourceholder.cc.
|
inlineinherited |
Returns the number of resources that this holder holds.
Note that this is not necessarily the number of indices that have non-NULL resources. This can be used as a fast trivial check to see if the holder has any resources.
Definition at line 73 of file resourceholder.h.
Definition at line 110 of file attributearray.h.
|
inline |
Gets the number of simple Attributes in the AttributeArray.
Definition at line 98 of file attributearray.h.
Returns if the Attribute at the passed index is enabled, or false if an invalid index is passed.
Definition at line 171 of file attributearray.cc.
References DCHECK_EQ.
Returns if the ith buffer Attribute is enabled, or false if i is not a valid index.
Note that i is not necessarily the index returned by AddAttribute().
Definition at line 82 of file attributearray.h.
References ion::base::IsInvalidReference(), and value.
|
protectedinherited |
Notifies all contained Notifiers by calling their OnNotify().
Any receivers that have been destroyed will be removed from the vector of receivers.
Definition at line 81 of file notifier.cc.
References ion::base::SharedPtr< T >::Get().
|
inlineprotectedinherited |
Forwards OnChanged to all resources.
Definition at line 326 of file resourceholder.h.
|
inlineinherited |
Define the delete operator to use specialized functions dealing with an Allocator.
Definition at line 109 of file allocatable.h.
|
inlineinherited |
Windows requires these (or it issues C4291 warnings).
Definition at line 112 of file allocatable.h.
|
inlineinherited |
Definition at line 113 of file allocatable.h.
|
inlineinherited |
The placement delete operator does nothing, as usual.
Definition at line 118 of file allocatable.h.
|
inlineinherited |
The standard no-parameter new operator uses the default Allocator.
Definition at line 84 of file allocatable.h.
|
inlineinherited |
This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime.
Definition at line 88 of file allocatable.h.
|
inlineinherited |
This overloaded version of the new operator takes the Allocator to use directly as a parameter.
If the Allocator pointer is NULL, this uses the default Allocator.
Definition at line 95 of file allocatable.h.
|
inlineinherited |
Special operator new for using placement new with Allocatables.
Definition at line 100 of file allocatable.h.
|
inlineinherited |
The placement new operator is defined conventionally.
Definition at line 105 of file allocatable.h.
|
inherited |
Removes a Notifier to be notified.
Does nothing if the receiver is NULL or not in the set of receivers.
Definition at line 38 of file notifier.cc.
References ion::base::Shareable::GetRefCount().
Referenced by ~AttributeArray().
Replaces the attribute at an index with the supplied Attribute if both the index and the attribute are valid.
Returns if the replacement was successful.
Definition at line 103 of file attributearray.cc.
References ion::gfx::BufferObjectElement::buffer_object, ion::base::SharedPtr< T >::Get(), ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::GetType(), ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::GetValue(), ion::gfx::ShaderInput< ValueHolderType, ValueEnumType >::IsValid(), and ion::gfx::kBufferObjectElementAttribute.
|
inlineinherited |
Definition at line 90 of file resourceholder.h.
|
inherited |
Sets the resource at the passed index and key.
The size of the internal vector is automatically managed so that it has the smallest possible size.
Definition at line 51 of file resourceholder.cc.
References DCHECK, DCHECK_EQ, ion::gfx::ResourceBase::GetKey(), and ion::gfx::ResourceBase::OnChanged().