1*b1cdbd2cSJim Jagielski/************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_drawing_XSlidePreviewCache_idl__ 25*b1cdbd2cSJim Jagielski#define __com_sun_star_drawing_XSlidePreviewCache_idl__ 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_XIndexAccess_idl__ 28*b1cdbd2cSJim Jagielski#include <com/sun/star/container/XIndexAccess.idl> 29*b1cdbd2cSJim Jagielski#endif 30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_geometry_IntegerSize2D_idl__ 31*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/IntegerSize2D.idl> 32*b1cdbd2cSJim Jagielski#endif 33*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__ 34*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl> 35*b1cdbd2cSJim Jagielski#endif 36*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_XBitmap_idl__ 37*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/XBitmap.idl> 38*b1cdbd2cSJim Jagielski#endif 39*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_XCanvas_idl__ 40*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/XCanvas.idl> 41*b1cdbd2cSJim Jagielski#endif 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module drawing { 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski/** Listener for asynchronous preview creations. Called when a slide 46*b1cdbd2cSJim Jagielski preview has been created that was previously requested via a call to 47*b1cdbd2cSJim Jagielski <method>XSlidePreviewCache::getSlidePreview()</method>. The 48*b1cdbd2cSJim Jagielski implementor may then call <method>getSlidePreview()</method> a second 49*b1cdbd2cSJim Jagielski time to get the up-to-date version of the preview. 50*b1cdbd2cSJim Jagielski*/ 51*b1cdbd2cSJim Jagielskipublished interface XSlidePreviewCacheListener 52*b1cdbd2cSJim Jagielski{ 53*b1cdbd2cSJim Jagielski /** Called by a <interface>XSlidePreviewCache</interface> object when a 54*b1cdbd2cSJim Jagielski preview has been created for the slide with the given index. 55*b1cdbd2cSJim Jagielski @param nSlideIndex 56*b1cdbd2cSJim Jagielski The index of the slide for which a new preview has been created. 57*b1cdbd2cSJim Jagielski */ 58*b1cdbd2cSJim Jagielski void notifyPreviewCreation ([in] long nSlideIndex); 59*b1cdbd2cSJim Jagielski}; 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski/** A cache of preview bitmaps for the slides of one Impress or Draw 65*b1cdbd2cSJim Jagielski document in one size. There may be more than one cache for one 66*b1cdbd2cSJim Jagielski document. These are internally connected and for missing previews one 67*b1cdbd2cSJim Jagielski cache may take it from another cache and scale it to the desired size. 68*b1cdbd2cSJim Jagielski When a preview is not present then it is created asynchronously. On 69*b1cdbd2cSJim Jagielski creation all registered listeners are notified. 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski Slides are referenced via their index in an XIndexAccess container in 72*b1cdbd2cSJim Jagielski order to allow multiple references to a single slide (custom 73*b1cdbd2cSJim Jagielski presentations). 74*b1cdbd2cSJim Jagielski*/ 75*b1cdbd2cSJim Jagielskipublished interface XSlidePreviewCache 76*b1cdbd2cSJim Jagielski{ 77*b1cdbd2cSJim Jagielski /** Set the set of slides for which the cache will provide the 78*b1cdbd2cSJim Jagielski previews. All slides in the given XIndexAccess are required to come 79*b1cdbd2cSJim Jagielski from the given model. 80*b1cdbd2cSJim Jagielski @param xSlides 81*b1cdbd2cSJim Jagielski The set of slides for which the called cache will provide the 82*b1cdbd2cSJim Jagielski previews. This container defines the indices that are used to 83*b1cdbd2cSJim Jagielski look up slides. 84*b1cdbd2cSJim Jagielski @param xDocument 85*b1cdbd2cSJim Jagielski The model that contains the slides reference by the xSlides argument. 86*b1cdbd2cSJim Jagielski */ 87*b1cdbd2cSJim Jagielski void setDocumentSlides ( 88*b1cdbd2cSJim Jagielski [in] ::com::sun::star::container::XIndexAccess xSlides, 89*b1cdbd2cSJim Jagielski [in] ::com::sun::star::uno::XInterface xDocument); 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski /** Define which slides are currently visible on the screen and which 92*b1cdbd2cSJim Jagielski are not. This information is used for give preview creation for 93*b1cdbd2cSJim Jagielski visible slides a higher priority than for those slides that are not 94*b1cdbd2cSJim Jagielski visible. 95*b1cdbd2cSJim Jagielski */ 96*b1cdbd2cSJim Jagielski void setVisibleRange ([in] long nFirstVisibleSlideIndex, [in] long nLastVisibleSlideIndex); 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski /** Define the size of the previews that are managed by the called 99*b1cdbd2cSJim Jagielski cache. 100*b1cdbd2cSJim Jagielski */ 101*b1cdbd2cSJim Jagielski void setPreviewSize ([in] ::com::sun::star::geometry::IntegerSize2D aSize); 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski /** Return a preview for the given slide index. 104*b1cdbd2cSJim Jagielski The returned bitmap may be the requested preview, a preview of the 105*b1cdbd2cSJim Jagielski preview, i.e. a scaled up or down version, or an empty reference 106*b1cdbd2cSJim Jagielski when the preview is not yet present. 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski This call may lead to the asynchronous creation of the requested 109*b1cdbd2cSJim Jagielski preview. In that case all registered listeners are notified when 110*b1cdbd2cSJim Jagielski the preview has been created. 111*b1cdbd2cSJim Jagielski */ 112*b1cdbd2cSJim Jagielski ::com::sun::star::rendering::XBitmap getSlidePreview ( 113*b1cdbd2cSJim Jagielski [in] long nSlideIndex, 114*b1cdbd2cSJim Jagielski [in] ::com::sun::star::rendering::XCanvas xCanvas) 115*b1cdbd2cSJim Jagielski raises(::com::sun::star::lang::IllegalArgumentException); 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski /** Register a listener that is called when a preview has been created 118*b1cdbd2cSJim Jagielski asynchronously. 119*b1cdbd2cSJim Jagielski */ 120*b1cdbd2cSJim Jagielski void addPreviewCreationNotifyListener ([in] XSlidePreviewCacheListener xListener); 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski /** Remove a previously registered listener for preview creations. 123*b1cdbd2cSJim Jagielski */ 124*b1cdbd2cSJim Jagielski void removePreviewCreationNotifyListener ([in] XSlidePreviewCacheListener xListener); 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski /** Stop the asynchronous creation of previews temporarily. 127*b1cdbd2cSJim Jagielski Call <method>resume()</method> to restart it. 128*b1cdbd2cSJim Jagielski */ 129*b1cdbd2cSJim Jagielski void pause (); 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski /** Resume the asynchronous creation of slide previews. 132*b1cdbd2cSJim Jagielski */ 133*b1cdbd2cSJim Jagielski void resume (); 134*b1cdbd2cSJim Jagielski}; 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski}; }; }; }; // ::com::sun::star::drawing 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski#endif 139