<?xml version="1.0"?>
<!--
    ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements. See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    ====================================================================
-->
<record fromfile="true" name="StdfPost2000" package="org.apache.poi.hwpf.model.types">
    <suffix>AbstractType</suffix>
    <description>The StdfPost2000 structure specifies general information about a style.
        &lt;p&gt;Class and fields descriptions are quoted from Microsoft Office Word 97-2007 Binary
        File Format and [MS-DOC] - v20110608 Word (.doc) Binary File Format
    </description>
    <author>Sergey Vladimirov; according to Microsoft Office Word 97-2007 Binary File Format
        Specification [*.doc] and [MS-DOC] - v20110608 Word (.doc) Binary File Format
    </author>
    <fields>
        <field type="short" size="2" name="info1">
            <bit number="1" mask="0x0FFF" name="istdLink"
                description="An unsigned integer that specifies the istd of the style that is linked to this one, or 0x0000 if this style is not linked to any other style in the document."/>
            <bit number="2" mask="0x1000" name="fHasOriginalStyle"
                description="Specifies whether the style is revision-marked. A revision-marked style stores the pre-revision formatting in addition to the current formatting. If this bit is set to 1, the cupx member of StdfBase MUST include the formatting sets that specify that pre-revision formatting"/>
            <bit number="3" mask="0xE000" name="fSpare"
                description="Specifies whether the paragraph height information in the fcPlcfPhe field of FibRgFcLcb97"/>
        </field>
        <field type="long" size="4" name="rsid" description=" An unsigned integer that specifies the revision save identifier of the session when this style definition was last modified"/>
        <field type="short" size="2" name="info3">
            <bit number="1" mask="0x0007" name="iftcHtml" description="This field is undefined and MUST be ignored"/>
            <bit number="2" mask="0x0008" name="unused" description="This value MUST be zero and MUST be ignored"/>
            <bit number="2" mask="0xFFF0" name="iPriority" description="An unsigned integer that specifies the priority value that is assigned to this style and that is used when ordering the styles by priority in the user interface"/>
        </field>
    </fields>
</record>
