blob: d7ce2dda457cb53e7be6e088a5dc25de42204d0b [file] [log] [blame]
/**************************************************************
*
* 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 GRAPHICCOLLECTOR_HXX
#define GRAPHICCOLLECTOR_HXX
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/awt/DeviceInfo.hpp>
#include <com/sun/star/text/GraphicCrop.hpp>
#include <com/sun/star/drawing/XShape.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/awt/Size.hpp>
#include <com/sun/star/graphic/XGraphic.hpp>
#include <com/sun/star/frame/XModel.hpp>
#include <vector>
struct GraphicSettings
{
sal_Bool mbJPEGCompression;
sal_Int32 mnJPEGQuality;
sal_Bool mbRemoveCropArea;
sal_Int32 mnImageResolution;
sal_Bool mbEmbedLinkedGraphics;
GraphicSettings( sal_Bool bJPEGCompression, sal_Int32 nJPEGQuality, sal_Bool bRemoveCropArea,
sal_Int32 nImageResolution, sal_Bool bEmbedLinkedGraphics )
: mbJPEGCompression( bJPEGCompression )
, mnJPEGQuality( nJPEGQuality )
, mbRemoveCropArea( bRemoveCropArea )
, mnImageResolution( nImageResolution )
, mbEmbedLinkedGraphics( bEmbedLinkedGraphics ) {};
};
class GraphicCollector
{
public:
struct GraphicUser
{
com::sun::star::uno::Reference< com::sun::star::drawing::XShape > mxShape; // if mbFillBitmap is false the xShape has
com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > mxPropertySet; // to be used otherwise the PropertySet
com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > mxPagePropertySet;
rtl::OUString maGraphicURL;
rtl::OUString maGraphicStreamURL;
com::sun::star::text::GraphicCrop maGraphicCropLogic;
com::sun::star::awt::Size maLogicalSize;
sal_Bool mbFillBitmap;
GraphicUser() : mxShape(), maGraphicCropLogic( 0, 0, 0, 0 ), mbFillBitmap( sal_False ) {};
};
struct GraphicEntity
{
com::sun::star::awt::Size maLogicalSize; // the biggest logical size the graphic will be displayed
sal_Bool mbRemoveCropArea; //
com::sun::star::text::GraphicCrop maGraphicCropLogic;
std::vector< GraphicUser > maUser;
GraphicEntity( const GraphicUser& rUser )
: maLogicalSize( rUser.maLogicalSize ), mbRemoveCropArea( sal_False ), maGraphicCropLogic( 0, 0, 0, 0 ) { maUser.push_back( rUser ); };
};
static const com::sun::star::awt::DeviceInfo& GetDeviceInfo( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxFact );
static com::sun::star::awt::Size GetOriginalSize( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext,
const com::sun::star::uno::Reference< com::sun::star::graphic::XGraphic >& rxGraphic );
// collecting graphic instances, the downside of this method is that every graphic is swapped in
static void CollectGraphics( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext, const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rxModel,
const GraphicSettings& rGraphicSettings, std::vector< GraphicEntity >& io_rGraphicList );
// counting graphics without swapping in graphics
static void CountGraphics( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext, const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rxModel,
const GraphicSettings& rGraphicSettings, sal_Int32& rGraphics );
};
// --------------------
// - GRAPHICCOLLECTOR -
// --------------------
#endif // GRAPHICCOLLECTOR_HXX