<?xml version="1.0" encoding="UTF-8"?>
<!--***********************************************************
 * 
 * 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.
 * 
 ***********************************************************-->



<component loader="com.sun.star.loader.SharedLibrary"
    xmlns="http://openoffice.org/2010/uno-components">
  <implementation name="com.sun.star.comp.Draw.DrawingDocument">
    <service name="com.sun.star.drawing.DrawingDocument"/>
    <service name="com.sun.star.drawing.DrawingDocumentFactory"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.DrawingModule">
    <service name="com.sun.star.drawing.ModuleDispatcher"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.PresentationDocument">
    <service name="com.sun.star.drawing.DrawingDocumentFactory"/>
    <service name="com.sun.star.presentation.PresentationDocument"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.PresenterCanvasFactory">
    <service name="com.sun.star.rendering.Canvas"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.PresenterHelper">
    <service name="com.sun.star.drawing.PresenterHelper"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.PresenterPreviewCache">
    <service name="com.sun.star.drawing.PresenterPreviewCache"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.PresenterTextView">
    <service name="com.sun.star.drawing.PresenterTextView"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.SlideRenderer">
    <service name="com.sun.star.drawing.SlideRenderer"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.SlideSorter">
    <service name="com.sun.star.drawing.SlideSorter"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.framework.BasicPaneFactory">
    <service name="com.sun.star.drawing.framework.BasicPaneFactory"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.framework.BasicToolBarFactory">
    <service name="com.sun.star.drawing.framework.BasicToolBarFactory"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.framework.BasicViewFactory">
    <service name="com.sun.star.drawing.framework.BasicViewFactory"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.framework.PresentationFactoryProvider">
    <service name="com.sun.star.drawing.framework.PresentationFactoryProvider"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.framework.ResourceId">
    <service name="com.sun.star.drawing.framework.ResourceId"/>
  </implementation>
  <implementation name="org.openoffice.comp.Draw.framework.PanelFactory">
    <service name="com.sun.star.drawing.framework.PanelFactory"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.framework.configuration.Configuration">
    <service name="com.sun.star.drawing.framework.Configuration"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.framework.configuration.ConfigurationController">
    <service name="com.sun.star.drawing.framework.ConfigurationController"/>
  </implementation>
  <implementation name="com.sun.star.comp.Draw.framework.module.ModuleController">
    <service name="com.sun.star.drawing.framework.ModuleController"/>
  </implementation>
  <implementation name="com.sun.star.comp.draw.SdHtmlOptionsDialog">
    <service name="com.sun.star.ui.dialog.FilterOptionsDialog"/>
  </implementation>
  <implementation name="com.sun.star.comp.sd.InsertSlideController">
    <service name="com.sun.star.frame.ToolbarController"/>
  </implementation>
  <implementation name="com.sun.star.comp.sd.SlideLayoutController">
    <service name="com.sun.star.frame.ToolbarController"/>
  </implementation>
  <implementation name="sd::RandomAnimationNode">
    <service name="com.sun.star.comp.sd.RandomAnimationNode"/>
  </implementation>
</component>
