Definitions
A definition is the name for any of the resources that are stored in a portfolio. There are eight types of definitions:
Definition |
Description |
---|---|
|
A named group of attributes applied to a segment as opposed to setting attributes individually. See this section for details. |
|
A simple geometric symbol used for styling markers, vertices and lines. For an in-depth discussion on glyphs, see our section on glyphs. |
|
A two dimensional array of pixel data used as source for textures. See this section for an example on how to load an image into a portfolio. |
|
A description of how an image source will be applied to a given facetted surface. For more details on how to load and use textures, see this page. |
|
A description of how a line is rendered using patterned lines, glyphs, and end caps. Line patterns are discussed here. |
|
A collection of materials that can be referenced by index. A palette can be used to apply materials to facetted geometry. Material palettes are discussed here. |
|
A texture definition composed of six images that correspond to the faces of a cube. Typically used to render background scenery with the viewpoint at the center of the cube. See the example in this section. |
Most definitions are created by passing the corresponding kit to the portfolio where the definition will be contained. It is recommended that a descriptive name be used for the definition since all definitions are referred to by name. However, this is not a requirement and you can create nameless definitions by passing an empty string or null_ptr
as the name.
After the resources are defined, they are accessible by any segment that is using the portfolio. Similarly, definitions can be undefined.
myPortfolio.DefineLinePattern("dashedLine", myLinePatternKit); // defines a line pattern
myPortfolio.DefineLegacyShader("superShader", myShaderKit); // defines a shader
myPortfolio.DefineNamedStyle("custom style", HPS::Database::CreateRootSegment()); // defines a style
myPortfolio.UndefineTexture("roughTexture"); // undefines a texture
myPortfolio.DefineLinePattern("dashedLine", myLinePatternKit); // defines a line pattern
myPortfolio.DefineLegacyShader("superShader", myShaderKit); // defines a shader
myPortfolio.DefineNamedStyle("custom style", HPS.Database.CreateRootSegment()); // defines a style
myPortfolio.UndefineTexture("roughTexture"); // undefines a texture
In addition to creating definitions, you can also import them from other portfolios. When importing, there are three layers of granularity. You can import all the definitions from a portfolio, all definitions for a specific category, or individual definitions. When you import definitions from another portfolio, use the portfolio key:
// imports all resources from 'otherPortfolio'
myPortfolio.ImportPortfolio(otherPortfolio);
// imports all textures from 'otherPortfolio'
myPortfolio.ImportAllTextures(otherPortfolio);
// imports a single glyph
myPortfolio.ImportGlyph(someGlyph);
// imports all resources from 'otherPortfolio'
myPortfolio.ImportPortfolio(otherPortfolio);
// imports all textures from 'otherPortfolio'
myPortfolio.ImportAllTextures(otherPortfolio);
// imports a single glyph
myPortfolio.ImportGlyph(someGlyph);
All of the Import
functions have a second parameter which defaults to true
. This flag controls whether the definitions that are being imported will replace the existing definitions.
myPortfolio.ImportAllTextures(otherPortfolio, true); // replaces existing definitions
myPortfolio.ImportAllTextures(otherPortfolio, false); // does not replace existing definitions
myPortfolio.ImportAllTextures(otherPortfolio, true); // replaces existing definitions
myPortfolio.ImportAllTextures(otherPortfolio, false); // does not replace existing definitions