| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import {BaseImporterPlugin, Importer, LoadingManager, ThreeViewer} from 'threepipe'
- // @ts-expect-error moduleResolution issue
- import {DeepZoomImagePlugin} from '3d-tiles-renderer/plugins'
- import {TilesRendererLoader, TilesRendererPlugin} from './TilesRendererPlugin'
-
- /**
- * Adds support for loading .dzi files and data uris.
- * Deep Zoom Image (dzi) file format - https://openseadragon.github.io/
- */
- export class DeepZoomImageLoadPlugin extends BaseImporterPlugin {
- public static readonly PluginType = 'DeepZoomImageLoadPlugin'
- protected _importer = new Importer(DeepZoomImageLoader, ['dzi'], ['image/dzi'], false)
-
- dependencies = [TilesRendererPlugin]
-
- onAdded(viewer: ThreeViewer) {
- super.onAdded(viewer)
- this._importer.onCtor = (l, ai) => {
- if (l) l.ai = ai
- return l
- }
- }
- }
-
- export class DeepZoomImageLoader extends TilesRendererLoader {
- constructor(manager: LoadingManager) {
- super(manager)
- this.plugins.push(
- (opts)=>{
- if (opts?.DeepZoomImagePlugin === false) return undefined
- const op = typeof opts?.DeepZoomImagePlugin === 'object' ? opts.DeepZoomImagePlugin : {}
- return new DeepZoomImagePlugin({
- // center: true,
- ...op,
- })
- },
- )
- }
- }
-
- declare module 'TilesRendererPlugin'{
- interface TilesImportOptions {
- DeepZoomImagePlugin?: boolean | {
- center?: boolean,
- pixelSize?: number,
- useRecommendedSettings?: boolean,
- }
- }
- }
|