Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ion::image::NinePatch Class Reference

Represents a nine-patch image as described in the Android SDK reference. More...

#include "ninepatch.h"

Inheritance diagram for ion::image::NinePatch:
Collaboration diagram for ion::image::NinePatch:

Public Member Functions

 NinePatch (const gfx::ImagePtr &image)
 Sets the base image data of the NinePatch to the passed image, extracting stretch and padding information from the image. More...
 
const gfx::ImagePtr BuildImage (uint32 width, uint32 height, const base::AllocatorPtr &alloc) const
 Creates and returns an Image using the supplied Allocator and sets the wipability of the image as requested. More...
 
void SetBuildWipeable (bool wipable)
 Sets whether images returned by BuildImage() are wipeable (see base::DataContainer) or not. More...
 
const math::Vector2ui GetMinimumSize () const
 Returns the minimum size at which this nine-patch can be drawn, i.e., the size at which all stretch regions are removed. More...
 
const math::Range2ui GetPaddingBox (uint32 width, uint32 height) const
 Returns the padding box for this nine-patch for an image of the requested size. More...
 
const math::Vector2ui GetSizeToFitContent (uint32 content_width, uint32 content_height) const
 Returns the minimum size image required to fit the desired content inside the "drawable area" (padding box). 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...
 

Detailed Description

Represents a nine-patch image as described in the Android SDK reference.

Valid nine-patches can be created using the draw9patch tool included with the Android SDK, or drawn manually as PNG files. This implementation of the nine-patch format supports arbitrary numbers of stretch regions along each dimension, but only one continuous content region. The interpolation of pixels regions is done in a nearest-neighbor fashion. All stretch regions are stretched proportional to their size.

Definition at line 40 of file ninepatch.h.

Constructor & Destructor Documentation

ion::image::NinePatch::NinePatch ( const gfx::ImagePtr image)
explicit

Sets the base image data of the NinePatch to the passed image, extracting stretch and padding information from the image.

If the image is NULL, has no data, 0 dimensions, or is not of format Image::kRgba8888 then BuildImage() will always return a blank image.

Definition at line 203 of file ninepatch.cc.

References image.

Member Function Documentation

const ImagePtr ion::image::NinePatch::BuildImage ( uint32  width,
uint32  height,
const base::AllocatorPtr alloc 
) const

Creates and returns an Image using the supplied Allocator and sets the wipability of the image as requested.

If the source image was invalid (see above) then this function returns a blank image of the requested size. Otherwise, the image contains the representation of this nine-patch at the given size. If the size specified is smaller than the minimum size, the image will be the minimum size instead. If the nine-patch has no stretch regions along one or both dimensions, the returned image will be padded with transparent pixels along the bottom and/or right edges.

Definition at line 219 of file ninepatch.cc.

References ion::base::Allocator::AllocateMemory(), ion::base::SharedPtr< T >::Get(), and ion::base::AllocationManager::GetNonNullAllocator().

const AllocatorPtr& ion::base::Allocatable::GetAllocator ( ) const
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().

const AllocatorPtr& ion::base::Allocatable::GetAllocatorForLifetime ( AllocationLifetime  lifetime) const
inlineinherited
const Vector2ui ion::image::NinePatch::GetMinimumSize ( ) const

Returns the minimum size at which this nine-patch can be drawn, i.e., the size at which all stretch regions are removed.

Definition at line 245 of file ninepatch.cc.

References ion::base::SharedPtr< T >::Get().

Referenced by GetPaddingBox(), and GetSizeToFitContent().

const AllocatorPtr& ion::base::Allocatable::GetNonNullAllocator ( ) const
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().

const Range2ui ion::image::NinePatch::GetPaddingBox ( uint32  width,
uint32  height 
) const

Returns the padding box for this nine-patch for an image of the requested size.

If the source image of this instance did not specify a padding box then the returned Range has the same size as the inputs.

Definition at line 268 of file ninepatch.cc.

References ion::base::SharedPtr< T >::Get(), GetMinimumSize(), and offset.

int ion::base::Shareable::GetRefCount ( ) const
inlineinherited

GetRefCount() is part of the interface necessary for SharedPtr.

Definition at line 34 of file shareable.h.

Referenced by ion::base::Notifier::RemoveReceiver().

const Vector2ui ion::image::NinePatch::GetSizeToFitContent ( uint32  content_width,
uint32  content_height 
) const

Returns the minimum size image required to fit the desired content inside the "drawable area" (padding box).

Note this is clamped to the NinePatch image's minimum size.

Definition at line 298 of file ninepatch.cc.

References ion::base::SharedPtr< T >::Get(), and GetMinimumSize().

void ion::base::Allocatable::operator delete ( void *  ptr)
inlineinherited

Define the delete operator to use specialized functions dealing with an Allocator.

Definition at line 109 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
AllocationLifetime  lifetime 
)
inlineinherited

Windows requires these (or it issues C4291 warnings).

Definition at line 112 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
const AllocatorPtr allocator 
)
inlineinherited

Definition at line 113 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
void *  ptr2 
)
inlineinherited

The placement delete operator does nothing, as usual.

Definition at line 118 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size)
inlineinherited

The standard no-parameter new operator uses the default Allocator.

Definition at line 84 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
AllocationLifetime  lifetime 
)
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.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator 
)
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.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator,
void *  ptr 
)
inlineinherited

Special operator new for using placement new with Allocatables.

Definition at line 100 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
void *  ptr 
)
inlineinherited

The placement new operator is defined conventionally.

Definition at line 105 of file allocatable.h.

void ion::image::NinePatch::SetBuildWipeable ( bool  wipable)
inline

Sets whether images returned by BuildImage() are wipeable (see base::DataContainer) or not.

An image is wipeable if its data is deleted after it is uploaded to OpenGL. Changing this option affects all future images built by this. By default, all built images are wipeable.

Definition at line 63 of file ninepatch.h.


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