1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SLIDESHOW_SOURCE_ENGINE_SHAPES_GDIMTFTOOLS_HXX
21 #define INCLUDED_SLIDESHOW_SOURCE_ENGINE_SHAPES_GDIMTFTOOLS_HXX
23 #include <com/sun/star/uno/Reference.hxx>
24 #include <com/sun/star/uno/XComponentContext.hpp>
25 #include <com/sun/star/lang/XComponent.hpp>
26 #include <com/sun/star/drawing/XDrawPage.hpp>
28 #include <basegfx/range/b2drectangle.hxx>
39 namespace slideshow::internal
41 /// meta file loading specialities:
45 /// the source of the metafile might be a foreign
46 /// application. The metafile is checked against unsupported
47 /// content, and, if necessary, returned as a pre-rendered
49 MTF_LOAD_FOREIGN_SOURCE
= 2,
50 /// retrieve a meta file for the page background only
51 MTF_LOAD_BACKGROUND_ONLY
= 4,
52 /// retrieve the drawing layer scroll text metafile
53 MTF_LOAD_SCROLL_TEXT_MTF
= 8
59 struct MtfAnimationFrame
61 MtfAnimationFrame( const GDIMetaFileSharedPtr
& rMtf
,
64 mnDuration( nDuration
)
68 /// Enables STL algos to be used for duration extraction
69 double getDuration() const
74 GDIMetaFileSharedPtr mpMtf
;
78 typedef ::std::vector
< MtfAnimationFrame
> VectorOfMtfAnimationFrames
;
81 /** Retrieve a meta file for the given shape
84 XShape to retrieve a metafile for.
86 @param xContainingPage
87 The page that contains this shape. Needed for proper
88 import (currently, the UnoGraphicExporter needs this
92 GDIMetaFileSharedPtr
getMetaFile( const css::uno::Reference
< css::lang::XComponent
>& xSource
,
93 const css::uno::Reference
< css::drawing::XDrawPage
>& xContainingPage
,
95 const css::uno::Reference
< css::uno::XComponentContext
>& rxContext
);
97 /** Gets the next action offset for iterating meta actions which is most
100 sal_Int32
getNextActionOffset( MetaAction
* pCurrAct
);
102 /** Extract a vector of animation frames from given Graphic.
105 Resulting vector of animated metafiles
108 Number of times the bitmap animation shall be repeated
111 Input graphic object, to extract animations from
113 bool getAnimationFromGraphic(VectorOfMtfAnimationFrames
& o_rFrames
,
114 sal_uInt32
& o_rLoopCount
,
115 const Graphic
& rGraphic
);
117 /** Retrieve scroll text animation rectangles from given metafile
119 @return true, if both rectangles have been found, false
122 bool getRectanglesFromScrollMtf( ::basegfx::B2DRectangle
& o_rScrollRect
,
123 ::basegfx::B2DRectangle
& o_rPaintRect
,
124 const GDIMetaFileSharedPtr
& rMtf
);
127 #endif // INCLUDED_SLIDESHOW_SOURCE_ENGINE_SHAPES_GDIMTFTOOLS_HXX
129 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */