The Crosswalk SDK uses platform-independent data structures to represent basic types. They are C++ classes that encapsulate the following types of data:
|
Category |
Class Name |
|
Utilities |
CSIBCUtil |
|
CSIBCPixMap |
|
|
Networking |
SIBCNetworkLayer |
|
CSIBSearchPath |
|
The Crosswalk SDK has base classes that implement 2D, 3D and 4D vectors. It also provides classes that implement 4 x 4 matrices and quaternions. These classes implement the most widely-used operations on vectors and matrices, such as the basic operators (+, -, dot product, cross product). Some useful methods are also implemented for matrices to extract scaling, rotation and translation information from a transformation matrix:
|
Floating point vector and matrix classes |
Double floating point vector and matrix classes |
![]()
|
For more information on vectors and matrices, see the Crosswalk SDK Reference. |
The Crosswalk SDK has base classes that implement colors. There are two classes that implement the same thing:
The only difference is that CSIBCColorb represents color components as byte values (0-255) and CSIBCColorf represents color components as float values (0.0 - 1.0).
![]()
|
For more information on colors, see the Crosswalk SDK Reference. |
Normal strings are implemented by the CSIBCString class. Several functions and methods are also provided to manipulate these strings (concatenation, duplication, copy etc.).
![]()
|
For more information on character strings, see the Crosswalk SDK Reference. |
Most arrays in the Crosswalk SDK are implemented using the CSIBCArray class template. This class implements functions that are important for arrays, such as getting the number of components, dynamically allocating the array, resizing, etc.
![]()
|
For more information on arrays, see the Crosswalk SDK Reference. |
Pixel maps are images used by textures. Pixel maps have basic image manipulation functions. They are implemented by the CSIBCPixMap class. Several image loaders can also be implemented and plugged in. Image loaders are implemented by subclassing the CSIBCPixMapDriver class. Additionally, search paths can be added to give multiple paths for loading images. Here are some useful loading functions:
|
Functions |
Description |
|
CSIBCSearchPath *CSIBCPixMap::GetSearchPath() |
Gets the search path for textures |
|
SI_Error CSIBCPixMap::AddDriver( CSIBCPixMapDriver * ) |
Registers a map driver |
|
SI_Error CSIBCPixMap::Load( CSIBCString &, CSIBCPixMap &, SI_Bool in_ResizeToPowerOfTwo = TRUE ) SI_Error CSIBCPixMap::Load( const SI_Char *, CSIBCPixMap &, SI_Bool in_ResizeToPowerOfTwo = TRUE ) SI_Error CSIBCPixMap::Load( CSIBCString &, void *, SI_Int, CSIBCPixMap & ) SI_Error CSIBCPixMap::Load( const SI_Char *, void *, SI_Int, CSIBCPixMap & ) |
Loads an image into a pixmap |
|
SI_Error CSIBCPixMap::Cleanup() |
Clears the list of registered map drivers |
Example (Image Classes)
This is an example of adding a new image loader in the host application:
// Load the Image File format drivers #include <CSIILPPMFileDriver.h> #include <CSIILPICFileDriver.h> // Add ppm drivers CSIBCPixMap::AddDriver( CSIILPPMFileDriver::Driver() ); // Add Softimage pic drivers CSIBCPixMap::AddDriver( CSIILPICFileDriver::Driver() ); //Here is an example of how to load an image in a CSIBCPixMap: //Allocate a new map _SI_NEW( pPixMap, CSIBCPixMap() ); //Load it from file CSIBCPixMap::Load( _SI_TEXT("image.ppm"), *pPixMap );
You use search paths to locate specific files in various directories. For example, the application can suppose that a file called foo.txt can be located under c:\dira, c:\dirb and c:\dirc. The CSIBSearchPath class provides a way to store the possible paths where the file may be located and then search for that file in those paths.
CSIBCNode is the base class for most of the classes of the Crosswalk SDK. The CSIBCNode class has the following properties:
• a name
• a general purpose flag
• an array of user data
Since a lot of classes need to be aggregated in a collection and also have an identification, they should all inherit from the CSIBCNode class. User data can be attached to CSIBCNode so that it can extend the class.
User data is implemented by the CSIBCUserData class. It comprises a tag name and a pointer to data. When the CSIBCNode is destroyed, its array of user data is also destroyed. However, it is possible to assign a release function so that each user data item is cleaned properly prior to releasing the memory for the CSIBCNode.
The release function must have the following prototype:
void ReleaseMethod (void *in_pObjectToDelete);
![]()
|
If you don’t need a release method for the user data, you can use the CSIBCNode::AttachUserData function with the tag name and the data pointer. |
Example (Object Classes)
void ReleaseString(void *in_pObjectToDelete)
{
CSIBCString* pStr = (CSIBCString *) in_pObjectToDelete;
delete pStr;
}
void foo()
{
CSIBCNode node;
CSIBCUserData userData;
// initialize the user data tag name
userData.Name().SetText(_SI_TEXT(“userdata_tag’));
// initialize the user data’s data pointer
userData.SetData((void *) new CSIBCString(_SI_TEXT(“User data content”)));
// set the user data’s data release function
userData.SetReleaseMethod(ReleaseString);
// attach the user data to the CSIBCNode
node.UserDataList().Add(&userData);
}
Autodesk Crosswalk v3.2