All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ofdrw.layout.element.canvas.CanvasRadialGradient Maven / Gradle / Ivy

The newest version!
package org.ofdrw.layout.element.canvas;

import org.ofdrw.core.basicType.ST_Pos;
import org.ofdrw.core.pageDescription.color.color.CT_Color;
import org.ofdrw.core.pageDescription.color.color.CT_RadialShd;
import org.ofdrw.core.pageDescription.color.color.Extend;
import org.ofdrw.core.pageDescription.color.color.Segment;

/**
 * 创建放射状/圆形渐变对象
 *
 * @author 权观宇
 * @since 2023-4-19 20:44:27
 */
public class CanvasRadialGradient {

    public final CT_RadialShd radialShd;


    /**
     * 创建一个放射状/圆形渐变
     *
     * @param x0 渐变的开始圆的 x 坐标
     * @param y0 渐变的开始圆的 y 坐标
     * @param r0 开始圆的半径
     * @param x1 渐变的结束圆的 x 坐标
     * @param y1 渐变的结束圆的 y 坐标
     * @param r1 结束圆的半径
     */
    public CanvasRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1) {
        radialShd = new CT_RadialShd();
        radialShd.setStartPoint(ST_Pos.getInstance(x0, y0));
        radialShd.setStartRadius(r0);
        radialShd.setEndPoint(ST_Pos.getInstance(x1, y1));
        radialShd.setEndRadius(r1);
        radialShd.setExtend(Extend._1);
    }


    /**
     * 添加渐变颜色段
     *
     * @param offset 渐变颜色位置,取值范围[0,1] 用于确定StartPoint和EndPoint之间的位置
     * @param color  16进制颜色值 或 颜色名,如#FF0000
     */
    public void addColorStop(double offset, String color) {
        int[] rgb = NamedColor.rgb(color);
        if (rgb == null) {
            return;
        }

        CT_Color c = CT_Color.rgb(rgb[0], rgb[1], rgb[2]);
        if (rgb.length > 3) {
            // 颜色参数包含透明度
            c.setAlpha(rgb[3]);
        }
        radialShd.addSegment(new Segment(offset, c));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy