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