00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 00002 /* 00003 * This file is part of the libe-book project. 00004 * 00005 * This Source Code Form is subject to the terms of the Mozilla Public 00006 * License, v. 2.0. If a copy of the MPL was not distributed with this 00007 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 00008 */ 00009 00010 #ifndef FB2EXTRASCOLLECTOR_H_INCLUDED 00011 #define FB2EXTRASCOLLECTOR_H_INCLUDED 00012 00013 #include "FB2Collector.h" 00014 00015 namespace libebook 00016 { 00017 00018 class FB2Content; 00019 class FB2ContentMap; 00020 class FB2Style; 00021 00022 class GroupContent; 00023 00024 class FB2ExtrasCollector : public FB2Collector 00025 { 00026 // no copying 00027 FB2ExtrasCollector(const FB2ExtrasCollector &other); 00028 FB2ExtrasCollector &operator=(const FB2ExtrasCollector &other); 00029 00030 public: 00031 FB2ExtrasCollector(FB2ContentMap ¬es, FB2ContentMap &bitmaps); 00032 virtual ~FB2ExtrasCollector(); 00033 00034 private: 00035 virtual void defineMetadataEntry(const char *name, const char *value); 00036 virtual void openMetadataEntry(const char *name); 00037 virtual void closeMetadataEntry(); 00038 00039 virtual void defineID(const char *); 00040 00041 virtual void openPageSpan(); 00042 virtual void closePageSpan(); 00043 00044 virtual void openBlock(); 00045 virtual void closeBlock(); 00046 00047 virtual void openParagraph(const FB2BlockFormat &format); 00048 virtual void closeParagraph(); 00049 00050 virtual void openSpan(const FB2Style &style); 00051 virtual void closeSpan(); 00052 00053 virtual void insertText(const char *text); 00054 00055 virtual void openTable(const FB2BlockFormat &format); 00056 virtual void closeTable(); 00057 00058 virtual void openTableRow(const FB2BlockFormat &format); 00059 virtual void closeTableRow(); 00060 00061 virtual void openTableCell(int rowspan, int colspan); 00062 virtual void closeTableCell(); 00063 virtual void insertCoveredTableCell(); 00064 00065 virtual void insertFootnote(const char *id); 00066 00067 virtual void insertBitmap(const char *id); 00068 virtual void insertBitmapData(const char *contentType, const char *base64Data); 00069 00070 void flushCurrentNote(); 00071 bool isInNote() const; 00072 00073 private: 00074 FB2ContentMap &m_notes; 00075 FB2ContentMap &m_bitmaps; 00076 std::string m_currentID; 00077 GroupContent *m_currentNote; 00078 GroupContent *m_currentPara; 00079 const FB2Style *m_currentStyle; 00080 }; 00081 00082 } 00083 00084 #endif // FB2EXTRASCOLLECTOR_H_INCLUDED 00085 00086 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */