Synchronization

The keyword "synchronization" is used in INTViewer for 3 distinct features:

  • Plot Synchronization
  • Visual Data Range Synchronization
  • Visual Properties Synchronization

Plot/Window Synchronization

Plot synchronization is only used in 2D windows. It synchronizes the cursor and scrolling positions between windows. A user can customize the plot synchronization from the "Plot -> Synchronization" menu.

INTViewer has dedicated named properties in IXSectionWindow and IMapWindow to control plot synchronization settings. Those named properties are: ENABLE_PLOT_BROADCAST, VERTICAL_SCROLL_SYNC, HORIZONTAL_SCROLL_SYNC, VERTICAL_SCALE_SYNC, HORIZONTAL_SCALE_SYNC and CURSOR_POSITION_SYNC.

IXSectionWindow also has VERTICAL_ANNOTATION_SYNC and HORIZONTAL_ANNOTATION_SYNC.

Each time the cursor is moved over a 2D layer, a CursorPositionEvent event is sent. Each time a window is scrolled, a WindowPositionEvent is sent. Each time a window is scaled, a WindowScaleEvent is sent. For more information about events, go to INTViewer APIs for Events.

Visual Data Range Synchronization

Visual data range synchronization is used to synchronize the data range used by visuals (layers). A user can customize visual data range synchronization settings using the "Properties -> Data" tab.

  • For a XSection seismic layer, synchronization can be enabled or disabled programmatically using the ISeismicLayer.setSynchronized method.
  • For a Map seismic layer, synchronization can be enabled or disabled programmatically using the ISeismicLayer.setSynchronizeTimeSlice method.
  • For a 3D seismic object and its slices, synchronization can be enabled or disabled programmatically using the ISeismicVolumeSlice3D.setSynchronized method.

Each time a data range is modified, a DataSynchronizeEvent event is sent.

For the increment and decrement buttons to work, a XSection seismic layer needs to meet the following criteria:

  • the window where that xsection layer sits must be in focus (i.e. this window is shown in the layers window)
  • the selected layer in that window is that xsection layer. if there is no selected layer, the axis layer (shown in bold in the layers window) acts as the selected layer
  • there must be at least one key with a key range that is a point. Example: INLINE 360 will work and INLINE 350-370 won't. If "+" is pressed and the point is at the maximum, nothing will happen. If "-" is pressed and the point is at the minimum, nothing will happen either
  • the "synchronize" checkbox for that key must be checked

Layers in other windows will be affected only if the xsection layer that was selected/in focus was affected. They don't need to show the same data, just to have a "synchronize" checkbox checked for the same key name and have a key range for that key that is a point.

You can simulate the effects of the Increment(+) and Decrement(-) buttons by calling the increment and decrement methods of com.interactive.intviewerapi.IStep for the selected layer of any window. To get the selected layer of any window, use the IViewerWindow.getSelectedVisual method.

You can also change the set and get the value that is displayed in the Increment column of any data range using the IStep.setIncrement and IStep.getIncrement methods.

ISeismicLayer layer = ...
if (layer.getIncrement("INLINE") > 1) {
    layer.setIncrement("INLINE", 1);
}
layer.increment();

Visual Properties Synchronization

Layer properties is used to synchronize the display properties of visuals (layers), such as the color map.

For all types of visuals, use the IPropertyProvider.setProperties method. Example:

   ISeismicLayer layer = ...
   cgColorMap colorMap = ...
   NamedProps props = new NamedProps();
   props.putProperty(ISeismicLayer.COLOR_MAP, colorMap);
   layer.setProperties(props);

Each time a visual property is modified, a PropertyProviderEvent event is sent.