package com.ycwl.basic.image.pipeline.stages;

import com.ycwl.basic.image.watermark.edge.WatermarkEdgeService;
import com.ycwl.basic.image.watermark.enums.ImageWatermarkOperatorEnum;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
import lombok.Builder;
import lombok.Getter;

import java.io.File;
import java.util.List;

/**
 * 水印Stage配置
 * 封装水印处理所需的所有配置参数
 */
@Getter
@Builder
public class WatermarkConfig {

    /**
     * 水印类型
     */
    private final ImageWatermarkOperatorEnum watermarkType;

    /**
     * 景区文字
     */
    private final String scenicText;

    /**
     * 日期格式
     */
    @Builder.Default
    private final String dateFormat = "yyyy.MM.dd";

    /**
     * 二维码文件
     */
    private final File qrcodeFile;

    /**
     * 缩放倍数，用于将所有定位和大小乘以该倍数
     * 默认值为 1.0（不缩放）
     */
    @Builder.Default
    private final Double scale = 1.0;

    /**
     * 边缘端水印服务（可选）
     * 如果设置，将优先尝试使用边缘端处理
     */
    private final WatermarkEdgeService edgeService;

    /**
     * 存储适配器（边缘端处理时需要）
     * 用于上传原图和二维码到临时位置
     */
    private final IStorageAdapter storageAdapter;

    /**
     * 是否启用边缘端处理
     */
    @Builder.Default
    private final boolean edgeEnabled = true;

    /**
     * 边缘端处理超时时间（毫秒）
     */
    @Builder.Default
    private final long edgeTimeoutMs = 10_000L;

    /**
     * 打印水印竖版URL列表
     * 用于在竖屏图片上添加全屏水印叠加层（在原图上方，文字/二维码下方）
     */
    private final List<String> printWatermarkPUrlList;

    /**
     * 打印水印横版URL列表
     * 用于在横屏图片上添加全屏水印叠加层（在原图上方，文字/二维码下方）
     */
    private final List<String> printWatermarkLUrlList;
}
