import { SpriteProvider } from "./SpriteProvider"; import { IconImageCache } from "./sdfield_cache"; import type { CancelHelper } from "../RequestResult"; import type GLEnv from "../GLEnv"; import { Vector2 } from "../GeoMath"; /** * 追加可能な画像の型 */ type ImageSource = TexImageSource & CanvasImageSource; /** * スタイルで使用する画像を管理 */ export declare class ImageManager { private readonly _glenv; private readonly _image_map; private _image_names; /** * `SdfImage` 用の画像キャッシュ */ readonly sdf_image_cache: IconImageCache; /** * レンダリング済みフラグ * * 現在の仕様では、`ImageManager` インタンス `this` を使ってレンダ * リングした後に、`this` に画像を追加・削除することができない。 * * その状況を判定するためのフラグである。 */ private _already_rendered; /** * 初期化 */ constructor(glenv: GLEnv, layout: SpriteProvider.Layout, sheet: SpriteProvider.Sheet); /** * インスタンスに含まれる画像の数を返す。 */ get num_images(): number; /** * 画像 ID の配列を取得 */ getImageNames(): string[]; /** * レンダリング済みという印を付ける。 */ markAsAlreadyRendered(): void; /** * @see [[_already_rendered]] */ private _checkAlreadyRendered; /** * 画像 `id` を追加 */ addImage(id: string, src_image: ImageSource, options?: Option): void; /** * 画像 `id` を削除 */ removeImage(id: string): void; /** * 画像 `id` を取得 */ findImage(id: string): ImageBase | undefined; /** * `SdfImage` インスタンスを取得 * * `id` が `SdfImage` インスタンスであることが事前に分かっていると * きに使用できる。 */ getSdfImage(id: string): SdfImage; } /** * 画像追加のオプション */ interface Option { /** * 色付けと縁取りが可能な画像とするときは `true` を指定する。 * * @defaultValue `false` */ sdf?: boolean; } /** * スタイルで扱う画像 */ declare abstract class ImageBase { /** * 画像の ID */ readonly id: string; protected constructor(id: string); } /** * RGBA 画素データにより描画する画像 * * `image_lower` と `image_upper` の座標系は `texture` 画像の左下を原 * 点 (0, 0) とし、x 座標は右方向、y 座標は上方向に画素単位で増加する。 */ export declare abstract class ColorImage extends ImageBase { /** * RGBA 画像データを持っているテクスチャ */ readonly texture: WebGLTexture; /** * `texture` の水平方向と垂直方向の画素数 */ readonly texture_size: [number, number]; /** * テクスチャ内での画像領域の下限 (左下) */ readonly image_lower: Vector2; /** * テクスチャ内での画像領域の上限 (右上) */ readonly image_upper: Vector2; /** * 初期化 */ protected constructor(id: string, texture: WebGLTexture, texture_size: [number, number], image_lower: Vector2, image_upper: Vector2); } /** * 色付けと縁取りが可能な画像 */ export declare class SdfImage extends ImageBase { readonly image: HTMLCanvasElement; constructor(id: string, image: ImageSource, option?: SdfImage.Option); } declare namespace SdfImage { interface Option { /** * アイコン左上の x 座標 */ dx: number; /** * アイコン左上の y 座標 */ dy: number; /** * アイコンの水平画素数 */ dw: number; /** * アイコンの垂直画素数 */ dh: number; } } /** * スプライトデータを読み込み `ImageManager` インスタンスを返す。 * * `null` を与えたときは空のスプライトを返す。 */ export declare function loadImageManager(glenv: GLEnv, provider_or_null: SpriteProvider | null, cancel_helper: CancelHelper): Promise; export {}; //# sourceMappingURL=image.d.ts.map