# DynamsoftCore Module

The Core module is defined in the namespace `Dynamsoft.Core`. It consists of the classes `CoreModule` and `ImageSourceAdapter` plus a few interfaces and enumerations.

## CoreModule Class

This class defines common functionality in the Core module.

| Name                                                                       | Description                                                                                       |
| -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| `static` [detectEnvironment()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module-class.md#detectenvironment)   | Detects and returns information about the current runtime environment.                            |
| `static` [engineResourcePaths](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module-class.md#engineresourcepaths) | Configures the paths where the .wasm files and other necessary resources for modules are located. |
| `static` [getVersion()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module-class.md#getversion)                 | Returns the version of the Core module.                                                           |
| `static` [isModuleLoaded()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module-class.md#ismoduleloaded)         | Returns whether the WebAssembly (.wasm) file for the specified module is successfully loaded.     |
| `static` [loadWasm()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module-class.md#loadwasm)                     | Initiates the loading process for the .wasm file(s) corresponding to the specified module(s).     |

## ImageSourceAdapter Class

The `ImageSourceAdapter` class defines how an image source should be defined in order to interact with the `CaptureVisionRouter` class. Note that this is an abstract class and can't be directly instantiated.

The APIs for this class are:

| Name                                                                                           | Description                                                                                             |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| [addImageToBuffer()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#addimagetobuffer)                               | Adds an image to the internal buffer.                                                                   |
| [clearBuffer()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#clearbuffer)                                         | Clears all images from the buffer, resetting the state for new image fetching.                          |
| [getBufferOverflowProtectionMode()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#getbufferoverflowprotectionmode) | Returns the current mode for handling buffer overflow situations.                                       |
| [getColourChannelUsageType()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#getcolourchannelusagetype)             | Retrieves the current usage type for color channels in images.                                          |
| [getImage()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#getimage)                                               | Returns a buffered image.                                                                               |
| [getImageCount()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#getimagecount)                                     | Retrieves the current number of images in the buffer.                                                   |
| [getMaxImageCount()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#getmaximagecount)                               | Returns the maximum number of images that can be buffered at any time.                                  |
| [hasImage()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#hasimage)                                               | Checks if an image with the specified ID is present in the buffer.                                      |
| [hasNextImageToFetch()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#hasnextimagetofetch)                         | Determines whether there are more images available to fetch.                                            |
| [isBufferEmpty()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#isbufferempty)                                     | Determines whether the buffer is currently empty.                                                       |
| [setErrorListener()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#seterrorlistener)                               | Sets an error listener to receive notifications about errors that occur during image source operations. |
| [setBufferOverflowProtectionMode()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#setbufferoverflowprotectionmode) | Sets the behavior for handling new incoming images when the buffer is full.                             |
| [setColourChannelUsageType()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#setcolourchannelusagetype)             | Sets the usage type for color channels in images.                                                       |
| [setMaxImageCount()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#setmaximagecount)                               | Sets the maximum number of images the buffer can hold.                                                  |
| [setNextImageToReturn()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#setnextimagetoreturn)                       | Sets the processing priority of a specific image, affecting the order in which images are returned.     |
| [startFetching()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#startfetching)                                     | Starts the process of fetching images.                                                                  |
| [stopFetching()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/image-source-adapter.md#stopfetching)                                       | Stops the process of fetching images.                                                                   |

## Interfaces

The following are the basic interfaces often shared by more than one module:

### Basic Shapes

* [Arc](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/arc.md)
* [Contour](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/contour.md)
* [Corner](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/corner.md)
* [DSRect](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/ds-rect.md)
* [Edge](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/edge.md)
* [LineSegment](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/line-segment.md)
* [Point](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/point.md)
* [Polygon](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/polygon.md)
* [Quadrilateral](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/quadrilateral.md)
* [Rect](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/rect.md)

### Basic Structures

<!--* [CapturedResult](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/captured-result.md)-->
* [CapturedResultBase](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/captured-result-base.md)
* [CapturedResultItem](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/captured-result-item.md)
* [DSFile](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/ds-file.md)
* [DSImageData](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/ds-image-data.md)
* [ImageSourceErrorListener](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/image-source-error-listener.md)
* [ImageTag](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/image-tag.md)
* [OriginalImageResultItem](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/original-image-result-item.md)
* [TextZone](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/text-zone.md)
* [Warning](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/warning.md)

<!--* [FileImageTag](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/file-image-tag.md)-->
<!--* [PDFReadingParameter](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/basic-structures/pdf-reading-parameter.md) -->

### Intermediate Results

* [BinaryImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/binary-image-unit.md)
* [ColourImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/colour-image-unit.md)
* [ContoursUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/contours-unit.md)
* [EnhancedGrayscaleImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/enhanced-grayscale-image-unit.md)
* [GrayscaleImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/grayscale-image-unit.md)
* [IntermediateResult](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/intermediate-result.md)
* [IntermediateResultExtraInfo](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/intermediate-result-extra-info.md)
* [IntermediateResultUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/intermediate-result-unit.md)
* [ObservationParameters](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/observation-parameters.md)
* [LineSegmentsUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/line-segments-unit.md)
* [PredetectedRegionElement](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/predetected-region-element.md)
* [PredetectedRegionsUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/predetected-regions-unit.md)
* [RegionObjectElement](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/region-object-element.md)
* [ScaledColourImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/scaled-colour-image-unit.md)
* [TextRemovedBinaryImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/text-removed-binary-image-unit.md)
* [TextureDetectionResultUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/texture-detection-result-unit.md)
* [TextureRemovedBinaryImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/texture-removed-binary-image-unit.md)
* [TextureRemovedGrayscaleImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/texture-removed-grayscale-image-unit.md)
* [TextZonesUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/text-zones-unit.md)
* [TransformedGrayscaleImageUnit](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/intermediate-results/transformed-grayscale-image-unit.md)

## Enums

The following are the basic enumerations often shared by more than one module:

* [EnumBufferOverflowProtectionMode](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-buffer-overflow-protection-mode.md)
* [EnumCapturedResultItemType](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-captured-result-item-type.md)
* [EnumColourChannelUsageType](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-colour-channel-usage-type.md)
* [EnumCornerType](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-corner-type.md)
* [EnumCrossVerificationStatus](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-cross-verification-status.md)
* [EnumErrorCode](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-error-code.md)
* [EnumGrayscaleEnhancementMode](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-grayscale-enhancement-mode.md)
* [EnumGrayscaleTransformationMode](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-grayscale-transformation-mode.md)
* [EnumImageFileFormat](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-image-file-format.md)
* [EnumImagePixelFormat](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-image-pixel-format.md)
* [EnumImageTagType](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-image-tag-type.md)
* [EnumIntermediateResultUnitType](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-intermediate-result-unit-type.md)
* [EnumModuleName](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-module-name.md)
* [EnumRegionObjectElementType](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-region-object-element-type.md)
* [EnumSectionType](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-section-type.md)

<!-- * [EnumTransformMatrixType](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-transform-matrix-type.md) -->
<!-- * [EnumPDFReadingMode](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-pdf-reading-mode.md) -->
<!-- * [EnumRasterDataSource](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-raster-data-source.md) -->
<!-- * [EnumImageCaptureDistanceMode](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/enum-image-capture-distance-mode.md)-->