ITopobase.FormatSaveToStream

Syntax

FormatSaveToStream(SourceFormat: TopobaseFormat, Stream: IIOStream);

Parameters

SourceFormat. Topobase format.

Stream. The stream, to which the topobase is saved.

Description

The FormatSaveToStream method saves the topobase to the stream.

Example

Executing the example requires that the repository contains:

Add links to the Drawing, Map, MathFin, Metabase, and Topobase system assemblies.

Var
    _Count: Integer;

// Get information about dynamic indicators
// in different temporary points on map layer
Class VisualDataAdapter: Object, IMapTimeDynamicDataAdapter
    Function Get_PartCount(Attribute: Variant; TimePoint: Integer): Integer;
    Begin
        Return _Count;
    End Function Get_PartCount;
    
    Function Get_TimePointName(TimePoint: Integer): String;
    Begin
        Return "TimePoint " + TimePoint.ToString;
    End Function Get_TimePointName;
    
    Function Get_TimePointsCount: Integer;
    Begin
        Return 4;
    End Function Get_TimePointsCount;
            
    Function Get_Data(Attribute: Variant; PartvIndex: Integer; TimePoint: Integer): Variant;
    Var
        t: Integer;
        i: Integer;
    Begin
        t := 1;
        For i := 0 To TimePoint Do
            t := t + 10;
        End For;
        Return Math.Rand * 10 * t;
    End Function Get_Data;

    Function Get_CustomFormat: String;
    Begin
        Return "#0,000";
    End Function Get_CustomFormat;  
End Class VisualDataAdapter;

Class ITOPOBASE_FORMATSAVETOSTREAMForm: Form
    Button1: Button;
    Button2: Button;
    MapBox1: MapBox;
    MapBox2: MapBox;
    UiMap1: UiMap;
    UiMap2: UiMap;
    IntegerEdit1: IntegerEdit;
    mb: IMetabase;
    Map: IMap;
    Top: IMapTopobase;
    Itop: ITopobase;
    StreamG: IMemoryStream;
    
    Sub CreateLayer(CurrentMap: IMap);
    Var
        StartC, EndC: IGxColor;
        Color: IMapVisualColorProperty;
        Scale: IMapColorScale;
        AreaVisual: IMapAreaVisual;
        Layer: IMapLayer;
    Begin
        // Get map layer named Regions
        Layer := CurrentMap.Layers.FindByName("Regions");
        // Set map background color
        CurrentMap.Color := New GxColor.CreateARGB(100100100100);
        // Refresh map
        CurrentMap.Refresh;
        // Get map indicator
        AreaVisual := Layer.Visuals.AddAreaVisual;
        // Create a data source for indicator
        AreaVisual.DataAdapter := New VisualDataAdapter.Create As IMapTimeDynamicDataAdapter;
        _Count := 5;
        // Get indicator fill parameters
        Color := AreaVisual.Color;
        // Determine a data source for fill
        Color.DataAdapter := AreaVisual.DataAdapter;
        // Create a color scale
        Scale := New DxMapColorScale.Create As IMapColorScale;
        // Set start gradient color
        StartC := GxColor.FromName("Red");
        // Set end gradient color
        EndC := GxColor.FromName("Blue");
        // Set up color scale
        Scale.AutoSetup(Layer, AreaVisual.DataAdapter, StartC, EndC);
        // Set color scale for indicator fill
        Color.Scale := Scale;
        // Refresh map
        CurrentMap.Refresh;
    End Sub CreateLayer;
    
    Sub ITOPOBASE_FORMATSAVEFROMSTREAMFormOnCreate(Sender: Object; Args: IEventArgs);
    Begin
        // Get repository
        mb := MetabaseClass.Active;
        // Get map
        Map := UiMap1.Map;
        // Get map topobase
        Top := mb.FetchItemById("MAP").Edit As IMapTopobase;
        // Save topobase
        Itop := Top As ITopobase;
        // Set topobase
        Map.Topobase := Itop As IMapTopobase;
        // Display map
        CreateLayer(Map);
    End Sub ITOPOBASE_FORMATSAVEFROMSTREAMFormOnCreate;

    Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
    Begin
        // Create a stream
        StreamG := New MemoryStream.Create;
        // Save topobase to stream
        (UiMap1.Map.Topobase As ITopobase).FormatSaveToStream((IntegerEdit1.Value) As TopobaseFormat, StreamG);
    End Sub Button1OnClick;

    Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);
    Begin
        // Set start position in the stream
        StreamG.Seek(0, SeekOrigin.Beginning);
        // Get map topobase
        UiMap2.Map.Topobase := mb.FetchItemById("MAP").Bind As IMapTopobase;
        // Load topobase from stream
        (UiMap2.Map.Topobase As ITopobase).FormatLoadFromStream((IntegerEdit1.Value)As TopobaseFormat, StreamG);
        // Display map
        CreateLayer(UiMap2.Map);
    End Sub Button2OnClick;
End Class ITOPOBASE_FORMATSAVETOSTREAMForm;

After executing the example:

See also:

ITopobase