/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 .
*/
// Prepare the list of event types that will be returned.
::std::unique_ptr<std::vector<MasterPageContainerChangeEvent::EventType> > pResult; if (bDataChanged || bIndexChanged || bPreviewChanged)
{
pResult.reset(new std::vector<MasterPageContainerChangeEvent::EventType>); if (bDataChanged)
pResult->push_back(MasterPageContainerChangeEvent::EventType::DATA_CHANGED); if (bIndexChanged)
pResult->push_back(MasterPageContainerChangeEvent::EventType::INDEX_CHANGED); if (bPreviewChanged)
pResult->push_back(MasterPageContainerChangeEvent::EventType::PREVIEW_CHANGED);
}
return pResult;
}
int MasterPageDescriptor::UpdatePageObject (
sal_Int32 nCostThreshold,
SdDrawDocument* pDocument)
{ int nModified = 0;
// Update the page object when that is not yet known. if (mpMasterPage == nullptr && mpPageObjectProvider != nullptr
&& (nCostThreshold < 0 || mpPageObjectProvider->GetCostIndex() <= nCostThreshold))
{ // Note that pDocument may be NULL.
SdPage* pPage = (*mpPageObjectProvider)(pDocument); if (meOrigin == MasterPageContainer::MASTERPAGE)
{
mpMasterPage = pPage; if (mpMasterPage != nullptr)
mpMasterPage->SetPrecious(mbIsPrecious);
} else
{ // Master pages from templates are copied into the local document. if (pDocument != nullptr)
mpMasterPage = DocumentHelper::CopyMasterPageToLocalDocument(*pDocument,pPage);
mpSlide = DocumentHelper::GetSlideForMasterPage(mpMasterPage);
}
if (mpMasterPage != nullptr)
{ // Update page name and style name. if (msPageName.isEmpty())
msPageName = mpMasterPage->GetName();
msStyleName = mpMasterPage->GetName();
// Delete an existing substitution. The next request for a preview // will create the real one.
maSmallPreview = Image();
maLargePreview = Image();
mpPreviewProvider = std::make_shared<PagePreviewProvider>();
} else
{
SAL_WARN( "sd", "UpdatePageObject: master page is NULL"); return -1;
}
// Update the preview when that is not yet known. if (maLargePreview.GetSizePixel().Width() == 0 && mpPreviewProvider != nullptr
&& (nCostThreshold < 0 || mpPreviewProvider->GetCostIndex() <= nCostThreshold))
{
SdPage* pPage = mpSlide; if (pPage == nullptr)
{
pPage = mpMasterPage;
} //TODO: Notify LOOL of preview updates.
maLargePreview = (*mpPreviewProvider)(
rLargeSize.Width(),
pPage,
rRenderer); if (maLargePreview.GetSizePixel().Width() > 0)
{ // Create the small preview by scaling the large one down.
maSmallPreview = rRenderer.ScaleBitmap(
maLargePreview.GetBitmapEx(),
rSmallSize.Width()); // The large preview may not have the desired width. Scale it // accordingly. if (maLargePreview.GetSizePixel().Width() != rLargeSize.Width())
maLargePreview = rRenderer.ScaleBitmap(
maLargePreview.GetBitmapEx(),
rLargeSize.Width());
bModified = true;
}
}
bool MasterPageDescriptor::AllComparator::operator() (const SharedMasterPageDescriptor&rDescriptor)
{ if (!rDescriptor) returnfalse; else
{ // Take URL, page name, style name, and page object into account // when comparing two descriptors. When two descriptors are // identical in any of these values then there are thought of as // equivalent. Only the Origin has to be the same in both // descriptors. return mpDescriptor->meOrigin == rDescriptor->meOrigin
&& ((!mpDescriptor->msURL.isEmpty() && mpDescriptor->msURL == rDescriptor->msURL)
|| (!mpDescriptor->msPageName.isEmpty()
&& mpDescriptor->msPageName == rDescriptor->msPageName)
|| (!mpDescriptor->msStyleName.isEmpty()
&& mpDescriptor->msStyleName == rDescriptor->msStyleName)
|| (mpDescriptor->mpMasterPage != nullptr
&& mpDescriptor->mpMasterPage == rDescriptor->mpMasterPage)
|| (mpDescriptor->mpPageObjectProvider != nullptr
&& rDescriptor->mpPageObjectProvider != nullptr
&& mpDescriptor->mpPageObjectProvider == rDescriptor->mpPageObjectProvider));
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.