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 .
22 #include <sal/types.h>
31 /* Definition of Action interface */
33 namespace cppcanvas::internal
35 /** Interface for internal render actions
37 This interface is implemented by all objects generated
38 from the metafile renderer, and corresponds roughly to the
44 /** Used for rendering action subsets
46 There are several cases where an Action might have
47 subsettable content, e.g. text, or referenced
48 metafiles, like the transparent action.
50 Generally, at the metafile renderer, all actions are
51 'flattened' out, i.e. a meta action rendering the
52 string "Hello" counts five indices, and a transparent
53 action containing a metafile with 100 actions counts
54 at least 100 indices (contained transparency or text
55 actions recursively add to this value). From the
56 outside, the subset to render is referenced via this
61 /** Denotes start of the subset.
63 The index given here specifies the first subaction
66 sal_Int32 mnSubsetBegin
;
68 /** Denotes end of the subset
70 The index given here specifies the first subaction
71 <em>not<em> to render, i.e. one action behind the
74 sal_Int32 mnSubsetEnd
;
79 /** Render this action to the associated canvas
81 @param rTransformation
82 Transformation matrix to apply before rendering
84 @return true, if rendering was successful. If
85 rendering failed, false is returned.
87 virtual bool render( const ::basegfx::B2DHomMatrix
& rTransformation
) const = 0;
89 /** Render the given part of the action to the associated
92 @param rTransformation
93 Transformation matrix to apply before rendering
96 Subset of the action to render. See Subset description
99 @return true, if rendering was successful. If the
100 specified subset is invalid for this action, or if
101 rendering failed for other reasons, false is returned.
103 virtual bool renderSubset( const ::basegfx::B2DHomMatrix
& rTransformation
,
104 const Subset
& rSubset
) const = 0;
106 /** Query bounds of this action on the associated canvas
108 @param rTransformation
109 Transformation matrix to apply
111 @return the bounds for this action in device
114 virtual ::basegfx::B2DRange
getBounds( const ::basegfx::B2DHomMatrix
& rTransformation
) const = 0;
116 /** Query bounds for the given part of the action on the
119 @param rTransformation
120 Transformation matrix to apply.
123 Subset of the action to query. See Subset description
126 @return the bounds for the given subset in device
129 virtual ::basegfx::B2DRange
getBounds( const ::basegfx::B2DHomMatrix
& rTransformation
,
130 const Subset
& rSubset
) const = 0;
132 /** Query action count.
134 This method returns the number of subset actions
135 contained in this action. The render( Subset ) method
136 must accept subset ranges up to the value returned
139 @return the number of subset actions
141 virtual sal_Int32
getActionCount() const = 0;
145 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */