xref: /core/sot/source/base/formats.cxx (revision 0018fd1b)
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
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/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
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 .
18  */
19 
20 #include <tools/solar.h>
21 
22 #include <sot/exchange.hxx>
23 #include <sot/formats.hxx>
24 #include <sot/filelist.hxx>
25 #include <sysformats.hxx>
26 #include <comphelper/classids.hxx>
27 
28 #include <tools/globname.hxx>
29 #include <com/sun/star/datatransfer/DataFlavor.hpp>
30 #include <com/sun/star/datatransfer/UnsupportedFlavorException.hpp>
31 #include <com/sun/star/datatransfer/XTransferable.hpp>
32 
33 using namespace ::com::sun::star::uno;
34 using namespace ::com::sun::star::datatransfer;
35 
36 struct SotAction_Impl
37 {
38     SotClipboardFormatId   nFormatId;          // Clipboard Id
39     sal_uInt16             nAction;            // Action Id
40     SotExchangeActionFlags nFlags;             // Action Id
41     sal_uInt8              nContextCheckId;    // additional check of content in clipboard
42 
43     constexpr SotAction_Impl(SotClipboardFormatId _nFormatId, sal_uInt16 _nAction, SotExchangeActionFlags _nFlags, sal_uInt8 _nContextCheckId)
44         : nFormatId(_nFormatId), nAction(_nAction), nFlags(_nFlags), nContextCheckId(_nContextCheckId) {}
45     constexpr SotAction_Impl(SotClipboardFormatId _nFormatId, sal_uInt16 _nAction)
46         : nFormatId(_nFormatId), nAction(_nAction), nFlags(SotExchangeActionFlags::NONE), nContextCheckId(0) {}
47 };
48 
49 
50 // define a context check Id for every formatid
51 #define FILEGRPDSC_ONLY_URL     1
52 
53 /*
54  *  For each target there is exactly one SotDestinationEntry_Impl in the table.
55  *  This entry contains, among other things, a default action for each format
56  *  that can be evaluated by the target. The default actions refer to the table
57  *  to be evaluated for each format, i.e., they contain only EXCHG_IN_ACTION_MOVE,
58  *  EXCHG_IN_ACTION_COPY, or EXCHG_IN_ACTION_LINK. Corresponding to this action,
59  *  aMoveActions, aCopyActions, or aLinkActions is then evaluated. The actions
60  *  are sorted by priority, i.e., the "more important" is the format, the sooner
61  *  it appears in the list.
62  */
63 
64 struct SotDestinationEntry_Impl
65 {
66     SotExchangeDest         nDestination;
67     const SotAction_Impl*   aDefaultActions;
68     const SotAction_Impl*   aMoveActions;
69     const SotAction_Impl*   aCopyActions;
70     const SotAction_Impl*   aLinkActions;
71 };
72 
73 namespace
74 {
75 /*
76  *  Via this table, the destination, existing data formats and the desired action
77  *  are assigned to an action and the data format to be used in it. The table is
78  *  sorted by the Exchange destinations (EXCHG_DEST_*). Within the goal entry are
79  *  exactly four tables for default, move, copy and link actions. The mapping
80  *  between default action (DropEvent::IsDefaultAction()) and the resulting real
81  *  action is done via the default table. This table therefore contains only the
82  *  EXCHG_IN_ACTION_COPY, EXCHG_IN_ACTION_MOVE, and EXCHG_IN_ACTION_LINK actions
83  *  that point to the specific table. The other tables can contain any actions.
84  *  Each table is sorted by format priority. Entry zero has the highest priority.
85  */
86 
87 SotAction_Impl const aEmptyArr[] =
88 {
89     { static_cast<SotClipboardFormatId>(0xffff), 0 }
90 };
91 
92 /* --- DOC_OLEOBJ --- */
93 SotAction_Impl const aEXCHG_DEST_DOC_OLEOBJ_Def[] =
94 {
95     { SotClipboardFormatId::INET_IMAGE, EXCHG_IN_ACTION_LINK },
96     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_LINK },
97     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_LINK },
98     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_LINK },
99     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_LINK },
100     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
101     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_LINK },
102     { static_cast<SotClipboardFormatId>(0xffff), 0 }
103 };
104 SotAction_Impl const aEXCHG_DEST_DOC_OLEOBJ_Move[] =
105 {
106     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP },
107     { static_cast<SotClipboardFormatId>(0xffff), 0 }
108 };
109 SotAction_Impl const aEXCHG_DEST_DOC_OLEOBJ_Link[] =
110 {
111     { SotClipboardFormatId::INET_IMAGE, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
112     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
113     { SotClipboardFormatId::FILE_LIST, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
114     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
115     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
116     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_INTERACTIVE, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
117     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
118     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP },
119     { static_cast<SotClipboardFormatId>(0xffff), 0 }
120 };
121 
122 /* --- CHARTDOC_OLEOBJ --- */
123 SotAction_Impl const aEXCHG_DEST_CHARTDOC_OLEOBJ_Def[] =
124 {
125     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_LINK },
126     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_LINK },
127     { SotClipboardFormatId::INET_IMAGE, EXCHG_IN_ACTION_LINK },
128     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_LINK },
129     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_LINK },
130     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
131     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_LINK },
132     { static_cast<SotClipboardFormatId>(0xffff), 0 }
133 };
134 SotAction_Impl const aEXCHG_DEST_CHARTDOC_OLEOBJ_Move[] =
135 {
136     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP },
137     { static_cast<SotClipboardFormatId>(0xffff), 0 }
138 };
139 SotAction_Impl const aEXCHG_DEST_CHARTDOC_OLEOBJ_Link[] =
140 {
141     { SotClipboardFormatId::FILE_LIST, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
142     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
143     { SotClipboardFormatId::INET_IMAGE, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
144     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
145     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
146     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_INTERACTIVE, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
147     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_INTERACTIVE },
148     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP },
149     { static_cast<SotClipboardFormatId>(0xffff), 0 }
150 };
151 
152 /* --- DOC_TEXTFRAME --- */
153 SotAction_Impl const aEXCHG_DEST_DOC_TEXTFRAME_Def[] =
154 {
155     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
156     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
157     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
158     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
159     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
160     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
161     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
162     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
163     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
164     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
165     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_COPY },
166     { SotClipboardFormatId::INET_IMAGE, EXCHG_IN_ACTION_COPY },
167     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY },
168     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
169     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
170     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
171     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
172     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
173     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
174     { SotClipboardFormatId::SD_OLE, EXCHG_IN_ACTION_MOVE },
175     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_IN_ACTION_MOVE },
176     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_IN_ACTION_MOVE },
177     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_IN_ACTION_MOVE },
178     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_IN_ACTION_MOVE },
179     { SotClipboardFormatId::LINK, EXCHG_IN_ACTION_MOVE },
180     { static_cast<SotClipboardFormatId>(0xffff), 0 }
181 };
182 SotAction_Impl const aEXCHG_DEST_DOC_TEXTFRAME_Move[] =
183 {
184     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_MOVE },
185     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_MOVE },
186     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
187     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
188     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
189     { SotClipboardFormatId::SD_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
190     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE },
191     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE },
192     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
193     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
194     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
195     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
196     { SotClipboardFormatId::RICHTEXT, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
197     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
198     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
199     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
200     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
201     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
202     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
203     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE },
204     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE },
205     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE },
206     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
207     { static_cast<SotClipboardFormatId>(0xffff), 0 }
208 };
209 SotAction_Impl const aEXCHG_DEST_DOC_TEXTFRAME_Copy[] =
210 {
211     { SotClipboardFormatId::SBA_DATAEXCHANGE, EXCHG_IN_ACTION_COPY },
212     { SotClipboardFormatId::SBA_CTRLDATAEXCHANGE, EXCHG_IN_ACTION_COPY },
213     { SotClipboardFormatId::SBA_FIELDDATAEXCHANGE, EXCHG_IN_ACTION_COPY },
214     { SotClipboardFormatId::XFORMS, EXCHG_IN_ACTION_COPY },
215     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
216     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
217     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
218     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
219     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
220     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
221     { SotClipboardFormatId::SD_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
222     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE },
223     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE },
224     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
225     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
226     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
227     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
228     { SotClipboardFormatId::RICHTEXT, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
229     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
230     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
231     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
232     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
233     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
234     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
235     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE },
236     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE },
237     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE },
238     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP,SotExchangeActionFlags::InsertTargetUrl, 0 },
239     { static_cast<SotClipboardFormatId>(0xffff), 0 }
240 };
241 SotAction_Impl const aEXCHG_DEST_DOC_TEXTFRAME_Link[] =
242 {
243     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_LINK },
244     { SotClipboardFormatId::SBA_DATAEXCHANGE, EXCHG_IN_ACTION_LINK },
245     { SotClipboardFormatId::SBA_CTRLDATAEXCHANGE, EXCHG_IN_ACTION_LINK },
246     { SotClipboardFormatId::SBA_FIELDDATAEXCHANGE, EXCHG_IN_ACTION_LINK },
247     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
248     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
249     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
250     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
251     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
252     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
253     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
254     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
255     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
256     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
257     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
258     { static_cast<SotClipboardFormatId>(0xffff), 0 }
259 };
260 
261 /* --- DOC_TEXTFRAME_WEB --- */
262 SotAction_Impl const aEXCHG_DEST_DOC_TEXTFRAME_WEB_Def[] =
263 {
264     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
265     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
266     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
267     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
268     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
269     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
270     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
271     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
272     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
273     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_COPY },
274     { SotClipboardFormatId::INET_IMAGE, EXCHG_IN_ACTION_COPY },
275     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY },
276     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
277     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
278     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
279     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
280     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
281     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
282     { SotClipboardFormatId::LINK, EXCHG_IN_ACTION_MOVE },
283     { static_cast<SotClipboardFormatId>(0xffff), 0 }
284 };
285 SotAction_Impl const aEXCHG_DEST_DOC_TEXTFRAME_WEB_Move[] =
286 {
287     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_MOVE },
288     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_MOVE },
289     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
290     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
291     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
292     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
293     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
294     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
295     { SotClipboardFormatId::RICHTEXT, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
296     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
297     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
298     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
299     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
300     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
301     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
302     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE },
303     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
304     { static_cast<SotClipboardFormatId>(0xffff), 0 }
305 };
306 SotAction_Impl const aEXCHG_DEST_DOC_TEXTFRAME_WEB_Copy[] =
307 {
308     { SotClipboardFormatId::SBA_DATAEXCHANGE, EXCHG_IN_ACTION_COPY },
309     { SotClipboardFormatId::SBA_CTRLDATAEXCHANGE, EXCHG_IN_ACTION_COPY },
310     { SotClipboardFormatId::SBA_FIELDDATAEXCHANGE, EXCHG_IN_ACTION_COPY },
311     { SotClipboardFormatId::XFORMS, EXCHG_IN_ACTION_COPY },
312     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
313     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
314     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
315     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
316     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
317     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
318     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
319     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
320     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
321     { SotClipboardFormatId::RICHTEXT, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
322     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
323     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
324     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
325     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
326     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
327     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
328     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE },
329     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
330     { static_cast<SotClipboardFormatId>(0xffff), 0 }
331 };
332 SotAction_Impl const aEXCHG_DEST_DOC_TEXTFRAME_WEB_Link[] =
333 {
334     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_LINK },
335     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
336     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
337     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
338     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
339     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
340     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
341     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
342     { static_cast<SotClipboardFormatId>(0xffff), 0 }
343 };
344 
345 /* --- DOC_GRAPHOBJ --- */
346 SotAction_Impl const aEXCHG_DEST_DOC_GRAPHOBJ_Def[] =
347 {
348     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
349     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
350     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
351     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
352     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
353     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
354     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
355     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
356     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
357     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
358     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
359     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
360     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
361     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
362     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
363     { static_cast<SotClipboardFormatId>(0xffff), 0 }
364 };
365 SotAction_Impl const aEXCHG_DEST_DOC_GRAPHOBJ_Move[] =
366 {
367     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_REPLACE_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
368     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_REPLACE_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
369     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
370     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
371     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
372     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
373     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
374     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
375     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
376     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
377     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
378     { static_cast<SotClipboardFormatId>(0xffff), 0 }
379 };
380 SotAction_Impl const aEXCHG_DEST_DOC_GRAPHOBJ_Copy[] =
381 {
382     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
383     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
384     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
385     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
386     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
387     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
388     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
389     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
390     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
391     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
392     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
393     { static_cast<SotClipboardFormatId>(0xffff), 0 }
394 };
395 SotAction_Impl const aEXCHG_DEST_DOC_GRAPHOBJ_Link[] =
396 {
397     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
398     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
399     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
400     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
401     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
402     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
403     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
404     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
405     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
406     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
407     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
408     { static_cast<SotClipboardFormatId>(0xffff), 0 }
409 };
410 
411 /* --- DOC_LNKD_GRAPHOBJ --- */
412 SotAction_Impl const aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Def[] =
413 {
414     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
415     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
416     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
417     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
418     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
419     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
420     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
421     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
422     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
423     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
424     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
425     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
426     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
427     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
428     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
429     { static_cast<SotClipboardFormatId>(0xffff), 0 }
430 };
431 SotAction_Impl const aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Move[] =
432 {
433     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_REPLACE_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
434     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_REPLACE_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
435     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
436     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
437     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
438     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
439     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
440     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
441     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
442     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
443     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
444     { static_cast<SotClipboardFormatId>(0xffff), 0 }
445 };
446 SotAction_Impl const aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Copy[] =
447 {
448     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
449     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
450     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
451     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
452     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
453     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
454     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
455     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
456     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
457     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
458     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
459     { static_cast<SotClipboardFormatId>(0xffff), 0 }
460 };
461 SotAction_Impl const aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Link[] =
462 {
463     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
464     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
465     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
466     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
467     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
468     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
469     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
470     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
471     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
472     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
473     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
474     { static_cast<SotClipboardFormatId>(0xffff), 0 }
475 };
476 
477 /* --- DOC_GRAPH_W_IMAP --- */
478 SotAction_Impl const aEXCHG_DEST_DOC_GRAPH_W_IMAP_Def[] =
479 {
480     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
481     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
482     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
483     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
484     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
485     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
486     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
487     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
488     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
489     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
490     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
491     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
492     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
493     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
494     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
495     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
496     { static_cast<SotClipboardFormatId>(0xffff), 0 }
497 };
498 SotAction_Impl const aEXCHG_DEST_DOC_GRAPH_W_IMAP_Move[] =
499 {
500     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_REPLACE_DRAWOBJ, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
501     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_REPLACE_SVXB, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
502     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
503     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
504     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
505     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
506     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
507     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
508     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
509     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
510     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
511     { static_cast<SotClipboardFormatId>(0xffff), 0 }
512 };
513 SotAction_Impl const aEXCHG_DEST_DOC_GRAPH_W_IMAP_Copy[] =
514 {
515     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
516     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
517     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
518     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
519     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
520     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
521     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
522     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
523     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
524     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
525     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
526     { static_cast<SotClipboardFormatId>(0xffff), 0 }
527 };
528 SotAction_Impl const aEXCHG_DEST_DOC_GRAPH_W_IMAP_Link[] =
529 {
530     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
531     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
532     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
533     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
534     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
535     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
536     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, 0 },
537     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, 0 },
538     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
539     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, 0 },
540     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, 0 },
541     { static_cast<SotClipboardFormatId>(0xffff), 0 }
542 };
543 
544 /* --- DOC_LNKD_GRAPH_W_IMAP --- */
545 SotAction_Impl const aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Def[] =
546 {
547     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
548     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
549     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
550     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
551     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
552     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
553     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
554     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
555     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
556     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
557     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
558     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
559     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
560     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
561     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
562     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
563     { static_cast<SotClipboardFormatId>(0xffff), 0 }
564 };
565 SotAction_Impl const aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Move[] =
566 {
567     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_REPLACE_DRAWOBJ, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
568     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_REPLACE_SVXB, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
569     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
570     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
571     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
572     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
573     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
574     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
575     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
576     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
577     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::ReplaceImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
578     { static_cast<SotClipboardFormatId>(0xffff), 0 }
579 };
580 SotAction_Impl const aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Copy[] =
581 {
582     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
583     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
584     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
585     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
586     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
587     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
588     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
589     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
590     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
591     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
592     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
593     { static_cast<SotClipboardFormatId>(0xffff), 0 }
594 };
595 SotAction_Impl const aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Link[] =
596 {
597     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
598     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
599     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
600     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
601     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
602     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
603     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, 0 },
604     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, 0 },
605     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
606     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, 0 },
607     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::InsertTargetUrl, 0 },
608     { static_cast<SotClipboardFormatId>(0xffff), 0 }
609 };
610 
611 /* --- DOC_IMAPREGION --- */
612 SotAction_Impl const aEXCHG_DEST_DOC_IMAPREGION_Def[] =
613 {
614     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
615     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
616     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
617     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
618     { static_cast<SotClipboardFormatId>(0xffff), 0 }
619 };
620 SotAction_Impl const aEXCHG_DEST_DOC_IMAPREGION_Copy[] =
621 {
622     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
623     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
624     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
625     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertTargetUrl, 0 },
626     { static_cast<SotClipboardFormatId>(0xffff), 0 }
627 };
628 
629 /* --- DOC_DRAWOBJ --- */
630 SotAction_Impl const aEXCHG_DEST_DOC_DRAWOBJ_Def[] =
631 {
632     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
633     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
634     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
635     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
636     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
637     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
638     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
639     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
640     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
641     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
642     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
643     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
644     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
645     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
646     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
647     { static_cast<SotClipboardFormatId>(0xffff), 0 }
648 };
649 SotAction_Impl const aEXCHG_DEST_DOC_DRAWOBJ_Copy[] =
650 {
651     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_REPLACE_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
652     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_REPLACE_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
653     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
654     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
655     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
656     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
657     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
658     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
659     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
660     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
661     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
662     { static_cast<SotClipboardFormatId>(0xffff), 0 }
663 };
664 SotAction_Impl const aEXCHG_DEST_DOC_DRAWOBJ_Move[] =
665 {
666     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
667     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
668     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
669     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
670     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
671     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
672     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
673     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
674     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
675     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
676     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
677     { static_cast<SotClipboardFormatId>(0xffff), 0 }
678 };
679 SotAction_Impl const aEXCHG_DEST_DOC_DRAWOBJ_Link[] =
680 {
681     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
682     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
683     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
684     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
685     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
686     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
687     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
688     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
689     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
690     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
691     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
692     { static_cast<SotClipboardFormatId>(0xffff), 0 }
693 };
694 
695 /* --- DOC_URLBUTTON --- */
696 SotAction_Impl const aEXCHG_DEST_DOC_URLBUTTON_Def[] =
697 {
698     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
699     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
700     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
701     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
702     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
703     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
704     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
705     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
706     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
707     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
708     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
709     { static_cast<SotClipboardFormatId>(0xffff), 0 }
710 };
711 SotAction_Impl const aEXCHG_DEST_DOC_URLBUTTON_Move[] =
712 {
713     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_REPLACE_DRAWOBJ, SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
714     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_REPLACE_SVXB, SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
715     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE, SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
716     { static_cast<SotClipboardFormatId>(0xffff), 0 }
717 };
718 SotAction_Impl const aEXCHG_DEST_DOC_URLBUTTON_Copy[] =
719 {
720     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertTargetUrl, 0 },
721     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertTargetUrl, 0 },
722     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertTargetUrl, 0 },
723     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
724     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
725     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
726     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
727     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
728     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
729     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
730     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertTargetUrl, 0 },
731     { static_cast<SotClipboardFormatId>(0xffff), 0 }
732 };
733 
734 /* --- DOC_URLFIELD --- */
735 SotAction_Impl const aEXCHG_DEST_DOC_URLFIELD_Def[] =
736 {
737     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
738     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
739     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
740     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
741     { static_cast<SotClipboardFormatId>(0xffff), 0 }
742 };
743 SotAction_Impl const aEXCHG_DEST_DOC_URLFIELD_Copy[] =
744 {
745     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
746     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
747     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
748     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertTargetUrl, 0 },
749     { static_cast<SotClipboardFormatId>(0xffff), 0 }
750 };
751 SotAction_Impl const aEXCHG_DEST_DOC_URLFIELD_Link[] =
752 {
753     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_HYPERLINK },
754     { static_cast<SotClipboardFormatId>(0xffff), 0 }
755 };
756 
757 /* --- DOC_GROUPOBJ --- */
758 SotAction_Impl const aEXCHG_DEST_DOC_GROUPOBJ_Def[] =
759 {
760     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
761     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
762     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
763     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
764     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
765     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
766     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
767     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
768     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
769     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
770     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
771     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
772     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
773     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
774     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
775     { static_cast<SotClipboardFormatId>(0xffff), 0 }
776 };
777 SotAction_Impl const aEXCHG_DEST_DOC_GROUPOBJ_Move[] =
778 {
779     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_REPLACE_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
780     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_REPLACE_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
781     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
782     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
783     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
784     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_REPLACE_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
785     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
786     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
787     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
788     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
789     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_REPLACE_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::KeepPosSize | SotExchangeActionFlags::InsertTargetUrl, 0 },
790     { static_cast<SotClipboardFormatId>(0xffff), 0 }
791 };
792 SotAction_Impl const aEXCHG_DEST_DOC_GROUPOBJ_Copy[] =
793 {
794     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
795     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
796     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
797     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
798     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
799     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
800     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
801     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
802     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
803     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_GRAPH, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
804     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
805     { static_cast<SotClipboardFormatId>(0xffff), 0 }
806 };
807 SotAction_Impl const aEXCHG_DEST_DOC_GROUPOBJ_Link[] =
808 {
809     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
810     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
811     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
812     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
813     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
814     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
815     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
816     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
817     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
818     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
819     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_GET_ATTRIBUTES, SotExchangeActionFlags::Fill | SotExchangeActionFlags::InsertTargetUrl, 0 },
820     { static_cast<SotClipboardFormatId>(0xffff), 0 }
821 };
822 
823 /* --- SWDOC_FREE_AREA --- */
824 SotAction_Impl const aEXCHG_DEST_SWDOC_FREE_AREA_Def[] =
825 {
826     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
827     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
828     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
829     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
830     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
831     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY },
832     { SotClipboardFormatId::RICHTEXT, EXCHG_IN_ACTION_COPY },
833     { SotClipboardFormatId::SVIM, EXCHG_IN_ACTION_COPY },
834     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY },
835     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
836     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
837     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
838     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
839     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
840     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
841     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
842     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
843     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
844     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
845     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_COPY },
846     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
847     { SotClipboardFormatId::SD_OLE, EXCHG_IN_ACTION_MOVE },
848     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_IN_ACTION_MOVE },
849     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_IN_ACTION_MOVE },
850     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_IN_ACTION_MOVE },
851     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_IN_ACTION_MOVE },
852     { SotClipboardFormatId::LINK, EXCHG_IN_ACTION_MOVE },
853     { static_cast<SotClipboardFormatId>(0xffff), 0 }
854 };
855 SotAction_Impl const aEXCHG_DEST_SWDOC_FREE_AREA_Move[] =
856 {
857     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_MOVE },
858     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_MOVE },
859     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
860     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
861     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
862     { SotClipboardFormatId::SD_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
863     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
864     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
865     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
866     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
867     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
868     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
869     { SotClipboardFormatId::RICHTEXT, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
870     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING },
871     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
872     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
873     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
874     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
875     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
876     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
877     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
878     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
879     { static_cast<SotClipboardFormatId>(0xffff), 0 }
880 };
881 SotAction_Impl const aEXCHG_DEST_SWDOC_FREE_AREA_Copy[] =
882 {
883     { SotClipboardFormatId::SBA_DATAEXCHANGE, EXCHG_IN_ACTION_COPY },
884     { SotClipboardFormatId::SBA_CTRLDATAEXCHANGE, EXCHG_IN_ACTION_COPY },
885     { SotClipboardFormatId::SBA_FIELDDATAEXCHANGE, EXCHG_IN_ACTION_COPY },
886     { SotClipboardFormatId::XFORMS, EXCHG_IN_ACTION_COPY },
887     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
888     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
889     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
890     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
891     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
892     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
893     { SotClipboardFormatId::SD_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
894     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
895     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
896     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
897     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
898     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
899     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
900     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
901     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
902     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
903     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
904     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertTargetUrl, 0 },
905     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
906     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
907     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
908     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
909     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
910     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
911     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
912     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
913     { static_cast<SotClipboardFormatId>(0xffff), 0 }
914 };
915 SotAction_Impl const aEXCHG_DEST_SWDOC_FREE_AREA_Link[] =
916 {
917     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_LINK },
918     { SotClipboardFormatId::SBA_DATAEXCHANGE, EXCHG_IN_ACTION_LINK },
919     { SotClipboardFormatId::SBA_CTRLDATAEXCHANGE, EXCHG_IN_ACTION_LINK },
920     { SotClipboardFormatId::SBA_FIELDDATAEXCHANGE, EXCHG_IN_ACTION_LINK },
921     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_LINK },
922     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
923     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
924     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
925     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
926     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
927     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
928     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
929     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
930     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
931     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
932     { static_cast<SotClipboardFormatId>(0xffff), 0 }
933 };
934 
935 /* --- SWDOC_FREE_AREA_WEB --- */
936 SotAction_Impl const aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Def[] =
937 {
938     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
939     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
940     { SotClipboardFormatId::SOLK, EXCHG_IN_ACTION_COPY },
941     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
942     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
943     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
944     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY },
945     { SotClipboardFormatId::SVIM, EXCHG_IN_ACTION_COPY },
946     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY },
947     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
948     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
949     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
950     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
951     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
952     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
953     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
954     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
955     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
956     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_COPY },
957     { SotClipboardFormatId::LINK, EXCHG_IN_ACTION_MOVE },
958     { static_cast<SotClipboardFormatId>(0xffff), 0 }
959 };
960 SotAction_Impl const aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Move[] =
961 {
962     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_MOVE },
963     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_MOVE },
964     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
965     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
966     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
967     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
968     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
969     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
970     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING },
971     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
972     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
973     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
974     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
975     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
976     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
977     { static_cast<SotClipboardFormatId>(0xffff), 0 }
978 };
979 SotAction_Impl const aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Copy[] =
980 {
981     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
982     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
983     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
984     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
985     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
986     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
987     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
988     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
989     { SotClipboardFormatId::RTF, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
990     { SotClipboardFormatId::NETSCAPE_IMAGE, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
991     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertTargetUrl, 0 },
992     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
993     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
994     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
995     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
996     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
997     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
998     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
999     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1000     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
1001     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1002 };
1003 SotAction_Impl const aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Link[] =
1004 {
1005     { SotClipboardFormatId::SONLK, EXCHG_IN_ACTION_LINK },
1006     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_LINK },
1007     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1008     { SotClipboardFormatId::SOLK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
1009     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
1010     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
1011     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
1012     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1013     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1014 };
1015 
1016 /* --- SCDOC_FREE_AREA --- */
1017 SotAction_Impl const aEXCHG_DEST_SCDOC_FREE_AREA_Def[] =
1018 {
1019     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
1020     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
1021     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
1022     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
1023     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
1024     { SotClipboardFormatId::SVIM, EXCHG_IN_ACTION_COPY },
1025     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
1026     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
1027     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
1028     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
1029     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
1030     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
1031     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
1032     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
1033     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
1034     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
1035     { SotClipboardFormatId::SD_OLE, EXCHG_IN_ACTION_MOVE },
1036     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_IN_ACTION_MOVE },
1037     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_IN_ACTION_MOVE },
1038     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_IN_ACTION_MOVE },
1039     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_IN_ACTION_MOVE },
1040     { SotClipboardFormatId::LINK, EXCHG_IN_ACTION_MOVE },
1041     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1042 };
1043 SotAction_Impl const aEXCHG_DEST_SCDOC_FREE_AREA_Move[] =
1044 {
1045     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_MOVE },
1046     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1047     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1048     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1049     { SotClipboardFormatId::SD_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1050     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1051     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1052     { SotClipboardFormatId::BIFF_5, EXCHG_IN_ACTION_MOVE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1053     { SotClipboardFormatId::BIFF__5,EXCHG_IN_ACTION_MOVE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1054     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1055     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1056     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1057     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertTargetUrl, 0 },
1058     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE,SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1059     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1060     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1061     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1062     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1063     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1064     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1065     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
1066     { SotClipboardFormatId::BIFF_8, EXCHG_IN_ACTION_MOVE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1067     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1068 };
1069 SotAction_Impl const aEXCHG_DEST_SCDOC_FREE_AREA_Copy[] =
1070 {
1071     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
1072     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1073     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1074     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1075     { SotClipboardFormatId::SD_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1076     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1077     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1078     { SotClipboardFormatId::BIFF_5, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
1079     { SotClipboardFormatId::BIFF__5,EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
1080     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1081     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1082     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1083     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1084     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1085     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1086     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1087     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertTargetUrl, 0 },
1088     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1089     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
1090     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1091     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1092     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1093     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1094     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
1095     { SotClipboardFormatId::BIFF_8, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::InsertTargetUrl, 0 },
1096     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1097 };
1098 SotAction_Impl const aEXCHG_DEST_SCDOC_FREE_AREA_Link[] =
1099 {
1100     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_LINK },
1101     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1102     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
1103     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
1104     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
1105     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1106     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1107     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1108     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1109     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1110     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1111 };
1112 
1113 /* --- SDDOC_FREE_AREA --- */
1114 SotAction_Impl const aEXCHG_DEST_SDDOC_FREE_AREA_Def[] =
1115 {
1116     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
1117     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_COPY },
1118     { SotClipboardFormatId::HTML, EXCHG_IN_ACTION_COPY },
1119     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_IN_ACTION_COPY },
1120     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_IN_ACTION_COPY },
1121     { SotClipboardFormatId::SVIM, EXCHG_IN_ACTION_COPY },
1122     { SotClipboardFormatId::STRING, EXCHG_IN_ACTION_COPY },
1123     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_IN_ACTION_COPY },
1124     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_IN_ACTION_COPY, SotExchangeActionFlags::NONE, FILEGRPDSC_ONLY_URL },
1125     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_IN_ACTION_COPY },
1126     { SotClipboardFormatId::DRAWING, EXCHG_IN_ACTION_COPY },
1127     { SotClipboardFormatId::SVXB, EXCHG_IN_ACTION_COPY },
1128     { SotClipboardFormatId::GDIMETAFILE, EXCHG_IN_ACTION_COPY },
1129     { SotClipboardFormatId::PNG, EXCHG_IN_ACTION_COPY },
1130     { SotClipboardFormatId::JPEG, EXCHG_IN_ACTION_COPY },
1131     { SotClipboardFormatId::BITMAP, EXCHG_IN_ACTION_COPY },
1132     { SotClipboardFormatId::SD_OLE, EXCHG_IN_ACTION_MOVE },
1133     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_IN_ACTION_MOVE },
1134     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_IN_ACTION_MOVE },
1135     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_IN_ACTION_MOVE },
1136     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_IN_ACTION_MOVE },
1137     { SotClipboardFormatId::LINK, EXCHG_IN_ACTION_MOVE },
1138     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1139 };
1140 SotAction_Impl const aEXCHG_DEST_SDDOC_FREE_AREA_Move[] =
1141 {
1142     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_MOVE },
1143     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1144     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1145     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1146     { SotClipboardFormatId::SD_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1147     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1148     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1149     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1150     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1151     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1152     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertTargetUrl, 0 },
1153     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1154     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1155     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1156     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1157     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1158     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1159     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1160     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
1161     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1162 };
1163 SotAction_Impl const aEXCHG_DEST_SDDOC_FREE_AREA_Copy[] =
1164 {
1165     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_COPY },
1166     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_OUT_ACTION_INSERT_FILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1167     { SotClipboardFormatId::DRAWING, EXCHG_OUT_ACTION_INSERT_DRAWOBJ, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1168     { SotClipboardFormatId::SVXB, EXCHG_OUT_ACTION_INSERT_SVXB, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1169     { SotClipboardFormatId::SD_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1170     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1171     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1172     { SotClipboardFormatId::GDIMETAFILE, EXCHG_OUT_ACTION_INSERT_GDIMETAFILE, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1173     { SotClipboardFormatId::PNG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1174     { SotClipboardFormatId::JPEG, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1175     { SotClipboardFormatId::BITMAP, EXCHG_OUT_ACTION_INSERT_BITMAP, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1176     { SotClipboardFormatId::HTML, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1177     { SotClipboardFormatId::HTML_NO_COMMENT, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1178     { SotClipboardFormatId::HTML_SIMPLE, EXCHG_OUT_ACTION_INSERT_HTML, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1179     { SotClipboardFormatId::STRING, EXCHG_OUT_ACTION_INSERT_STRING, SotExchangeActionFlags::InsertTargetUrl, 0 },
1180     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1181     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
1182     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1183     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1184     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1185     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1186     { SotClipboardFormatId::SVIM, EXCHG_OUT_ACTION_INSERT_IMAGEMAP, SotExchangeActionFlags::InsertTargetUrl, 0 },
1187     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1188 };
1189 SotAction_Impl const aEXCHG_DEST_SDDOC_FREE_AREA_Link[] =
1190 {
1191     { SotClipboardFormatId::FILE_LIST, EXCHG_IN_ACTION_LINK },
1192     { SotClipboardFormatId::SIMPLE_FILE, EXCHG_IN_ACTION_LINK, SotExchangeActionFlags::InsertImageMap | SotExchangeActionFlags::InsertTargetUrl, 0 },
1193     { SotClipboardFormatId::NETSCAPE_BOOKMARK, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
1194     { SotClipboardFormatId::FILEGRPDESCRIPTOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, FILEGRPDSC_ONLY_URL },
1195     { SotClipboardFormatId::UNIFORMRESOURCELOCATOR, EXCHG_OUT_ACTION_INSERT_HYPERLINK, SotExchangeActionFlags::InsertTargetUrl, 0 },
1196     { SotClipboardFormatId::LINK, EXCHG_OUT_ACTION_INSERT_DDE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1197     { SotClipboardFormatId::EMBED_SOURCE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1198     { SotClipboardFormatId::EMBEDDED_OBJ, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1199     { SotClipboardFormatId::EMBED_SOURCE_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1200     { SotClipboardFormatId::EMBEDDED_OBJ_OLE, EXCHG_OUT_ACTION_INSERT_OLE, SotExchangeActionFlags::InsertTargetUrl, 0 },
1201     { static_cast<SotClipboardFormatId>(0xffff), 0 }
1202 };
1203 
1204 /* --- exchange destinations --- */
1205 SotDestinationEntry_Impl const aDestinationArray[] =
1206 {
1207     { SotExchangeDest::DOC_OLEOBJ,
1208         aEXCHG_DEST_DOC_OLEOBJ_Def,
1209         aEXCHG_DEST_DOC_OLEOBJ_Move,
1210         aEmptyArr,
1211         aEXCHG_DEST_DOC_OLEOBJ_Link
1212     },
1213     { SotExchangeDest::CHARTDOC_OLEOBJ,
1214         aEXCHG_DEST_CHARTDOC_OLEOBJ_Def,
1215         aEXCHG_DEST_CHARTDOC_OLEOBJ_Move,
1216         aEmptyArr,
1217         aEXCHG_DEST_CHARTDOC_OLEOBJ_Link
1218     },
1219     { SotExchangeDest::DOC_TEXTFRAME,
1220         aEXCHG_DEST_DOC_TEXTFRAME_Def,
1221         aEXCHG_DEST_DOC_TEXTFRAME_Move,
1222         aEXCHG_DEST_DOC_TEXTFRAME_Copy,
1223         aEXCHG_DEST_DOC_TEXTFRAME_Link
1224     },
1225     { SotExchangeDest::DOC_GRAPHOBJ,
1226         aEXCHG_DEST_DOC_GRAPHOBJ_Def,
1227         aEXCHG_DEST_DOC_GRAPHOBJ_Move,
1228         aEXCHG_DEST_DOC_GRAPHOBJ_Copy,
1229         aEXCHG_DEST_DOC_GRAPHOBJ_Link
1230     },
1231     { SotExchangeDest::DOC_LNKD_GRAPHOBJ,
1232         aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Def,
1233         aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Move,
1234         aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Copy,
1235         aEXCHG_DEST_DOC_LNKD_GRAPHOBJ_Link
1236     },
1237     { SotExchangeDest::DOC_GRAPH_W_IMAP,
1238         aEXCHG_DEST_DOC_GRAPH_W_IMAP_Def,
1239         aEXCHG_DEST_DOC_GRAPH_W_IMAP_Move,
1240         aEXCHG_DEST_DOC_GRAPH_W_IMAP_Copy,
1241         aEXCHG_DEST_DOC_GRAPH_W_IMAP_Link
1242     },
1243     { SotExchangeDest::DOC_LNKD_GRAPH_W_IMAP,
1244         aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Def,
1245         aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Move,
1246         aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Copy,
1247         aEXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP_Link
1248     },
1249     { SotExchangeDest::DOC_IMAPREGION,
1250         aEXCHG_DEST_DOC_IMAPREGION_Def,
1251         aEXCHG_DEST_DOC_IMAPREGION_Copy,
1252         aEmptyArr,
1253         aEmptyArr
1254     },
1255     { SotExchangeDest::DOC_DRAWOBJ,
1256         aEXCHG_DEST_DOC_DRAWOBJ_Def,
1257         aEXCHG_DEST_DOC_DRAWOBJ_Copy,
1258         aEXCHG_DEST_DOC_DRAWOBJ_Move,
1259         aEXCHG_DEST_DOC_DRAWOBJ_Link
1260     },
1261     { SotExchangeDest::DOC_URLBUTTON,
1262         aEXCHG_DEST_DOC_URLBUTTON_Def,
1263         aEXCHG_DEST_DOC_URLBUTTON_Move,
1264         aEXCHG_DEST_DOC_URLBUTTON_Copy,
1265         aEmptyArr
1266     },
1267     { SotExchangeDest::DOC_URLFIELD,
1268         aEXCHG_DEST_DOC_URLFIELD_Def,
1269         aEmptyArr,
1270         aEXCHG_DEST_DOC_URLFIELD_Copy,
1271         aEXCHG_DEST_DOC_URLFIELD_Link
1272     },
1273     { SotExchangeDest::DOC_GROUPOBJ,
1274         aEXCHG_DEST_DOC_GROUPOBJ_Def,
1275         aEXCHG_DEST_DOC_GROUPOBJ_Move,
1276         aEXCHG_DEST_DOC_GROUPOBJ_Copy,
1277         aEXCHG_DEST_DOC_GROUPOBJ_Link
1278     },
1279     { SotExchangeDest::SWDOC_FREE_AREA,
1280         aEXCHG_DEST_SWDOC_FREE_AREA_Def,
1281         aEXCHG_DEST_SWDOC_FREE_AREA_Move,
1282         aEXCHG_DEST_SWDOC_FREE_AREA_Copy,
1283         aEXCHG_DEST_SWDOC_FREE_AREA_Link
1284     },
1285     { SotExchangeDest::SCDOC_FREE_AREA,
1286         aEXCHG_DEST_SCDOC_FREE_AREA_Def,
1287         aEXCHG_DEST_SCDOC_FREE_AREA_Move,
1288         aEXCHG_DEST_SCDOC_FREE_AREA_Copy,
1289         aEXCHG_DEST_SCDOC_FREE_AREA_Link
1290     },
1291     { SotExchangeDest::SDDOC_FREE_AREA,
1292         aEXCHG_DEST_SDDOC_FREE_AREA_Def,
1293         aEXCHG_DEST_SDDOC_FREE_AREA_Move,
1294         aEXCHG_DEST_SDDOC_FREE_AREA_Copy,
1295         aEXCHG_DEST_SDDOC_FREE_AREA_Link
1296     },
1297     { SotExchangeDest::DOC_TEXTFRAME_WEB,
1298         aEXCHG_DEST_DOC_TEXTFRAME_WEB_Def,
1299         aEXCHG_DEST_DOC_TEXTFRAME_WEB_Move,
1300         aEXCHG_DEST_DOC_TEXTFRAME_WEB_Copy,
1301         aEXCHG_DEST_DOC_TEXTFRAME_WEB_Link
1302     },
1303     { SotExchangeDest::SWDOC_FREE_AREA_WEB,
1304         aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Def,
1305         aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Move,
1306         aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Copy,
1307         aEXCHG_DEST_SWDOC_FREE_AREA_WEB_Link
1308     },
1309     {
1310         static_cast<SotExchangeDest>(0xffff), nullptr, nullptr, nullptr, nullptr
1311     }
1312 };
1313 
1314 } // namespace
1315 
1316 
1317 // - new style GetExchange methods -
1318 
1319 bool IsFormatSupported( const DataFlavorExVector& rDataFlavorExVector, SotClipboardFormatId nId )
1320 {
1321     auto aIter( rDataFlavorExVector.begin() );
1322     auto aEnd( rDataFlavorExVector.end() );
1323     bool bRet = false;
1324 
1325     while( aIter != aEnd )
1326     {
1327         if( nId == (*aIter++).mnSotId )
1328         {
1329             bRet = true;
1330             aIter = aEnd;
1331         }
1332     }
1333 
1334     return bRet;
1335 }
1336 
1337 
1338 static bool CheckTransferableContext_Impl( const Reference< XTransferable >* pxTransferable, const SotAction_Impl& rEntry )
1339 {
1340     DataFlavor  aFlavor;
1341     bool bRet = true;
1342 
1343     try
1344     {
1345         if( pxTransferable && (*pxTransferable).is() &&
1346             SotExchange::GetFormatDataFlavor( SotClipboardFormatId::FILEGRPDESCRIPTOR, aFlavor ) &&
1347             (*pxTransferable)->isDataFlavorSupported( aFlavor ) )
1348         {
1349 #ifdef _WIN32
1350             switch( rEntry.nContextCheckId )
1351             {
1352                 case FILEGRPDSC_ONLY_URL:
1353                 {
1354                     bRet = false;
1355 
1356                     if( SotExchange::GetFormatDataFlavor( SotClipboardFormatId::FILECONTENT, aFlavor ) &&
1357                         (*pxTransferable)->isDataFlavorSupported( aFlavor ) &&
1358                         SotExchange::GetFormatDataFlavor( rEntry.nFormatId, aFlavor ) &&
1359                         (*pxTransferable)->isDataFlavorSupported( aFlavor ) )
1360                     {
1361                         Any aAny( (*pxTransferable)->getTransferData( aFlavor ) );
1362 
1363                         if( aAny.hasValue() )
1364                         {
1365                             Sequence< sal_Int8 > aSeq; aAny >>= aSeq;
1366 
1367                             if( aSeq.getLength() )
1368                             {
1369                                 FILEGROUPDESCRIPTOR const * pFDesc = reinterpret_cast<FILEGROUPDESCRIPTOR const *>(aSeq.getConstArray());
1370 
1371                                 if( pFDesc->cItems )
1372                                 {
1373                                     OString sDesc( pFDesc->fgd[ 0 ].cFileName );
1374                                     bRet = 4 < sDesc.getLength() && sDesc.copy(sDesc.getLength()-4).equalsIgnoreAsciiCase(".URL");
1375                                 }
1376                             }
1377                         }
1378                     }
1379                 }
1380                 break;
1381             }
1382 #else
1383             (void) rEntry; // avoid warnings
1384 #endif
1385         }
1386     }
1387     catch( const UnsupportedFlavorException& )
1388     {
1389     }
1390     catch( const RuntimeException& )
1391     {
1392     }
1393 
1394 
1395     return bRet;
1396 }
1397 
1398 
1399 static sal_uInt16 GetTransferableAction_Impl(
1400                             const DataFlavorExVector& rDataFlavorExVector,
1401                             const SotAction_Impl* pArray,
1402                             SotClipboardFormatId& rFormat,
1403                             SotClipboardFormatId nOnlyTestFormat,
1404                             const Reference< XTransferable >* pxTransferable,
1405                             SotExchangeActionFlags* pActionFlags )
1406 {
1407     try
1408     {
1409         if( rDataFlavorExVector.size() )
1410         {
1411             const SotAction_Impl*   pArrayStart = pArray;
1412             SotClipboardFormatId    nId = pArray->nFormatId;
1413 
1414             while( nId != static_cast<SotClipboardFormatId>(0xffff) )
1415             {
1416                 rFormat = nId;
1417 
1418                 if( ( nOnlyTestFormat == SotClipboardFormatId::NONE || nOnlyTestFormat == nId ) &&
1419                     IsFormatSupported( rDataFlavorExVector, nId ) &&
1420                     ( !pArray->nContextCheckId || CheckTransferableContext_Impl( pxTransferable, *pArray ) ) )
1421                 {
1422                     if( pxTransferable && (*pxTransferable).is() && ( SotClipboardFormatId::FILE_LIST == rFormat ) )
1423                     {
1424                         if( IsFormatSupported( rDataFlavorExVector, SotClipboardFormatId::SIMPLE_FILE ) )
1425                         {
1426                             DataFlavor aFileListFlavor;
1427                             SotExchange::GetFormatDataFlavor( SotClipboardFormatId::FILE_LIST, aFileListFlavor );
1428                             Any aAny( (*pxTransferable)->getTransferData( aFileListFlavor ) );
1429 
1430                             if( aAny.hasValue() )
1431                             {
1432                                 Sequence< sal_Int8 >    aSeq; aAny >>= aSeq;
1433                                 SvMemoryStream          aMemStm( const_cast<sal_Int8 *>(aSeq.getConstArray()), aSeq.getLength(), StreamMode::READ );
1434                                 FileList                aFileList;
1435 
1436                                 ReadFileList( aMemStm, aFileList );
1437 
1438                                 if( !aMemStm.GetError() && ( aFileList.Count() == 1 ) )
1439                                 {
1440                                     const SotAction_Impl* pCur = pArrayStart;
1441 
1442                                     while( pCur->nFormatId != static_cast<SotClipboardFormatId>(0xffff) )
1443                                     {
1444                                         if( pCur->nFormatId == SotClipboardFormatId::SIMPLE_FILE )
1445                                         {
1446                                             rFormat = SotClipboardFormatId::SIMPLE_FILE;
1447                                             if (pActionFlags)
1448                                                 *pActionFlags = pCur->nFlags;
1449                                             return pCur->nAction;
1450                                         }
1451                                         pCur++;
1452                                     }
1453                                 }
1454                             }
1455                         }
1456                     }
1457                     if (pActionFlags)
1458                         *pActionFlags = pArray->nFlags;
1459                     return pArray->nAction;
1460                 }
1461                 pArray++;
1462                 nId = pArray->nFormatId;
1463             }
1464         }
1465     }
1466     catch( const UnsupportedFlavorException& )
1467     {
1468     }
1469     catch( const RuntimeException& )
1470     {
1471     }
1472 
1473     return EXCHG_INOUT_ACTION_NONE;
1474 }
1475 
1476 
1477 sal_uInt8 SotExchange::GetExchangeAction( const DataFlavorExVector& rDataFlavorExVector,
1478                                        SotExchangeDest nDestination,
1479                                        sal_uInt16 nSourceOptions,
1480                                        sal_uInt8 nUserAction,
1481                                        SotClipboardFormatId& rFormat,
1482                                        sal_uInt8& rDefaultAction,
1483                                        SotClipboardFormatId nOnlyTestFormat,
1484                                        const Reference< XTransferable >* pxTransferable,
1485                                        SotExchangeActionFlags* pActionFlags )
1486 {
1487     rFormat = SotClipboardFormatId::STRING;
1488 
1489     //Todo: incorporate a binary search
1490     const SotDestinationEntry_Impl* pEntry = aDestinationArray;
1491     while( static_cast<SotExchangeDest>(0xffff) != pEntry->nDestination )
1492     {
1493         if( pEntry->nDestination == nDestination )
1494             break;
1495         ++pEntry;
1496     }
1497 
1498     if( static_cast<SotExchangeDest>(0xffff) == pEntry->nDestination )
1499     {
1500         return EXCHG_INOUT_ACTION_NONE;
1501     }
1502 
1503     rFormat = SotClipboardFormatId::NONE;
1504 
1505     /* Handling the default action using the following procedure:
1506      *
1507      * - The target is asked for the default action
1508      * - If the source supports this action, it is taken over
1509      * - Otherwise, from the actions made available by the source, one leading
1510      *   to a most likely non-empty result action is selected. This is done in
1511      *   the following order: Copy -> Link -> Move
1512      */
1513     if( nUserAction == EXCHG_IN_ACTION_DEFAULT )
1514     {
1515             nUserAction = GetTransferableAction_Impl(
1516                 rDataFlavorExVector, pEntry->aDefaultActions,
1517                 rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1518             // Does the source support the action?
1519             if( !(nUserAction & nSourceOptions ))
1520             {
1521                 // No -> Check all actions of the source
1522                 rDefaultAction = (EXCHG_IN_ACTION_COPY & nSourceOptions);
1523                 if( rDefaultAction )
1524                 {
1525                     nUserAction = GetTransferableAction_Impl(
1526                         rDataFlavorExVector, pEntry->aCopyActions,
1527                         rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1528                     if ( nUserAction )
1529                         return nUserAction;
1530                 }
1531                 rDefaultAction = (EXCHG_IN_ACTION_LINK & nSourceOptions);
1532                 if( rDefaultAction )
1533                 {
1534                     nUserAction = GetTransferableAction_Impl(
1535                         rDataFlavorExVector, pEntry->aLinkActions,
1536                         rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1537                     if ( nUserAction )
1538                         return nUserAction;
1539                 }
1540                 rDefaultAction = (EXCHG_IN_ACTION_MOVE & nSourceOptions);
1541                 if( rDefaultAction )
1542                 {
1543                     nUserAction = GetTransferableAction_Impl(
1544                         rDataFlavorExVector, pEntry->aMoveActions,
1545                         rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1546                     if ( nUserAction )
1547                         return nUserAction;
1548                 }
1549                 rDefaultAction = 0;
1550                 return 0;
1551             }
1552             rDefaultAction = nUserAction;
1553     }
1554       else
1555             rDefaultAction = nUserAction;
1556 
1557     switch( nUserAction )
1558     {
1559     case EXCHG_IN_ACTION_MOVE:
1560         nUserAction = GetTransferableAction_Impl(
1561                             rDataFlavorExVector, pEntry->aMoveActions,
1562                             rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1563         break;
1564 
1565     case EXCHG_IN_ACTION_COPY:
1566         nUserAction = GetTransferableAction_Impl(
1567                             rDataFlavorExVector, pEntry->aCopyActions,
1568                             rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1569         break;
1570 
1571     case EXCHG_IN_ACTION_LINK:
1572         nUserAction = GetTransferableAction_Impl(
1573                             rDataFlavorExVector, pEntry->aLinkActions,
1574                             rFormat, nOnlyTestFormat, pxTransferable, pActionFlags );
1575         break;
1576 
1577     default:
1578         nUserAction = EXCHG_INOUT_ACTION_NONE;
1579     }
1580     return nUserAction;
1581 }
1582 
1583 
1584 sal_uInt16 SotExchange::IsChart(  const SvGlobalName& rName )
1585 {
1586     sal_uInt16 nRet=0;
1587 //  if ( rName == SvGlobalName( SO3_SCH_CLASSID_8 ) )
1588 //      nRet = SOFFICE_FILEFORMAT_8;
1589 //  else
1590     if ( rName == SvGlobalName( SO3_SCH_CLASSID_60 ) )
1591         nRet = SOFFICE_FILEFORMAT_60;
1592     else if ( rName == SvGlobalName( SO3_SCH_CLASSID_50 ) )
1593         nRet = SOFFICE_FILEFORMAT_50;
1594     else if ( rName == SvGlobalName( SO3_SCH_CLASSID_40 ) )
1595         nRet = SOFFICE_FILEFORMAT_40;
1596     else if ( rName == SvGlobalName( SO3_SCH_CLASSID_30 ) )
1597         nRet = SOFFICE_FILEFORMAT_31;
1598 
1599     return nRet;
1600 }
1601 
1602 sal_uInt16 SotExchange::IsMath(  const SvGlobalName& rName )
1603 {
1604     sal_uInt16 nRet=0;
1605 //  if ( rName == SvGlobalName( SO3_SM_CLASSID_8 ) )
1606 //      nRet = SOFFICE_FILEFORMAT_8;
1607 //  else
1608     if ( rName == SvGlobalName( SO3_SM_CLASSID_60 ) )
1609         nRet = SOFFICE_FILEFORMAT_60;
1610     else if ( rName == SvGlobalName( SO3_SM_CLASSID_50 ) )
1611         nRet = SOFFICE_FILEFORMAT_50;
1612     else if ( rName == SvGlobalName( SO3_SM_CLASSID_40 ) )
1613         nRet = SOFFICE_FILEFORMAT_40;
1614     else if ( rName == SvGlobalName( SO3_SM_CLASSID_30 ) )
1615         nRet = SOFFICE_FILEFORMAT_31;
1616 
1617     return nRet;
1618 }
1619 
1620 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
1621