# Source: dicom-microscopy-viewer.js

    import EVENTS from './events.js'
    import { AnnotationGroup } from './annotation.js'
    import { ParameterMapping } from './mapping.js'
    import {
      ColormapNames,
      createColormap,
      PaletteColorLookupTable,
      buildPaletteColorLookupTable
    } from './color.js'
    import {
      Comprehensive3DSR,
      MicroscopyBulkSimpleAnnotations,
      ParametricMap,
      Segmentation,
      VLWholeSlideMicroscopyImage,
      formatMetadata,
      groupMonochromeInstances,
      groupColorInstances
    } from './metadata.js'
    import { ROI } from './roi.js'
    import {
      Point,
      Multipoint,
      Polyline,
      Polygon,
      Ellipsoid,
      Ellipse
    } from './scoord3d.js'
    import {
      applyInverseTransform,
      applyTransform,
      buildInverseTransform,
      buildTransform,
      computeRotation,
      mapSlideCoordToPixelCoord,
      mapPixelCoordToSlideCoord
    } from './utils.js'
    import {
      LabelImageViewer,
      OverviewImageViewer,
      VolumeImageViewer
    } from './viewer.js'
    import {
      OpticalPath
    } from './opticalPath.js'
    import {
      Segment
    } from './segment.js'

    /**
     * Namespace for annotations of DICOM Micrsocopy Bulk Simple Annotations
     * instances.
     *
     * @namespace annotation
     */
    const annotation = {
      AnnotationGroup
    }

    /**
     * Namespace for the viewer.
     *
     * @namespace api
     * @deprecated use the viewer namespace instead
     */
    const api = {
      VLWholeSlideMicroscopyImageViewer: VolumeImageViewer
    }

    /**
     * Namespace for the viewer.
     *
     * @namespace viewer
     */
    const viewer = {
      LabelImageViewer,
      OverviewImageViewer,
      VolumeImageViewer
    }

    /**
     * Namespace for parameter mappings of DICOM Parametric Map instances.
     *
     * @namespace mapping
     */
    const mapping = {
      ParameterMapping
    }

    /**
     * Namespace for working with DICOM Metadata.
     *
     * @namespace metadata
     */
    const metadata = {
      formatMetadata,
      groupMonochromeInstances,
      groupColorInstances,
      MicroscopyBulkSimpleAnnotations,
      ParametricMap,
      Segmentation,
      VLWholeSlideMicroscopyImage,
      Comprehensive3DSR
    }

    /**
     * Namespace for color.
     *
     * @namespace color
     */
    const color = {
      ColormapNames,
      createColormap,
      PaletteColorLookupTable,
      buildPaletteColorLookupTable
    }

    /**
     * Namespace for optical paths.
     *
     * @namespace opticalPath
     */
    const opticalPath = {
      OpticalPath
    }

    /**
     * Namespace for 3-dimensional spatial coordinates (SCOORD3D).
     *
     * @namespace scoord3d
     */
    const scoord3d = {
      Point,
      Multipoint,
      Polyline,
      Polygon,
      Ellipsoid,
      Ellipse
    }

    /**
     * Namespace for regions of interest (ROIs).
     *
     * @namespace roi
     */
    const roi = {
      ROI
    }

    /**
     * Namespace for segments of DICOM Segmentation instances.
     *
     * @namespace segment
     */
    const segment = {
      Segment
    }

    /**
     * Namespace for viewer events.
     *
     * @namespace events
     */
    const events = {
      EVENTS
    }

    /**
     * Namespace for various utilities.
     *
     * @namespace utils
     */
    const utils = {
      applyInverseTransform,
      applyTransform,
      buildInverseTransform,
      buildTransform,
      computeRotation,
      mapSlideCoordToPixelCoord,
      mapPixelCoordToSlideCoord
    }

    export {
      annotation,
      api,
      color,
      events,
      mapping,
      metadata,
      opticalPath,
      roi,
      scoord3d,
      segment,
      utils,
      viewer
    }