Geometry represents 2D coordinate data that you can use to render 2D nodes and text. More...
#include <kanzi/core.ui/graphics2d/geometry.hpp>
Classes | |
struct | Vertex |
Vertex for geometry. More... | |
Public Member Functions | |
void | addQuadDescription (const QuadDescription &quad, Vector2 tiling, bool duplicateFirstVertex, bool duplicateLastVertex) |
Adds single quad description using triangle strip primitive type. | |
void | appendVertex (float x, float y, float s, float t) |
Adds a vertex to the end of an array. | |
void | clearData () |
Clears the data. | |
void | drawTextured (Renderer &renderer, Matrix4x4 worldTransform, GraphicsPrimitiveType type, const Material &material) const |
Draws the geometry. | |
void | drawUntextured (Renderer &renderer, Matrix4x4 worldTransform, GraphicsPrimitiveType type, const Material &material) const |
Draws the geometry. | |
Vertex * | getLocalVertexData () |
Gets the vertex data (local memory pointer). | |
const Vertex * | getLocalVertexData () const |
Gets the vertex data (local memory pointer). | |
const float * | getPositionData () const |
Returns a pointer to position data. | |
const float * | getPositionData (unsigned int vertexOffset) const |
Returns a pointer to position data but with an offset (vertices). | |
const float * | getTexcoordData () const |
Returns a pointer to texcoord data. | |
const float * | getTexcoordData (unsigned int vertexOffset) const |
Returns a pointer to texcoord data but with an offset (vertices). | |
unsigned int | getVertexBufferNativeHandle () const |
Gets the native vertex buffer handle. | |
unsigned int | getVertexCount () const |
Gets the vertex count. | |
bool | isValid () const |
Indicates whether the geometry is valid. | |
Geometry & | operator= (Geometry &&other) |
Move operator. | |
void | setGeometry (Renderer &renderer, const FrameDescription &frame, Vector2 tiling) |
Creates geometry based on tiling. | |
void | setGeometry (Renderer &renderer, const QuadDescription &quad) |
Sets quad geometry. | |
void | setGeometry (Renderer &renderer, const QuadDescription &quad, Vector2 tiling) |
Sets quad geometry. | |
void | setVertex (unsigned int index, float x, float y) |
Sets the data for a vertex by index. | |
void | setVertexCount (size_t count) |
Sets the vertex count. | |
void | uploadData (Renderer &renderer) |
Uploads the complete data blob to GPU. | |
void | uploadData (Renderer &renderer, unsigned int vertexOffset, unsigned int vertexCount) |
Uploads the data to GPU. | |
Public Member Functions inherited from kanzi::GPUResource | |
void | destroy () |
Destroys a GPU resource. | |
unsigned int | getGPUMemoryUsage () const |
Renderer * | getRenderer () const |
void | invalidate () |
Notify resource that graphics context was lost and all GPU resources are invalid. | |
bool | isDeployed () const |
~GPUResource () override | |
Public Member Functions inherited from kanzi::Resource | |
virtual unsigned int | getCPUMemoryUsage () const |
Function for getting the memory usage of a resource. | |
const string & | getName () const |
Gets the resource name. | |
const string & | getUrl () const |
Gets the resource URL. | |
bool | isKeepAlive () const |
Tells if the resource has keep alive flag set. | |
void | reload () |
void | reloadFromFile (string_view filePath) |
void | reloadFromKzb (KzbFile &kzbFile, ReadOnlyMemoryFile &file, KzbMemoryParser &parser) |
void | setKeepAlive (bool keepAlive) |
Sets the keep alive flag. | |
void | setUrl (string_view url) |
Sets the resource URL. | |
~Resource () override | |
Destructor. | |
Public Member Functions inherited from kanzi::Object | |
AppliedStyleEntrySharedPtr | applyObjectStyle (kanzi::StyleSharedPtr style) |
Applies a style to an object. | |
void | applyObjectStyles () |
Apply all styles for an object node. | |
Domain * | getDomain () const |
Returns the domain the object belongs to. | |
const Metaclass * | getDynamicMetaclass () const override |
Returns the metaclass of the dynamic type of the object. | |
MainLoopScheduler * | getMainLoopScheduler () const |
Returns the MainLoopScheduler instance of the associated Domain. | |
detail::MessageDispatcher * | getMessageDispatcher () const |
Returns the message dispatcher of the object. | |
ResourceManager * | getResourceManager () const |
Returns the resource manager of the object. | |
ScriptingContextSharedPtr | getScriptingContext () const |
Gets the scripting context of the object. | |
Object (Domain *domain) | |
void | setScriptingContext (ScriptingContextSharedPtr context) |
Sets the scripting context of the object. | |
void | unapplyObjectStyle (AppliedStyleEntrySharedPtr appliedStyleEntry) |
void | unapplyObjectStyles () |
Unapplies and removes all applied styles. | |
~Object () override | |
Public Member Functions inherited from kanzi::MetaObject | |
bool | isTypeOf (const Metaclass *objectType) const |
Determines if the type of this object is the given type or derived from it. | |
virtual | ~MetaObject () |
Public Member Functions inherited from kanzi::PropertyObject | |
template<typename DataType > | |
void | addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
template<typename DataType > | |
void | addPropertyModifierWithoutNotifyingHandlers (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
Adds a property modifier without notifying handlers. | |
template<typename DataType > | |
void | addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
template<typename DataType > | |
void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, AbstractPropertyTypeDescriptor::ValueSourceOwner *owner) |
template<typename DataType > | |
void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *ownerPointer) |
PropertyStorageContainer::iterator | beginPropertyStorage () |
Returns the begin iterator to the internal property storage container. | |
PropertyStorageContainer::const_iterator | beginPropertyStorage () const |
Returns the begin iterator to the internal property storage container. | |
void | clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
void | copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType) |
Copies local value of single property from another object. | |
void | copyLocalValues (const PropertyObject &other) |
Copies all local values from another object. | |
PropertyStorageContainer::iterator | endPropertyStorage () |
Returns the end iterator to the internal property storage container. | |
PropertyStorageContainer::const_iterator | endPropertyStorage () const |
Returns the end iterator to the internal property storage container. | |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getAbstractProperty (AbstractPropertyType abstractPropertyType) const |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const |
template<typename DataType > | |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const |
template<typename DataType > | |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalProperty (const PropertyType< DataType > &propertyType) const |
Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value. | |
template<typename DataType > | |
optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalPropertyBase (const PropertyType< DataType > &propertyType) const |
Returns the current value of a property disregarding modifiers, but does not default to the value in property metadata if there are no inputs to the property value. | |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getProperty (const PropertyType< DataType > &propertyType) const |
Returns the current value of a property type. | |
template<typename DataType > | |
PropertyType< DataType >::Traits::ReturnType | getPropertyBase (const PropertyType< DataType > &propertyType) const |
Returns the current value of a property disregarding modifiers. | |
template<typename DataType > | |
size_t | getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) const |
Gets number of current notification handlers for given property type. | |
bool | hasBaseValue (AbstractPropertyType propertyType) const |
Evaluates whether there are any inputs into the property value, disregarding modifiers. | |
bool | hasLocalValue (AbstractPropertyType propertyType) const |
Evaluates whether there is a local value set for the property. | |
bool | hasNonClassValue (AbstractPropertyType propertyType) const |
Evaluates whether there is a value of any precedence higher than class default value set for the property. | |
bool | hasValue (AbstractPropertyType propertyType) const |
Evaluates whether there are any inputs into the property value. | |
bool | isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const |
virtual void | onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) |
Virtual function to handle property change notifications. | |
PropertyObject () | |
void | removeKzbProperties () |
Remove all KZB properties. | |
void | removeKzbProperties (flat_set< AbstractPropertyType > *keepProperties) |
Remove all KZB properties that are not included in a given set. | |
template<typename DataType > | |
void | removeLocalPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer) |
void | removeLocalValue (AbstractPropertyType propertyType) |
Removes the local value associated with the property. | |
template<typename DataType > | |
void | removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
template<typename DataType > | |
void | removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
template<typename DataType > | |
void | removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer) |
template<typename DataType > | |
void | setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
template<typename DataType > | |
void | setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
Sets the local value of a property type. | |
void | setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
KZ_DEPRECATED void | validatePropertyModifiers (AbstractPropertyType propertyType) |
Validates property modifiers and notifies handlers. | |
void | validatePropertyModifiersAndNotifyHandlers (AbstractPropertyType propertyType) |
Validates property modifiers and notifies handlers. | |
virtual | ~PropertyObject () |
Static Public Member Functions | |
static GeometrySharedPtr | create (Domain *domain, string_view name="") |
Creates a geometry resource. | |
static unsigned int | getVertexStride () |
Gets the vertex data size in bytes. | |
Static Public Member Functions inherited from kanzi::Object | |
static const Metaclass * | getStaticMetaclass () |
Returns the metaclass of Object class. | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
Default implementation that returns empty editor info. | |
Static Public Member Functions inherited from kanzi::MetaObject | |
static const Metaclass * | getStaticMetaclass () |
Returns the metaclass of Object class. | |
static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
Default implementation that returns empty editor info. | |
Protected Attributes | |
GPUBufferUniquePtr | m_buffer |
GPU buffer. | |
vector< Vertex > | m_data |
Vertex data. | |
Protected Attributes inherited from kanzi::Object | |
AppliedStyleContainer | m_appliedStyles |
Listing of applied styles applied to this object. | |
Additional Inherited Members | |
Public Types inherited from kanzi::GPUResource | |
enum | MemoryType { GpuOnly , GpuAndRam , RamOnly } |
Memory upload and RAM preservation strategy for GPU resources. More... | |
Public Types inherited from kanzi::PropertyObject | |
typedef PropertyStorageContainer::const_iterator | PropertyStorageConstIterator |
typedef vector< PropertyStoragePtr > | PropertyStorageContainer |
typedef PropertyStorageContainer::iterator | PropertyStorageIterator |
typedef intrusive_ptr< AbstractPropertyTypeDescriptor::PropertyStorage > | PropertyStoragePtr |
typedef PropertyStorageContainer::reverse_iterator | PropertyStorageReverseIterator |
Protected Types inherited from kanzi::Object | |
typedef vector< AppliedStyleEntrySharedPtr > | AppliedStyleContainer |
Applied style container. | |
Geometry represents 2D coordinate data that you can use to render 2D nodes and text.
When rendering using Geometry, create the Geometry object beforehand instead of allocating it on the spot. Because Geometry inherits GPUResource, it needs to register into the resource manager after creation. Combined with memory allocation, this is a relatively expensive operation.
To render 2D coordinate data using Geometry:
|
explicitprotected |
|
static |
Returns a pointer to position data.
Returns a pointer to position data but with an offset (vertices).
vertexOffset | Vertex offset. |
Returns a pointer to texcoord data.
Returns a pointer to texcoord data but with an offset (vertices).
vertexOffset | Vertex offset. |
|
inline |
Gets the vertex data (local memory pointer).
You can modify the vertices through this pointer.
Gets the vertex data (local memory pointer).
Gets the native vertex buffer handle.
Gets the vertex count.
void kanzi::Geometry::setVertexCount | ( | size_t | count | ) |
Sets the vertex count.
When you are only adding vertices, use appendVertex() instead.
count | Vertex count. |
|
inline |
Indicates whether the geometry is valid.
Geometry with any vertices defined is valid.
Gets the vertex data size in bytes.
Adds a vertex to the end of an array.
Kanzi uses this internally in functions that write vertices into the vertex buffer.
x | X coordinate. |
y | Y coordinate. |
s | S texture coordinate. |
t | T texture coordinate. |
Sets the data for a vertex by index.
index | Index to set. |
x | X coordinate. |
y | Y coordinate. |
void kanzi::Geometry::clearData | ( | ) |
Clears the data.
void kanzi::Geometry::uploadData | ( | Renderer & | renderer, |
unsigned int | vertexOffset, | ||
unsigned int | vertexCount ) |
Uploads the data to GPU.
If the data has not yet been uploaded, instead uploads the complete data blob.
renderer | Renderer to use. |
vertexOffset | First vertex offset to upload. |
vertexCount | Number of vertices to upload. |
Uploads the complete data blob to GPU.
renderer | Renderer to use. |
void kanzi::Geometry::addQuadDescription | ( | const QuadDescription & | quad, |
Vector2 | tiling, | ||
bool | duplicateFirstVertex, | ||
bool | duplicateLastVertex ) |
Adds single quad description using triangle strip primitive type.
Call this function as part of geometry assignment.
quad | Quad description to add. |
tiling | Tiling for the texture coordinates. |
duplicateFirstVertex | True to duplicate first vertex. |
duplicateLastVertex | True to duplicate last vertex. |
void kanzi::Geometry::setGeometry | ( | Renderer & | renderer, |
const QuadDescription & | quad, | ||
Vector2 | tiling ) |
Sets quad geometry.
Replaces existing geometry.
renderer | Renderer to use. |
quad | Quad to read. |
tiling | Tiling for the texture coordinates. |
|
inline |
Sets quad geometry.
Replaces existing geometry with quad geometry using triangle strip primitive type. Tiling encompasses full quad area.
renderer | Renderer to use. |
quad | Quad to read. |
void kanzi::Geometry::setGeometry | ( | Renderer & | renderer, |
const FrameDescription & | frame, | ||
Vector2 | tiling ) |
Creates geometry based on tiling.
Replaces existing geometry.
renderer | Renderer to use. |
frame | Frame description used to generate the geometry. |
tiling | Tiling for the texture coordinates. |
GPUResource::isDeployedOverride() implementation.
Reimplemented from kanzi::GPUResource.
|
overrideprotectedvirtual |
GPUResource::isDeployedOverride() implementation.
Implements kanzi::GPUResource.
|
overrideprotectedvirtual |
GPUResource::invalidateOverride() implementation.
Reimplemented from kanzi::GPUResource.
|
overrideprotectedvirtual |
GPUResource::destroyOverride() implementation.
Reimplemented from kanzi::GPUResource.
|
overrideprotectedvirtual |
GPUResource::reloadOverride() implementation.
Reimplemented from kanzi::Resource.
Move operator.
other | Source geometry. |
|
protected |
Vertex data.
Size of the array is the vertex count.
|
protected |
GPU buffer.