|  | /************************************************************** | 
|  | * | 
|  | * 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 SD_SIDEBAR_PANELS_MASTER_PAGE_DESCRIPTOR_HXX | 
|  | #define SD_SIDEBAR_PANELS_MASTER_PAGE_DESCRIPTOR_HXX | 
|  |  | 
|  | #include "MasterPageContainer.hxx" | 
|  | #include <boost/shared_ptr.hpp> | 
|  |  | 
|  | namespace sd { namespace sidebar { | 
|  |  | 
|  | class PageObjectProvider; | 
|  | class PreviewProvider; | 
|  |  | 
|  | class MasterPageDescriptor; | 
|  | typedef ::boost::shared_ptr<MasterPageDescriptor> SharedMasterPageDescriptor; | 
|  |  | 
|  | /** A collection of data that is stored for every master page in the | 
|  | MasterpageContainer. | 
|  | */ | 
|  | class MasterPageDescriptor | 
|  | { | 
|  | public: | 
|  | MasterPageDescriptor ( | 
|  | MasterPageContainer::Origin eOrigin, | 
|  | const sal_Int32 nTemplateIndex, | 
|  | const String& rURL, | 
|  | const String& rPageName, | 
|  | const String& rStyleName, | 
|  | const bool bIsPrecious, | 
|  | const ::boost::shared_ptr<PageObjectProvider>& rpPageObjectProvider, | 
|  | const ::boost::shared_ptr<PreviewProvider>& rpPreviewProvider); | 
|  | MasterPageDescriptor (const MasterPageDescriptor& rDescriptor); | 
|  | ~MasterPageDescriptor (void); | 
|  |  | 
|  | void SetToken (MasterPageContainer::Token aToken); | 
|  |  | 
|  | /** Update the called MasterPageDescriptor object with values from the | 
|  | given one.  Only those values are updated that have default values | 
|  | in the called object and that have non-default values in the given | 
|  | one. | 
|  | @return | 
|  | Returns a list of event types for which event notifications have | 
|  | to be sent to listeners.  The list may be empty or NULL. | 
|  | */ | 
|  | ::std::auto_ptr<std::vector<MasterPageContainerChangeEvent::EventType> > | 
|  | Update ( | 
|  | const MasterPageDescriptor& rDescriptor); | 
|  |  | 
|  | /** This convenience method returns either a small or a large preview, | 
|  | depending on the given size specifier. | 
|  | Note that the previews are not created when they are not present. | 
|  | @return | 
|  | The returned preview may be empty. | 
|  | */ | 
|  | Image GetPreview (MasterPageContainer::PreviewSize ePreviewSize); | 
|  |  | 
|  | /** Use the PreviewProvider to get access to a preview of the master | 
|  | page. | 
|  |  | 
|  | Note that this is only done, when either bForce is <TRUE/> or | 
|  | the PreviewProvider::GetCostIndex() returns 0. | 
|  |  | 
|  | The small preview is created by scaling the large one, not by | 
|  | calling PreviewProvider::operator() a second time. | 
|  |  | 
|  | It is the responsibility of the caller to call UpdatePageObject() | 
|  | before calling this method  when the PreviewProvider can only work | 
|  | when the master page object is present, i.e. its NeedsPageObject() | 
|  | method returns <TRUE/>. | 
|  |  | 
|  | @param nCostThreshold | 
|  | When this is zero or positive then the preview is created only | 
|  | when the preview provider has a cost equal to or smaller than | 
|  | this threshold.  A negative value forces the preview to be | 
|  | created, regardless of the cost. | 
|  | @param rSmallSize | 
|  | Size of the small preview. | 
|  | @param rLargeSize | 
|  | Size of the large preview. | 
|  | @param rRenderer | 
|  | A PreviewRenderer object that may be used to create a preview. | 
|  | @return | 
|  | When the previews are successfully provided then <TRUE/> is | 
|  | returned. | 
|  | */ | 
|  | bool UpdatePreview ( | 
|  | sal_Int32 nCostThreshold, | 
|  | const Size& rSmallSize, | 
|  | const Size& rLargeSize, | 
|  | ::sd::PreviewRenderer& rRenderer); | 
|  |  | 
|  | /** Use the PageObjectProvider to get access to the master page object. | 
|  |  | 
|  | Note that this is only done, when either bForce is <TRUE/> or the | 
|  | PreviewProvider::GetCostIndex() returns 0. | 
|  |  | 
|  | @param nCostThreshold | 
|  | When this is zero or positive then the page object is created | 
|  | only when the page object provider has a cost equal to or | 
|  | smaller than this threshold.  A negative value forces the | 
|  | page object be created, regardless of the cost. | 
|  | @param pDocument | 
|  | This document of the MasterPageContainer may be used to create | 
|  | a page object with or store one in. | 
|  | @return | 
|  | When the master page object is successfully provided then | 
|  | <TRUE/> is returned. | 
|  | */ | 
|  | bool UpdatePageObject ( | 
|  | sal_Int32 nCostThreshold, | 
|  | SdDrawDocument* pDocument); | 
|  |  | 
|  | enum URLClassification { | 
|  | URLCLASS_USER, | 
|  | URLCLASS_LAYOUT, | 
|  | URLCLASS_PRESENTATION, | 
|  | URLCLASS_OTHER, | 
|  | URLCLASS_UNKNOWN, | 
|  | URLCLASS_UNDETERMINED | 
|  | }; | 
|  |  | 
|  | URLClassification GetURLClassification (void); | 
|  |  | 
|  | /** The Token under which the MasterPageContainer gives access to the | 
|  | object. | 
|  | */ | 
|  | MasterPageContainer::Token maToken; | 
|  |  | 
|  | /** A rough specification of the origin of the master page. | 
|  | */ | 
|  | MasterPageContainer::Origin meOrigin; | 
|  |  | 
|  | /** The URL is not empty for master pages loaded from a template | 
|  | document. | 
|  | */ | 
|  | ::rtl::OUString msURL; | 
|  |  | 
|  | /** Taken from the title of the template file. | 
|  | */ | 
|  | ::rtl::OUString msPageName; | 
|  |  | 
|  | /** Taken from the master page object. | 
|  | */ | 
|  | ::rtl::OUString msStyleName; | 
|  |  | 
|  | const bool mbIsPrecious; | 
|  |  | 
|  | /** The actual master page. | 
|  | */ | 
|  | SdPage* mpMasterPage; | 
|  |  | 
|  | /** A slide that uses the master page. | 
|  | */ | 
|  | SdPage* mpSlide; | 
|  |  | 
|  | /** A small (the default size) preview of the master page.  May be | 
|  | empty.  When this smaller preview is not empty then the larger one | 
|  | is not empty, too. | 
|  | */ | 
|  | Image maSmallPreview; | 
|  |  | 
|  | /** A large preview of the master page.  May be empty.  When this larger | 
|  | preview is not empty then the smaller one is not empty, too. | 
|  | */ | 
|  | Image maLargePreview; | 
|  |  | 
|  | /** The prewview provider. May be empty.  May be replaced during the | 
|  | lifetime of a MasterPageDescriptor object. | 
|  | */ | 
|  | ::boost::shared_ptr<PreviewProvider> mpPreviewProvider; | 
|  |  | 
|  | /** The master page provider.  May be empty.  May be replaced during | 
|  | the lifetime of a MasterPageDescriptor object. | 
|  | */ | 
|  | ::boost::shared_ptr<PageObjectProvider> mpPageObjectProvider; | 
|  |  | 
|  | /** This index represents the order in which templates are provided via | 
|  | the TemplateScanner.  It defines the order in which the entries in | 
|  | the AllMasterPagesSelector are displayed.  The default value is -1. | 
|  | */ | 
|  | sal_Int32 mnTemplateIndex; | 
|  |  | 
|  | URLClassification meURLClassification; | 
|  |  | 
|  | sal_Int32 mnUseCount; | 
|  |  | 
|  | class URLComparator { public: | 
|  | ::rtl::OUString msURL; | 
|  | URLComparator (const ::rtl::OUString& sURL); | 
|  | bool operator() (const SharedMasterPageDescriptor& rDescriptor); | 
|  | }; | 
|  | class StyleNameComparator { public: | 
|  | ::rtl::OUString msStyleName; | 
|  | StyleNameComparator (const ::rtl::OUString& sStyleName); | 
|  | bool operator() (const SharedMasterPageDescriptor& rDescriptor); | 
|  | }; | 
|  | class PageObjectComparator { public: | 
|  | const SdPage* mpMasterPage; | 
|  | PageObjectComparator (const SdPage* pPageObject); | 
|  | bool operator() (const SharedMasterPageDescriptor& rDescriptor); | 
|  | }; | 
|  | class AllComparator { public: | 
|  | AllComparator(const SharedMasterPageDescriptor& rDescriptor); | 
|  | bool operator() (const SharedMasterPageDescriptor& rDescriptor); | 
|  | private: | 
|  | SharedMasterPageDescriptor mpDescriptor; | 
|  | }; | 
|  |  | 
|  |  | 
|  | }; | 
|  |  | 
|  |  | 
|  | } } // end of namespace sd::sidebar | 
|  |  | 
|  | #endif |