Attribute
OmfLocation
typedef enum {
OMF_LOCATION_VERTICES,
OMF_LOCATION_PRIMITIVES,
OMF_LOCATION_SUBBLOCKS,
OMF_LOCATION_ELEMENTS,
OMF_LOCATION_PROJECTED,
OMF_LOCATION_CATEGORIES,
} OmfLocation;
Defines what part of the geometry an attribute is applied to. The documentation of each geometry includes what locations are valid for it.
Options
- OMF_LOCATION_VERTICES
- The attribute contains one value for each point, vertex, or block corner.
- OMF_LOCATION_PRIMITIVES
- The attribute contains one value for each line segment, triangle, or block. For sub-blocked block models that means parent blocks.
- OMF_LOCATION_SUBBLOCKS
- The attribute contains one value for each sub-block in a block model.
- OMF_LOCATION_ELEMENTS
- The attribute contains one value for each sub-element in composite.
- OMF_LOCATION_PROJECTED
- Used for projected textures. The texture is projected onto the element.
- OMF_LOCATION_CATEGORIES
- Used for category sub-attributes. The attribute contains one value for each category.
OmfAttribute
typedef struct {
const char *name;
const char *description;
const char *units;
size_t n_metadata;
const OmfValue *metadata;
OmfLocation location;
const OmfArray *boolean_data;
const OmfArray *vector_data;
const OmfArray *text_data;
const OmfArray *color_data;
const OmfNumberData *number_data;
const OmfCategoryData *category_data;
const OmfMappedTexture *mapped_texture_data;
const OmfProjectedTexture *projected_texture_data;
} OmfAttribute;
Contains attribute data and defines how it is applied to an element. Exactly one data pointer must be non-null, defining the type of the attribute.
Fields
- name:
const char * - Attribute name, which should be unique within the containing element.
- description:
const char * - Optional attribute description or comments.
- units:
const char * -
Optional attribute units, if applicable. OMF does not currently attempt to standardize the strings you can use here, but our recommendations are:
- Use full names, so "kilometers" rather than "km". The abbreviations for non-metric units aren't consistent and complex units can be confusing.
- Use plurals, so "feet" rather than "foot".
- Avoid ambiguity, so "long tons" rather than just "tons".
- Accept American and British spellings, so "meter" and "metre" are the same.
- metadata:
const OmfValue * - Pointer to an array of
n_metadatametadata items, forming a set of key/value pairs. - n_attributes:
size_t - Number of attributes.
- location:
OmfLocation - Defines where on the containing element this attribute is attached.
- boolean_data:
const OmfArray * - Boolean array containing true/false/null data. Applications that don't support three-valued logic may treat null as false.
- vector_data:
const OmfArray * - Vector array. Items are nullable.
- text_data:
const OmfArray * - Text array. Items are nullable.
- color_data:
const OmfArray * - Color array. Items are nullable.
- number_data:
const OmfNumberData * - Pointer to a number-data struct including the array and optional color-map.
- category_data:
const OmfCategoryData * - Pointer to a category-data struct including the index array, plus category names, optional colors, and sub-attributes.
- mapped_texture_data:
const OmfMappedTexture * - Pointer to a mapped texture struct.
- projected_texture_data:
const OmfProjectedTexture * - Pointer to a projected texture struct.
Methods
omf_attribute_init
OmfAttribute omf_attribute_init(const char *name, OmfLocation location);
Initializes or resets an attribute struct.
OmfNumberData
typedef struct {
const OmfArray *values;
const OmfContinuousColormap *continuous_colormap;
const OmfDiscreteColormap *discrete_colormap;
} OmfNumberData;
Fields
- values:
const OmfArray * - Number array. Can have 32- or 64-bit floating-point, 64-bit signed integer, date, or date-time type.
- continuous_colormap:
const OmfContinuousColormap * - Optional continuous colormap.
Only one of
continuous_colormapanddiscrete_colormapmay be non-null, or both may be null. - discrete_colormap:
const OmfDiscreteColormap * - Optional discrete colormap.
Methods
omf_number_data_init
OmfNumberData omf_number_data_init(void);
Initializes or resets a number attribute data struct.
OmfCategoryData
typedef struct {
const OmfArray *values;
const OmfArray *names;
const OmfArray *colors;
const OmfAttribute *attributes;
size_t n_attributes;
} OmfCategoryData;
Describes a category attribute.
Fields
- values:
const OmfArray * - Index array into
names,colors, and other attributes. Indices are nullable. - names:
const OmfArray * - Name array for category names or labels.
- colors:
const OmfArray * - Optional gradient array for category colors.
If non-null, must be the same length as
names. - attributes:
const OmfAttribute * - Pointer to an array of
n_attributesattribute structures. Each must useOMF_LOCATION_CATEGORIESand be the same length asnames. This can be used to add extra details to a category, such as density on a rock-type attribute. - n_attributes:
size_t - The number of sub-attributes.
Methods
omf_category_data_init
OmfCategoryData omf_category_data_init(void);
Initializes or resets a category attribute data struct.
OmfMappedTexture
typedef struct {
const OmfArray *image;
const OmfArray *texcoords;
} OmfMappedTexture;
A texture applied with UV mapping. Typically applied to surface vertices; applications may ignore other locations.
Fields
- image:
const OmfArray * - Image array containing the texture image.
- texcoords:
const OmfArray * - Texture coordinate array, Values outside of the range 0–1 will cause the texture to wrap.
Methods
omf_mapped_texture_init
OmfMappedTexture omf_mapped_texture_init(const OmfArray *image,
const OmfArray *texcoords);
Initializes or resets a mapped texture struct.
OmfProjectedTexture
typedef struct {
const OmfArray *image;
OmfOrient2 orient;
double width;
double height;
} OmfProjectedTexture;
A texture that is orthographically projected through space. Use this for maps and section images. The fields define a rectangle in space and the texture is projected in both directions along its normal. Typically applied to surface vertices; applications may ignore other locations.
Fields
- image:
const OmfArray * - Image array containing the texture image.
- orient:
OmfOrient2 - The position and orientation of the texture rectangle in space.
- width:
double - The width of the texture rectangle in space.
- height:
double - The height of the texture rectangle in space.
Methods
omf_projected_texture_init
OmfProjectedTexture omf_projected_texture_init(const OmfArray *image);
Initializes or resets a projected texture struct.