/**************************************************************
 * 
 * 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_XGraphicObject_idl
#define com_sun_star_graphic_XGraphicObject_idl

#include <com/sun/star/uno/XInterface.idl>

module com { module sun { module star { module graphic
{
interface XGraphic;
/** <code>XGraphicObject</code> objects represent in-memory image and graphic
    objects.
    
    <p>Such objects are accessable using GraphicObject scheme urls like
    <ul>
        <li>vnd.sun.star.GraphicObject:10000000000001940000012FB99807BD</li>
    </ul>
    The numeric portion of the url is formed from <member>UniqueID</member>.
    As long as at least one instance of <code>XGraphicObject</code> with a particular UniqueID exists,
    the associated image/graphic is available.</p>

    @see XGraphicObject
    @see GraphicProvider 
    @see MediaProperties 
*/

interface XGraphicObject : ::com::sun::star::uno::XInterface
{
    /** is the associated image/graphic for this object.
    */
    [attribute ] XGraphic Graphic;

    /** is the id that can be used to form the <code>vnd.sun.star.GraphicObject</code> url to address this object. 
    */
    [attribute, readonly ] string UniqueID;
};

} ; } ; } ; } ; 

#endif
