<?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="0x101f" name="ValueRange" excel-record-id="VALUERANGE"
    package="org.apache.poi.hssf.record">
    <suffix>Record</suffix>
    <extends>Record</extends>
    <description>The value range record defines the range of the value axis.</description>
    <author>Glen Stampoultzis (glens at apache.org)</author>
    <fields>
        <field type="float" size="8" name="minimum axis value"/>
        <field type="float" size="8" name="maximum axis value"/>
        <field type="float" size="8" name="major increment"/>
        <field type="float" size="8" name="minor increment"/>
        <field type="float" size="8" name="category axis cross"/>
        <field type="int" size="2" name="options">
            <bit number="0" name="automatic minimum" description="automatic minimum value selected"/>
            <bit number="1" name="automatic maximum" description="automatic maximum value selected"/>
            <bit number="2" name="automatic major" description="automatic major unit selected"/>
            <bit number="3" name="automatic minor" description="automatic minor unit selected"/>
            <bit number="4" name="automatic category crossing" description="category crossing point is automatically selected"/>
            <bit number="5" name="logarithmic scale" description="use logarithmic scale"/>
            <bit number="6" name="values in reverse" description="values are reverses in graph"/>
            <bit number="7" name="cross category axis at maximum" description="category axis to cross at maximum value"/>
            <bit number="8" name="reserved" description="reserved, must equal 1 (excel dev. guide says otherwise)"/>
        </field>
    </fields>
</record>
