package cn.wise.sc.energy.power.plant.business.utils.poi;

import cn.wise.sc.energy.power.plant.business.utils.poi.styles.POIColor;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGridCol;

import java.math.BigInteger;

public class StyleUtil {

    /**
     * @Description: 设置表格列宽
     */
    private static void setTableGridCol(XWPFTable table, int colLength, int tableWidth) {
        CTTbl ttbl = table.getCTTbl();
        CTTblGrid tblGrid = ttbl.getTblGrid() != null ? ttbl.getTblGrid() : ttbl.addNewTblGrid();
        for (int j = 0; j < colLength; j++) {
            CTTblGridCol gridCol = tblGrid.addNewGridCol();
            gridCol.setW(new BigInteger(String.valueOf(tableWidth / colLength)));
        }
    }

    /**
     * 简单的设置字体和字号，为run设置
     *
     * @param run
     * @param fontSizeMutiply2 字号*2 比如要设置10.5号字，就传入21
     * @param englishFont      Nullable
     * @param chineseFont      Nullable
     */
    public static void setFontAndSize(XWPFRun run, int fontSizeMutiply2, String englishFont, String chineseFont) {
        run.setColor(POIColor.BLACK.toString());
        //给字体赋值，避免设置字体时出现null
        run.setFontFamily(chineseFont == null ? "宋体" : chineseFont);
        //给字号赋值，避免设置字号时出现null
        run.setFontSize(9);
        //这地方 因为fontSize不存在小数点，所以很蛋疼，这里的BigInteger是fontSize*2，看源码即可知道。
        run.getCTR().getRPr().getSz().setVal(new BigInteger(fontSizeMutiply2 + ""));
        //设置英文字体
        run.getCTR().getRPr().getRFonts().setAscii(englishFont == null ? "Times New Roman" : englishFont);
        //设置中文字体
        run.getCTR().getRPr().getRFonts().setEastAsia(chineseFont == null ? "宋体" : chineseFont);
    }

}
