- Allow both multiple groups and extensions to existing groups (follow up to #62).
- Allow mutable attribute groups (#65). Unfortunately this breaks
new AttributeGroup(...)
, which must be replaced withgroupOf(...)
ormutableGroupOf(...)
. - Simplified Kotlin DSL by introducing
MutableAttributeGroup
, which replacesInAttributeGroup
. - Added format check to jprint (#66).
- Pass orientation into
PwgHeader
(#59). - More flexible Kotlin DLS (#62).
- Latest symbols from IANA listing.
- Allow for more attribute groups in the IPP Packet DSL (#33).
- Add better
toString()
output for AttributeTypes (#55). - Replace OutputSettings
outputBin
andstackingOrder
withreversed
(#56).
- PCLM and PWG Raster got upgrades, in that they properly handle multi-page and duplex cases. You're only responsible for providing a normal, front-to-back RenderableDocument, and to pass along valid settings based on known printer attributes and user output requirements. The PDL library internally handles page re-ordering, page rotation, flipping, etc to provide the best possible output. As a result the
PwgCapabilities
andPclmCapabilties
classes have been removed in favor ofPwgSettings
andPclmSettings
. Attribute.unknown
etc was moved toAttributes.unknown
for backwards-compatibility with Java.
- The
KeywordOrName
type was introduced to allow for fields that can legitimately contain either IANA-registered keywords OR unregistered, locally-defined names. For example,MediaCol.mediaType
must contain a KeywordOrName, not simply a String (Keyword).
Types
includes all defined types as published as of 2018-04-06 at IANA.- Collection types such as
MediaCol
are expressed as POJO and are automatically constructed/deconstructed. com.hp.jipp.model.IppPacket
moved tocom.hp.jipp.encoding.IppPacket
so that all PWG generated code lives in.model
.- Keyword attribute values are present as simple, untyped Strings. Allowed strings are provided in static objects
(e.g.
Media.java
defines all possible media types.) - The
MediaSize
type is removed in favor of Media strings. If needed, theMediaSizes
utility class provides a method to extract x- and y-dimensions from a Media keyword containing dimensions. - The
Attribute
class is aList
of attribute values, so it is no longer necessary to call.getValues()
to obtain them. - The
AttributeGroup
class is aList
ofAttribute<*>
so it may be iterated directly to access attributes it contains. - Attributes of
Name
orText
types appear in those types to allow clients to access language information if present and to distinguish from ordinary keywords. The following additional methods may help to convert attribute values to String:Name.asString()
andText.asString()
areStringable
and extract the value in string form..getValue()
also does this.Attribute.strings()
,AttributeGroup.getStrings()
, andIppPacket.getStrings()
do the same for all types.
Status.ok
becomesStatus.successfulOk
, etc.