/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/



#ifndef com_sun_star_graphic_GraphicProvider_idl
#define com_sun_star_graphic_GraphicProvider_idl

#include <com/sun/star/graphic/XGraphicProvider.idl>

module com { module sun { module star { module graphic
{

/** Central service of the Graphic API that gives access to graphics
	of any kind

    <p>This service allows to load graphics from and to store graphics
	to any location. The one and only interface that has to be implemented
	is the <type>XGraphicProvider</type> interface, that exposes the necessary
	methods for loading and storing the graphic contents and descriptors</p>
    
    @see XGraphicProvider
*/    
published service GraphicProvider
{
    interface ::com::sun::star::graphic::XGraphicProvider;
};

} ; } ; } ; } ; 

#endif
