InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
PMFlavorTypes.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Dave Burnard
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
16 //
17 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
18 // with the terms of the Adobe license agreement accompanying it. If you have received
19 // this file from a source other than Adobe, then your use, modification, or
20 // distribution of it requires the prior written permission of Adobe.
21 //
22 //
23 // Interface definition for the flavor types used in drag and drop and clipboard type negotiation
24 //
25 //========================================================================================
26 
27 #ifndef __PMFLAVORTYPES__
28 #define __PMFLAVORTYPES__
29 
30 #ifdef PUBLIC_BUILD
31 #endif
32 
33 #include "K2Vector.h"
34 
35 #if defined MACINTOSH || defined WASM
36 //preserve these old Carbon constants from Scrap.h
37 enum {
38  kScrapFlavorTypePicture = 'PICT',
39  kScrapFlavorTypeText = 'TEXT',
40  kScrapFlavorTypeTextStyle = 'styl',
41  kScrapFlavorTypeMovie = 'moov',
42  kScrapFlavorTypeSound = 'snd ',
43  kScrapFlavorTypeUnicode = 'utxt',
44  kScrapFlavorTypeUnicodeStyle = 'ustl',
45 };
46 
47 //fake flavor OSTypes for file promise UTIs that don't have one
48 enum {
49  kPasteboardTypeFileURLPromise_FakeOSType = 'nDfp',
50  kPasteboardTypeFilePromiseContent_FakeOSType = 'nDfc'
51 };
52 
53 typedef OSType FlavorType;
54 #endif
55 
56 #if defined MACINTOSH || defined UNIX || defined WASM
57 
58  typedef uint32 ExternalPMFlavor;
60  typedef uint32 PMFlavor;
61 
62  // To stream a flavor in core code you must use this macro
63  // Mac: sizeof(PMFlavor) == sizeof(int32)
64 #define XferFlavor(flavor) XferInt32((int32&) flavor)
65 #endif
66 #ifdef WINDOWS
67  typedef CLIPFORMAT ExternalPMFlavor;
68  typedef CLIPFORMAT PMFlavor;
69  //DECLARE_OBJECT_TYPE(CLIPFORMAT); actually an unsigned short
70 
76  inline ExternalPMFlavor RegisterExternalFlavor(TCHAR* flavorString /*const PMString& flavorString*/)
77  {
78  return ::RegisterClipboardFormat(flavorString /*.GrabTString()*/);
79  }
80 
86  inline void GetExternalFlavorName(ExternalPMFlavor flavor, PMString& flavorString)
87  {
88  TCHAR buffer[512];
89  int count = ::GetClipboardFormatName(flavor, buffer, 500);
90  (count > 0)? flavorString.SetXString((UTF16TextChar *)buffer, count) : flavorString.clear();
91  }
92 
93  // To stream a flavor in core code you must use this macro
94  // Win: sizeof(PMFlavor) == sizeof(int16)
95 #define XferFlavor(flavor) XferInt16((int16&) flavor)
96 #endif
97 
99 
101 const PMFlavor kNoFlavor = static_cast<PMFlavor>(0);
103 const ExternalPMFlavor kNoExternalFlavor = static_cast<ExternalPMFlavor>(0);
104 
106 typedef uint32 PMFlavorFlags;
107 
112 const PMFlavorFlags kNormalFlavorFlag = static_cast<PMFlavorFlags>(0);
114 const PMFlavorFlags kSenderOnlyFlavorFlag = static_cast<PMFlavorFlags>(1);
116 const PMFlavorFlags kSenderTranslatedFlavorFlag = static_cast<PMFlavorFlags>(2);
118 const PMFlavorFlags kFlavorNotSavedFlag = static_cast<PMFlavorFlags>(4);
120 const PMFlavorFlags kSystemTranslatedFlavorFlag = static_cast<PMFlavorFlags>(0x00000100);
122 const PMFlavorFlags kMacDragDropFlavorFlagMask = static_cast<PMFlavorFlags>(0x00000107);
124 const PMFlavorFlags kMacScrapFlavorFlagMask = static_cast<PMFlavorFlags>(0x00000003);
126 const PMFlavorFlags kWinOLEFlavorFlagMask = static_cast<PMFlavorFlags>(0x00000000);
128 
130 typedef uint16 PMFlavorPriority;
131 
136 const PMFlavorPriority kUnknownFlavorPriority = static_cast<PMFlavorPriority>(0);
137 
139 const PMFlavorPriority kHighestFlavorPriority = static_cast<PMFlavorPriority>(250);
141 const PMFlavorPriority kSecondFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 1);
143 const PMFlavorPriority kThirdFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 2);
145 const PMFlavorPriority kFourthFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 3);
147 const PMFlavorPriority kFifthFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 4);
149 const PMFlavorPriority kSixthFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 5);
151 const PMFlavorPriority kSeventhFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 6);
153 const PMFlavorPriority kEighthFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 7);
155 const PMFlavorPriority kNinthFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 8);
157 const PMFlavorPriority kTenthFlavorPriority = static_cast<PMFlavorPriority>(kHighestFlavorPriority - 9);
158 
164 const PMFlavorPriority kOverrideDropTargetHelper_RejectDrop_FlavorPriority = static_cast<PMFlavorPriority>(300);
168 const PMFlavorPriority kOverrideDEHandlerHelper_IgnoreFlavor_FlavorPriority = static_cast<PMFlavorPriority>(301);
170 
171 
177 {
178  public:
179  typedef base_type data_type;
180 
183  : fCanDo(kFalse),
184  fFlavor(kNoExternalFlavor),
185  fFlavorFlags(kNormalFlavorFlag),
186  fFlavorPriority(kUnknownFlavorPriority) {}
187 
195  DataExchangeResponse(bool16 canDo, ExternalPMFlavor flavor, PMFlavorFlags flavorFlags = kNormalFlavorFlag, PMFlavorPriority priority = kUnknownFlavorPriority)
196  : fCanDo(canDo),
197  fFlavor(flavor),
198  fFlavorFlags(flavorFlags),
199  fFlavorPriority(priority) {}
200 
203  : fCanDo(other.fCanDo),
204  fFlavor(other.fFlavor),
205  fFlavorFlags(other.fFlavorFlags),
206  fFlavorPriority(other.fFlavorPriority) {}
207 
208  bool operator==(const DataExchangeResponse&) const { ASSERT_FAIL("appease K2Vector.Location"); return false; }
209 
211  bool16 CanDo() const {return fCanDo;}
212 
213  // Additional details
215  ExternalPMFlavor GetFlavor() const {return fFlavor;}
217  PMFlavorFlags GetFlavorFlags() const {return fFlavorFlags;}
219  PMFlavorPriority GetFlavorPriority() const {return fFlavorPriority;}
220 
223 
224  protected:
225  bool16 fCanDo;
226 
227  ExternalPMFlavor fFlavor;
228  PMFlavorFlags fFlavorFlags;
229  PMFlavorPriority fFlavorPriority;
230 };
231 
234 
236  bool16 AppendPromiseIfUnique(OrderedPromiseList& orderedPromiseList, const DataExchangeResponse& promise);
238  bool16 AppendFlavorIfUnique(ExternalPMFlavorList& flavorList, const ExternalPMFlavor& flavor);
239 
240 // utility to compare indices inside ExternalPMFlavorLists and OrderedFlavorLists
241 inline int32 minFlavorIndex(int32 a, int32 b)
242 {
243  if (a >= 0 && b >= 0)
244  return (a < b) ? a : b;
245  else if (a >= 0)
246  return a;
247  else
248  return b;
249 }
250 
251 // utility to compare iterators inside ExternalPMFlavorLists and OrderedFlavorLists
252 inline K2Vector<ExternalPMFlavor>::iterator minFlavorIter(K2Vector<ExternalPMFlavor>::iterator a, K2Vector<ExternalPMFlavor>::iterator b)
253 {
254  return (a < b) ? a : b;
255 }
256 
257 //==================================================================================
258 // Flavor Constants Declarations
259 //==================================================================================
260 
264 extern const ExternalPMFlavor kTEXTExternalFlavor;
266 extern const ExternalPMFlavor kUNICODETEXTExternalFlavor;
267 
269 extern const ExternalPMFlavor kDesktopExternalFlavor;
270 
271 #ifdef MACINTOSH
272 
273  extern const ExternalPMFlavor kUNICODESTYLExternalFlavor;
275  extern const ExternalPMFlavor kSTYLExternalFlavor;
277  extern const ExternalPMFlavor kPICTExternalFlavor;
278 
280  extern const ExternalPMFlavor kPasteboardTypeFileURLPromiseExternalFlavor;
281  extern const ExternalPMFlavor kPasteboardTypeFileURLPromiseContentExternalFlavor;
282 
284  extern const ExternalPMFlavor kPMPrivateClipboardMarkerFlavor;
285 
287 #define flavorTypeFileURL 'furl'
288 #endif
289 #ifdef WINDOWS
290 
291  extern const ExternalPMFlavor kBITMAPExternalFlavor;
293  extern const ExternalPMFlavor kDIBExternalFlavor;
295  extern const ExternalPMFlavor kMetafileExternalFlavor;
297  extern const ExternalPMFlavor kEnhMetafileExternalFlavor;
298 #endif
299 
301 extern const ExternalPMFlavor kPageItemXMLSnippetExternalFlavor;
303 extern const ExternalPMFlavor kStructureXMLSnippetExternalFlavor;
305 extern const ExternalPMFlavor kPMColorExternalFlavor;
306 
308 extern const ExternalPMFlavor kAICBExternalFlavor;
310 extern const ExternalPMFlavor kPDFExternalFlavor;
312 extern const ExternalPMFlavor kTIFFExternalFlavor;
313 
315 extern const ExternalPMFlavor kRGBColorExternalFlavor;
317 extern const ExternalPMFlavor kCMYKColorExternalFlavor;
318 
320 extern const ExternalPMFlavor kRTFExternalFlavor;
321 
323 extern const ExternalPMFlavor kURLExternalFlavor;
324 
326 extern const ExternalPMFlavor kVersionCueItemExternalFlavor;
327 
329 extern const ExternalPMFlavor kINXExternalFlavor;
330 
332 extern const ExternalPMFlavor kOWLExternalFlavor;
333 
335 extern const ExternalPMFlavor kChromiumExternalFlavor;
336 
338 extern const ExternalPMFlavor kJsonTextExternalFlavor;
339 
341 extern const ExternalPMFlavor kMathMLExternalFlavor;
343 
344 
345 // INTERNAL FLAVORS:
346 //
351 extern const PMFlavor kTEXTFlavor;
352 
354 extern const PMFlavor kPageItemFlavor;
356 extern const PMFlavor kPMTextFlavor;
358 extern const PMFlavor kPMColorFlavor;
360 extern const PMFlavor kPMTableFlavor;
362 extern const PMFlavor kChromiumFlavor;
364 extern const PMFlavor kMathMLFlavor;
365 
369 extern const PMFlavor kPMLayerProxyFlavor;
371 extern const PMFlavor kPMLayerZOrderFlavor;
373 extern const PMFlavor kPMLayerEyeFlavor;
375 extern const PMFlavor kPMLayerPencilFlavor;
377 extern const PMFlavor kPMLayerPageItemZOrderFlavor;
379 extern const PMFlavor kPMLayerPageItemDupDeleteFlavor;
381 
383 extern const PMFlavor kPMCharStyleListFlavor;
385 extern const PMFlavor kPMParaStyleListFlavor;
386 
390 extern const PMFlavor kPMSwatchesZOrderFlavor;
392 extern const PMFlavor kPMSwatchesFlavor;
394 extern const PMFlavor kPMSwatchLibSwatchesFlavor;
396 extern const PMFlavor kPMStrokeColorFlavor;
398 extern const PMFlavor kPMFillColorFlavor;
400 
404 extern const PMFlavor kPMPageFlavor;
406 extern const PMFlavor kPMPagesFlavor;
408 extern const PMFlavor kPMSpreadFlavor;
410 extern const PMFlavor kPMSpreadsFlavor;
412 extern const PMFlavor kPMMasterPageFlavor;
414 extern const PMFlavor kPMMasterSpreadFlavor;
416 extern const PMFlavor kPMMasterSpreadsFlavor;
418 
420 extern const PMFlavor kPMSysFileFlavor;
421 
422 extern const PMFlavor kPMRTFFlavor; /* Unimplemented: should be deleted */
423 
424 extern const PMFlavor kPMBookContentZOrderFlavor;
425 
426 extern const PMFlavor kPMIndexSortOptionZOrderFlavor;
427 
428 extern const PMFlavor kPMXMLNodeFlavor;
429 
430 extern const PMFlavor kPMNamedGridListFlavor;
431 extern const PMFlavor kPMInkListZOrderFlavor;
432 
433 extern const PMFlavor kPMTrapStyleListFlavor;
434 
438 extern const PMFlavor kPMTOCZOrderListFlavor;
440 extern const PMFlavor kPMTOCZOrderListAddFlavor;
442 
443 extern const PMFlavor kPMIndexTopicFlavor;
444 
445 extern const PMFlavor kPMHyperlinkListFlavor;
446 extern const PMFlavor kPMBookmarkListFlavor;
447 
451 extern const PMFlavor kXMLStructureElementFlavor;
453 extern const PMFlavor kXMLStructureDragDropFlavor;
455 extern const PMFlavor kXMLTagDragDropFlavor;
457 
458 extern const PMFlavor kPMURLFlavor;
459 
460 extern const PMFlavor kSepPrvEyeFlavor;
461 
464 extern const PMFlavor kPMObjectStyleListFlavor;
465 extern const PMFlavor kPMDefaultTextObjStyleFlavor;
466 extern const PMFlavor kPMDefaultGraphicObjStyleFlavor;
467 extern const PMFlavor kPMDefaultFrameGridObjStyleFlavor;
469 
470 extern const PMFlavor kPMTimingPanelDragDropFlavor;
471 
472 extern const PMFlavor kStoryListDragDropFlavor;
473 extern const PMFlavor kDictOrderDragDropFlavor;
474 
475 extern const PMFlavor kPMJBXContentListFlavor;
476 extern const PMFlavor kPMJBXLinkListFlavor;
477 
478 extern const PMFlavor kPSDLayerEyeFlavor;
479 extern const PMFlavor kXMLRulesDragDropFlavor;
480 extern const PMFlavor kXPEffectsDDFlavor;
481 
483 extern const PMFlavor kPMTableStyleListFlavor;
484 extern const PMFlavor kPMCellStyleListFlavor;
485 
486 extern const PMFlavor kPMConditionTagListFlavor;
487 
488 extern const PMFlavor kMSOStateDragDropFlavor;
489 
491 extern const PMFlavor kArticlePanelDragDropFlavor;
492 
493 extern const PMFlavor kListItemsDragDropFlavor;
494 
495 extern const PMFlavor kPMListBoxZOrderFlavor;
496 
497 // Buttons and form state list box drag/drop flavors.
498 extern const PMFlavor kPMStateProxyFlavor;
499 extern const PMFlavor kPMStateEyeFlavor;
500 
502 extern const PMFlavor kCollaborationPanelDragDropFlavor;
503 
505 
506 
507 #endif //__PMFLAVORTYPES__