/** * 画像プロバイダ * * レンダラーにラスターデータを与えるためのクラスです。 * コンストラクタの引数によって実際の処理が決定されます。 * 独自の画像プロバイダを作成する際は、通常このクラスを直接継承するのではなく {@link ImageProvider.Hook} を用いる方法で行います。 * * @example * ```ts * viewer.setImageProvider(new ImageProvider({ * init: () => { * ... * }, * requestTile: () => { * ... * }, * })); * ``` * * Hookの定義方法の詳細は {@link ImageProvider.Hook} を参照してください。 * @see {@link mapray.Viewer.setImageProvider} * @see {@link mapray.LayerCollection.add} */ declare class ImageProvider { private _status; private readonly _init_resolvers; private readonly _hook; private _info; /** * 引数により与えるフックにより、このプロバイダの動作(初期化処理や読み込み処理)が決定する。 * @param hook 画像プロバイダの動作を決定するフック */ constructor(hook: ImageProvider.Hook); /** * 初期化を行う * * @see {@link ImageProvider.Hook.init} */ init(): Promise>; /** * タイル画像をリクエストする * * 2回以上呼ばれた場合は、処理をスキップし初回と同様の値を返却する。 * @param z タイルのZ * @param x タイルのX * @param y タイルのY * @param options.signal リクエストキャンセル用のシグナル * @see {@link ImageProvider.Hook.requestTile} */ requestTile(z: number, x: number, y: number, options?: { signal?: AbortSignal; }): Promise; /** * タイル画像をリクエストできる状態である場合は `true` を返す。 */ isReady(): boolean; getInfo(): Required; } /** * 画像プロバイダに関連する型や値が含まれます。 */ declare namespace ImageProvider { /** * 画像プロバイダフック * * 独自の画像プロバイダを作成する際に利用します。 * * オブジェクトによる実装 * 単純な動作の場合は下記のように簡易的に実装することができます。 * @example * ```ts * viewer.setImageProvider(new ImageProvider({ * init: () => { * // 必要に応じて初期化します。 * }, * requestTile: ( z, x, y ) => { * // タイルを取得します。 * }, * })); * ``` * * クラスによる実装 * 下記のように実装することで、複雑なプロバイダを記述することができます。 * @example * ```ts * // クラスとして定義 * class ProviderHook implements mapray.ImageProvider.Hook { * constructor( id, option ) { * // タイルへのアクセスに必要な情報などを受け取る * } * async init() { * // 認証やログインなどを行い、アクセスできるようにする * } * async requestTile( z, x, y ) { * // 実際にデータにアクセスする * } * } * * // インスタンス化して実装 * viewer.setImageProvider( new ProviderHook( "id", { token: "xxxxxx" } ) ); * ``` * */ interface Hook { /** * タイルプロバイダを初期化しリクエストできる状態にします。 * * - リクエストできる状態に遷移できなかった場合は必ず例外をスローします * - この関数は2回以上呼ばれることはありません * * @param signal 中断信号(可能であれば処理を中断する) * @returns タイルプロバイダの情報 */ init(options?: { signal?: AbortSignal; }): Promise; /** * タイルをリクエストします。 * * 座標が (z, x, y) のタイルデータを要求します。 * {@link Hook.init} の呼び出しに成功した場合に、レンダラが必要なタイミングで何度も呼び出します。 * * @param z ズームレベル * @param x X タイル座標 * @param y Y タイル座標 * @param signal 中断信号(可能であれば処理を中断する) * * @return リクエスト結果 */ requestTile(z: number, x: number, y: number, options?: { signal?: AbortSignal; }): Promise; } /** * ImageProvider の情報です。 * {@link Hook.init} の戻り値型です。 */ interface Info { /** * タイルの幅及び高さの画素数 * * @default 256 */ image_size?: number; /** * タイルのズームレベルの範囲 */ zoom_level_range: ImageProvider.Range; /** * タイルのピクセルフォーマット * * @default ImageProvider.ColorPixelFormat */ pixel_format?: ImageProvider.ColorPixelFormat; } /** * 範囲 * * @see {@link ImageProvider.getZoomLevelRange} */ class Range { /** * 最小値 */ readonly min: number; /** * 最大値 */ readonly max: number; /** * @param min 最小値 * @param max 最大値 */ constructor(min: number, max: number); } type SupportedImageTypes = TexImageSource | null; /** * ピクセル値が色であることを意味します。 * 通常はこちらのフォーマットです。 */ interface ColorPixelFormat { type: "color"; } } export declare const DEFAULT_IMAGE_SIZE = 256; export declare const DEFAULT_PIXEL_FORMAT: ImageProvider.ColorPixelFormat; export default ImageProvider; //# sourceMappingURL=ImageProvider.d.ts.map