public final class SurfaceSerializer
- Object
- SurfaceSerializer
Serializes surface descriptors to the canonical wire format shared by every port: a compact JSON document plus PNG blobs named by content hash. This class is an internal seam between the core API and the platform bridges – it is public only because ports live in separate artifacts; apps never call it.
The wire format is versioned ("v": 1) and deterministic: node maps preserve build order,
state maps are emitted with sorted keys, timeline entries are sorted ascending by date and
image names derive from a hash of the PNG bytes (identical art always gets the same name).
Methods
Inherited methods
Method details
serializeTimeline
public static String serializeTimeline(String kindId, WidgetTimeline timeline, Map<String, byte[]> imagesOut)Parameters
kindIdString- the widget kind id the timeline belongs to
timelineWidgetTimeline- the timeline to serialize
imagesOutMap<String, byte[]>- receives PNG blobs keyed by registered name
Returns
serializeLiveActivity
public static String serializeLiveActivity(LiveActivityDescriptor descriptor, Map<String, Object> state, Map<String, byte[]> imagesOut)Parameters
descriptorLiveActivityDescriptor- the descriptor to serialize
stateMap<String, Object>- the initial state map, may be null
imagesOutMap<String, byte[]>- receives PNG blobs keyed by registered name
Returns
serializeState
public static String serializeState(Map<String, Object> state)Parameters
stateMap<String, Object>- the state map, may be null
Returns
serializeKind
public static String serializeKind(WidgetKind kind)Parameters
kindWidgetKind- the kind to serialize
Returns
serializeNodeToMap
public static Map<String, Object> serializeNodeToMap(SurfaceNode node, Map<String, byte[]> imagesOut)Serializes a bare node tree, with no timeline or activity wrapped around it, collecting any imagery it references.
The node catalog is the layout vocabulary for anything the platform
renders while this app may be off screen. Widgets and live activities are
two such things; an intent result snippet is a third, and it reuses this
descriptor and the native renderer that already reads it rather than
introducing a parallel one. That is the whole reason this method is
public: SurfaceNode#toMap is package-private, and
com.codename1.intents needs the same encoding without being handed the
node internals.
Parameters
nodeSurfaceNode- the node tree to serialize
imagesOutMap<String, byte[]>- receives PNG blobs keyed by the name used in the document
Returns
node is null