package com.fdkankan.dxf.parse.utils;

import com.fdkankan.dxf.generate.util.StreamUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONReader;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

/**
 * @Author ytzjj
 * @DateTime 2023/11/24 10:05
 * @Description 多文本样式解析
 */
public class MTextStyleParse {

    /**
     * cad默认颜色ACI编码
     */
    private static final String DEFAULT_COLOR_ACI_CODE = "7";

    /**
     * cad默认颜色与16进制颜色转换文件
     */
    private static final String DEFAULT_COLOR_JSON_FILE_PATH = "dxf/color.json";

    /**
     * CAD颜色列表
     */
    private static JSONArray colorReflection = null;


    static {
        try (
                InputStream resourceStream = StreamUtil.getResourceStream(DEFAULT_COLOR_JSON_FILE_PATH);
                JSONReader reader = new JSONReader(new InputStreamReader(resourceStream, StandardCharsets.UTF_8));
        ) {
            colorReflection = reader.readObject(JSONArray.class);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }


    /**
     * 解析CAD ACI色号为16进制颜色标识
     *
     * @param cadCode
     * @return
     */
    public static String parseCadColorToHexColorCode(String cadCode) {
        String defaultHexColor = "";
        for (int i = 0; i < colorReflection.size(); i++) {
            JSONObject json = colorReflection.getJSONObject(i);
            if (json.getString("code").equals(cadCode)) {
                defaultHexColor = json.getString("color");
                if (defaultHexColor.startsWith("#")) {
                    defaultHexColor = defaultHexColor.substring(1);
                }
                // 添加透明度信息，默认为不透明（FF）
                defaultHexColor = (defaultHexColor + "FF").toUpperCase();
            } else if (json.getString("code").equals(DEFAULT_COLOR_ACI_CODE)) {
                defaultHexColor = json.getString("color");
                if (defaultHexColor.startsWith("#")) {
                    defaultHexColor = defaultHexColor.substring(1);
                }
                // 添加透明度信息，默认为不透明（FF）
                defaultHexColor = (defaultHexColor + "FF").toUpperCase();
            }
        }
        return defaultHexColor;
    }


}
