public abstract class ResolutionSyntax extends Object implements Serializable, Cloneable
分辨率属性的值由两个项目组成,即交叉进给方向分辨率和进给方向分辨率。 可以通过提供两个值并指示测量值的单位来构造分辨率属性。 提供了返回分辨率属性值的方法,指示要返回值的单位。 两个最常见的分辨率单位是每英寸点数(dpi)和每厘米点数(dpcm),并且提供用于指示这些单位的导出常数DPI
和DPCM
。
一旦构造,分辨率属性的值是不可变的。
设计
分辨率属性的交叉进给方向分辨率和进给方向分辨率值在内部使用每100英寸点的单位(dphi)进行存储。 将数值存储在dphi中而不是公制单位允许在dpi和dphi之间以及dpcm和dphi之间进行精确的整数算术转换:1 dpi = 100 dphi,1 dpcm = 254 dphi。 因此,这些值可以以任何单位的分辨率属性存储和返回,而不会损失精度。 如果使用浮点表示,则无法保证。 然而,如果分辨率属性的值以一个单位创建并以不同的单位检索,则通常会发生舍入误差; 例如,600dpi将四舍五入为236dpcm,而真值(至五个数字)为236.22dpcm。
将内部值保存在dphi的常用单元中,可以比较两个分辨率属性,而不考虑创建它们的单位; 例如,300 dpcm将相当于762 dpi,因为它们都存储为76200 dphi。 特别地,查找服务可以基于其序列化表示的相等性来匹配分辨率属性,而不管它们被创建的单位如何。 再次,使用整数进行内部存储可以进行精确的等式比较,如果使用浮点表示,则不能保证。
导出的常数DPI
实际上是用dpi乘以dpi的值来获取dphi中的值的转换因子。 同样,导出的常数DPCM
是通过乘以dpcm中的值来获取dphi中的值的转换因子。 客户端可以通过提供自己的转换因子来指定除dpi或dpcm之外的单位的分辨率值。 但是,由于选择dphi的内部单元仅支持dpi和dpcm的外部单元,所以不能保证客户机单元的转换因子将是一个精确的整数。 如果转换因子不是一个精确的整数,客户单位的分辨率值将不会被精确存储。
Modifier and Type | Field and Description |
---|---|
static int |
DPCM
值表示每厘米点数(dpcm)。
|
static int |
DPI
值表示每英寸点数(dpi)。
|
Constructor and Description |
---|
ResolutionSyntax(int crossFeedResolution, int feedResolution, int units)
从给定的项目构造一个新的分辨率属性。
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object object)
返回此分辨率属性是否等同于传入的对象。
|
int |
getCrossFeedResolution(int units)
以给定单位返回此分辨率属性的交叉进给方向分辨率。
|
protected int |
getCrossFeedResolutionDphi()
以dphi为单位返回此分辨率属性的交叉进给方向分辨率。
|
int |
getFeedResolution(int units)
以给定单位返回此分辨率属性的Feed方向分辨率。
|
protected int |
getFeedResolutionDphi()
以dphi为单位返回此分辨率属性的Feed方向分辨率。
|
int[] |
getResolution(int units)
以给定单位获取此分辨率属性的分辨率值。
|
int |
hashCode()
返回此分辨率属性的哈希码值。
|
boolean |
lessThanOrEquals(ResolutionSyntax other)
确定此分辨率属性的值是否小于或等于给定分辨率属性的值。
|
String |
toString()
返回此分辨率属性的字符串版本。
|
String |
toString(int units, String unitsName)
以给定的单位返回此分辨率属性的字符串版本。
|
public static final int DPI
public static final int DPCM
public ResolutionSyntax(int crossFeedResolution, int feedResolution, int units)
crossFeedResolution
- 交叉进给方向分辨率。
feedResolution
- 进纸方向分辨率。
units
- 单位换算系数,例如
DPI
或
DPCM
。
IllegalArgumentException
- (未经检查的例外)如果
crossFeedResolution < 1
或
feedResolution < 1
或
units < 1
。
public int[] getResolution(int units)
units
- 单位换算系数,例如
DPI
或
DPCM
。
IllegalArgumentException
- (未经检查的异常)如果
units < 1
抛出。
public int getCrossFeedResolution(int units)
units
- 单位换算系数,例如
DPI
或
DPCM
。
IllegalArgumentException
- (未经检查的例外)如果
units < 1
抛出。
public int getFeedResolution(int units)
units
- 单位换算系数,例如
DPI
或
DPCM
。
IllegalArgumentException
- (未经检查的异常)如果
units < 1
抛出。
public String toString(int units, String unitsName)
"CxF U"
,其中C是交叉进给方向分辨率, F是进给方向分辨率, U是单位名称。
值舍入到最接近的整数。
units
- 单位换算系数,例如
CODE>DPI
或
DPCM
。
unitsName
- 单位名称字符串,例如"dpi"
或"dpcm"
。
如果为空,则不会在结果附加单位名称。
IllegalArgumentException
- (未经检查的异常)如果
units < 1
抛出。
public boolean lessThanOrEquals(ResolutionSyntax other)
other
属性的交叉进给方向分辨率。 other
属性的进纸方向分辨率。 other
- 与...比较的分辨率属性。
other
分辨率属性,则为真,否则为false。
NullPointerException
- (未选中的异常)如果
other
为空,则抛出。
public boolean equals(Object object)
object
不为空。 object
是一个类ResolutionSyntax的实例。 object
的交叉进给方向分辨率。 object
的进纸方向分辨率。 equals
在类别
Object
object
- 要比较的对象。
object
于此分辨率属性,则为True,
object
为false。
Object.hashCode()
, HashMap
public int hashCode()
hashCode
在类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString()
"CxF dphi"
,其中C是交叉进给方向分辨率, F是进给方向分辨率。
值在dphi的内部单位中报告。
protected int getCrossFeedResolutionDphi()
protected int getFeedResolutionDphi()