<?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="0x1025" name="Text" excel-record-id="TEXT" package="org.apache.poi.hssf.record">
    <suffix>Record</suffix>
    <extends>Record</extends>
    <description>The text record is used to define text stored on a chart.</description>
    <author>Glen Stampoultzis (glens at apache.org)</author>
    <fields>
        <field type="int" size="1" name="horizontal alignment">
            <const name="left" value="1"/>
            <const name="center" value="2"/>
            <const name="bottom" value="3"/>          <!-- is this correct.  maybe it should be right???? -->
            <const name="justify" value="4"/>
        </field>
        <field type="int" size="1" name="vertical alignment">
            <const name="top" value="1"/>
            <const name="center" value="2"/>
            <const name="bottom" value="3"/>
            <const name="justify" value="4"/>
        </field>
        <field type="int" size="2" name="display mode">
            <const name="transparent" value="1"/>
            <const name="opaque" value="2"/>
        </field>
        <field type="int" size="4" name="rgbColor" description="RGB color of text, high byte should be 0"/>
        <field type="int" size="4" name="x" description="x position of the text in 1/4000th of the chart area"/>
        <field type="int" size="4" name="y" description="y position of the text in 1/4000th of the chart area"/>
        <field type="int" size="4" name="width" description="width of the text in 1/4000th of the chart area"/>
        <field type="int" size="4" name="height" description="width of the text in 1/4000th of the chart area"/>
        <field type="bits" size="2" name="options1">
            <bit number="0" name="auto color" description="true = automaticly selected colour, false = user-selected"/>
            <bit number="1" name="show key" description="true = draw legend"/>
            <bit number="2" name="show value" description="false = text is category label"/>
            <bit number="3" name="vertical" description="true = text is vertical"/>
            <bit number="4" name="auto generated text" description=""/>
            <bit number="5" name="generated" description=""/>
            <bit number="6" name="auto label deleted" description=""/>
            <bit number="7" name="auto background" description=""/>
            <bit mask="0x0700" name="rotation" description="">
                <const name="none" value="0"/>
                <const name="top to bottom" value="1"/>
                <const name="rotated 90 degrees" value="2"/>
                <const name="rotated 90 degrees clockwise" value="3"/>
            </bit>
            <bit number="11" name="show category label as percentage" description=""/>
            <bit number="12" name="show value as percentage" description=""/>
            <bit number="13" name="show bubble sizes" description=""/>
            <bit number="14" name="show label" description=""/>
        </field>
        <field type="int" size="2" name="index of color value" description="the index of the color value for the text"/>
        <field type="bits" size="2" name="options2">
            <bit mask="0x000F" name="data label placement">
                <const name="chart dependent" value="0"/>
                <const name="outside" value="1"/>
                <const name="inside" value="2"/>
                <const name="center" value="3"/>
                <const name="axis" value="4"/>
                <const name="above" value="5"/>
                <const name="below" value="6"/>
                <const name="left" value="7"/>
                <const name="right" value="8"/>
                <const name="auto" value="9"/>
                <const name="user moved" value="10"/>
            </bit>
        </field>
        <field type="int" size="2" name="text rotation" description="0 = horizontal, 90 = up, 180 = down, -90 = down"/>
    </fields>
</record>
