Use o3tl::convert in Math
[LibreOffice.git] / slideshow / source / engine / shapes / gdimtftools.hxx
blob7812301f97e6ebe38842c6786037a33b5b2258fa
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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>
30 #include <tools.hxx>
32 #include <vector>
34 class MetaAction;
35 class GDIMetaFile;
36 class Graphic;
39 namespace slideshow::internal
41 /// meta file loading specialities:
42 enum mtf_load_flags {
43 /// no flags
44 MTF_LOAD_NONE = 0,
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
48 /// bitmap.
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
56 // Animation info
57 // ==============
59 struct MtfAnimationFrame
61 MtfAnimationFrame( const GDIMetaFileSharedPtr& rMtf,
62 double nDuration ) :
63 mpMtf( rMtf ),
64 mnDuration( nDuration )
68 /// Enables STL algos to be used for duration extraction
69 double getDuration() const
71 return mnDuration;
74 GDIMetaFileSharedPtr mpMtf;
75 double mnDuration;
78 typedef ::std::vector< MtfAnimationFrame > VectorOfMtfAnimationFrames;
81 /** Retrieve a meta file for the given shape
83 @param xShape
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
89 information).
92 GDIMetaFileSharedPtr getMetaFile( const css::uno::Reference< css::lang::XComponent >& xSource,
93 const css::uno::Reference< css::drawing::XDrawPage >& xContainingPage,
94 int mtfLoadFlags,
95 const css::uno::Reference< css::uno::XComponentContext >& rxContext );
97 /** Gets the next action offset for iterating meta actions which is most
98 often returns 1.
100 sal_Int32 getNextActionOffset( MetaAction * pCurrAct );
102 /** Extract a vector of animation frames from given Graphic.
104 @param o_rFrames
105 Resulting vector of animated metafiles
107 @param o_rLoopCount
108 Number of times the bitmap animation shall be repeated
110 @param rGraphic
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
120 otherwise.
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: */