export interface Rect {
  x: number;
  y: number;
  w: number;
  h: number;
}

// 计算图片在视口居中、contain 适配后的目标 rect。
// naturalW/H: 图片真实像素尺寸；vw/vh: 视口尺寸。
export function fitCentered(naturalW: number, naturalH: number, vw: number, vh: number): Rect {
  var maxW = vw * 0.92;
  var maxH = vh * 0.88;
  var scale = Math.min(maxW / naturalW, maxH / naturalH, 1);
  var w = naturalW * scale;
  var h = naturalH * scale;
  return {
    x: (vw - w) / 2,
    y: (vh - h) / 2,
    w: w,
    h: h,
  };
}

// 把目标 rect 转成 transform 字符串。
// baseW/baseH 是 img 元素的布局尺寸（=居中目标尺寸），scale 相对它缩放。
// transform-origin 为 top left（见 CSS），translate 到 rect 左上角后 scale。
// - 居中态：scale=1（base 就是居中尺寸）
// - originRect 态：scale = originRect.w / base.w（缩小）
export function transformFor(rect: Rect, baseW: number, baseH: number): string {
  var sx = baseW > 0 ? rect.w / baseW : 1;
  var sy = baseH > 0 ? rect.h / baseH : 1;
  return 'translate(' + rect.x + 'px,' + rect.y + 'px) scale(' + sx + ',' + sy + ')';
}

// 原图 URL = data-src 去 query。data-src 形如 "/uploads/x.webp?w=800"。
export function originalUrl(dataSrc: string | null): string {
  return (dataSrc || '').split('?')[0];
}
