InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ITableSuite.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Joe Shankar
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 // Purpose: Interface to manipulate the table selection.
24 //
25 //========================================================================================
26 
27 #ifndef __ITableSuite__
28 #define __ITableSuite__
29 
30 #include "IPMUnknown.h"
31 #include "TablesID.h"
32 #include "TableTypes.h"
33 #include "ICellStrokeAttrData.h"
34 
35 class AttributeBossList;
36 class ITextFrameColumn;
37 class ITableModel;
38 
45 class ITableSuite : public IPMUnknown
46 {
47 public:
48  enum { kDefaultIID = IID_ITABLE_ISUITE };
49 
53  enum ESplitDirection { eVerticalSplit, eHorizontalSplit };
54 
59  {
60  public:
61  enum RowType {eHeader, eBody, eFooter};
62 
63  UserRowNumber() : rowType(eBody), rowNumber(-1) {};
64  RowType rowType;
65  int32 rowNumber;
66  };
67 
68 
69 //---------------------------------------------------------------------------------------------------------------------------------------------
70 //
71 // Functions which preform actions on the selection or the table containing the selection
72 //
73 
74  //----- Table structure
79  virtual bool16 CanInsertRows (Tables::ERelativePosition pos) const = 0;
80 
85  virtual bool16 CanInsertColumns(Tables::ERelativePosition pos) const = 0;
86 
90  virtual bool16 CanDeleteRows (void) const = 0;
91 
95  virtual bool16 CanDeleteColumns(void) const = 0;
96 
100  virtual bool16 CanMergeCells(void) const = 0;
101 
105  virtual bool16 CanUnmergeCell(void) const = 0;
106 
112 // virtual bool16 CanSplitCell(ESplitDirection direction) const = 0;
113 
118  virtual bool16 CanSplitCells(ESplitDirection direction) const = 0;
119 
123  virtual bool16 CanEditTable(void) const = 0;
124 
128  virtual bool16 CanConvertTableToText() const = 0;
129 
133  virtual bool16 CanDeleteTable() const = 0;
134 
147  virtual void InsertRows (int32 howMany, Tables::ERelativePosition pos, const PMReal& rowHeight, Tables::EContinuation continuation = Tables::eStructureAllAttrs) = 0;
148 
161  virtual void InsertColumns(int32 howMany, Tables::ERelativePosition pos, const PMReal& colWidth, Tables::EContinuation continuation = Tables::eStructureAllAttrs) = 0;
162 
167  virtual void DeleteRows (void) = 0;
168 
173  virtual void DeleteColumns(void) = 0;
174 
179  virtual void MergeCells(void) = 0;
180 
185  virtual void UnmergeCell(void) = 0;
186 
193 // virtual void SplitCell(ESplitDirection direction) = 0;
194 
200  virtual void SplitCells(ESplitDirection direction) = 0;
201 
206  virtual void ConvertTableToText(const PMString colSeparator="\t", const PMString rowSeparator="\r") = 0;
207 
212  virtual void DeleteTable() = 0;
213 
217  virtual bool16 CanClearAllTableOverrides() const = 0;
218 
222  virtual bool16 CanClearSelectionOverrides() const = 0;
223 
237  virtual void ClearAllTableOverrides(AttributeBossList &attrs) const = 0;
238 
245  virtual void ClearSelectionOverrides(AttributeBossList &attrs, ICellStrokeAttrData::Data &data) const = 0;
246 
247  //---- Row and column size.
251  virtual bool16 CanResizeRows(void) const = 0;
252 
256  virtual bool16 CanResizeColumns(void) const = 0;
257 
264  virtual void ResizeRows(const PMReal& height) = 0;
265 
272  virtual void ResizeColumns(const PMReal& width) = 0;
276  virtual bool16 CanResizeCellHeight(void) const = 0;
277 
281  virtual bool16 CanResizeCellWidth(void) const = 0;
282 
288  virtual void ResizeCellHeight(const PMReal& height) = 0;
289 
295  virtual void ResizeCellWidth(const PMReal& width) = 0;
296 
300  virtual bool16 CanRedistributeRows(void) const = 0;
301 
305  virtual bool16 CanRedistributeColumns(void) const = 0;
306 
313  virtual void RedistributeRows(void)= 0;
314 
321  virtual void RedistributeColumns(void) = 0;
322 
326  virtual bool16 CanSwapCellStrokeFill(void) const = 0;
327 
332  virtual void SwapCellStrokeFill(void) = 0;
333 
339  virtual void ChangeBodyRowDimensionTo(int32 newRowDim) const = 0;
340 
346  virtual void ChangeColumnDimensionTo(int32 newColDim) const = 0;
347 
353  virtual void ChangeHeaderRowDimensionTo(int32 newRowDim) const = 0;
354 
360  virtual void ChangeFooterRowDimensionTo(int32 newRowDim) const = 0;
361 
365  virtual bool16 CanChangeTableDimensions(void) const = 0;
366 
371  virtual bool16 CanConvertToHeaderRows(void) const = 0;
375  virtual void ConvertToHeaderRows(void) = 0;
380  virtual bool16 CanConvertToFooterRows(void) const = 0;
384  virtual void ConvertToFooterRows(void) = 0;
385 
390  virtual bool16 CanConvertToBodyRows(void) const = 0;
394  virtual void ConvertToBodyRows(void) = 0;
395 
399  virtual bool16 CanCreateTableStyleFromSelection(void) const = 0;
403  virtual void CreateTableStyleFromSelection(void) = 0;
407  virtual bool16 CanApplyTableStyle(int32 nthStyle) const = 0;
411  virtual void ApplyTableStyle(int32 nthStyle) = 0;
412 
423  {
424  public:
425  virtual ~FreezeTickHolder() {}
426  };
427  virtual bool16 CanFreezeTick() const = 0;
428  virtual FreezeTickHolder* FreezeTick() = 0;
429 
430 //---------------------------------------------------------------------------------------------------------------------------------------------
431 //
432 // Functions which answer questions about cell attributes in the selection
433 //
434 
438  virtual bool16 CanGetRowSize(void) const = 0;
439 
443  virtual bool16 CanGetColumnSize(void) const = 0;
444 
451  virtual PMReal GetRowSize(void) const = 0;
452 
459  virtual PMReal GetColumnSize(void) const = 0;
460 
464  virtual bool16 CanGetCellWidth(void) const = 0;
465 
469  virtual bool16 CanGetCellHeight(void) const = 0;
470 
478  virtual PMReal GetCellWidth(void) const = 0;
479 
487  virtual PMReal GetCellHeight(void) const = 0;
488 
489  //----- Table attributes
493  virtual bool16 CanApplyTableOverrides() const = 0;
494 
500  virtual void ApplyTableOverrides(const AttributeBossList* attrs) = 0;
501 
510  virtual const IPMUnknown* QueryTableAttribute(ClassID whichAttr) const = 0;
511 
512 
513  //----- Cell attributes
519  virtual void ApplyCellOverrides(const AttributeBossList* attrs) = 0;
520 
524  virtual bool16 CanApplyCellOverrides(void) const = 0;
525 
531  virtual bool16 CanGetCellAttribute(ClassID whichAttr) const = 0;
532 
542  virtual const IPMUnknown* QueryCellAttribute(ClassID whichAttr) const = 0;
543 
549  virtual bool16 CanApplyCellStrokes(const ICellStrokeAttrData::Data& data) const = 0;
550 
559  virtual void ApplyCellStrokes(const ICellStrokeAttrData::Data& data) = 0;
560 
565  virtual bool16 CanGetCellStrokes(const ICellStrokeAttrData::Data& data) const = 0;
566 
574  virtual void GetCellStrokes(ICellStrokeAttrData::Data& data) const = 0;
575 
576  // stroke operations given the use of the Stroke Data on the kTableSuiteBoss
581  virtual bool16 CanGetApplyCellStrokesBySelection(void) const = 0;
582 
587  virtual void ApplyCellStrokesBySelection(const IPMUnknown* attr) = 0;
588 
597  virtual const IPMUnknown* GetCellStrokesBySelection() const = 0;
598 
599 
600  //----- Row attributes
606  virtual void ApplyRowOverrides(const AttributeBossList* attrs) = 0;
607 
611  virtual bool16 CanApplyRowOverrides(void) const = 0;
612 
616  virtual bool16 CanApplyRowKeeps(void) const = 0;
617 
623  virtual bool16 CanGetRowAttribute(ClassID whichAttr) const = 0;
624 
632  virtual const IPMUnknown* QueryRowAttribute(ClassID whichAttr) const = 0;
633 
639  virtual bool16 CanGetColAttribute(ClassID whichAttr) const = 0;
640 
648  virtual const IPMUnknown* QueryColAttribute(ClassID whichAttr) const = 0;
649 
653  virtual bool16 CanGetOverridesInTable() const = 0;
654 
659  {
660  typedef base_type data_type;
662  ClassID classID;
664  bool16 valueSameAsFind;
665  };
666 
671 
699  virtual void GetOverridesInTable
700  (Tables::ERowColumn patternType,
701  int32 firstPatternCount, int32 secondPatternCount,
702  int32 skipFirst, int32 skipLast,
703  const AttributeBossList* findAttrsFirst,
704  const AttributeBossList* findAttrsSecond,
705  OverrideStateVector* resultFirst,
706  OverrideStateVector* resultSecond) const = 0;
707 
708 
709 
721  virtual void ClearRowPatternFillOverrides(const AttributeBossList *firstOverrideAttrs, const AttributeBossList *secondOverrideAttrs,
722  const int32 pattern1, const int32 pattern2, const int32 skipFirst, const int32 skipLast) = 0;
734  virtual void ClearColumnPatternFillOverrides(const AttributeBossList *firstOverrideAttrs, const AttributeBossList *secondOverrideAttrs,
735  const int32 pattern1, const int32 pattern2, const int32 skipFirst, const int32 skipLast) = 0;
736 
737 
738 
766  virtual void GetStrokeOverridesInTable(Tables::ERowColumn patternType,
767  int32 firstPatternCount, int32 secondPatternCount,
768  int32 skipFirst, int32 skipLast,
769  const ICellStrokeAttrData::Data& firstData,
770  const ICellStrokeAttrData::Data& secontData,
771  ICellStrokeAttrData::Data& resultFirst,
772  ICellStrokeAttrData::Data& resultSecond) const = 0;
773 
785  virtual void ClearRowPatternStrokeOverrides(const ICellStrokeAttrData::Data& firstOverrideAttrs,
786  const ICellStrokeAttrData::Data& secondOverrideAttrs,
787  const int32 pattern1, const int32 pattern2,
788  const int32 skipFirst, const int32 skipLast) = 0;
800  virtual void ClearColumnPatternStrokeOverrides(const ICellStrokeAttrData::Data& firstOverrideAttrs,
801  const ICellStrokeAttrData::Data& secondOverrideAttrs,
802  const int32 pattern1, const int32 pattern2,
803  const int32 skipFirst, const int32 skipLast) = 0;
812  virtual void GetBorderOverridesInTable
813  (const AttributeBossList* findAttrs, OverrideStateVector* results) const = 0;
814 
821  virtual void ClearOverridesIntersectingBorder(const AttributeBossList* leftSideAttrs, const AttributeBossList* topSideAttrs,
822  const AttributeBossList* rightSideAttrs, const AttributeBossList* bottomSideAttrs) = 0;
823 
824 //---------------------------------------------------------------------------------------------------------------------------------------------
825 //
826 // Functions which answer specific questions about the selection
827 //
831  virtual bool16 CanGetWritingDirection(void) const = 0;
832 
836  virtual bool16 IsWritingDirectionHorizontal(void) const = 0;
837 
838  //----- Table Dimensions
845  virtual UserRowNumber GetUserCurrentRowNumber(void) const = 0;
846 
853  virtual int32 GetUserCurrentColNumber(void) const = 0;
857  virtual bool16 CanGetTextFramesSpannedBySelection() const = 0;
866 
871  virtual bool16 CanGetSpanInformationFromSelection() const = 0;
872  virtual int32 GetHSpanSmallestHorizMergedCellInSelection() const = 0;
873  virtual int32 GetHSpanLargestHorizMergedCellInSelection() const = 0;
874  virtual int32 GetVSpanSmallestVertMergedCellInSelection() const = 0;
875  virtual int32 GetVSpanLargestVertMergedCellInSelection() const = 0;
876 
886  virtual bool16 CanGetUserRowSelection(int32 rowNum) const = 0;
887  virtual int32 GetUserRowSelection(const int32 rowNum, const ITableSuite::UserRowNumber::RowType rowType) const = 0;
888 
892  virtual bool16 IsHeaderSelection() const = 0;
893 
897  virtual bool16 IsFooterSelection() const = 0;
898 
902  virtual bool16 isWholeTableSelected() const = 0;
903 
908  virtual bool16 CanGetMaxMinRowSizeOfSelection() const = 0;
909 
914  virtual PMReal GetMaxRowSizeOfSelection() const = 0;
915 
920  virtual PMReal GetMinRowSizeOfSelection() const = 0;
921 
926  virtual bool16 CanGetSelectionActiveStrokes(void) const = 0;
927  virtual Tables::ESelectionSides GetSelectionActiveStrokes(void) = 0;
928 
929 
930 //---------------------------------------------------------------------------------------------------------------------------------------------
931 //
932 // Functions which answer questions about table structure
933 //
934 
939  virtual bool16 CanGetTableProperties(void)const = 0;
944  virtual bool16 CanGetHeader(void)const = 0;
949  virtual bool16 CanGetFooter(void)const = 0;
950 
959  virtual int32 GetNumRowsInTable(void)const = 0;
960 
969  virtual int32 GetNumColsInTable(void)const = 0;
970 
975  virtual int32 GetNumHeaderRowsInTable(void)const = 0;
976 
981  virtual int32 GetNumFooterRowsInTable(void)const = 0;
982 
989  virtual int32 GetUserNumRowsInTable(void)const = 0;
990 
997  virtual int32 GetUserNumColsInTable(void)const = 0;
998 
1003  virtual bool16 TableContainsHeaders(void)const = 0;
1004 
1009  virtual bool16 TableContainsFooters(void)const = 0;
1010 
1011 
1012 //---------------------------------------------------------------------------------------------------------------------------------------------
1013 //
1014 // Actions to create a table. Done only from a text selection
1015 //
1020  virtual bool16 CanInsertTable() const = 0;
1021 
1033  virtual void InsertTable(const int32 numRows, const int32 numCols, const int32 headerRows, const int32 footerRows,
1034  const UID& tableStyleUID = kInvalidUID, const Tables::EDirection direction = Tables::eLTR) = 0;
1035 
1036 //---------------------------------------------------------------------------------------------------------------------------------------------
1037 //
1038 // Actions to convert text to table. Done only from a text selection
1039 //
1044  virtual bool16 CanConvertTextToTable() const = 0;
1045 
1056  virtual UIDRef ConvertTextToTable(const PMString colSeparator="\t", const PMString rowSeparator="\r",
1057  const int32 userNumCols=1,
1058  const UID& tableStyleUID = kInvalidUID) const = 0;
1069  virtual UIDRef ConvertTextToTable(const K2Vector<PMString>& colSeparators, const K2Vector<PMString>& rowSeparators,
1070  const int32 userNumCols=1,
1071  const UID& tableStyleUID = kInvalidUID) const = 0;
1072 
1077  virtual bool16 AnyFootnotesInSelection() const = 0;
1078 
1079 
1084  virtual bool16 CanGetTableDirection(void) const = 0;
1085 
1091  virtual Tables::EDirection GetTableDirection(void) const = 0;
1092 
1097  virtual bool16 CanChangeTableDirection(void) const = 0;
1098 
1104  virtual void ChangeTableDirection(Tables::EDirection NewDirection) const = 0;
1105 
1106 
1115  virtual bool16 CanMoveRows (int32 toRow) const = 0;
1116 
1126  virtual void MoveRows (ITableModel* sourceTable, GridArea fromArea, int32 toRow, Tables::ERelativePosition, bool16 duplicateFlag) = 0;
1127 
1136  virtual bool16 CanMoveColumns (int32 toColumn) const = 0;
1137 
1147  virtual void MoveColumns (ITableModel* sourceTable, GridArea fromArea, int32 toColumn, Tables::ERelativePosition pos, bool16 duplicateFlag) = 0;
1148 
1156  virtual bool16 CanPasteRows(bool16 isPasteAfter) const = 0;
1157 
1161  virtual bool16 CanConvertCellsType(CellType destType) const = 0;
1162 
1167  virtual void ConvertCellsType(CellType destType, bool16 tryToPreserveData) = 0;
1168 
1176  virtual bool16 CanPasteColumns(bool16 isPasteAfter) const = 0;
1177 
1183  virtual GridArea GetFocussedArea() const = 0;
1184 
1190  virtual bool16 CanGetFocussedArea() const = 0;
1191 
1197  virtual bool16 CanPastePageItem() const = 0;
1198 
1207  virtual void PastePageItem(const GridAddress &anchor, UIDRef pageItemUID, bool16 preventCopy) = 0;
1208 
1214  virtual bool16 IsAnyTextCellSelected() const = 0;
1215 
1221  virtual bool16 IsAnyGraphicCellSelected() const = 0;
1222 };
1223 
1224 #endif //__ITableSuite__
1225