threepipe
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

DeepZoomImageLoadPlugin.ts 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {BaseImporterPlugin, Importer, LoadingManager, ThreeViewer} from 'threepipe'
  2. // @ts-expect-error moduleResolution issue
  3. import {DeepZoomImagePlugin} from '3d-tiles-renderer/plugins'
  4. import {TilesRendererLoader, TilesRendererPlugin} from './TilesRendererPlugin'
  5. /**
  6. * Adds support for loading .dzi files and data uris.
  7. * Deep Zoom Image (dzi) file format - https://openseadragon.github.io/
  8. */
  9. export class DeepZoomImageLoadPlugin extends BaseImporterPlugin {
  10. public static readonly PluginType = 'DeepZoomImageLoadPlugin'
  11. protected _importer = new Importer(DeepZoomImageLoader, ['dzi'], ['image/dzi'], false)
  12. dependencies = [TilesRendererPlugin]
  13. onAdded(viewer: ThreeViewer) {
  14. super.onAdded(viewer)
  15. this._importer.onCtor = (l, ai) => {
  16. if (l) l.ai = ai
  17. return l
  18. }
  19. }
  20. }
  21. export class DeepZoomImageLoader extends TilesRendererLoader {
  22. constructor(manager: LoadingManager) {
  23. super(manager)
  24. this.plugins.push(
  25. (opts)=>{
  26. if (opts?.DeepZoomImagePlugin === false) return undefined
  27. const op = typeof opts?.DeepZoomImagePlugin === 'object' ? opts.DeepZoomImagePlugin : {}
  28. return new DeepZoomImagePlugin({
  29. // center: true,
  30. ...op,
  31. })
  32. },
  33. )
  34. }
  35. }
  36. declare module 'TilesRendererPlugin'{
  37. interface TilesImportOptions {
  38. DeepZoomImagePlugin?: boolean | {
  39. center?: boolean,
  40. pixelSize?: number,
  41. useRecommendedSettings?: boolean,
  42. }
  43. }
  44. }