00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef WP6PARAGRAPHGROUP_H
00027 #define WP6PARAGRAPHGROUP_H
00028
00029 #include "WP6VariableLengthGroup.h"
00030 #include "WP6FileStructure.h"
00031 #include <vector>
00032
00033 class WP6ParagraphGroup_LineSpacingSubGroup : public WP6VariableLengthGroup_SubGroup
00034 {
00035 public:
00036 WP6ParagraphGroup_LineSpacingSubGroup(WPXInputStream *input);
00037 void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const;
00038
00039 private:
00040 float m_lineSpacing;
00041 };
00042
00043 class WP6ParagraphGroup_JustificationModeSubGroup : public WP6VariableLengthGroup_SubGroup
00044 {
00045 public:
00046 WP6ParagraphGroup_JustificationModeSubGroup(WPXInputStream *input);
00047 void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const;
00048
00049 private:
00050 uint8_t m_justification;
00051 };
00052
00053 class WP6ParagraphGroup_SpacingAfterParagraphSubGroup : public WP6VariableLengthGroup_SubGroup
00054 {
00055 public:
00056 WP6ParagraphGroup_SpacingAfterParagraphSubGroup(WPXInputStream *input, const uint16_t sizeNonDeletable);
00057 void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const;
00058
00059 private:
00060 float m_spacingAfterParagraphAbsolute;
00061 float m_spacingAfterParagraphRelative;
00062 uint16_t m_sizeNonDeletable;
00063 };
00064
00065 class WP6ParagraphGroup_TabSetSubGroup : public WP6VariableLengthGroup_SubGroup
00066 {
00067 public:
00068 WP6ParagraphGroup_TabSetSubGroup(WPXInputStream *input);
00069 ~WP6ParagraphGroup_TabSetSubGroup();
00070 void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const;
00071
00072 private:
00073 bool m_isRelative;
00074 float m_tabAdjustValue;
00075 std::vector<bool> m_usePreWP9LeaderMethods;
00076 std::vector<WPXTabStop> m_tabStops;
00077 };
00078
00079 class WP6ParagraphGroup_IndentFirstLineSubGroup : public WP6VariableLengthGroup_SubGroup
00080 {
00081 public:
00082 WP6ParagraphGroup_IndentFirstLineSubGroup(WPXInputStream *input);
00083 void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const;
00084
00085 private:
00086 int16_t m_firstLineOffset;
00087 };
00088
00089 class WP6ParagraphGroup_LeftMarginAdjustmentSubGroup : public WP6VariableLengthGroup_SubGroup
00090 {
00091 public:
00092 WP6ParagraphGroup_LeftMarginAdjustmentSubGroup(WPXInputStream *input);
00093 void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const;
00094
00095 private:
00096 int16_t m_leftMargin;
00097 };
00098
00099 class WP6ParagraphGroup_RightMarginAdjustmentSubGroup : public WP6VariableLengthGroup_SubGroup
00100 {
00101 public:
00102 WP6ParagraphGroup_RightMarginAdjustmentSubGroup(WPXInputStream *input);
00103 void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const;
00104
00105 private:
00106 int16_t m_rightMargin;
00107 };
00108
00109 class WP6ParagraphGroup_OutlineDefineSubGroup : public WP6VariableLengthGroup_SubGroup
00110 {
00111 public:
00112 WP6ParagraphGroup_OutlineDefineSubGroup(WPXInputStream *input);
00113 void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const;
00114
00115 private:
00116 uint16_t m_outlineHash;
00117 uint8_t m_numberingMethods[WP6_NUM_LIST_LEVELS];
00118 uint8_t m_tabBehaviourFlag;
00119 };
00120
00121 class WP6ParagraphGroup : public WP6VariableLengthGroup
00122 {
00123 public:
00124 WP6ParagraphGroup(WPXInputStream *input);
00125 ~WP6ParagraphGroup();
00126 void _readContents(WPXInputStream *input);
00127 void parse(WP6Listener *listener);
00128 private:
00129 WP6ParagraphGroup(const WP6ParagraphGroup&);
00130 WP6ParagraphGroup& operator=(const WP6ParagraphGroup&);
00131 WP6VariableLengthGroup_SubGroup *m_subGroupData;
00132 };
00133
00134 #endif