- 所有已实现的接口:
-
Serializable
,Cloneable
- 直接已知的子类:
-
PrinterResolution
ResolutionSyntax
是一个抽象基类,提供了表示打印机分辨率的所有属性的通用实现。
分辨率属性的值由两个部分组成,即横向分辨率和纵向分辨率。可以通过提供这两个值并指示值的测量单位来构造分辨率属性。提供了方法来返回分辨率属性的值,指示要返回值的单位。最常见的两种分辨率单位是每英寸的点数(dpi)和每厘米的点数(dpcm),并提供了导出常量 DPI
和 DPCM
用于指示这些单位。
一旦构造完成,分辨率属性的值就是不可变的。
设计
分辨率属性的横向分辨率和纵向分辨率值在内部使用每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
-
Constructor Summary
ConstructorDescriptionResolutionSyntax
(int crossFeedResolution, int feedResolution, int units) 从给定项目构造一个新的分辨率属性。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
返回此分辨率属性是否等同于传入的对象。int
getCrossFeedResolution
(int units) 返回此分辨率属性的横向分辨率以给定单位。protected int
返回此分辨率属性的横向分辨率,单位为dphi。int
getFeedResolution
(int units) 返回此分辨率属性的纵向分辨率以给定单位。protected int
返回此分辨率属性的纵向分辨率,单位为dphi。int[]
getResolution
(int units) 获取此分辨率属性的分辨率值,以给定单位。int
hashCode()
返回此分辨率属性的哈希码值。boolean
lessThanOrEquals
(ResolutionSyntax other) 确定此分辨率属性的值是否小于或等于给定分辨率属性的值。toString()
返回此分辨率属性的字符串版本。返回以给定单位的此分辨率属性的字符串版本。
-
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
- 单位转换因子,例如DPI
或DPCM
- 抛出:
-
IllegalArgumentException
- 如果crossFeedResolution < 1
或feedResolution < 1
或units < 1
-
-
Method Details
-
getResolution
public int[] getResolution(int units) 获取此分辨率属性的分辨率值,以给定单位。值将四舍五入到最接近的整数。- 参数:
-
units
- 单位转换因子,例如DPI
或DPCM
- 返回:
- 包含横向分辨率在索引0处和纵向分辨率在索引1处的两个元素数组
- 抛出:
-
IllegalArgumentException
- 如果units < 1
-
getCrossFeedResolution
public int getCrossFeedResolution(int units) 返回此分辨率属性的横向分辨率以给定单位。值将四舍五入到最接近的整数。- 参数:
-
units
- 单位转换因子,例如DPI
或DPCM
- 返回:
- 横向分辨率
- 抛出:
-
IllegalArgumentException
- 如果units < 1
-
getFeedResolution
public int getFeedResolution(int units) 返回此分辨率属性的纵向分辨率以给定单位。值将四舍五入到最接近的整数。- 参数:
-
units
- 单位转换因子,例如DPI
或DPCM
- 返回:
- 纵向分辨率
- 抛出:
-
IllegalArgumentException
- 如果units < 1
-
toString
返回以给定单位的此分辨率属性的字符串版本。字符串采用 "CxF U" 的形式,其中 C 是横向分辨率,F 是纵向分辨率,U 是单位名称。值将四舍五入到最接近的整数。- 参数:
-
units
- 单位转换因子,例如CODE>DPI
或DPCM
-
unitsName
- 单位名称字符串,例如"dpi"
或"dpcm"
。如果为null
,则结果不附加单位名称。 - 返回:
- 此分辨率属性的字符串版本
- 抛出:
-
IllegalArgumentException
- 如果units < 1
-
lessThanOrEquals
确定此分辨率属性的值是否小于或等于给定分辨率属性的值。如果满足以下所有条件,则为真:- 此属性的横向分辨率小于或等于
other
属性的横向分辨率。 - 此属性的纵向分辨率小于或等于
other
属性的纵向分辨率。
- 参数:
-
other
- 要比较的分辨率属性 - 返回:
-
如果此分辨率属性小于或等于
other
分辨率属性,则为true
,否则为false
- 抛出:
-
NullPointerException
- 如果other
为null
- 此属性的横向分辨率小于或等于
-
equals
返回此分辨率属性是否等同于传入的对象。要等同,必须满足以下所有条件:object
不为null
。object
是ResolutionSyntax
类的实例。- 此属性的横向分辨率等于
object
的横向分辨率。 - 此属性的纵向分辨率等于
object
的纵向分辨率。
-
hashCode
public int hashCode()返回此分辨率属性的哈希码值。 -
toString
返回此分辨率属性的字符串版本。字符串采用"CxF dphi"
的形式,其中C是横向进纸方向分辨率,F是进纸方向分辨率。这些值以dphi的内部单位报告。 -
getCrossFeedResolutionDphi
protected int getCrossFeedResolutionDphi()返回此分辨率属性的横向进纸方向分辨率,以dphi为单位。(供子类使用。)- 返回:
- 横向进纸方向分辨率
-
getFeedResolutionDphi
protected int getFeedResolutionDphi()返回此分辨率属性的进纸方向分辨率,以dphi为单位。(供子类使用。)- 返回:
- 进纸方向分辨率
-