Palm bitmap

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
m
(Format details)
Line 8: Line 8:
  
 
== Format details ==
 
== Format details ==
There are about four different versions of the format. It begins with a header of at least 16 bytes.
+
There can be multiple images in a file. Each image begins with a header. In some cases the header is followed by a color table, or a "DirectInfoType" structure. The pixel data follows.
 +
 
 +
There are about four different versions of the format. This table summarizes the information in the Palm OS Reference (see the Links section below), and uses some terms defined there. It does not include every detail. "Same" means the field is the same as in the previous version.
 +
 
 +
Multi-byte numeric fields are big-endian. There is possibly also a little-endian variant of BitmapTypeV3 (version=0x83?), which is not covered here.
 +
 
 +
=== Header ===
 +
{| class="wikitable"
 +
! Offs. !! BitmapTypeV0 !! BitmapTypeV1 !! BitmapTypeV2 !! BitmapTypeV3
 +
|-
 +
|0 || width<Int16> || same || same || same
 +
|-
 +
|2 || height<Int16> || same || same || same
 +
|-
 +
|4 || rowBytes<UInt16> || same || same || same
 +
|-
 +
|6 || flags<BitmapFlagsType>: compressed [unset=uncompressed, set=ScanLine]
 +
| flags: compressed [unset=uncompressed, set=ScanLine], hasColorTable
 +
| flags: compressed [unset=uncompressed, set=use compressionType field], hasColorTable, hasTransparency, directColor
 +
| flags: compressed [unset=uncompressed, set=use compressionType field], hasColorTable, hasTransparency, directColor, noDither
 +
|-
 +
|8 || reserved || pixelSize<br>=1,2,4 || pixelSize<br>=1,2,4,8,16 || pixelSize<br>=1,2,4,8
 +
|-
 +
|9 || reserved<br>=0 || version<br>=1 || version<br>=2 || version<br>=3
 +
|-
 +
|10 ||rowspan="2"| reserved ||rowspan="2"| nextDepthOffset&lt;UInt16><br>in 4-byte units ||rowspan="2"| same || size (header size)
 +
|-
 +
|11 || pixelFormat&lt;PixelFormatType><br>0=Indexed, 1=565, 2=565LE, 3=IndexedLE
 +
|-
 +
|12 ||rowspan="2"| reserved ||rowspan="2"| reserved || transparentIndex || unused
 +
|-
 +
|13 || compressionType&lt;BitmapCompressionType><br>0=ScanLine, 1=RLE, 2=PackBits, 255=None || same
 +
|-
 +
|14 || reserved || reserved || reserved || density&lt;DensityType><br>72=kDensityLow, 108=kDensityOneAndAHalf, ...
 +
|-
 +
|16 || (end of header) || (end of header) || (end of header) || transparentValue&lt;UInt32>
 +
|-
 +
|20 ||rowspan="2"| ||rowspan="2"| ||rowspan="2"| || nextBitmapOffset&lt;UInt32><br>in bytes
 +
|-
 +
|24 || (additional fields could exist here)
 +
|}
  
 
== Specifications ==
 
== Specifications ==

Revision as of 13:59, 14 October 2017

File Format
Name Palm bitmap
Ontology

Palm bitmap, or Palm BitmapType (also called Palm Pilot Tbmp, Palm Pilot Bitmap, Palm pixmap, etc.), is a native bitmap format of Palm OS. It supports a variety of image types and compression schemes.

It can be found embedded in some Palm file formats, and apparently has also been used by itself as a file format. In a PRC file, resources named "Tbmp", "tAIB", and probably others, use this format.

Contents

Format details

There can be multiple images in a file. Each image begins with a header. In some cases the header is followed by a color table, or a "DirectInfoType" structure. The pixel data follows.

There are about four different versions of the format. This table summarizes the information in the Palm OS Reference (see the Links section below), and uses some terms defined there. It does not include every detail. "Same" means the field is the same as in the previous version.

Multi-byte numeric fields are big-endian. There is possibly also a little-endian variant of BitmapTypeV3 (version=0x83?), which is not covered here.

Header

Offs. BitmapTypeV0 BitmapTypeV1 BitmapTypeV2 BitmapTypeV3
0 width<Int16> same same same
2 height<Int16> same same same
4 rowBytes<UInt16> same same same
6 flags<BitmapFlagsType>: compressed [unset=uncompressed, set=ScanLine] flags: compressed [unset=uncompressed, set=ScanLine], hasColorTable flags: compressed [unset=uncompressed, set=use compressionType field], hasColorTable, hasTransparency, directColor flags: compressed [unset=uncompressed, set=use compressionType field], hasColorTable, hasTransparency, directColor, noDither
8 reserved pixelSize
=1,2,4
pixelSize
=1,2,4,8,16
pixelSize
=1,2,4,8
9 reserved
=0
version
=1
version
=2
version
=3
10 reserved nextDepthOffset<UInt16>
in 4-byte units
same size (header size)
11 pixelFormat<PixelFormatType>
0=Indexed, 1=565, 2=565LE, 3=IndexedLE
12 reserved reserved transparentIndex unused
13 compressionType<BitmapCompressionType>
0=ScanLine, 1=RLE, 2=PackBits, 255=None
same
14 reserved reserved reserved density<DensityType>
72=kDensityLow, 108=kDensityOneAndAHalf, ...
16 (end of header) (end of header) (end of header) transparentValue<UInt32>
20 nextBitmapOffset<UInt32>
in bytes
24 (additional fields could exist here)

Specifications

Software

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox