InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
AnnotationItem.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Souvik Sinha Deb
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // ADOBE CONFIDENTIAL
16 //
17 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
18 //
19 // NOTICE: All information contained herein is, and remains
20 // the property of Adobe Systems Incorporated and its suppliers,
21 // if any. The intellectual and technical concepts contained
22 // herein are proprietary to Adobe Systems Incorporated and its
23 // suppliers and may be covered by U.S. and Foreign Patents,
24 // patents in process, and are protected by trade secret or copyright law.
25 // Dissemination of this information or reproduction of this material
26 // is strictly forbidden unless prior written permission is obtained
27 // from Adobe Systems Incorporated.
28 //
29 //========================================================================================
30 
31 #ifndef __AnnotationItem__
32 #define __AnnotationItem__
33 
34 
35 #include "PMRect.h"
36 #include "IDTime.h"
37 #include "AnnotationConstants.h"
38 #include "IPathGeometry.h"
39 #include <map>
40 /*
41 typedef unsigned int AnnotationID;
42 #define kInvalidAnnotationID 0;
43 */
44 
45 namespace AnnotMapOrDrawType
46 {
47  //Indicates how annotation should be mapped to indesign document
48  enum eAnnotMappingType { kBBoxMapping, kPointMapping, kTextMapping, kUnknownMapping };
49  //Indicates how annotation should be drawn on indesign document
50  enum eAnnotDrawingType { kPathDrawing, kIconDrawing, kTextDrawing, kUnknownDrawing };
51 }
52 // Store for each annotation whats kind of mapping and drawing it supports. Populated once from AnnoationItem class constructor
53 typedef std::map<AnnotationType,std::pair<AnnotMapOrDrawType::eAnnotMappingType, AnnotMapOrDrawType::eAnnotDrawingType>> AnnotationMappingAndDrawingTypeMap;
54 
55 //Structure for storing segregated mapping textual data, valid only for InDesign exported tagged PDFs
57 {
58 public:
59  std::vector<UTF32TextChar> precedingContextText, succeedingContextText, targetContextText;
60  std::vector<PMRect> quadRects;
61  SegregatedTextualData(std::vector<UTF32TextChar> _targetContextText, std::vector<UTF32TextChar> _precedingContextText, std::vector<UTF32TextChar> _succeedingContextText, std::vector<PMRect> _rangeRects) :
62  targetContextText(_targetContextText), precedingContextText(_precedingContextText), succeedingContextText(_succeedingContextText), quadRects(_rangeRects) {}
63 };
64 
65 // Annotation Body Class -- contains mapping and drawing information.
66 //See the comments in AnnoationItem on how to fill this structure.
67 
69 {
70 public :
71  AnnotationBody() : fDrawingPath(NULL), fInsertCommentIsAfterPrecedingContextText(kFalse) {}
72 
73  //To get more details about these API see the comments written in AnnotationItem.
74  virtual void ApplyTransformAnnotation(const PMMatrix& transformationMatrix);
75 
76  virtual void SetMappingBBoxData(const PMRect& bBox);
77 
78  virtual void GetMappingBBoxData(PMRect& bBox) const;
79 
80  virtual void SetMappingPointData(const PMRect& bBox, const PMPoint& point);
81 
82  virtual void GetMappingPointData(PMRect& bBox, PMPoint& point) const;
83 
84  virtual void SetMappingTextData(const PMRect& bBox, const std::vector<UTF32TextChar>& targetContextText, const std::vector<UTF32TextChar>& precedingContextText, const std::vector<UTF32TextChar>& succeedingContextText, const bool& insertCommentAfterSucceedingText);
85 
86  virtual void GetMappingTextData(PMRect& bBox, std::vector<UTF32TextChar>& targetContextText, std::vector<UTF32TextChar>& precedingContextText, std::vector<UTF32TextChar>& succeedingContextText, bool16& insertCommentAfterSucceedingText) const;
87 
88  virtual void SetTextRectsForMappingTextData(const std::vector<PMRect>& mappingTextRects);
89 
90  virtual void GetTextRectsForMappingTextData(std::vector<PMRect>& mappingTextRects) const;
91 
92  virtual void SetDrawingDataForPathDrawing(IPathGeometry *path);
93 
94  virtual void GetDrawingDataForPathDrawing(IPathGeometry *&path) const;
95 
96  virtual void SetDrawingDataForIconDrawing(const PMRsrcID &iconId);
97 
98  virtual void GetDrawingDataForIconDrawing(PMRsrcID &iconId) const;
99 
100  virtual void SetSegregatedTextualContentData(const std::vector<std::shared_ptr<SegregatedTextualData>> &segregatedTextualData);
101 
102  virtual void GetSegregatedTextualContentData(std::vector<std::shared_ptr<SegregatedTextualData>> &segregatedTextualData) const;
103 
104  virtual PMRect GetBoundingBox() const;
105 
106 private :
109  PMRect fMappingBBox;
112  PMPoint fMappingPoint;
115  std::vector<UTF32TextChar> fMappingContextText;
118  std::vector<UTF32TextChar> fMappingPrecedingContextText;
121  std::vector<UTF32TextChar> fMappingSucceedingContextText;
122 
126  std::vector<PMRect> fMappingTextRects;
127 
130  InterfacePtr<IPathGeometry> fDrawingPath;
131 
134  PMRsrcID fDrawingIcon;
135 
138  std::vector<std::shared_ptr<SegregatedTextualData>> fSegregatedMappingData;
139 
143  bool16 fInsertCommentIsAfterPrecedingContextText;
144 };
145 
146 // Annotation Reply Class -- implements a reply to an annotation.
148 {
149 
150 public:
153  AnnotationReply();
154 
158  virtual void SetReplyContent(const PMString& content);
159 
163  virtual PMString GetReplyContent() const;
164 
168  //virtual void SetAnnotationStatus(const AnnotationStatus& status);
169 
173  //virtual void GetAnnotationStatus(AnnotationStatus& status) const;
174 
178  virtual void SetReplyCreator(const PMString& creator);
179 
183  virtual PMString GetReplyCreator() const;
184 
188  virtual void SetReplyModified(const IDTime& modified);
189 
193  virtual IDTime GetReplyModified() const;
194 
195 private:
196 
199  PMString fContent;
200  //AnnotationStatus fStatus;
203  PMString fCreator;
206  IDTime fModified;
207 };
208 
209 // Annotation Item Class -- implements an annotation supported by InDesign.
211 {
212 public:
215  AnnotationItem();
216 
220  virtual void SetAnnotationContent(const PMString& content);
221 
225  virtual PMString GetAnnotationContent() const;
226 
230  virtual void SetAnnotationType(const AnnotationType& annotType);
231 
235  virtual AnnotationType GetAnnotationType() const;
236 
240  //virtual void SetAnnotationID(const AnnotationID& annotid);
241 
245  //virtual void GetAnnotationID(AnnotationID& annotid) const;
246 
250  virtual void SetAnnotationStatus(const AnnotationStatus& status);
251 
255  virtual AnnotationStatus GetAnnotationStatus() const;
256 
260  virtual void SetAnnotationCreator(const PMString& creator);
261 
265  virtual PMString GetAnnotationCreator() const;
266 
270  virtual void SetAnnotationSource(const PMString& filepath);
271 
275  virtual PMString GetAnnotationSource() const;
276 
280  //virtual void SetAnnotationTargetPageIndex(const int& targetPageIndex);
281 
285  //virtual void GetAnnotationTargetPageIndex(int& targetPageIndex) const;
286 
290  virtual void SetAnnotationReplies(const std::vector<std::shared_ptr<AnnotationReply>>& replies);
291 
295  virtual void GetAnnotationReplies(std::vector<std::shared_ptr<AnnotationReply>>& replies) const;
296 
300  virtual void AppendAnnotationReplies(const std::vector<std::shared_ptr<AnnotationReply>>& replies);
301 
305  virtual void SetAnnotationModified(const IDTime& modified);
306 
310  virtual IDTime GetAnnotationModified() const;
311 
315  virtual void ApplyTransformAnnotation(const PMMatrix& transformationMatrix);
316 
342  //Set mapping information. See structure AnnotationBody for more details
343 
348  virtual bool SetMappingBBoxData(const PMRect& bBox);
349 
354  virtual bool GetMappingBBoxData(PMRect& bBox) const;
355 
361  virtual bool SetMappingPointData(const PMRect& bBox, const PMPoint& point);
362 
368  virtual bool GetMappingPointData(PMRect& bBox, PMPoint& point) const;
369 
378  virtual bool SetMappingTextData(const PMRect& bBox, const std::vector<UTF32TextChar>& targetContextText, const std::vector<UTF32TextChar>& precedingContextText, const std::vector<UTF32TextChar>& succeedingContextText, const bool &insertCommentAfterSucceedingText);
379 
388  virtual bool GetMappingTextData(PMRect& bBox, std::vector<UTF32TextChar>& targetContextText, std::vector<UTF32TextChar>& precedingContextText, std::vector<UTF32TextChar>& succeedingContextText, bool16& insertCommentAfterSucceedingText) const;
389 
395  virtual bool SetTextRectsForMappingTextData(const std::vector<PMRect>& mappingTextRects);
396 
401  virtual bool GetTextRectsForMappingTextData(std::vector<PMRect>& mappingTextRects) const;
402 
406  virtual AnnotMapOrDrawType::eAnnotMappingType GetMappingTypeForAnnotation();
407 
411  virtual AnnotMapOrDrawType::eAnnotDrawingType GetDrawingTypeForAnnotation();
412 
413  //Set drawing information. See structure AnnotationBody for more details
414 
415 
434  virtual bool SetDrawingDataForPathDrawing(IPathGeometry *path);
435 
440  virtual bool GetDrawingDataForPathDrawing(IPathGeometry *&path) const;
441 
447  virtual bool SetDrawingDataForIconDrawing(const PMRsrcID &iconId);
448 
453  virtual bool GetDrawingDataForIconDrawing(PMRsrcID &iconId) const;
454 
460  virtual bool SetSegregatedTextualMappingData(const std::vector<std::shared_ptr<SegregatedTextualData>> &segregatedTextualData);
461 
466  virtual bool GetSegregatedTextualMappingData(std::vector<std::shared_ptr<SegregatedTextualData>> &segregatedTextualData) const;
467 
471  virtual PMRect GetBoundingBox() const;
472 
473 private:
474 
475  //AnnotationID fAnnotid;
478  PMString fContent;
479  //AnnotationStatus fStatus;
482  PMString fCreator;
485  PMString fPath;
488  AnnotationBody fBody;
489  //int fTargetPageIndex;
492  std::vector<std::shared_ptr<AnnotationReply>> fReplies;
495  AnnotationType fAnnotType;
498  IDTime fModified;
501  AnnotationStatus fStatus;
502 
506  static AnnotationMappingAndDrawingTypeMap annotMappingAndDrawingTypeMap;
507 
511  static void PopulateAnnotationMappingAndDrawingTypeMap();
512 };
513 
514 #endif //__AnnotationItem__