Module java.desktop

Class ResolutionSyntax

java.lang.Object
javax.print.attribute.ResolutionSyntax
所有已实现的接口:
Serializable, Cloneable
直接已知的子类:
PrinterResolution

public abstract class ResolutionSyntax extends Object implements Serializable, Cloneable
ResolutionSyntax 是一个抽象基类,提供了表示打印机分辨率的所有属性的通用实现。

分辨率属性的值由两个部分组成,即横向分辨率和纵向分辨率。可以通过提供这两个值并指示值的测量单位来构造分辨率属性。提供了方法来返回分辨率属性的值,指示要返回值的单位。最常见的两种分辨率单位是每英寸的点数(dpi)和每厘米的点数(dpcm),并提供了导出常量 DPIDPCM 用于指示这些单位。

一旦构造完成,分辨率属性的值就是不可变的。

设计

分辨率属性的横向分辨率和纵向分辨率值在内部使用每100英寸的点数(dphi)单位存储。将值存储在dphi而不是例如公制单位,允许在dpi和dphi之间以及dpcm和dphi之间进行精确的整数算术转换:1 dpi = 100 dphi,1 dpcm = 254 dphi。因此,可以在两种单位之间存储和检索值,而不会丢失精度。如果使用浮点表示,则不能保证这一点。但是,如果分辨率属性的值是在一个单位中创建的,然后在不同单位中检索,则通常会发生四舍五入误差;例如,600 dpi将被四舍五入为236 dpcm,而真实值(保留五位小数)为236.22 dpcm。

在内部以dphi的通用单位存储值使得可以比较两个分辨率属性,而不必考虑它们的创建单位;例如,300 dpcm将等于762 dpi,因为它们都存储为76200 dphi。特别是,查找服务可以基于它们的序列化表示的相等性匹配分辨率属性,而不考虑它们的创建单位。再次,使用整数进行内部存储允许进行精确的相等性比较,如果使用浮点表示,则不能保证这一点。

导出的常量 DPI 实际上是将dpi乘以以获得dphi(100)的转换因子。同样,导出的常量 DPCM 是将dpcm乘以以获得dphi(254)的转换因子。客户端可以通过提供自己的转换因子来指定除dpi或dpcm之外的单位的分辨率值。但是,由于选择了以dphi为单位的内部单位,只支持dpi和dpcm的外部单位,因此不能保证客户端单位的转换因子是精确整数。如果转换因子不是精确整数,则客户端单位的分辨率值将无法精确存储。

参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    表示每厘米的点数(dpcm)的单位值。
    static final int
    DPI
    表示每英寸的点数(dpi)的单位值。
  • Constructor Summary

    Constructors
    Constructor
    Description
    ResolutionSyntax(int crossFeedResolution, int feedResolution, int units)
    从给定项目构造一个新的分辨率属性。
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    equals(Object object)
    返回此分辨率属性是否等同于传入的对象。
    int
    返回此分辨率属性的横向分辨率以给定单位。
    protected int
    返回此分辨率属性的横向分辨率,单位为dphi。
    int
    getFeedResolution(int units)
    返回此分辨率属性的纵向分辨率以给定单位。
    protected int
    返回此分辨率属性的纵向分辨率,单位为dphi。
    int[]
    getResolution(int units)
    获取此分辨率属性的分辨率值,以给定单位。
    int
    返回此分辨率属性的哈希码值。
    boolean
    确定此分辨率属性的值是否小于或等于给定分辨率属性的值。
    返回此分辨率属性的字符串版本。
    toString(int units, String unitsName)
    返回以给定单位的此分辨率属性的字符串版本。

    Methods declared in class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • DPI

      public static final int DPI
      表示每英寸的点数(dpi)的单位值。实际上是将dpi乘以以获得dphi(100)的转换因子。
      参见:
    • DPCM

      public static final int DPCM
      表示每厘米的点数(dpcm)的单位值。实际上是将dpcm乘以以获得dphi(254)的转换因子。
      参见:
  • Constructor Details

    • ResolutionSyntax

      public ResolutionSyntax(int crossFeedResolution, int feedResolution, int units)
      从给定项目构造一个新的分辨率属性。
      参数:
      crossFeedResolution - 横向分辨率
      feedResolution - 纵向分辨率
      units - 单位转换因子,例如 DPIDPCM
      抛出:
      IllegalArgumentException - 如果 crossFeedResolution < 1feedResolution < 1units < 1
  • Method Details

    • getResolution

      public int[] getResolution(int units)
      获取此分辨率属性的分辨率值,以给定单位。值将四舍五入到最接近的整数。
      参数:
      units - 单位转换因子,例如 DPIDPCM
      返回:
      包含横向分辨率在索引0处和纵向分辨率在索引1处的两个元素数组
      抛出:
      IllegalArgumentException - 如果 units < 1
    • getCrossFeedResolution

      public int getCrossFeedResolution(int units)
      返回此分辨率属性的横向分辨率以给定单位。值将四舍五入到最接近的整数。
      参数:
      units - 单位转换因子,例如 DPIDPCM
      返回:
      横向分辨率
      抛出:
      IllegalArgumentException - 如果 units < 1
    • getFeedResolution

      public int getFeedResolution(int units)
      返回此分辨率属性的纵向分辨率以给定单位。值将四舍五入到最接近的整数。
      参数:
      units - 单位转换因子,例如 DPIDPCM
      返回:
      纵向分辨率
      抛出:
      IllegalArgumentException - 如果 units < 1
    • toString

      public String toString(int units, String unitsName)
      返回以给定单位的此分辨率属性的字符串版本。字符串采用 "CxF U" 的形式,其中 C 是横向分辨率,F 是纵向分辨率,U 是单位名称。值将四舍五入到最接近的整数。
      参数:
      units - 单位转换因子,例如 CODE>DPIDPCM
      unitsName - 单位名称字符串,例如 "dpi""dpcm"。如果为 null,则结果不附加单位名称。
      返回:
      此分辨率属性的字符串版本
      抛出:
      IllegalArgumentException - 如果 units < 1
    • lessThanOrEquals

      public boolean lessThanOrEquals(ResolutionSyntax other)
      确定此分辨率属性的值是否小于或等于给定分辨率属性的值。如果满足以下所有条件,则为真:
      • 此属性的横向分辨率小于或等于 other 属性的横向分辨率。
      • 此属性的纵向分辨率小于或等于 other 属性的纵向分辨率。
      参数:
      other - 要比较的分辨率属性
      返回:
      如果此分辨率属性小于或等于 other 分辨率属性,则为 true,否则为 false
      抛出:
      NullPointerException - 如果 othernull
    • equals

      public boolean equals(Object object)
      返回此分辨率属性是否等同于传入的对象。要等同,必须满足以下所有条件:
      1. object 不为 null
      2. objectResolutionSyntax 类的实例。
      3. 此属性的横向分辨率等于 object 的横向分辨率。
      4. 此属性的纵向分辨率等于 object 的纵向分辨率。
      覆盖:
      equals 在类 Object
      参数:
      object - 要比较的Object
      返回:
      如果object等同于此分辨率属性,则返回true,否则返回false
      参见:
    • hashCode

      public int hashCode()
      返回此分辨率属性的哈希码值。
      覆盖:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • toString

      public String toString()
      返回此分辨率属性的字符串版本。字符串采用"CxF dphi"的形式,其中C是横向进纸方向分辨率,F是进纸方向分辨率。这些值以dphi的内部单位报告。
      覆盖:
      toString 在类 Object
      返回:
      对象的字符串表示。
    • getCrossFeedResolutionDphi

      protected int getCrossFeedResolutionDphi()
      返回此分辨率属性的横向进纸方向分辨率,以dphi为单位。(供子类使用。)
      返回:
      横向进纸方向分辨率
    • getFeedResolutionDphi

      protected int getFeedResolutionDphi()
      返回此分辨率属性的进纸方向分辨率,以dphi为单位。(供子类使用。)
      返回:
      进纸方向分辨率