Thumbnail docs.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352581 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1831910703
commit
283c1c24db
@ -11,6 +11,7 @@
|
||||
<menu label="HPSF">
|
||||
<menu-item label="Overview" href="index.html"/>
|
||||
<menu-item label="How To" href="how-to.html"/>
|
||||
<menu-item label="Thumbnails" href="thumbnails.html"/>
|
||||
<menu-item label="Internals" href="internals.html"/>
|
||||
<menu-item label="To Do" href="todo.html"/>
|
||||
</menu>
|
||||
|
@ -40,6 +40,11 @@
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<p>Please note that there is separate document on <link
|
||||
href="thumbnails.html">thumbnails</link>!</p>
|
||||
|
||||
|
||||
|
||||
<anchor id="sec1" />
|
||||
<section title="Reading Standard Properties">
|
||||
|
||||
|
@ -1,294 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN//">
|
||||
<html>
|
||||
<head>
|
||||
<title>Structure of the byte[] returned by SummaryInformation's
|
||||
getThumbnailMethod()</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>This is a rough HTML file that describes the structure of the byte[] returned by SummaryInformation's getThumbnailMethod() when it is implemented
|
||||
like this (simply remove the Exception it currently throws):</p>
|
||||
<p>
|
||||
|
||||
/**
|
||||
* <p>Returns the stream's thumbnail (or <code>null</code>)</p>
|
||||
*/
|
||||
public byte[] getThumbnail()
|
||||
{
|
||||
return (byte[]) getProperty(PropertyIDMap.PID_THUMBNAIL);
|
||||
}
|
||||
</p>
|
||||
|
||||
<p>Assumptions:</p>
|
||||
<ul>
|
||||
<li><p>A Windows machine saved the info</p>
|
||||
</li>
|
||||
<li><p>the info is saved in the recommended METAFILE format (Clipboard metafile)</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>The standard WMF file byte array begins at position 24 of the array (beginning
|
||||
of WindowsMetaHeader struct) and ends with the end of the array.
|
||||
The first 24 bytes are Cliboard specific headers. (VT_CF - Variant Type
|
||||
Clipboard Format)</p>
|
||||
|
||||
<address>Drew Varner, Drew.Varner -at- sc.edu</address>
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="10">byte[] returned by SummaryInformation.getThumbnail()</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Sample Data</td>
|
||||
<td>71</td>
|
||||
<td>20660</td>
|
||||
<td>-1</td>
|
||||
<td>3</td>
|
||||
<td>8</td>
|
||||
<td>?</td>
|
||||
<td>?</td>
|
||||
<td>0</td>
|
||||
<td>1</td>
|
||||
<td>9</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Description</td>
|
||||
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>VT_CF</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Variant Type - Clipbard Format</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VT_CF==17</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pointer to a CLIPDATA structure</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Clipboard Size</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cbSize is the size of the buffer pointed to by pClipData, plus sizeof(ulClipFmt)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cbSize</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>cftag</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Clipboard Format Tag</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
<li>-1L a built-in Windows® clipboard format value.</li>
|
||||
<li>-2L Macintosh clipboard format value.</li>
|
||||
<li>-3L A GUID containing a format identifier (FMTID).</li>
|
||||
<li>0L No data (rarely used)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Format ID</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>If cftag is -1 then this is a DWord descibring the image format</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
<li>3 CF_METAFILEPICT (Windows Metafile) (recommended)</li>
|
||||
<li>8 CF_DIB (Device Independent Bitmap)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Note: These formats are specific to Clipboard, and
|
||||
Clipboard-specific headers will follow
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>mm</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mapping Mode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table border=1>
|
||||
<tr>
|
||||
<th align=left>Value</th>
|
||||
<th align=left>Mapping Mode</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>Text</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>Low Metric</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
<td>High Metric</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td>
|
||||
<td>Low English</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>5</td>
|
||||
<td>High English</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>6</td>
|
||||
<td>Twips</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>7</td>
|
||||
<td>Isotropic</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>8</td>
|
||||
<td>Anisotropic</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Table from GFF Format Summary
|
||||
<a href="http://www.wvware.com/caolan/ora-wmf.html">
|
||||
http://www.wvware.com/caolan/ora-wmf.html
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Width</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Width of the Metafile</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Height</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Height of the Metafile</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Handle</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Handle to the Metafile in Memory</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>FileType</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
<li>0=memory</li>
|
||||
<li>1=disk</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>HeaderSize </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
HeaderSize contains the size of the metafile header in 16-bit WORDs.
|
||||
This value is always 9.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Width</td>
|
||||
<td>DWord</td>
|
||||
<td>Unsigned Long</td>
|
||||
<td>DWord (Long)</td>
|
||||
<td>DWord</td>
|
||||
<td>Word</td>
|
||||
<td>Word</td>
|
||||
<td>Word</td>
|
||||
<td>Word</td>
|
||||
<td>Word</td>
|
||||
<td>Word</td>
|
||||
</tr>
|
||||
|
||||
<!-- Start of Row to describe extent of CLIPDATA -->
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td colspan="9">CLIPDATA Struct</td>
|
||||
</tr>
|
||||
<!-- End of Row to describe extent of CLIPDATA -->
|
||||
|
||||
<!-- Start of Row to describe extend of Clipboard16MetaHeader-->
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td colspan="4">Clipboard16MetaHeader</td>
|
||||
<td colspan="2">WindowsMetaHeader</td>
|
||||
</tr>
|
||||
<!-- End of Row to describe extend of Clipboard16MetaHeader-->
|
||||
</table>
|
||||
<p>Infomation taken from http://msdn.microsoft.com and http://www.wvware.com/caolan/ora-wmf.html</p>
|
||||
</body>
|
||||
</html>
|
176
src/documentation/xdocs/hpsf/thumbnails.xml
Normal file
176
src/documentation/xdocs/hpsf/thumbnails.xml
Normal file
@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
|
||||
"../dtd/document-v11.dtd">
|
||||
<!-- $Id$ -->
|
||||
|
||||
<document>
|
||||
<header>
|
||||
<title>HPSF THUMBNAIL HOW-TO</title>
|
||||
<authors>
|
||||
<person name="Drew Varner" email="Drew.Varner@-deleteThis-sc.edu" />
|
||||
</authors>
|
||||
</header>
|
||||
<body>
|
||||
<section title="The VT_CF Format">
|
||||
|
||||
<p>
|
||||
Thumbnail information is stored as a VT_CF, or Thumbnail Variant.
|
||||
The Thumbnail Variant is used to store various types of information
|
||||
in a clipboard. The VT_CF can store information in formats for the
|
||||
Macintosh or Windows clipboard.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
There are many types of data that can be copied to the clipboard,
|
||||
but the only types of information needed for thumbnail manipulation are
|
||||
the image formats.
|
||||
</p>
|
||||
|
||||
<p>The <code>VT_CF</code> structure looks like this:</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Element:</th>
|
||||
<td>Clipboard Size</td>
|
||||
<td>Clipboard Format Tag</td>
|
||||
<td>Clipboard Data</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Size:</th>
|
||||
<td>32 bit unsigned integer (DWord)</td>
|
||||
<td>32 bit signed integer (DWord)</td>
|
||||
<td>variable length (byte array)</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
The Clipboard Size refers to the size (in bytes) of Clipboard Data
|
||||
(variable size) plus the Clipboard Format (four bytes).
|
||||
</p>
|
||||
|
||||
<p>Clipboard Format Tag has four possible values:</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Value</th>
|
||||
<th>Identifier</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>-1L</code></td>
|
||||
<td><code>CFTAG_WINDOWS</code></td>
|
||||
<td>a built-in Windows© clipboard format value</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>-2L</code></td>
|
||||
<td><code>CFTAG_MACINTOSH</code></td>
|
||||
<td>a Macintosh clipboard format value</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>-3L</code></td>
|
||||
<td><code>CFTAG_FMTID</code></td>
|
||||
<td>a format identifier (FMTID) This is rarely used.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0L</code></td>
|
||||
<td><code>CFTAG_NODATA</code></td>
|
||||
<td>No data This is rarely used.</td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section title="Windows Clipboard Data">
|
||||
|
||||
<p>
|
||||
Windows clipboard data has four image formats for thumbnails:
|
||||
</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Value</th>
|
||||
<th>Identifier</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
<td><code>CF_METAFILEPICT</code></td>
|
||||
<td>Windows metafile format - recommended</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>8</td>
|
||||
<td><code>CF_DIB</code></td>
|
||||
<td>Device Independent Bitmap</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>14</td>
|
||||
<td><code>CF_ENHMETAFILE</code></td>
|
||||
<td>Enhanced Windows metafile format</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td><code>CF_BITMAP</code></td>
|
||||
<td>Bitmap - Obsolete - Use <code>CF_DIB</code> instead</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<section title="Windows Metafile Format">
|
||||
|
||||
<p>
|
||||
The most common format for thumbnails on the Windows platform
|
||||
is the Windows metafile format. The Clipboard places and extra
|
||||
header in front of a the standard Windows Metafile Format data.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The Clipboard Data byte array looks like this when an image is
|
||||
stored in Windows' Clipboard WMF format.
|
||||
</p>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Identifier</th>
|
||||
<td>CF_METAFILEPICT</td>
|
||||
<td>mm</td>
|
||||
<td>width</td>
|
||||
<td>height</td>
|
||||
<td>handle</td>
|
||||
<td>WMF data</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Size</th>
|
||||
<td>32 bit unsigned int</td>
|
||||
<td>16 bit unsigned(?) int</td>
|
||||
<td>16 bit unsigned(?) int</td>
|
||||
<td>16 bit unsigned(?) int</td>
|
||||
<td>16 bit unsigned(?) int</td>
|
||||
<td>byte array - variable length</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Description</th>
|
||||
<td>Clipboard WMF</td>
|
||||
<td>Mapping Mode</td>
|
||||
<td>Image Width</td>
|
||||
<td>Image Height</td>
|
||||
<td>handle to the WMF data array in memory, or 0</td>
|
||||
<td>standard WMF byte stream</td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section title="Device Independent Bitmap">
|
||||
<p><strong>FIXME:</strong> Document Device Independent Bitmap format</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section title="Macintosh Clipboard Data">
|
||||
<p><strong>FIXME:</strong> Document Macintosh clipboard formats.</p>
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</document>
|
Loading…
Reference in New Issue
Block a user