From a7cb2810ce20fc78a58d6c51a0c608699b9f77aa Mon Sep 17 00:00:00 2001 From: Wentao Kuang Date: Thu, 5 Dec 2024 14:29:51 +1300 Subject: [PATCH] Add resize Kernel into bundled config. --- packages/config-loader/src/json/json.config.ts | 1 + packages/config-loader/src/json/parse.tile.set.ts | 5 ++++- packages/config/src/config/tile.set.ts | 2 +- packages/tiler/src/raster.ts | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/config-loader/src/json/json.config.ts b/packages/config-loader/src/json/json.config.ts index bd4eb7111..c328583b9 100644 --- a/packages/config-loader/src/json/json.config.ts +++ b/packages/config-loader/src/json/json.config.ts @@ -247,6 +247,7 @@ export class ConfigJson { if (tileSet.type === TileSetType.Raster) { if (ts.outputs) tileSet.outputs = ts.outputs; if (ts.background) tileSet.background = ts.background; + if (ts.resizeKernel) tileSet.resizeKernel = ts.resizeKernel; } if (ts.format) { diff --git a/packages/config-loader/src/json/parse.tile.set.ts b/packages/config-loader/src/json/parse.tile.set.ts index 040c08e99..2a641df6d 100644 --- a/packages/config-loader/src/json/parse.tile.set.ts +++ b/packages/config-loader/src/json/parse.tile.set.ts @@ -1,4 +1,4 @@ -import { ConfigTileSetOutputParser, parseRgba, TileSetType } from '@basemaps/config'; +import { ConfigTileSetOutputParser, parseRgba, TileResizeKernel, TileSetType } from '@basemaps/config'; import { z } from 'zod'; export function validateColor(str: string): boolean { @@ -57,6 +57,8 @@ const zLayerConfig = z }, ); +const TileResizeKernel = z.enum(['nearest', 'mitchell', 'lanczos3', 'lanczos2']); + export const zTileSetConfig = z.object({ type: z.nativeEnum(TileSetType), id: z.string(), @@ -68,6 +70,7 @@ export const zTileSetConfig = z.object({ minZoom: zZoom.optional(), maxZoom: zZoom.optional(), format: z.string().optional(), + resizeKernel: z.object({ in: TileResizeKernel, out: TileResizeKernel }).optional(), outputs: z.array(ConfigTileSetOutputParser).optional(), }); diff --git a/packages/config/src/config/tile.set.ts b/packages/config/src/config/tile.set.ts index 07aa1e505..0642f62f3 100644 --- a/packages/config/src/config/tile.set.ts +++ b/packages/config/src/config/tile.set.ts @@ -31,7 +31,7 @@ export interface ConfigLayer extends Partial> { maxZoom?: number; } -export type TileResizeKernel = 'nearest' | 'lanczos3' | 'lanczos2'; +export type TileResizeKernel = 'nearest' | 'mitchell' | 'lanczos3' | 'lanczos2'; export interface ConfigTileSetBase extends ConfigBase { /** Human friendly display name for the tileset */ diff --git a/packages/tiler/src/raster.ts b/packages/tiler/src/raster.ts index 7278549b7..4ad658628 100644 --- a/packages/tiler/src/raster.ts +++ b/packages/tiler/src/raster.ts @@ -7,7 +7,7 @@ export interface TileMaker { compose(ctx: TileMakerContext): Promise<{ buffer: Buffer; metrics: Metrics }>; } -export type ResizeKernelType = 'nearest' | 'lanczos3' | 'lanczos2'; +export type ResizeKernelType = 'nearest' | 'mitchell' | 'lanczos3' | 'lanczos2'; export type TileMakerResizeKernel = { in: ResizeKernelType; out: ResizeKernelType }; export interface TileMakerContext {