<?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 id="0x1007" name="LineFormat" excel-record-id="LINEFORMAT"
    package="org.apache.poi.hssf.record">
    <suffix>Record</suffix>
    <extends>Record</extends>
    <description>Describes a line format record.  The line format record controls how a line on a chart appears.</description>
    <author>Glen Stampoultzis (glens at apache.org)</author>
    <fields>
        <field type="int" size="4" name="line color" description="The RGB color of a line (with the high byte = 0)"/>
        <field type="int" size="2" name="line pattern">
            <const name="solid" value="0" description="solid"/>
            <const name="dash" value="1" description="dash"/>
            <const name="dot" value="2" description="dot"/>
            <const name="dash dot" value="3" description="dash dot"/>
            <const name="dash dot dot" value="4" description="dash dot dot"/>
            <const name="none" value="5" description="none"/>
            <const name="dark gray pattern" value="6" description="dark gray pattern"/>
            <const name="medium gray pattern" value="7" description="medium gray pattern"/>
            <const name="light gray pattern" value="8" description="light gray pattern"/>
        </field>
        <field type="int" size="2" name="weight">
            <const name="hairline" value="-1" description="hairline"/>
            <const name="narrow" value="0" description="single"/>
            <const name="medium" value="1" description="double"/>
            <const name="wide" value="2" description="triple"/>
        </field>
        <field type="bits" size="2" name="format">
            <bit number="0" name="auto" description="automatic format"/>
            <bit number="2" name="draw ticks" description="draw tick marks"/>
            <bit number="2" name="unknown" description="book marks this as reserved = 0 but it seems to do something"/>
        </field>
        <field type="int" size="2" name="colour palette index"/>
    </fields>
</record>
