/**************************************************************
 * 
 * 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_drawing_DrawPages_idl__ 
#define __com_sun_star_drawing_DrawPages_idl__ 
 
#ifndef __com_sun_star_drawing_XDrawPages_idl__ 
#include <com/sun/star/drawing/XDrawPages.idl> 
#endif 
 
#ifndef __com_sun_star_drawing_XDrawPageSummarizer_idl__ 
#include <com/sun/star/drawing/XDrawPageSummarizer.idl> 
#endif 
 
#ifndef __com_sun_star_drawing_XDrawPageExpander_idl__ 
#include <com/sun/star/drawing/XDrawPageExpander.idl> 
#endif 
 
 
//============================================================================= 
 
 module com {  module sun {  module star {  module drawing {  
 
//============================================================================= 
 
// DocMerge from xml: service com::sun::star::drawing::DrawPages
/** provides access to a container of <type>DrawPage</type>s
	and makes it possible for you to manipulate them.
	
	@see XDrawPagesSupplier
	@see DrawingDocument
 */
published service DrawPages
{ 
	/** lets you access and create <type>DrawPage</type>s
	 */
	interface com::sun::star::drawing::XDrawPages; 
 
	 
	/** This optional interface makes it possible to summarize the 
				pages in this collection.
	 */
	[optional] interface com::sun::star::drawing::XDrawPageSummarizer; 
 
	 
	/** This optional interface can be used for expanding a summarized page.
	 */
	[optional] interface com::sun::star::drawing::XDrawPageExpander; 
 
}; 
 
//============================================================================= 
 
}; }; }; };  
 
#endif 

