Fundamentals#
This page is the concept map for the SAMSON Developer Guide. Use it when you need to understand how the SDK is organized before choosing a tutorial or when a tutorial sends you here for background.
If you are new to the SDK, start with the pages that define extension roles and the data graph. If you are already implementing an extension, jump directly to the runtime mechanisms that match the feature you are building.
Extension roles#
- Apps: command-style extensions, tools, and panels exposed to users.
- Controllers: nodes that control or steer other nodes in the data graph.
- Editors: viewport-driven tools that react to mouse and keyboard input.
- Exporters: classes that write SAMSON data to external formats.
- Importers: classes that read external data into SAMSON.
Data and visualization#
- Animations: timeline-driven changes inside documents and presentations.
- Color schemes: reusable coloring logic for nodes and visual models.
- Materials: visual appearance information applied to nodes and renderables.
- Node Specification Language: concise ways to describe node sets.
- Rendering: how extensions submit geometry and rendering behavior.
- Selectors: reusable node selection logic that can be plugged into workflows.
Runtime mechanics#
- Introspection: how SAMSON exposes classes, functions, and descriptors.
- Memory management: lifetime rules, ownership boundaries, and heap helpers.
- References: safe pointers and indexed reference containers for nodes.
- Serialization: saving, cloning, and restoring extension data.
- Signals and slots: event-driven communication between objects.
- Undo and redo: how to make user actions reversible.
Infrastructure and utilities#
- Functors: reusable predicates and callable helpers used across the SDK.
- Identifiers: UUIDs, class descriptors, and stable identities.
- Logging: developer-facing logging and diagnostics.
- Units: strongly typed physical quantities and conversions.
- Versioning: version numbers, compatibility, and upgrade-related checks.
Suggested reading paths#
- Building an app or editor: start with Apps, Editors, Undo and redo, Signals and slots, and Controllers.
- Working with nodes and models: start with Node Specification Language, References, and Serialization.
- Working on visualization: start with Rendering, Materials, Color schemes, and Animations.
- Building low-level SDK features: start with Introspection, Memory management, Logging, Identifiers, and Versioning.