Class Div<T extends Div>

java.lang.Object
org.ofdrw.layout.element.Div<T>
Type Parameters:
T - 链式调用返还值,Div的子类
All Implemented Interfaces:
ElementSplit, RenderPrepare
Direct Known Subclasses:
AreaHolderBlock, BR, Canvas, Img, PageAreaFiller, Paragraph

public class Div<T extends Div> extends Object implements RenderPrepare, ElementSplit
盒式模型基础

每个继承Div的对象都不必须提供泛型参数T,用于简化链式调用。

绘制行为详见渲染器:DivRender

Since:
2020-02-03 12:46:15
Author:
权观宇
  • Constructor Details

    • Div

      public Div()
    • Div

      public Div(Double width, Double height)
    • Div

      public Div(double x, double y, double width, double height)
      创建绝对定位的Div对象
      Parameters:
      x - 固定布局的盒式模型左上角X坐标
      y - 固定布局的盒式模型左上角y坐标
      width - 宽度
      height - 高度
  • Method Details

    • isNoBorder

      public boolean isNoBorder()
      是否存在边框
      Returns:
      true 不存在;false 存在
    • isBlockElement

      public boolean isBlockElement()
      是否是块级元素

      块元素将会独占整个段

      绝对定位默认不为块级元素

      Returns:
      true 独占; false 共享
    • getOpacity

      public Double getOpacity()
      获取透明度
      Returns:
      透明度取值区间 [0,1]
    • setOpacity

      public T setOpacity(Double opacity)
      设置透明度

      0 - 表示全透明, 1 - 表示不透明

      Parameters:
      opacity - 透明度取值区间 [0,1]
      Returns:
      this
    • getBorderColor

      public int[] getBorderColor()
      获取 边框颜色
      Returns:
      边框颜色 RGB值,null 表示无色。
    • setBorderColor

      public T setBorderColor(int r, int g, int b)
      设置边框颜色
      Parameters:
      r - 红色值(0~255)
      g - 绿色值(0~255)
      b - 蓝色值(0~255)
      Returns:
      this
    • setBorderColor

      public T setBorderColor(int[] rgb)
      设置 边框颜色
      Parameters:
      rgb - RGB数组,null 表示无色。
      Returns:
      this
    • setBorderColor

      public T setBorderColor(String color)
      设置 边框颜色
      Parameters:
      color - 颜色值,可以是 16进制值 "#FFFFFF"、 16进制值缩写 "#FF"F、RGB "rgb(255,255,255)"、颜色名称 "white"
      Returns:
      this
    • getTop

      public Double getTop()
    • setTop

      public T setTop(Double top)
    • getPosition

      public Position getPosition()
    • setPosition

      public T setPosition(Position position)
    • getBackgroundColor

      public int[] getBackgroundColor()
    • setBackgroundColor

      public T setBackgroundColor(int r, int g, int b)
      设置背景颜色 RGB
      Parameters:
      r - 红色值(0~255)
      g - 绿色值(0~255)
      b - 蓝色值(0~255)
      Returns:
      this
    • setBackgroundColor

      public T setBackgroundColor(String color)
      设置 背景颜色
      Parameters:
      color - 颜色值,可以是 16进制值 "#FFFFFF"、 16进制值缩写 "#FF"F、RGB "rgb(255,255,255)"、颜色名称 "white"
      Returns:
      this
    • setBackgroundColor

      public T setBackgroundColor(int[] backgroundColor)
      设置背景颜色 RGB
      Parameters:
      backgroundColor - RGB数组
      Returns:
      this
    • getWidth

      public Double getWidth()
    • setWidth

      public T setWidth(Double width)
    • getHeight

      public Double getHeight()
    • setHeight

      public T setHeight(Double height)
    • getPadding

      public Double[] getPadding()
      获取内边距

      一定返回4个元素的数组

      Returns:
      内边距数组,[上,右,下,左]
    • setPadding

      public T setPadding(Double... padding)
      设置 内边距

      根据参数的参数不同设置涉及到了到 上、右、下、左 各部分参数 1个参数,上、右、下、左 都相同 {arr[0], arr[0], arr[0], arr[0]}

      2个参数,上和下相同、左和右相同 {arr[0], arr[1], arr[0], arr[1]}

      3个参数,上、右、下、左(0) 分别设置 {arr[0], arr[1], arr[2], 0}

      4个参数,上、右、下、左 分别设置 {arr[0], arr[1], arr[2], arr[3]}

      Parameters:
      padding - 内边距,可变参数。
      Returns:
      this
    • getBorder

      public Double[] getBorder()
    • setBorder

      public T setBorder(Double... border)
      设置 边框宽度

      根据参数的参数不同设置涉及到了到 上、右、下、左 各部分参数 1个参数,上、右、下、左 都相同 {arr[0], arr[0], arr[0], arr[0]}

      2个参数,上和下相同、左和右相同 {arr[0], arr[1], arr[0], arr[1]}

      3个参数,上、右、下、左(0) 分别设置 {arr[0], arr[1], arr[2], 0}

      4个参数,上、右、下、左 分别设置 {arr[0], arr[1], arr[2], arr[3]}

      Parameters:
      border - 边框宽度,可变参数。
      Returns:
      this
    • setBorderDash

      public T setBorderDash(Double... dash)
      设置 边框虚线样式

      取消虚线:setBorderDash(null)

      设置虚线 与 空白相同 3:setBorderDash(3d)

      设置虚线的 长度 3 与空白 2: setBorderDash(3d, 2d)

      设置虚线的长度 3、空白 2、偏移量 1:setBorderDash(1d, 3d, 2d)

      Parameters:
      dash - 虚线样式,
      Returns:
      this
    • getBorderDash

      public Double[] getBorderDash()
      获取 边框虚线样式

      数组中个元素意义:[虚线偏移量,虚线长度,虚线间隔 ...重复]

      Returns:
      边框虚线样式,null表示无虚线
    • getMargin

      public Double[] getMargin()
    • setMargin

      public T setMargin(Double... margin)
      设置 外边距

      根据参数的参数不同设置涉及到了到 上、右、下、左 各部分参数 1个参数,上、右、下、左 都相同 {arr[0], arr[0], arr[0], arr[0]}

      2个参数,上和下相同、左和右相同 {arr[0], arr[1], arr[0], arr[1]}

      3个参数,上、右、下、左(0) 分别设置 {arr[0], arr[1], arr[2], 0}

      4个参数,上、右、下、左 分别设置 {arr[0], arr[1], arr[2], arr[3]}

      Parameters:
      margin - 外边距,可变参数。
      Returns:
      this
    • getMarginTop

      public Double getMarginTop()
    • setMarginTop

      public T setMarginTop(Double top)
    • getMarginRight

      public Double getMarginRight()
    • setMarginRight

      public T setMarginRight(Double right)
    • getMarginBottom

      public Double getMarginBottom()
    • setMarginBottom

      public T setMarginBottom(Double bottom)
    • getMarginLeft

      public Double getMarginLeft()
    • setMarginLeft

      public T setMarginLeft(Double left)
    • getBorderTop

      public Double getBorderTop()
    • setBorderTop

      public T setBorderTop(Double top)
    • getBorderRight

      public Double getBorderRight()
    • setBorderRight

      public T setBorderRight(Double right)
    • getBorderBottom

      public Double getBorderBottom()
    • setBorderBottom

      public T setBorderBottom(Double bottom)
    • getBorderLeft

      public Double getBorderLeft()
    • setBorderLeft

      public T setBorderLeft(Double left)
    • getPaddingTop

      public Double getPaddingTop()
    • setPaddingTop

      public T setPaddingTop(Double top)
    • getPaddingRight

      public Double getPaddingRight()
    • setPaddingRight

      public T setPaddingRight(Double right)
    • getPaddingBottom

      public Double getPaddingBottom()
    • setPaddingBottom

      public T setPaddingBottom(Double bottom)
    • getPaddingLeft

      public Double getPaddingLeft()
    • setPaddingLeft

      public T setPaddingLeft(Double left)
    • getX

      public Double getX()
    • setX

      public T setX(Double x)
    • getY

      public Double getY()
    • setY

      public T setY(Double y)
    • setXY

      public T setXY(Double x, Double y)
      设置位置
      Parameters:
      x - 左上角X坐标
      y - 左上角Y坐标
      Returns:
      this
    • setBox

      public T setBox(Double x, Double y, Double width, Double height)
      设置盒式模型的主要属性
      Parameters:
      x - 左上角X坐标
      y - 左上角Y坐标
      width - 宽度
      height - 高度
      Returns:
      this
    • getClear

      public Clear getClear()
    • setClear

      public T setClear(Clear clear)
    • getFloat

      public AFloat getFloat()
    • setFloat

      public T setFloat(AFloat aFloat)
      设置浮动样式

      注意:如果需要设置居中,那么还需要同时设置 setClear(Clear)Clear.noneClear.right

      Parameters:
      aFloat - 浮动样式
      Returns:
      this
    • getLeft

      public Double getLeft()
    • setLeft

      public T setLeft(Double left)
    • getRight

      public Double getRight()
    • setRight

      public T setRight(Double right)
    • isIntegrity

      public Boolean isIntegrity()
      元素是否可以拆分
      Returns:
      true - 可以拆分;false - 无法拆分
    • setIntegrity

      public T setIntegrity(Boolean integrity)
    • widthPlus

      public double widthPlus()
      Returns:
      额外宽度
    • heightPlus

      public double heightPlus()
      Returns:
      额外高度
    • doPrepare

      public Rectangle doPrepare(Double widthLimit)
      获取尺寸
      Specified by:
      doPrepare in interface RenderPrepare
      Parameters:
      widthLimit - 宽度限制
      Returns:
      元素尺寸
    • box

      public Rectangle box()
      获取模型区域大小

      注意:该方法必须在元素内容大小确定的情况才能放回正确的尺寸

      也就是说必须在 doPrepare(Double) 或是手动设置宽度和高度之后调用才能返还正确值

      Returns:
      模型大小
    • getLayer

      public org.ofdrw.core.basicStructure.pageObj.layer.Type getLayer()
      返回 图层

      默认为Body

      Returns:
      图层
    • setLayer

      public T setLayer(org.ofdrw.core.basicStructure.pageObj.layer.Type layer)
      设置 图层
      Parameters:
      layer - 图层
      Returns:
      this
    • isPlaceholder

      public boolean isPlaceholder()
      判断是否为占位符
      Returns:
      true 占位符,不参与渲染, false - 非占位符
    • setPlaceholder

      public T setPlaceholder(boolean placeholder)
      设置是否为 占位符
      Parameters:
      placeholder - true 占位符,不参与渲染, false - 非占位符
      Returns:
      this
    • setDisplay

      public T setDisplay(Display display)
      设置 显示样式
      Parameters:
      display - 显示样式 Display.inlineBlock 行内联 或 Display.block 块级
      Returns:
      this
    • getDisplay

      public Display getDisplay()
      获取 显示样式
      Returns:
      显示样式 Display.inlineBlock 行内联 或 Display.block 块级
    • placeholder

      public static Div placeholder(double width, double height, AFloat aFloat)
      空间占位符

      共享段空间,且不可分割

      Parameters:
      width - 宽度
      height - 高度
      aFloat - 浮动方向
      Returns:
      空间占位符
    • placeholder

      public static Div placeholder(Rectangle rec, AFloat aFloat)
      空间占位符
      Parameters:
      rec - 矩形区域
      aFloat - 浮动方向
      Returns:
      空间占位符
    • clone

      public Div clone()
      克隆Div
      Overrides:
      clone in class Object
      Returns:
      一模一样的全新Div对象
    • copyTo

      public <T extends Div> T copyTo(T div)
      Clone到制定对象
      Type Parameters:
      T - 泛型参数
      Parameters:
      div - 目标对象
      Returns:
      克隆复制后的对象
    • split

      public Div[] split(double sHeight)
      根据给定的高度切分元素

      截断元素前必须确定元素的宽度和高度,否则将会抛出异常

      元素的分割只作用于竖直方向上,水平方向不做分割每次只会截断1次。

      截断的元素在截断出均无margin、border、padding

      截断后的内容比截断高度高的多

      Specified by:
      split in interface ElementSplit
      Parameters:
      sHeight - 切分高度
      Returns:
      根据给定空间分割之后的新元素
    • contentSplitAdjust

      public <T extends Div> Div[] contentSplitAdjust(double sHeight, T div1, T div2)
      内容分割调整

      根据分割高度调整两个克隆元素,达成分割元素的效果

      Type Parameters:
      T - Div子类泛型参数
      Parameters:
      sHeight - 分割内容的高度
      div1 - 克隆元素1
      div2 - 克隆元素2
      Returns:
      分割调整后的两个Div
    • elementType

      public String elementType()
      获取元素类型名称

      用于标识元素类型,选择合适的处理器,自定义元素请重写该方法

      关联绘制器:DivRender

      Returns:
      元素类型名称
    • getOnRenderFinish

      public ElementRenderFinishHandler getOnRenderFinish()
      获取渲染完成回调事件
      Returns:
      处理器
    • onRenderFinish

      public void onRenderFinish(ElementRenderFinishHandler renderFinishHandler)
      设置渲染完成回调事件

      在该处理器中你可以得到元素在OFD容器的中文件位置和对象ID

      Parameters:
      renderFinishHandler - 处理器
    • toString

      public String toString()
      Overrides:
      toString in class Object