<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
<!--***********************************************************
 * 
 * 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.
 * 
 ***********************************************************-->


<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
    <module-name>sc</module-name>
    <component-description>
        <author>Niklas Nebel</author>
        <name>com.sun.star.comp.office.ScChartObj</name>
        <description>
	This component provides access to a chart based on the data in a table.
</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>c++</language>
        <status value="final"/>
        <supported-service>com.sun.star.table.TableChart</supported-service>
        <type>com.sun.star.awt.FocusEvent</type>
        <type>com.sun.star.awt.InputEvent</type>
        <type>com.sun.star.awt.KeyEvent</type>
        <type>com.sun.star.awt.MouseEvent</type>
        <type>com.sun.star.awt.PaintEvent</type>
        <type>com.sun.star.awt.Rectangle</type>
        <type>com.sun.star.awt.WindowEvent</type>
        <type>com.sun.star.awt.XFocusListener</type>
        <type>com.sun.star.awt.XKeyListener</type>
        <type>com.sun.star.awt.XMouseListener</type>
        <type>com.sun.star.awt.XMouseMotionListener</type>
        <type>com.sun.star.awt.XPaintListener</type>
        <type>com.sun.star.awt.XWindow</type>
        <type>com.sun.star.awt.XWindowListener</type>
        <type>com.sun.star.beans.Property</type>
        <type>com.sun.star.beans.PropertyChangeEvent</type>
        <type>com.sun.star.beans.PropertyState</type>
        <type>com.sun.star.beans.PropertyValue</type>
        <type>com.sun.star.beans.PropertyVetoException</type>
        <type>com.sun.star.beans.UnknownPropertyException</type>
        <type>com.sun.star.beans.XPropertyChangeListener</type>
        <type>com.sun.star.beans.XPropertySet</type>
        <type>com.sun.star.beans.XPropertySetInfo</type>
        <type>com.sun.star.beans.XVetoableChangeListener</type>
        <type>com.sun.star.chart.ChartDataChangeEvent</type>
        <type>com.sun.star.chart.ChartDataChangeType</type>
        <type>com.sun.star.chart.ChartSeriesAddress</type>
        <type>com.sun.star.chart.XChartData</type>
        <type>com.sun.star.chart.XChartDataChangeEventListener</type>
        <type>com.sun.star.container.NoSuchElementException</type>
        <type>com.sun.star.container.XElementAccess</type>
        <type>com.sun.star.container.XEnumeration</type>
        <type>com.sun.star.container.XEnumerationAccess</type>
        <type>com.sun.star.container.XIndexAccess</type>
        <type>com.sun.star.container.XNameAccess</type>
        <type>com.sun.star.document.XEmbeddedObjectSupplier</type>
        <type>com.sun.star.frame.FrameAction</type>
        <type>com.sun.star.frame.FrameActionEvent</type>
        <type>com.sun.star.frame.XController</type>
        <type>com.sun.star.frame.XFrame</type>
        <type>com.sun.star.frame.XFrameActionListener</type>
        <type>com.sun.star.frame.XFrames</type>
        <type>com.sun.star.frame.XFramesSupplier</type>
        <type>com.sun.star.frame.XModel</type>
        <type>com.sun.star.lang.EventObject</type>
        <type>com.sun.star.lang.IllegalArgumentException</type>
        <type>com.sun.star.lang.IndexOutOfBoundsException</type>
        <type>com.sun.star.lang.Locale</type>
        <type>com.sun.star.lang.WrappedTargetException</type>
        <type>com.sun.star.lang.XComponent</type>
        <type>com.sun.star.lang.XEventListener</type>
        <type>com.sun.star.lang.XMultiServiceFactory</type>
        <type>com.sun.star.lang.XServiceInfo</type>
        <type>com.sun.star.lang.XSingleServiceFactory</type>
        <type>com.sun.star.lang.XTypeProvider</type>
        <type>com.sun.star.registry.InvalidRegistryException</type>
        <type>com.sun.star.registry.InvalidValueException</type>
        <type>com.sun.star.registry.RegistryKeyType</type>
        <type>com.sun.star.registry.RegistryValueType</type>
        <type>com.sun.star.registry.XRegistryKey</type>
        <type>com.sun.star.table.CellRangeAddress</type>
        <type>com.sun.star.table.XTableChart</type>
        <type>com.sun.star.table.XTableCharts</type>
        <type>com.sun.star.uno.Any</type>
        <type>com.sun.star.uno.Exception</type>
        <type>com.sun.star.uno.Reference</type>
        <type>com.sun.star.uno.RuntimeException</type>
        <type>com.sun.star.uno.Sequence</type>
        <type>com.sun.star.uno.Type</type>
        <type>com.sun.star.uno.TypeClass</type>
        <type>com.sun.star.uno.XAdapter</type>
        <type>com.sun.star.uno.XAggregation</type>
        <type>com.sun.star.uno.XInterface</type>
        <type>com.sun.star.uno.XReference</type>
        <type>com.sun.star.uno.XWeak</type>
        <type>com.sun.star.uno.genfunc</type>
        <type>com.sun.star.util.URL</type>
    </component-description>
    <project-build-dependency>cppu</project-build-dependency>
    <project-build-dependency>cppuhelper</project-build-dependency>
    <project-build-dependency>goodies</project-build-dependency>
    <project-build-dependency>osl</project-build-dependency>
    <project-build-dependency>rsc</project-build-dependency>
    <project-build-dependency>rtl</project-build-dependency>
    <project-build-dependency>sal</project-build-dependency>
    <project-build-dependency>sch</project-build-dependency>
    <project-build-dependency>sfx2</project-build-dependency>
    <project-build-dependency>sot</project-build-dependency>
    <project-build-dependency>stl</project-build-dependency>
    <project-build-dependency>svtools</project-build-dependency>
    <project-build-dependency>svx</project-build-dependency>
    <project-build-dependency>tools</project-build-dependency>
    <project-build-dependency>typelib</project-build-dependency>
    <project-build-dependency>uno</project-build-dependency>
    <project-build-dependency>vcl</project-build-dependency>
    <project-build-dependency>vos</project-build-dependency>
</module-description>
