--- ie_imp_WordPerfectMetadata.h Sat Jun 8 04:00:11 2002 +++ ie_imp_WordPerfect.h Sat Jun 8 13:23:52 2002 @@ -1,6 +1,6 @@ /* AbiWord * Copyright (C) 2001 AbiSource, Inc. - * Copyright (C) 2001 William Lachance (wlach@interlog.com) + * Copyright (C) 2001-2002 William Lachance (wlach@interlog.com) * Copyright (C) 2002 Marc Maurer (j.m.maurer@student.utwente.nl) * * This program is free software; you can redistribute it and/or @@ -33,9 +33,13 @@ #include "ie_exp.h" #include "ie_exp_WordPerfect.h" +#include "ut_string.h" +#include "ut_string_class.h" + #include "ut_growbuf.h" #include "ut_mbtowc.h" #include "pd_Document.h" +#include "fl_AutoNum.h" // The importer/reader for WordPerfect 6 documents. @@ -70,6 +74,13 @@ #define WP_INDEX_HEADER_EXTENDED_DOCUMENT_SUMMARY_DESCRIPTOR_POOL 0x12 #define WP_INDEX_HEADER_CHECK_AS_YOU_GO_DESCRIPTOR_POOL 0x4E +#define WP_INDEX_HEADER_OUTLINE_STYLE 49 // 0x31 +#define WP_INDEX_HEADER_OUTLINE_STYLE_ARABIC_NUMBERING 0 +#define WP_INDEX_HEADER_OUTLINE_STYLE_LOWERCASE_NUMBERING 1 +#define WP_INDEX_HEADER_OUTLINE_STYLE_UPPERCASE_NUMBERING 2 +#define WP_INDEX_HEADER_OUTLINE_STYLE_LOWERCASE_ROMAN_NUMBERING 3 +#define WP_INDEX_HEADER_OUTLINE_STYLE_UPPERCASE_ROMAN_NUMBERING 4 + #define WP_TOP_SOFT_SPACE 128 #define WP_TOP_HARD_HYPHEN 132 // (0x84) #define WP_TOP_DORMANT_HARD_RETURN 135 // (0x87) @@ -107,6 +118,7 @@ #define WP_CHARACTER_GROUP_FONT_SIZE_CHANGE 27 // 0x1b #define WP_PARAGRAPH_GROUP_JUSTIFICATION 5 // 0x05 +#define WP_PARAGRAPH_GROUP_OUTLINE_DEFINE 14 // 0x0e #define WP_PARAGRAPH_GROUP_JUSTIFICATION_LEFT 0 #define WP_PARAGRAPH_GROUP_JUSTIFICATION_FULL 1 #define WP_PARAGRAPH_GROUP_JUSTIFICATION_CENTER 2 @@ -114,9 +126,31 @@ #define WP_PARAGRAPH_GROUP_JUSTIFICATION_FULL_ALL_LINES 4 #define WP_PARAGRAPH_GROUP_JUSTIFICATION_RESERVED 5 +#define WP_STYLE_GROUP_PARASTYLE_BEGIN_ON_PART1 4 // 0x04 +#define WP_STYLE_GROUP_PARASTYLE_BEGIN_OFF_PART1 5 // 0x05 +#define WP_STYLE_GROUP_PARASTYLE_BEGIN_ON_PART2 6 // 0x06 +#define WP_STYLE_GROUP_PARASTYLE_BEGIN_OFF_PART2 7 // 0x07 +#define WP_STYLE_GROUP_PARASTYLE_END_ON 8 // 0x08 +#define WP_STYLE_GROUP_PARASTYLE_END_OFF 9 // 0x09 + +#define WP_PARAGRAPH_GROUP_OUTLINE_DEFINE_BULLETED_NUMBERING 0 +#define WP_PARAGRAPH_GROUP_OUTLINE_DEFINE_ARABIC_NUMBERING 256 +#define WP_PARAGRAPH_GROUP_OUTLINE_DEFINE_LOWERCASE_NUMBERING 3 +#define WP_PARAGRAPH_GROUP_OUTLINE_DEFINE_LOWERCASE_ROMAN_NUMBERING 769 + +#define WP_CHARACTER_GROUP_PARAGRAPH_NUMBER_ON 50 // 0x32 +#define WP_CHARACTER_GROUP_PARAGRAPH_NUMBER_OFF 51 // 0x33 + +#define WP_DISPLAY_NUMBER_REFERENCE_GROUP_PARAGRAPH_NUMBER_DISPLAY_ON 12 +#define WP_DISPLAY_NUMBER_REFERENCE_GROUP_PARAGRAPH_NUMBER_DISPLAY_OFF 13 + #define WP_BOX_GROUP_NUM_RESERVED_BYTES 14 #define WP_BOX_GROUP_OVERRIDE_FLAGS_BOX_CONTENT 8192 +#define WP_NUM_LIST_LEVELS 8 +// These are the defaults for generating list text +#define WP_PARAGRAPH_STYLE_MARGIN_LEFT_INCREMENT 0.5f // I have no idea if this is correct, but it seems to look reasonably good +#define WP_PARAGRAPH_STYLE_TEXT_INDENT_DECREMENT -0.3f // I have no idea if this is correct, but it seems to look reasonably good // Character properties class ABI_EXPORT WordPerfectTextAttributes { @@ -214,6 +248,37 @@ bool m_hasChildren; }; +//struct WordPerfectParagraphStyleProperties +//{ +//}; + + +class ABI_EXPORT WordPerfectListDefinition +{ + public: + WordPerfectListDefinition(UT_uint16 outlineHash, unsigned char *packetNumberingMethods); // update list types based on information from a wordperfect outline define packet + UT_uint16 getOutlineHash() { return m_outlineHash; } + void setListID(int level, UT_uint32 id) { m_listIDs[level] = id; } + UT_uint32 getListID(int level) { return m_listIDs[level]; } + UT_uint16 getListNumber(int level) { return m_currentListNumbers[level]; } + List_Type getListType(int level) { return m_listTypes[level]; } + bool isLevelNumbered(int level) { return m_bIsNumberedList[level]; } + UT_String getListDelim(int level) { return m_listDelim[level]; } + + void setListRightDelimText(int level, UT_String rightDelimText) { UT_String_sprintf(m_listDelim[level], "%%L%s", rightDelimText.c_str()); } + void resetListIDsAndNumbers() { for (unsigned int i=0; i