Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _ODI_STYLE_STYLE_FAMILY_H_
00023 #define _ODI_STYLE_STYLE_FAMILY_H_
00024
00025 #include <map>
00026 #include <string>
00027
00028
00029 #include "ODi_Style_Style.h"
00030
00031
00032 #include <ut_types.h>
00033 #include <ut_string_class.h>
00034
00035
00036 class ODi_ElementStack;
00037 class ODi_FontFaceDecls;
00038
00039
00040 class PD_Document;
00041 class ODi_Abi_Data;
00046 class ODi_Style_Style_Family {
00047 public:
00048
00049 ODi_Style_Style_Family() : m_pDefaultStyle(NULL) {}
00050 virtual ~ODi_Style_Style_Family();
00051
00052 ODi_Style_Style* addStyle(const gchar** ppAtts,
00053 ODi_ElementStack& rElementStack,
00054 ODi_Abi_Data & rAbiData,
00055 std::string* pReplacementName = NULL,
00056 std::string* pReplacementDisplayName = NULL);
00057
00058 ODi_Style_Style* addDefaultStyle(ODi_ElementStack& rElementStack,
00059 ODi_Abi_Data & rAbiData) {
00060 m_pDefaultStyle = new ODi_Style_Style(rElementStack,rAbiData);
00061 return m_pDefaultStyle;
00062 }
00063
00064 void fixStyles();
00065 void linkStyles();
00066
00067 const ODi_Style_Style* getStyle(const gchar* pStyleName,
00068 bool bOnContentStream) const;
00069
00070 const ODi_Style_Style* getDefaultStyle() const {
00071 return m_pDefaultStyle;
00072 }
00073
00074 void removeStyleStyle(ODi_Style_Style* pRemovedStyle, bool bOnContentStream);
00075
00076 void defineAbiStyles(PD_Document* pDocument) const;
00077 void buildAbiPropsAttrString(ODi_FontFaceDecls& rFontFaceDecls);
00078
00079 private:
00080
00081 typedef std::map<std::string, ODi_Style_Style*> StyleMap;
00082
00083 void _buildAbiPropsAttrString(ODi_FontFaceDecls& rFontFaceDecls,
00084 const StyleMap & map);
00085 void _findSuitableReplacement(std::string& rReplacementName,
00086 const ODi_Style_Style* pRemovedStyle,
00087 bool bOnContentStream);
00088 void _reparentStyles(const StyleMap & map, const std::string & removedName,
00089 const std::string & replacementName);
00090
00091 void _linkStyles(const StyleMap & map, bool onContentStream);
00092 void _removeEmptyStyles(const StyleMap & map, bool bOnContentStream);
00093
00094
00095 StyleMap m_styles;
00096
00097
00098
00099 StyleMap m_styles_contentStream;
00100
00101
00102 ODi_Style_Style* m_pDefaultStyle;
00103
00104
00105
00106
00107
00108
00109 std::map<std::string, std::string> m_removedStyleStyles;
00110 std::map<std::string, std::string> m_removedStyleStyles_contentStream;
00111 };
00112
00113 #endif //_ODI_STYLE_STYLE_FAMILY_H_