mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-03 17:59:33 +02:00
DocPlugin: float images support has been added
This commit is contained in:
parent
401aaba8bf
commit
7af03baffd
13 changed files with 662 additions and 729 deletions
|
@ -133,7 +133,8 @@ LOCAL_SRC_FILES := \
|
||||||
NativeFormats/fbreader/src/formats/doc/OleStream.cpp \
|
NativeFormats/fbreader/src/formats/doc/OleStream.cpp \
|
||||||
NativeFormats/fbreader/src/formats/doc/OleStreamReader.cpp \
|
NativeFormats/fbreader/src/formats/doc/OleStreamReader.cpp \
|
||||||
NativeFormats/fbreader/src/formats/doc/OleUtil.cpp \
|
NativeFormats/fbreader/src/formats/doc/OleUtil.cpp \
|
||||||
NativeFormats/fbreader/src/formats/doc/DocImageDataReader.cpp \
|
NativeFormats/fbreader/src/formats/doc/DocInlineImageReader.cpp \
|
||||||
|
NativeFormats/fbreader/src/formats/doc/DocFloatImageReader.cpp \
|
||||||
NativeFormats/fbreader/src/library/Author.cpp \
|
NativeFormats/fbreader/src/library/Author.cpp \
|
||||||
NativeFormats/fbreader/src/library/Book.cpp \
|
NativeFormats/fbreader/src/library/Book.cpp \
|
||||||
NativeFormats/fbreader/src/library/Comparators.cpp \
|
NativeFormats/fbreader/src/library/Comparators.cpp \
|
||||||
|
|
|
@ -1,298 +0,0 @@
|
||||||
######################################################################
|
|
||||||
# Automatically generated by qmake (2.01a) ?? ???? 14 23:55:58 2012
|
|
||||||
######################################################################
|
|
||||||
|
|
||||||
TEMPLATE = app
|
|
||||||
TARGET =
|
|
||||||
DEPENDPATH += . \
|
|
||||||
util \
|
|
||||||
fbreader/src/bookmodel \
|
|
||||||
fbreader/src/formats \
|
|
||||||
fbreader/src/library \
|
|
||||||
fbreader/src/formats/css \
|
|
||||||
fbreader/src/formats/doc \
|
|
||||||
fbreader/src/formats/fb2 \
|
|
||||||
fbreader/src/formats/html \
|
|
||||||
fbreader/src/formats/oeb \
|
|
||||||
fbreader/src/formats/rtf \
|
|
||||||
fbreader/src/formats/txt \
|
|
||||||
fbreader/src/formats/util \
|
|
||||||
fbreader/src/formats/xhtml \
|
|
||||||
zlibrary/core/src/constants \
|
|
||||||
zlibrary/core/src/encoding \
|
|
||||||
zlibrary/core/src/filesystem \
|
|
||||||
zlibrary/core/src/image \
|
|
||||||
zlibrary/core/src/language \
|
|
||||||
zlibrary/core/src/library \
|
|
||||||
zlibrary/core/src/logger \
|
|
||||||
zlibrary/core/src/util \
|
|
||||||
zlibrary/core/src/xml \
|
|
||||||
zlibrary/text/src/model \
|
|
||||||
zlibrary/core/src/filesystem/zip \
|
|
||||||
zlibrary/core/src/unix/filesystem \
|
|
||||||
zlibrary/core/src/unix/library \
|
|
||||||
zlibrary/core/src/xml/expat \
|
|
||||||
zlibrary/ui/src/android/filesystem \
|
|
||||||
zlibrary/ui/src/android/library
|
|
||||||
INCLUDEPATH += . \
|
|
||||||
util \
|
|
||||||
zlibrary/core/src/util \
|
|
||||||
zlibrary/core/src/image \
|
|
||||||
zlibrary/core/src/filesystem \
|
|
||||||
fbreader/src/bookmodel \
|
|
||||||
zlibrary/text/src/model \
|
|
||||||
fbreader/src/formats \
|
|
||||||
fbreader/src/library \
|
|
||||||
zlibrary/core/src/library \
|
|
||||||
zlibrary/core/src/logger \
|
|
||||||
zlibrary/core/src/encoding \
|
|
||||||
zlibrary/core/src/language \
|
|
||||||
fbreader/src/formats/fb2 \
|
|
||||||
fbreader/src/formats/html \
|
|
||||||
fbreader/src/formats/txt \
|
|
||||||
fbreader/src/formats/oeb \
|
|
||||||
fbreader/src/formats/rtf \
|
|
||||||
fbreader/src/formats/doc \
|
|
||||||
fbreader/src/formats/css \
|
|
||||||
zlibrary/core/src/xml \
|
|
||||||
zlibrary/core/src/constants \
|
|
||||||
fbreader/src/formats/util \
|
|
||||||
fbreader/src/formats/xhtml \
|
|
||||||
zlibrary/core/src/filesystem/zip \
|
|
||||||
zlibrary/core/src/xml/expat \
|
|
||||||
zlibrary/core/src/unix/filesystem \
|
|
||||||
zlibrary/core/src/unix/library \
|
|
||||||
zlibrary/ui/src/android/filesystem \
|
|
||||||
/usr/include
|
|
||||||
|
|
||||||
|
|
||||||
# Input
|
|
||||||
HEADERS += util/AndroidUtil.h \
|
|
||||||
util/JniEnvelope.h \
|
|
||||||
fbreader/src/bookmodel/BookModel.h \
|
|
||||||
fbreader/src/bookmodel/BookReader.h \
|
|
||||||
fbreader/src/bookmodel/FBHyperlinkType.h \
|
|
||||||
fbreader/src/bookmodel/FBTextKind.h \
|
|
||||||
fbreader/src/formats/EncodedTextReader.h \
|
|
||||||
fbreader/src/formats/FormatPlugin.h \
|
|
||||||
fbreader/src/library/Author.h \
|
|
||||||
fbreader/src/library/Book.h \
|
|
||||||
fbreader/src/library/Library.h \
|
|
||||||
fbreader/src/library/Lists.h \
|
|
||||||
fbreader/src/library/Tag.h \
|
|
||||||
fbreader/src/formats/css/StyleSheetParser.h \
|
|
||||||
fbreader/src/formats/css/StyleSheetTable.h \
|
|
||||||
fbreader/src/formats/doc/DocBookReader.h \
|
|
||||||
fbreader/src/formats/doc/DocMetaInfoReader.h \
|
|
||||||
fbreader/src/formats/doc/DocPlugin.h \
|
|
||||||
fbreader/src/formats/doc/OleMainStream.h \
|
|
||||||
fbreader/src/formats/doc/OleStorage.h \
|
|
||||||
fbreader/src/formats/doc/OleStream.h \
|
|
||||||
fbreader/src/formats/doc/OleStreamReader.h \
|
|
||||||
fbreader/src/formats/doc/OleUtil.h \
|
|
||||||
fbreader/src/formats/fb2/FB2BookReader.h \
|
|
||||||
fbreader/src/formats/fb2/FB2CoverReader.h \
|
|
||||||
fbreader/src/formats/fb2/FB2MetaInfoReader.h \
|
|
||||||
fbreader/src/formats/fb2/FB2Plugin.h \
|
|
||||||
fbreader/src/formats/fb2/FB2Reader.h \
|
|
||||||
fbreader/src/formats/fb2/FB2TagManager.h \
|
|
||||||
fbreader/src/formats/html/HtmlBookReader.h \
|
|
||||||
fbreader/src/formats/html/HtmlDescriptionReader.h \
|
|
||||||
fbreader/src/formats/html/HtmlEntityCollection.h \
|
|
||||||
fbreader/src/formats/html/HtmlPlugin.h \
|
|
||||||
fbreader/src/formats/html/HtmlReader.h \
|
|
||||||
fbreader/src/formats/html/HtmlReaderStream.h \
|
|
||||||
fbreader/src/formats/html/HtmlTagActions.h \
|
|
||||||
fbreader/src/formats/oeb/NCXReader.h \
|
|
||||||
fbreader/src/formats/oeb/OEBBookReader.h \
|
|
||||||
fbreader/src/formats/oeb/OEBCoverReader.h \
|
|
||||||
fbreader/src/formats/oeb/OEBMetaInfoReader.h \
|
|
||||||
fbreader/src/formats/oeb/OEBPlugin.h \
|
|
||||||
fbreader/src/formats/oeb/OEBTextStream.h \
|
|
||||||
fbreader/src/formats/oeb/XHTMLImageFinder.h \
|
|
||||||
fbreader/src/formats/rtf/RtfBookReader.h \
|
|
||||||
fbreader/src/formats/rtf/RtfDescriptionReader.h \
|
|
||||||
fbreader/src/formats/rtf/RtfPlugin.h \
|
|
||||||
fbreader/src/formats/rtf/RtfReader.h \
|
|
||||||
fbreader/src/formats/rtf/RtfReaderStream.h \
|
|
||||||
fbreader/src/formats/txt/PlainTextFormat.h \
|
|
||||||
fbreader/src/formats/txt/TxtBookReader.h \
|
|
||||||
fbreader/src/formats/txt/TxtPlugin.h \
|
|
||||||
fbreader/src/formats/txt/TxtReader.h \
|
|
||||||
fbreader/src/formats/util/EntityFilesCollector.h \
|
|
||||||
fbreader/src/formats/util/MergedStream.h \
|
|
||||||
fbreader/src/formats/util/MiscUtil.h \
|
|
||||||
fbreader/src/formats/util/XMLTextStream.h \
|
|
||||||
fbreader/src/formats/xhtml/XHTMLReader.h \
|
|
||||||
zlibrary/core/src/constants/ZLXMLNamespace.h \
|
|
||||||
zlibrary/core/src/encoding/DummyEncodingConverter.h \
|
|
||||||
zlibrary/core/src/encoding/JavaEncodingConverter.h \
|
|
||||||
zlibrary/core/src/encoding/Utf16EncodingConverters.h \
|
|
||||||
zlibrary/core/src/encoding/ZLEncodingConverter.h \
|
|
||||||
zlibrary/core/src/encoding/ZLEncodingConverterProvider.h \
|
|
||||||
zlibrary/core/src/filesystem/ZLDir.h \
|
|
||||||
zlibrary/core/src/filesystem/ZLFile.h \
|
|
||||||
zlibrary/core/src/filesystem/ZLFileInfo.h \
|
|
||||||
zlibrary/core/src/filesystem/ZLFSDir.h \
|
|
||||||
zlibrary/core/src/filesystem/ZLFSManager.h \
|
|
||||||
zlibrary/core/src/filesystem/ZLInputStream.h \
|
|
||||||
zlibrary/core/src/filesystem/ZLOutputStream.h \
|
|
||||||
zlibrary/core/src/image/ZLFileImage.h \
|
|
||||||
zlibrary/core/src/image/ZLImage.h \
|
|
||||||
zlibrary/core/src/image/ZLStreamImage.h \
|
|
||||||
zlibrary/core/src/language/ZLCharSequence.h \
|
|
||||||
zlibrary/core/src/language/ZLLanguageDetector.h \
|
|
||||||
zlibrary/core/src/language/ZLLanguageList.h \
|
|
||||||
zlibrary/core/src/language/ZLLanguageMatcher.h \
|
|
||||||
zlibrary/core/src/language/ZLStatistics.h \
|
|
||||||
zlibrary/core/src/language/ZLStatisticsGenerator.h \
|
|
||||||
zlibrary/core/src/language/ZLStatisticsItem.h \
|
|
||||||
zlibrary/core/src/language/ZLStatisticsXMLReader.h \
|
|
||||||
zlibrary/core/src/library/ZLibrary.h \
|
|
||||||
zlibrary/core/src/logger/ZLLogger.h \
|
|
||||||
zlibrary/core/src/util/shared_ptr.h \
|
|
||||||
zlibrary/core/src/util/ZLBoolean3.h \
|
|
||||||
zlibrary/core/src/util/ZLFileUtil.h \
|
|
||||||
zlibrary/core/src/util/ZLStringUtil.h \
|
|
||||||
zlibrary/core/src/util/ZLUnicodeUtil.h \
|
|
||||||
zlibrary/core/src/xml/ZLAsynchronousInputStream.h \
|
|
||||||
zlibrary/core/src/xml/ZLPlainAsynchronousInputStream.h \
|
|
||||||
zlibrary/core/src/xml/ZLXMLReader.h \
|
|
||||||
zlibrary/text/src/model/ZLCachedMemoryAllocator.h \
|
|
||||||
zlibrary/text/src/model/ZLHyperlinkType.h \
|
|
||||||
zlibrary/text/src/model/ZLTextAlignmentType.h \
|
|
||||||
zlibrary/text/src/model/ZLTextKind.h \
|
|
||||||
zlibrary/text/src/model/ZLTextModel.h \
|
|
||||||
zlibrary/text/src/model/ZLTextParagraph.h \
|
|
||||||
zlibrary/text/src/model/ZLTextStyleEntry.h \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLZDecompressor.h \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLZip.h \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLZipHeader.h \
|
|
||||||
zlibrary/core/src/unix/filesystem/ZLUnixFileInputStream.h \
|
|
||||||
zlibrary/core/src/unix/filesystem/ZLUnixFileOutputStream.h \
|
|
||||||
zlibrary/core/src/unix/filesystem/ZLUnixFSDir.h \
|
|
||||||
zlibrary/core/src/unix/filesystem/ZLUnixFSManager.h \
|
|
||||||
zlibrary/core/src/unix/library/ZLibraryImplementation.h \
|
|
||||||
zlibrary/core/src/xml/expat/ZLXMLReaderInternal.h \
|
|
||||||
zlibrary/ui/src/android/filesystem/JavaFSDir.h \
|
|
||||||
zlibrary/ui/src/android/filesystem/JavaInputStream.h \
|
|
||||||
zlibrary/ui/src/android/filesystem/ZLAndroidFSManager.h \
|
|
||||||
zlibrary/text/src/model/ZLTextStyleEntry.h \
|
|
||||||
fbreader/src/formats/html/HtmlTagActions.h \
|
|
||||||
fbreader/src/formats/html/HtmlReaderStream.h \
|
|
||||||
fbreader/src/formats/html/HtmlReader.h \
|
|
||||||
fbreader/src/formats/html/HtmlPlugin.h \
|
|
||||||
fbreader/src/formats/html/HtmlEntityCollection.h \
|
|
||||||
fbreader/src/formats/html/HtmlDescriptionReader.h \
|
|
||||||
fbreader/src/formats/html/HtmlBookReader.h \
|
|
||||||
fbreader/src/formats/doc/OleUtil.h \
|
|
||||||
fbreader/src/formats/doc/OleStreamReader.h \
|
|
||||||
fbreader/src/formats/doc/OleStream.h \
|
|
||||||
fbreader/src/formats/doc/OleStorage.h \
|
|
||||||
fbreader/src/formats/doc/OleMainStream.h \
|
|
||||||
fbreader/src/formats/doc/DocPlugin.h \
|
|
||||||
fbreader/src/formats/doc/DocMetaInfoReader.h \
|
|
||||||
fbreader/src/formats/doc/DocBookReader.h
|
|
||||||
SOURCES += JavaNativeFormatPlugin.cpp \
|
|
||||||
JavaPluginCollection.cpp \
|
|
||||||
main.cpp \
|
|
||||||
util/AndroidUtil.cpp \
|
|
||||||
util/JniEnvelope.cpp \
|
|
||||||
fbreader/src/bookmodel/BookModel.cpp \
|
|
||||||
fbreader/src/bookmodel/BookReader.cpp \
|
|
||||||
fbreader/src/formats/EncodedTextReader.cpp \
|
|
||||||
fbreader/src/formats/FormatPlugin.cpp \
|
|
||||||
fbreader/src/formats/PluginCollection.cpp \
|
|
||||||
fbreader/src/library/Author.cpp \
|
|
||||||
fbreader/src/library/Book.cpp \
|
|
||||||
fbreader/src/library/Comparators.cpp \
|
|
||||||
fbreader/src/library/Library.cpp \
|
|
||||||
fbreader/src/library/Tag.cpp \
|
|
||||||
fbreader/src/formats/css/StyleSheetParser.cpp \
|
|
||||||
fbreader/src/formats/css/StyleSheetTable.cpp \
|
|
||||||
fbreader/src/formats/doc/DocBookReader.cpp \
|
|
||||||
fbreader/src/formats/doc/DocMetaInfoReader.cpp \
|
|
||||||
fbreader/src/formats/doc/DocPlugin.cpp \
|
|
||||||
fbreader/src/formats/doc/OleMainStream.cpp \
|
|
||||||
fbreader/src/formats/doc/OleStorage.cpp \
|
|
||||||
fbreader/src/formats/doc/OleStream.cpp \
|
|
||||||
fbreader/src/formats/doc/OleStreamReader.cpp \
|
|
||||||
fbreader/src/formats/doc/OleUtil.cpp \
|
|
||||||
fbreader/src/formats/fb2/FB2BookReader.cpp \
|
|
||||||
fbreader/src/formats/fb2/FB2CoverReader.cpp \
|
|
||||||
fbreader/src/formats/fb2/FB2MetaInfoReader.cpp \
|
|
||||||
fbreader/src/formats/fb2/FB2Plugin.cpp \
|
|
||||||
fbreader/src/formats/fb2/FB2Reader.cpp \
|
|
||||||
fbreader/src/formats/fb2/FB2TagManager.cpp \
|
|
||||||
fbreader/src/formats/html/HtmlBookReader.cpp \
|
|
||||||
fbreader/src/formats/html/HtmlDescriptionReader.cpp \
|
|
||||||
fbreader/src/formats/html/HtmlEntityCollection.cpp \
|
|
||||||
fbreader/src/formats/html/HtmlPlugin.cpp \
|
|
||||||
fbreader/src/formats/html/HtmlReader.cpp \
|
|
||||||
fbreader/src/formats/html/HtmlReaderStream.cpp \
|
|
||||||
fbreader/src/formats/oeb/NCXReader.cpp \
|
|
||||||
fbreader/src/formats/oeb/OEBBookReader.cpp \
|
|
||||||
fbreader/src/formats/oeb/OEBCoverReader.cpp \
|
|
||||||
fbreader/src/formats/oeb/OEBMetaInfoReader.cpp \
|
|
||||||
fbreader/src/formats/oeb/OEBPlugin.cpp \
|
|
||||||
fbreader/src/formats/oeb/OEBTextStream.cpp \
|
|
||||||
fbreader/src/formats/oeb/XHTMLImageFinder.cpp \
|
|
||||||
fbreader/src/formats/rtf/RtfBookReader.cpp \
|
|
||||||
fbreader/src/formats/rtf/RtfDescriptionReader.cpp \
|
|
||||||
fbreader/src/formats/rtf/RtfPlugin.cpp \
|
|
||||||
fbreader/src/formats/rtf/RtfReader.cpp \
|
|
||||||
fbreader/src/formats/rtf/RtfReaderStream.cpp \
|
|
||||||
fbreader/src/formats/txt/PlainTextFormat.cpp \
|
|
||||||
fbreader/src/formats/txt/TxtBookReader.cpp \
|
|
||||||
fbreader/src/formats/txt/TxtPlugin.cpp \
|
|
||||||
fbreader/src/formats/txt/TxtReader.cpp \
|
|
||||||
fbreader/src/formats/util/EntityFilesCollector.cpp \
|
|
||||||
fbreader/src/formats/util/MergedStream.cpp \
|
|
||||||
fbreader/src/formats/util/MiscUtil.cpp \
|
|
||||||
fbreader/src/formats/util/XMLTextStream.cpp \
|
|
||||||
fbreader/src/formats/xhtml/XHTMLReader.cpp \
|
|
||||||
zlibrary/core/src/constants/ZLXMLNamespace.cpp \
|
|
||||||
zlibrary/core/src/encoding/DummyEncodingConverter.cpp \
|
|
||||||
zlibrary/core/src/encoding/JavaEncodingConverter.cpp \
|
|
||||||
zlibrary/core/src/encoding/Utf16EncodingConverters.cpp \
|
|
||||||
zlibrary/core/src/encoding/ZLEncodingCollection.cpp \
|
|
||||||
zlibrary/core/src/encoding/ZLEncodingConverter.cpp \
|
|
||||||
zlibrary/core/src/filesystem/ZLDir.cpp \
|
|
||||||
zlibrary/core/src/filesystem/ZLFile.cpp \
|
|
||||||
zlibrary/core/src/filesystem/ZLFSManager.cpp \
|
|
||||||
zlibrary/core/src/filesystem/ZLInputStreamDecorator.cpp \
|
|
||||||
zlibrary/core/src/language/ZLCharSequence.cpp \
|
|
||||||
zlibrary/core/src/language/ZLLanguageDetector.cpp \
|
|
||||||
zlibrary/core/src/language/ZLLanguageList.cpp \
|
|
||||||
zlibrary/core/src/language/ZLLanguageMatcher.cpp \
|
|
||||||
zlibrary/core/src/language/ZLStatistics.cpp \
|
|
||||||
zlibrary/core/src/language/ZLStatisticsGenerator.cpp \
|
|
||||||
zlibrary/core/src/language/ZLStatisticsItem.cpp \
|
|
||||||
zlibrary/core/src/language/ZLStatisticsXMLReader.cpp \
|
|
||||||
zlibrary/core/src/library/ZLibrary.cpp \
|
|
||||||
zlibrary/core/src/logger/ZLLogger.cpp \
|
|
||||||
zlibrary/core/src/util/ZLFileUtil.cpp \
|
|
||||||
zlibrary/core/src/util/ZLStringUtil.cpp \
|
|
||||||
zlibrary/core/src/util/ZLUnicodeUtil.cpp \
|
|
||||||
zlibrary/core/src/xml/ZLAsynchronousInputStream.cpp \
|
|
||||||
zlibrary/core/src/xml/ZLPlainAsynchronousInputStream.cpp \
|
|
||||||
zlibrary/core/src/xml/ZLXMLReader.cpp \
|
|
||||||
zlibrary/text/src/model/ZLCachedMemoryAllocator.cpp \
|
|
||||||
zlibrary/text/src/model/ZLTextModel.cpp \
|
|
||||||
zlibrary/text/src/model/ZLTextParagraph.cpp \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLGzipInputStream.cpp \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLZDecompressor.cpp \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLZipDir.cpp \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLZipEntryCache.cpp \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLZipHeader.cpp \
|
|
||||||
zlibrary/core/src/filesystem/zip/ZLZipInputStream.cpp \
|
|
||||||
zlibrary/core/src/unix/filesystem/ZLUnixFileInputStream.cpp \
|
|
||||||
zlibrary/core/src/unix/filesystem/ZLUnixFileOutputStream.cpp \
|
|
||||||
zlibrary/core/src/unix/filesystem/ZLUnixFSDir.cpp \
|
|
||||||
zlibrary/core/src/unix/filesystem/ZLUnixFSManager.cpp \
|
|
||||||
zlibrary/core/src/unix/library/ZLUnixLibrary.cpp \
|
|
||||||
zlibrary/core/src/xml/expat/ZLXMLReaderInternal.cpp \
|
|
||||||
zlibrary/ui/src/android/filesystem/JavaFSDir.cpp \
|
|
||||||
zlibrary/ui/src/android/filesystem/JavaInputStream.cpp \
|
|
||||||
zlibrary/ui/src/android/filesystem/ZLAndroidFSManager.cpp \
|
|
||||||
zlibrary/ui/src/android/library/ZLAndroidLibraryImplementation.cpp
|
|
|
@ -1,365 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE QtCreatorProject>
|
|
||||||
<!-- Written by Qt Creator 2.4.1, 2012-07-04T17:57:28. -->
|
|
||||||
<qtcreator>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
|
||||||
<value type="int">0</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
|
||||||
<valuemap type="QVariantMap">
|
|
||||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
|
||||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
|
||||||
<value type="QString" key="language">Cpp</value>
|
|
||||||
<valuemap type="QVariantMap" key="value">
|
|
||||||
<value type="QString" key="CurrentPreferences">CppGlobal</value>
|
|
||||||
</valuemap>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
|
||||||
<value type="QString" key="language">QmlJS</value>
|
|
||||||
<valuemap type="QVariantMap" key="value">
|
|
||||||
<value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
|
|
||||||
</valuemap>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
|
||||||
<value type="QByteArray" key="EditorConfiguration.Codec">System</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
|
||||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
|
||||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
|
|
||||||
</valuemap>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
|
||||||
<valuemap type="QVariantMap"/>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
|
||||||
<valuemap type="QVariantMap">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Target.DesktopTarget</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit./opt/QtSDK/debugger/Desktop/bin/gdb</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt в PATH Релиз</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/snowwlex/ws/FBReaderJ/jni/NativeFormats</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">2</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit./opt/QtSDK/debugger/Desktop/bin/gdb</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt в PATH Отладка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/snowwlex/ws/FBReaderJ/jni/NativeFormats</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">2</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit./opt/QtSDK/debugger/Desktop/bin/gdb</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.6.2 (Системная) Релиз</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/snowwlex/ws/FBReaderJ/jni/NativeFormats</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">5</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-32bit./opt/QtSDK/debugger/Desktop/bin/gdb</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.6.2 (Системная) Отладка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/snowwlex/ws/FBReaderJ/jni/NativeFormats</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">5</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Установка</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Без установки</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
|
||||||
<value type="bool" key="Analyzer.Project.UseGlobal">true</value>
|
|
||||||
<value type="bool" key="Analyzer.Project.UseGlobal">true</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
|
||||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
|
||||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
|
||||||
<value type="int">0</value>
|
|
||||||
<value type="int">1</value>
|
|
||||||
<value type="int">2</value>
|
|
||||||
<value type="int">3</value>
|
|
||||||
<value type="int">4</value>
|
|
||||||
<value type="int">5</value>
|
|
||||||
<value type="int">6</value>
|
|
||||||
<value type="int">7</value>
|
|
||||||
<value type="int">8</value>
|
|
||||||
<value type="int">9</value>
|
|
||||||
<value type="int">10</value>
|
|
||||||
<value type="int">11</value>
|
|
||||||
<value type="int">12</value>
|
|
||||||
<value type="int">13</value>
|
|
||||||
<value type="int">14</value>
|
|
||||||
</valuelist>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
|
||||||
<value type="int">0</value>
|
|
||||||
<value type="int">1</value>
|
|
||||||
<value type="int">2</value>
|
|
||||||
<value type="int">3</value>
|
|
||||||
<value type="int">4</value>
|
|
||||||
<value type="int">5</value>
|
|
||||||
<value type="int">6</value>
|
|
||||||
<value type="int">7</value>
|
|
||||||
<value type="int">8</value>
|
|
||||||
<value type="int">9</value>
|
|
||||||
<value type="int">10</value>
|
|
||||||
<value type="int">11</value>
|
|
||||||
<value type="int">12</value>
|
|
||||||
<value type="int">13</value>
|
|
||||||
<value type="int">14</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">NativeFormats</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">NativeFormats.pro</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
|
|
||||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
|
||||||
</valuemap>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
|
||||||
<value type="int">1</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
|
|
||||||
<value type="QString">{bce7c847-fb35-41bd-9485-843f1b18eb8e}</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
|
||||||
<value type="int">10</value>
|
|
||||||
</data>
|
|
||||||
</qtcreator>
|
|
|
@ -21,11 +21,11 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include <ZLInputStream.h>
|
||||||
#include <ZLLogger.h>
|
#include <ZLLogger.h>
|
||||||
#include <ZLFile.h>
|
#include <ZLFile.h>
|
||||||
#include <ZLStringUtil.h>
|
#include <ZLStringUtil.h>
|
||||||
#include <ZLFileImage.h>
|
#include <ZLFileImage.h>
|
||||||
#include <ZLInputStream.h>
|
|
||||||
|
|
||||||
#include "DocBookReader.h"
|
#include "DocBookReader.h"
|
||||||
#include "../../bookmodel/BookModel.h"
|
#include "../../bookmodel/BookModel.h"
|
||||||
|
@ -230,7 +230,7 @@ void DocBookReader::handleEndField() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocBookReader::handlePicture(const ZLFileImage::Blocks &blocks) {
|
void DocBookReader::handleImage(const ZLFileImage::Blocks &blocks) {
|
||||||
std::string number;
|
std::string number;
|
||||||
ZLStringUtil::appendNumber(number, myPictureCounter++);
|
ZLStringUtil::appendNumber(number, myPictureCounter++);
|
||||||
myModelReader.addImageReference(number, 0, false);
|
myModelReader.addImageReference(number, 0, false);
|
||||||
|
|
|
@ -51,7 +51,7 @@ private:
|
||||||
void handleStartField();
|
void handleStartField();
|
||||||
void handleSeparatorField();
|
void handleSeparatorField();
|
||||||
void handleEndField();
|
void handleEndField();
|
||||||
void handlePicture(const ZLFileImage::Blocks &blocks);
|
void handleImage(const ZLFileImage::Blocks &blocks);
|
||||||
void handleOtherControlChar(ZLUnicodeUtil::Ucs2Char ucs2char);
|
void handleOtherControlChar(ZLUnicodeUtil::Ucs2Char ucs2char);
|
||||||
|
|
||||||
//formatting:
|
//formatting:
|
||||||
|
|
|
@ -0,0 +1,368 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2004-2012 Geometer Plus <contact@geometerplus.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
|
* 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "OleUtil.h"
|
||||||
|
#include "OleStream.h"
|
||||||
|
#include "OleMainStream.h"
|
||||||
|
|
||||||
|
#include "DocFloatImageReader.h"
|
||||||
|
|
||||||
|
DocFloatImageReader::DocFloatImageReader(unsigned int off, unsigned int len, shared_ptr<OleStream> tableStream, shared_ptr<OleStream> mainStream) :
|
||||||
|
myTableStream(tableStream),
|
||||||
|
myMainStream(mainStream),
|
||||||
|
myOffset(off),
|
||||||
|
myLength(len) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void DocFloatImageReader::readAll() {
|
||||||
|
//OfficeArtContent structure is described at p.405-406 [MS-DOC]
|
||||||
|
myTableStream->seek(myOffset, true);
|
||||||
|
|
||||||
|
unsigned int count = 0;
|
||||||
|
|
||||||
|
RecordHeader header;
|
||||||
|
while (count < myLength) {
|
||||||
|
count += readRecordHeader(header, myTableStream);
|
||||||
|
switch (header.type) {
|
||||||
|
case 0xF000:
|
||||||
|
count += readDggContainer(myItem, header.length, myTableStream, myMainStream);
|
||||||
|
break;
|
||||||
|
case 0xF002:
|
||||||
|
count += readDgContainer(myItem, header.length, myTableStream);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ZLFileImage::Blocks DocFloatImageReader::getBlocksForShapeID(unsigned int shapeID) const {
|
||||||
|
FSPContainer container;
|
||||||
|
bool found = false;
|
||||||
|
for (size_t i = 0; !found && i < myItem.FSPs.size(); ++i) {
|
||||||
|
if (myItem.FSPs.at(i).fsp.shapeID == shapeID) {
|
||||||
|
found = true;
|
||||||
|
container = myItem.FSPs.at(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found || container.fopte.empty()) {
|
||||||
|
return ZLFileImage::Blocks();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < container.fopte.size(); ++i) {
|
||||||
|
const FOPTE &fopte = container.fopte.at(i);
|
||||||
|
if (fopte.pID == 0x0104 && !fopte.isComplex) { //0x0104 specifies the BLIP, see p.420 [MS-ODRAW]
|
||||||
|
if (fopte.value <= myItem.blips.size() && fopte.value > 0) {
|
||||||
|
Blip blip = myItem.blips.at(fopte.value - 1);
|
||||||
|
return blip.blocks;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ZLFileImage::Blocks();
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readRecordHeader(RecordHeader &header, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtRecordHeader structure is described at p.26 [MS-ODRAW]
|
||||||
|
char buffer[8];
|
||||||
|
stream->read(buffer, 8);
|
||||||
|
unsigned int temp = OleUtil::getU2Bytes(buffer, 0);
|
||||||
|
header.version = temp & 0x000F;
|
||||||
|
header.instance = temp >> 4;
|
||||||
|
header.type = OleUtil::getU2Bytes(buffer, 2);
|
||||||
|
header.length = OleUtil::getU4Bytes(buffer, 4);
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readDggContainer(OfficeArtContent &item, unsigned int length, shared_ptr<OleStream> stream, shared_ptr<OleStream> mainStream) {
|
||||||
|
//OfficeArtDggContainer structure is described at p.50 [MS-ODRAW]
|
||||||
|
RecordHeader header;
|
||||||
|
unsigned int count = 0;
|
||||||
|
|
||||||
|
while (count < length) {
|
||||||
|
count += readRecordHeader(header, stream);
|
||||||
|
switch (header.type) {
|
||||||
|
case 0xF001:
|
||||||
|
count += readBStoreContainer(item, header.length, stream, mainStream);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
count += skipRecord(header, stream);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stream->seek(1, false); //skipping dgglbl (see p.406 [MS-DOC])
|
||||||
|
++count;
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readBStoreContainer(OfficeArtContent &item, unsigned int length, shared_ptr<OleStream> stream, shared_ptr<OleStream> mainStream) {
|
||||||
|
//OfficeArtBStoreContainer structure is described at p.58 [MS-ODRAW]
|
||||||
|
RecordHeader header;
|
||||||
|
unsigned int count = 0;
|
||||||
|
while (count < length) {
|
||||||
|
count += readRecordHeader(header, stream);
|
||||||
|
switch (header.type) {
|
||||||
|
case 0xF007:
|
||||||
|
{
|
||||||
|
Blip blip;
|
||||||
|
count += readBStoreContainerFileBlock(blip, stream, mainStream);
|
||||||
|
item.blips.push_back(blip);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
count += skipRecord(header, stream);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::skipRecord(const RecordHeader &header, shared_ptr<OleStream> stream) {
|
||||||
|
stream->seek(header.length, false);
|
||||||
|
return header.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readBStoreContainerFileBlock(Blip &blip, shared_ptr<OleStream> stream, shared_ptr<OleStream> mainStream) {
|
||||||
|
//OfficeArtBStoreContainerFileBlock structure is described at p.59 [MS-ODRAW]
|
||||||
|
unsigned int count = readFBSE(blip.storeEntry, stream);
|
||||||
|
if( blip.storeEntry.offsetInDelay != (unsigned int)(-1)) {
|
||||||
|
mainStream->seek(blip.storeEntry.offsetInDelay, true); //see p.70 [MS-ODRAW]
|
||||||
|
}
|
||||||
|
RecordHeader header;
|
||||||
|
unsigned int count2 = readRecordHeader(header, mainStream);
|
||||||
|
switch (header.type) {
|
||||||
|
case OleMainStream::WMF:
|
||||||
|
case OleMainStream::EMF:
|
||||||
|
case OleMainStream::PICT:
|
||||||
|
count2 += skipRecord(header, mainStream);
|
||||||
|
break;
|
||||||
|
case OleMainStream::JPEG: case OleMainStream::JPEG2:
|
||||||
|
case OleMainStream::PNG:
|
||||||
|
case OleMainStream::DIB:
|
||||||
|
case OleMainStream::TIFF:
|
||||||
|
count2 += readBlip(blip, header, mainStream);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
blip.type = header.type;
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readBlip(Blip &blip, const RecordHeader &header, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtBlip structure is described at p.60-66 [MS-ODRAW]
|
||||||
|
stream->seek(16, false); //skipping rgbUid1
|
||||||
|
unsigned int count = 16;
|
||||||
|
|
||||||
|
bool addField = false;
|
||||||
|
switch (header.type) {
|
||||||
|
case OleMainStream::PNG:
|
||||||
|
if (header.instance == 0x6E1) {
|
||||||
|
addField = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case OleMainStream::JPEG: case OleMainStream::JPEG2:
|
||||||
|
if (header.instance == 0x46B || header.instance == 0x6E3) {
|
||||||
|
addField = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case OleMainStream::DIB:
|
||||||
|
if (header.instance == 0x7A9) {
|
||||||
|
addField = true;
|
||||||
|
}
|
||||||
|
case OleMainStream::TIFF:
|
||||||
|
if (header.instance == 0x6E5) {
|
||||||
|
addField = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (addField) {
|
||||||
|
stream->seek(16, false); //skipping rgbUid2
|
||||||
|
count += 16;
|
||||||
|
}
|
||||||
|
stream->seek(1, false); //skipping tag
|
||||||
|
count += 1;
|
||||||
|
|
||||||
|
blip.blocks = stream->getBlockPieceInfoList(stream->offset(), header.length - count);
|
||||||
|
count += header.length;
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readFBSE(BlipStoreEntry &fbse, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtFBSE structure is described at p.68 [MS-ODRAW]
|
||||||
|
stream->seek(2, false); //skipping btWin32 and btMacOS
|
||||||
|
stream->seek(16, false); //skipping rgbUid
|
||||||
|
stream->seek(2, false); //skipping tag
|
||||||
|
fbse.size = read4Bytes(stream);
|
||||||
|
fbse.referenceCount = read4Bytes(stream);
|
||||||
|
fbse.offsetInDelay = read4Bytes(stream);
|
||||||
|
stream->seek(1, false); //skipping unused value
|
||||||
|
unsigned int lengthName = read1Byte(stream); //if it should be multiplied on 2?
|
||||||
|
stream->seek(2, false); // skipping unused values
|
||||||
|
if (lengthName > 0) {
|
||||||
|
stream->seek(lengthName, false); //skipping nameData
|
||||||
|
}
|
||||||
|
return 36 + lengthName;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readDgContainer(OfficeArtContent &item, unsigned int length, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtDgContainer structure is described at p.52 [MS-ODRAW]
|
||||||
|
unsigned int count = 0;
|
||||||
|
|
||||||
|
RecordHeader header;
|
||||||
|
while (count < length) {
|
||||||
|
count += readRecordHeader(header, stream);
|
||||||
|
switch (header.type) {
|
||||||
|
case 0xF008: //skip OfficeArtFDG record, p. 82 [MS-ODRAW]
|
||||||
|
stream->seek(8, false);
|
||||||
|
count += 8;
|
||||||
|
break;
|
||||||
|
case 0xF003:
|
||||||
|
count += readSpgrContainer(item, header.length, stream);
|
||||||
|
break;
|
||||||
|
case 0xF004:
|
||||||
|
{
|
||||||
|
FSPContainer fspContainer;
|
||||||
|
count += readSpContainter(fspContainer, header.length, stream);
|
||||||
|
item.FSPs.push_back(fspContainer);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
count += skipRecord(header, stream);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readSpgrContainer(OfficeArtContent &item, unsigned int length, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtSpgrContainer structure is described at p.56 [MS-ODRAW]
|
||||||
|
unsigned count = 0;
|
||||||
|
RecordHeader header;
|
||||||
|
while (count < length) {
|
||||||
|
count += readRecordHeader(header, stream);
|
||||||
|
switch (header.type) {
|
||||||
|
case 0xF003:
|
||||||
|
count += readSpgrContainer(item, header.length, stream);
|
||||||
|
break;
|
||||||
|
case 0xF004:
|
||||||
|
{
|
||||||
|
FSPContainer fspContainer;
|
||||||
|
count += readSpContainter(fspContainer, header.length, stream);
|
||||||
|
item.FSPs.push_back(fspContainer);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
count += skipRecord(header, stream);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readSpContainter(FSPContainer &item, unsigned int length, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtSpContainter structure is described at p.53-55 [MS-ODRAW]
|
||||||
|
RecordHeader header;
|
||||||
|
unsigned int count = 0;
|
||||||
|
while (count < length) {
|
||||||
|
count += readRecordHeader(header, stream);
|
||||||
|
switch (header.type) {
|
||||||
|
case 0xF009: //skip OfficeArtFSPGR record, p.74 [MS-ODRAW]
|
||||||
|
stream->seek(16, false);
|
||||||
|
count += 16;
|
||||||
|
break;
|
||||||
|
case 0xF00A:
|
||||||
|
count += readFSP(item.fsp, stream);
|
||||||
|
break;
|
||||||
|
case 0xF00B:
|
||||||
|
count += readArrayFOPTE(item.fopte, header.length, stream);
|
||||||
|
break;
|
||||||
|
case 0xF00E: //OfficeArtAnchor
|
||||||
|
case 0xF00F: //OfficeArtChildAnchor, p.75 [MS-ODRAW]
|
||||||
|
case 0xF010: //OfficeArtClientAnchor
|
||||||
|
stream->seek(4, false);
|
||||||
|
count += 4;
|
||||||
|
break;
|
||||||
|
case 0xF00C:
|
||||||
|
case 0xF11F:
|
||||||
|
case 0xF11D:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
count += skipRecord(header, stream);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readFSP(FSP &fsp, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtFSP structure is described at p.76 [MS-ODRAW]
|
||||||
|
fsp.shapeID = read4Bytes(stream);
|
||||||
|
stream->seek(4, false);
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readArrayFOPTE(std::vector<FOPTE> &fopteArray,unsigned int length, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtRGFOPTE structure is described at p.98 [MS-ODRAW]
|
||||||
|
unsigned int count = 0;
|
||||||
|
while (count < length) {
|
||||||
|
FOPTE fopte;
|
||||||
|
count += readFOPTE(fopte, stream);
|
||||||
|
fopteArray.push_back(fopte);
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < fopteArray.size(); ++i) {
|
||||||
|
if (fopteArray.at(i).isComplex) {
|
||||||
|
stream->seek(fopteArray.at(i).value, false);
|
||||||
|
count += fopteArray.at(i).value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::readFOPTE(FOPTE &fopte, shared_ptr<OleStream> stream) {
|
||||||
|
//OfficeArtFOPTE structure is described at p.32 [MS-ODRAW]
|
||||||
|
unsigned int dtemp;
|
||||||
|
dtemp = read2Bytes (stream);
|
||||||
|
fopte.pID = (dtemp & 0x3fff);
|
||||||
|
fopte.isBlipID = ((dtemp & 0x4000) >> 14) == 0x1;
|
||||||
|
fopte.isComplex = ((dtemp & 0x8000) >> 15) == 0x1;
|
||||||
|
fopte.value = read4Bytes (stream);
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::read1Byte(shared_ptr<OleStream> stream) {
|
||||||
|
char b[1];
|
||||||
|
stream->read(b, 1);
|
||||||
|
return OleUtil::getU1Byte(b, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::read2Bytes(shared_ptr<OleStream> stream) {
|
||||||
|
char b[2];
|
||||||
|
stream->read(b, 2);
|
||||||
|
return OleUtil::getU2Bytes(b, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int DocFloatImageReader::read4Bytes(shared_ptr<OleStream> stream) {
|
||||||
|
char b[4];
|
||||||
|
stream->read(b, 4);
|
||||||
|
return OleUtil::getU4Bytes(b, 0);
|
||||||
|
}
|
||||||
|
|
107
jni/NativeFormats/fbreader/src/formats/doc/DocFloatImageReader.h
Normal file
107
jni/NativeFormats/fbreader/src/formats/doc/DocFloatImageReader.h
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2004-2012 Geometer Plus <contact@geometerplus.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
|
* 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __DOCFLOATIMAGEREADER_H__
|
||||||
|
#define __DOCFLOATIMAGEREADER_H__
|
||||||
|
|
||||||
|
#include <ZLFileImage.h>
|
||||||
|
|
||||||
|
class DocFloatImageReader {
|
||||||
|
|
||||||
|
public:
|
||||||
|
struct BlipStoreEntry { // see p.68 [MS-ODRAW]
|
||||||
|
unsigned int size; // size of blip in stream
|
||||||
|
unsigned int referenceCount; // (cRef) reference count for the the blip
|
||||||
|
unsigned int offsetInDelay; // foDelay, file offset in the delay stream
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Blip { //see p.59, p63-66 [MS-ODRAW]
|
||||||
|
BlipStoreEntry storeEntry;
|
||||||
|
unsigned int type;
|
||||||
|
ZLFileImage::Blocks blocks;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct FSP { //see p.76-77 [MS-ODRAW]
|
||||||
|
unsigned int shapeID; //spid
|
||||||
|
};
|
||||||
|
|
||||||
|
struct FOPTE { //see p.98 and p.32 [MS-ODRAW]
|
||||||
|
unsigned int pID; //pid
|
||||||
|
bool isBlipID; //fBid
|
||||||
|
bool isComplex; //fComplex
|
||||||
|
unsigned int value; //op
|
||||||
|
};
|
||||||
|
|
||||||
|
struct FSPContainer { //see p.53-55 [MS-ODRAW]
|
||||||
|
FSP fsp;
|
||||||
|
std::vector<FOPTE> fopte;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OfficeArtContent { //see p.405-406 [MS-DOC]
|
||||||
|
std::vector<Blip> blips; //retrieved from OfficeArtDggContainer
|
||||||
|
std::vector<FSPContainer> FSPs; //retrieved from OfficeArtDgContainer
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RecordHeader { //see p.26 [MS-ODRAW]
|
||||||
|
unsigned int version;
|
||||||
|
unsigned int instance;
|
||||||
|
unsigned int type;
|
||||||
|
unsigned int length;
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
DocFloatImageReader(unsigned int off, unsigned int len, shared_ptr<OleStream> tableStream, shared_ptr<OleStream> mainStream);
|
||||||
|
|
||||||
|
public:
|
||||||
|
void readAll();
|
||||||
|
|
||||||
|
ZLFileImage::Blocks getBlocksForShapeID(unsigned int shapeID) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static unsigned int readRecordHeader(RecordHeader &header, shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int readDggContainer(OfficeArtContent &item, unsigned int length, shared_ptr<OleStream> stream, shared_ptr<OleStream> mainStream);
|
||||||
|
|
||||||
|
static unsigned int readBStoreContainer(OfficeArtContent &item, unsigned int length, shared_ptr<OleStream> stream, shared_ptr<OleStream> mainStream);
|
||||||
|
static unsigned int readBStoreContainerFileBlock(Blip &blip, shared_ptr<OleStream> stream, shared_ptr<OleStream> mainStream);
|
||||||
|
static unsigned int readBlip(Blip &blip, const RecordHeader &header, shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int readFBSE(BlipStoreEntry &fbse, shared_ptr<OleStream> stream);
|
||||||
|
|
||||||
|
static unsigned int readFOPTE(FOPTE &fopte, shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int readArrayFOPTE(std::vector<FOPTE> &fopte, unsigned int length, shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int readFSP(FSP &fsp, shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int readSpContainter(FSPContainer &item, unsigned int length, shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int readSpgrContainer(OfficeArtContent &item, unsigned int length, shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int readDgContainer(OfficeArtContent &item, unsigned int length, shared_ptr<OleStream> stream);
|
||||||
|
|
||||||
|
static unsigned int skipRecord(const RecordHeader &header, shared_ptr<OleStream> stream);
|
||||||
|
|
||||||
|
static unsigned int read1Byte(shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int read2Bytes(shared_ptr<OleStream> stream);
|
||||||
|
static unsigned int read4Bytes(shared_ptr<OleStream> stream);
|
||||||
|
|
||||||
|
private:
|
||||||
|
shared_ptr<OleStream> myTableStream;
|
||||||
|
shared_ptr<OleStream> myMainStream;
|
||||||
|
unsigned int myOffset;
|
||||||
|
unsigned int myLength;
|
||||||
|
|
||||||
|
OfficeArtContent myItem;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __DOCFLOATIMAGEREADER_H__ */
|
|
@ -18,14 +18,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "OleUtil.h"
|
#include "OleUtil.h"
|
||||||
|
#include "OleMainStream.h"
|
||||||
|
|
||||||
#include "DocImageDataReader.h"
|
#include "DocInlineImageReader.h"
|
||||||
|
|
||||||
DocImageDataReader::DocImageDataReader(shared_ptr<OleStream> dataStream) :
|
DocInlineImageReader::DocInlineImageReader(shared_ptr<OleStream> dataStream) :
|
||||||
myDataStream(dataStream) {
|
myDataStream(dataStream) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ZLFileImage::Blocks DocImageDataReader::getImagePieceInfo(unsigned int dataPos) {
|
ZLFileImage::Blocks DocInlineImageReader::getImagePieceInfo(unsigned int dataPos) {
|
||||||
if (myDataStream.isNull()) {
|
if (myDataStream.isNull()) {
|
||||||
return ZLFileImage::Blocks();
|
return ZLFileImage::Blocks();
|
||||||
}
|
}
|
||||||
|
@ -92,12 +93,12 @@ ZLFileImage::Blocks DocImageDataReader::getImagePieceInfo(unsigned int dataPos)
|
||||||
myDataStream->seek(recordLen, false);
|
myDataStream->seek(recordLen, false);
|
||||||
curOffset += recordLen;
|
curOffset += recordLen;
|
||||||
break;
|
break;
|
||||||
case 0xF01A: //EMF
|
case OleMainStream::EMF: //EMF
|
||||||
case 0xF01B: //WMF
|
case OleMainStream::WMF: //WMF
|
||||||
case 0xF01C: //PICT
|
case OleMainStream::PICT: //PICT
|
||||||
//TODO implement
|
//TODO implement
|
||||||
return ZLFileImage::Blocks();
|
return ZLFileImage::Blocks();
|
||||||
case 0xF01D: //JPEG
|
case OleMainStream::JPEG: case OleMainStream::JPEG2: //JPEG
|
||||||
myDataStream->seek(17, false);
|
myDataStream->seek(17, false);
|
||||||
curOffset += 17;
|
curOffset += 17;
|
||||||
if (recordInstance == 0x46B || recordInstance == 0x6E3) {
|
if (recordInstance == 0x46B || recordInstance == 0x6E3) {
|
||||||
|
@ -106,7 +107,7 @@ ZLFileImage::Blocks DocImageDataReader::getImagePieceInfo(unsigned int dataPos)
|
||||||
}
|
}
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
case 0xF01E: //PNG
|
case OleMainStream::PNG: //PNG
|
||||||
myDataStream->seek(17, false);
|
myDataStream->seek(17, false);
|
||||||
curOffset += 17;
|
curOffset += 17;
|
||||||
if (recordInstance == 0x6E1) {
|
if (recordInstance == 0x6E1) {
|
||||||
|
@ -115,7 +116,7 @@ ZLFileImage::Blocks DocImageDataReader::getImagePieceInfo(unsigned int dataPos)
|
||||||
}
|
}
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
case 0xF01F: //DIB (BMP without 14-bytes header)
|
case OleMainStream::DIB: //DIB (BMP without 14-bytes header)
|
||||||
myDataStream->seek(17, false);
|
myDataStream->seek(17, false);
|
||||||
curOffset += 17;
|
curOffset += 17;
|
||||||
if (recordInstance == 0x7A9) {
|
if (recordInstance == 0x7A9) {
|
||||||
|
@ -124,7 +125,7 @@ ZLFileImage::Blocks DocImageDataReader::getImagePieceInfo(unsigned int dataPos)
|
||||||
}
|
}
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
case 0xF020: //TIFF
|
case OleMainStream::TIFF: //TIFF
|
||||||
myDataStream->seek(17, false);
|
myDataStream->seek(17, false);
|
||||||
curOffset += 17;
|
curOffset += 17;
|
||||||
if (recordInstance == 0x6E5) {
|
if (recordInstance == 0x6E5) {
|
|
@ -17,21 +17,21 @@
|
||||||
* 02110-1301, USA.
|
* 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DOCIMAGEDATAREADER_H__
|
#ifndef __DOCINLINEIMAGEREADER_H__
|
||||||
#define __DOCIMAGEDATAREADER_H__
|
#define __DOCINLINEIMAGEREADER_H__
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "OleStream.h"
|
#include "OleStream.h"
|
||||||
|
|
||||||
class DocImageDataReader {
|
class DocInlineImageReader {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DocImageDataReader(shared_ptr<OleStream> dataStream);
|
DocInlineImageReader(shared_ptr<OleStream> dataStream);
|
||||||
ZLFileImage::Blocks getImagePieceInfo(unsigned int dataPos);
|
ZLFileImage::Blocks getImagePieceInfo(unsigned int dataPos);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
shared_ptr<OleStream> myDataStream;
|
shared_ptr<OleStream> myDataStream;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __DOCIMAGEDATAREADER_H__ */
|
#endif /* __DOCINLINEIMAGEREADER_H__ */
|
|
@ -26,6 +26,8 @@
|
||||||
#include "OleUtil.h"
|
#include "OleUtil.h"
|
||||||
#include "OleStorage.h"
|
#include "OleStorage.h"
|
||||||
|
|
||||||
|
#include "DocInlineImageReader.h"
|
||||||
|
|
||||||
#include "OleMainStream.h"
|
#include "OleMainStream.h"
|
||||||
|
|
||||||
OleMainStream::Style::Style() {
|
OleMainStream::Style::Style() {
|
||||||
|
@ -47,10 +49,14 @@ OleMainStream::SectionInfo::SectionInfo() :
|
||||||
newPage(true) {
|
newPage(true) {
|
||||||
}
|
}
|
||||||
|
|
||||||
OleMainStream::PictureInfo::PictureInfo() :
|
OleMainStream::InlineImageInfo::InlineImageInfo() :
|
||||||
dataPos(0) {
|
dataPos(0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OleMainStream::FloatImageInfo::FloatImageInfo() :
|
||||||
|
shapeID(0) {
|
||||||
|
}
|
||||||
|
|
||||||
OleMainStream::OleMainStream(shared_ptr<OleStorage> storage, OleEntry oleEntry, shared_ptr<ZLInputStream> stream) :
|
OleMainStream::OleMainStream(shared_ptr<OleStorage> storage, OleEntry oleEntry, shared_ptr<ZLInputStream> stream) :
|
||||||
OleStream(storage, oleEntry, stream) {
|
OleStream(storage, oleEntry, stream) {
|
||||||
}
|
}
|
||||||
|
@ -106,6 +112,7 @@ bool OleMainStream::open() {
|
||||||
//readSectionsInfoTable(headerBuffer, tableEntry); //it isn't used now
|
//readSectionsInfoTable(headerBuffer, tableEntry); //it isn't used now
|
||||||
readParagraphStyleTable(headerBuffer, tableEntry);
|
readParagraphStyleTable(headerBuffer, tableEntry);
|
||||||
readCharInfoTable(headerBuffer, tableEntry);
|
readCharInfoTable(headerBuffer, tableEntry);
|
||||||
|
readFloatingImages(headerBuffer, tableEntry);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,12 +132,27 @@ const OleMainStream::Bookmarks &OleMainStream::getBookmarks() const {
|
||||||
return myBookmarks;
|
return myBookmarks;
|
||||||
}
|
}
|
||||||
|
|
||||||
const OleMainStream::PictureInfoList &OleMainStream::getPictureInfoList() const {
|
const OleMainStream::InlineImageInfoList &OleMainStream::getInlineImageInfoList() const {
|
||||||
return myPictureInfoList;
|
return myInlineImageInfoList;
|
||||||
}
|
}
|
||||||
|
|
||||||
shared_ptr<OleStream> OleMainStream::dataStream() const {
|
const OleMainStream::FloatImageInfoList &OleMainStream::getFloatImageInfoList() const {
|
||||||
return myDataStream;
|
return myFloatImageInfoList;
|
||||||
|
}
|
||||||
|
|
||||||
|
ZLFileImage::Blocks OleMainStream::getFloatImage(unsigned int shapeID) const {
|
||||||
|
if (myFLoatImageReader.isNull()) {
|
||||||
|
return ZLFileImage::Blocks();
|
||||||
|
}
|
||||||
|
return myFLoatImageReader->getBlocksForShapeID(shapeID);
|
||||||
|
}
|
||||||
|
|
||||||
|
ZLFileImage::Blocks OleMainStream::getInlineImage(unsigned int dataPos) const {
|
||||||
|
if (myDataStream.isNull()) {
|
||||||
|
return ZLFileImage::Blocks();
|
||||||
|
}
|
||||||
|
DocInlineImageReader imageReader(myDataStream);
|
||||||
|
return imageReader.getImagePieceInfo(dataPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OleMainStream::readFIB(const char *headerBuffer) {
|
bool OleMainStream::readFIB(const char *headerBuffer) {
|
||||||
|
@ -540,9 +562,9 @@ bool OleMainStream::readCharInfoTable(const char *headerBuffer, const OleEntry &
|
||||||
myCharInfoList.push_back(CharPosToCharInfo(charPos, charInfo));
|
myCharInfoList.push_back(CharPosToCharInfo(charPos, charInfo));
|
||||||
|
|
||||||
if (chpxOffset != 0) {
|
if (chpxOffset != 0) {
|
||||||
PictureInfo pictureInfo;
|
InlineImageInfo pictureInfo;
|
||||||
if (getPictureInfo(chpxOffset, formatPageBuffer + 1, len - 1, pictureInfo)) {
|
if (getInlineImageInfo(chpxOffset, formatPageBuffer + 1, len - 1, pictureInfo)) {
|
||||||
myPictureInfoList.push_back(CharPosToPictureInfo(charPos, pictureInfo));
|
myInlineImageInfoList.push_back(CharPosToInlineImageInfo(charPos, pictureInfo));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -552,6 +574,59 @@ bool OleMainStream::readCharInfoTable(const char *headerBuffer, const OleEntry &
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool OleMainStream::readFloatingImages(const char *headerBuffer, const OleEntry &tableEntry) {
|
||||||
|
//Plcspa structure is a table with information for FSPA (File Shape Address)
|
||||||
|
unsigned int beginPicturesInfo = OleUtil::getU4Bytes(headerBuffer, 0x01DA); // address of Plcspa structure
|
||||||
|
if (beginPicturesInfo == 0) {
|
||||||
|
return true; //there's no office art objects
|
||||||
|
}
|
||||||
|
unsigned int picturesInfoLength = OleUtil::getU4Bytes(headerBuffer, 0x01DE); // length of Plcspa structure
|
||||||
|
if (picturesInfoLength < 4) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
OleStream tableStream(myStorage, tableEntry, myBaseStream);
|
||||||
|
std::string buffer;
|
||||||
|
if (!readToBuffer(buffer, beginPicturesInfo, picturesInfoLength, tableStream)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const unsigned int SPA_SIZE = 26;
|
||||||
|
size_t size = calcCountOfPLC(picturesInfoLength, SPA_SIZE);
|
||||||
|
|
||||||
|
std::vector<unsigned int> picturesBlocks;
|
||||||
|
for (size_t index = 0, tOffset = 0; index < size; ++index, tOffset += 4) {
|
||||||
|
picturesBlocks.push_back(OleUtil::getU4Bytes(buffer.c_str(), tOffset));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t index = 0, tOffset = (size + 1) * 4; index < size; ++index, tOffset += SPA_SIZE) {
|
||||||
|
unsigned int spid = OleUtil::getU4Bytes(buffer.c_str(), tOffset);
|
||||||
|
FloatImageInfo info;
|
||||||
|
unsigned int charPos = picturesBlocks.at(index);
|
||||||
|
info.shapeID = spid;
|
||||||
|
myFloatImageInfoList.push_back(CharPosToFloatImageInfo(charPos, info));
|
||||||
|
}
|
||||||
|
|
||||||
|
//DggInfo structure is office art object table data
|
||||||
|
unsigned int beginOfficeArtContent = OleUtil::getU4Bytes(headerBuffer, 0x22A); // address of DggInfo structure
|
||||||
|
if (beginOfficeArtContent == 0) {
|
||||||
|
return true; //there's no office art objects
|
||||||
|
}
|
||||||
|
unsigned int officeArtContentLength = OleUtil::getU4Bytes(headerBuffer, 0x022E); // length of DggInfo structure
|
||||||
|
if (officeArtContentLength < 4) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_ptr<OleStream> newTableStream = new OleStream(myStorage, tableEntry, myBaseStream);
|
||||||
|
shared_ptr<OleStream> newMainStream = new OleStream(myStorage, myOleEntry, myBaseStream);
|
||||||
|
if (newTableStream->open() && newMainStream->open()) {
|
||||||
|
myFLoatImageReader = new DocFloatImageReader(beginOfficeArtContent, officeArtContentLength, newTableStream, newMainStream);
|
||||||
|
myFLoatImageReader->readAll();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool OleMainStream::readParagraphStyleTable(const char *headerBuffer, const OleEntry &tableEntry) {
|
bool OleMainStream::readParagraphStyleTable(const char *headerBuffer, const OleEntry &tableEntry) {
|
||||||
//PlcBtePapx structure is table with formatting for all paragraphs
|
//PlcBtePapx structure is table with formatting for all paragraphs
|
||||||
unsigned int beginParagraphInfo = OleUtil::getU4Bytes(headerBuffer, 0x102); // address of PlcBtePapx structure
|
unsigned int beginParagraphInfo = OleUtil::getU4Bytes(headerBuffer, 0x102); // address of PlcBtePapx structure
|
||||||
|
@ -808,7 +883,7 @@ void OleMainStream::getSectionInfo(const char *grpprlBuffer, size_t bytes, Secti
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OleMainStream::getPictureInfo(unsigned int chpxOffset, const char *grpprlBuffer, unsigned int bytes, PictureInfo &pictureInfo) {
|
bool OleMainStream::getInlineImageInfo(unsigned int chpxOffset, const char *grpprlBuffer, unsigned int bytes, InlineImageInfo &pictureInfo) {
|
||||||
//p. 105 of [MS-DOC] documentation
|
//p. 105 of [MS-DOC] documentation
|
||||||
unsigned int offset = 0;
|
unsigned int offset = 0;
|
||||||
bool isFound = false;
|
bool isFound = false;
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "OleStream.h"
|
#include "OleStream.h"
|
||||||
|
#include "DocFloatImageReader.h"
|
||||||
|
|
||||||
class OleMainStream : public OleStream {
|
class OleMainStream : public OleStream {
|
||||||
public:
|
public:
|
||||||
|
@ -114,13 +115,30 @@ public:
|
||||||
};
|
};
|
||||||
typedef std::vector<Bookmark> Bookmarks;
|
typedef std::vector<Bookmark> Bookmarks;
|
||||||
|
|
||||||
struct PictureInfo {
|
struct InlineImageInfo {
|
||||||
unsigned int dataPos;
|
unsigned int dataPos;
|
||||||
|
InlineImageInfo();
|
||||||
PictureInfo();
|
};
|
||||||
|
typedef std::pair<unsigned int, InlineImageInfo> CharPosToInlineImageInfo;
|
||||||
|
typedef std::vector<CharPosToInlineImageInfo> InlineImageInfoList;
|
||||||
|
|
||||||
|
struct FloatImageInfo {
|
||||||
|
unsigned int shapeID;
|
||||||
|
FloatImageInfo();
|
||||||
|
};
|
||||||
|
typedef std::pair<unsigned int, FloatImageInfo> CharPosToFloatImageInfo;
|
||||||
|
typedef std::vector<CharPosToFloatImageInfo> FloatImageInfoList;
|
||||||
|
|
||||||
|
enum ImageType { //see p. 60 [MS-ODRAW]
|
||||||
|
EMF = 0xF01A,
|
||||||
|
WMF = 0xF01B,
|
||||||
|
PICT = 0xF01C,
|
||||||
|
JPEG = 0xF01D,
|
||||||
|
PNG = 0xF01E,
|
||||||
|
DIB = 0xF01F,
|
||||||
|
TIFF = 0xF029,
|
||||||
|
JPEG2 = 0xF02A
|
||||||
};
|
};
|
||||||
typedef std::pair<unsigned int, PictureInfo> CharPosToPictureInfo;
|
|
||||||
typedef std::vector<CharPosToPictureInfo> PictureInfoList;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OleMainStream(shared_ptr<OleStorage> storage, OleEntry oleEntry, shared_ptr<ZLInputStream> stream);
|
OleMainStream(shared_ptr<OleStorage> storage, OleEntry oleEntry, shared_ptr<ZLInputStream> stream);
|
||||||
|
@ -131,8 +149,11 @@ public:
|
||||||
const CharInfoList &getCharInfoList() const;
|
const CharInfoList &getCharInfoList() const;
|
||||||
const StyleInfoList &getStyleInfoList() const;
|
const StyleInfoList &getStyleInfoList() const;
|
||||||
const Bookmarks &getBookmarks() const;
|
const Bookmarks &getBookmarks() const;
|
||||||
const PictureInfoList &getPictureInfoList() const;
|
const InlineImageInfoList &getInlineImageInfoList() const;
|
||||||
shared_ptr<OleStream> dataStream() const;
|
const FloatImageInfoList &getFloatImageInfoList() const;
|
||||||
|
|
||||||
|
ZLFileImage::Blocks getFloatImage(unsigned int shapeID) const;
|
||||||
|
ZLFileImage::Blocks getInlineImage(unsigned int dataPos) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool readFIB(const char *headerBuffer);
|
bool readFIB(const char *headerBuffer);
|
||||||
|
@ -142,6 +163,7 @@ private:
|
||||||
bool readSectionsInfoTable(const char *headerBuffer, const OleEntry &tableEntry);
|
bool readSectionsInfoTable(const char *headerBuffer, const OleEntry &tableEntry);
|
||||||
bool readParagraphStyleTable(const char *headerBuffer, const OleEntry &tableEntry);
|
bool readParagraphStyleTable(const char *headerBuffer, const OleEntry &tableEntry);
|
||||||
bool readCharInfoTable(const char *headerBuffer, const OleEntry &tableEntry);
|
bool readCharInfoTable(const char *headerBuffer, const OleEntry &tableEntry);
|
||||||
|
bool readFloatingImages(const char *headerBuffer, const OleEntry &tableEntry);
|
||||||
|
|
||||||
private: //readPieceTable helpers methods
|
private: //readPieceTable helpers methods
|
||||||
static std::string getPiecesTableBuffer(const char *headerBuffer, OleStream &tableStream);
|
static std::string getPiecesTableBuffer(const char *headerBuffer, OleStream &tableStream);
|
||||||
|
@ -152,7 +174,7 @@ private: //formatting reader helpers methods
|
||||||
static void getCharInfo(unsigned int chpxOffset, unsigned int istd, const char *grpprlBuffer, unsigned int bytes, CharInfo &charInfo);
|
static void getCharInfo(unsigned int chpxOffset, unsigned int istd, const char *grpprlBuffer, unsigned int bytes, CharInfo &charInfo);
|
||||||
static void getStyleInfo(unsigned int papxOffset, const char *grpprlBuffer, unsigned int bytes, Style &styleInfo);
|
static void getStyleInfo(unsigned int papxOffset, const char *grpprlBuffer, unsigned int bytes, Style &styleInfo);
|
||||||
static void getSectionInfo(const char *grpprlBuffer, size_t bytes, SectionInfo §ionInfo);
|
static void getSectionInfo(const char *grpprlBuffer, size_t bytes, SectionInfo §ionInfo);
|
||||||
static bool getPictureInfo(unsigned int chpxOffset, const char *grpprlBuffer, unsigned int bytes, PictureInfo &pictureInfo);
|
static bool getInlineImageInfo(unsigned int chpxOffset, const char *grpprlBuffer, unsigned int bytes, InlineImageInfo &pictureInfo);
|
||||||
|
|
||||||
static Style getStyleFromStylesheet(unsigned int istd, const StyleSheet &stylesheet);
|
static Style getStyleFromStylesheet(unsigned int istd, const StyleSheet &stylesheet);
|
||||||
static int getStyleIndex(unsigned int istd, const std::vector<bool> &isFilled, const StyleSheet &stylesheet);
|
static int getStyleIndex(unsigned int istd, const std::vector<bool> &isFilled, const StyleSheet &stylesheet);
|
||||||
|
@ -182,11 +204,14 @@ private:
|
||||||
CharInfoList myCharInfoList;
|
CharInfoList myCharInfoList;
|
||||||
StyleInfoList myStyleInfoList;
|
StyleInfoList myStyleInfoList;
|
||||||
SectionInfoList mySectionInfoList;
|
SectionInfoList mySectionInfoList;
|
||||||
PictureInfoList myPictureInfoList;
|
InlineImageInfoList myInlineImageInfoList;
|
||||||
|
FloatImageInfoList myFloatImageInfoList;
|
||||||
|
|
||||||
Bookmarks myBookmarks;
|
Bookmarks myBookmarks;
|
||||||
|
|
||||||
shared_ptr<OleStream> myDataStream;
|
shared_ptr<OleStream> myDataStream;
|
||||||
|
|
||||||
|
shared_ptr<DocFloatImageReader> myFLoatImageReader;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __OLEMAINSTREAM_H__ */
|
#endif /* __OLEMAINSTREAM_H__ */
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#include "OleMainStream.h"
|
#include "OleMainStream.h"
|
||||||
#include "DocBookReader.h"
|
#include "DocBookReader.h"
|
||||||
#include "OleUtil.h"
|
#include "OleUtil.h"
|
||||||
#include "DocImageDataReader.h"
|
#include "DocInlineImageReader.h"
|
||||||
|
|
||||||
#include "OleStreamReader.h"
|
#include "OleStreamReader.h"
|
||||||
|
|
||||||
|
@ -43,8 +43,8 @@ const ZLUnicodeUtil::Ucs2Char OleStreamReader::WORD_START_FIELD = 0x0013;
|
||||||
const ZLUnicodeUtil::Ucs2Char OleStreamReader::WORD_SEPARATOR_FIELD = 0x0014;
|
const ZLUnicodeUtil::Ucs2Char OleStreamReader::WORD_SEPARATOR_FIELD = 0x0014;
|
||||||
const ZLUnicodeUtil::Ucs2Char OleStreamReader::WORD_END_FIELD = 0x0015;
|
const ZLUnicodeUtil::Ucs2Char OleStreamReader::WORD_END_FIELD = 0x0015;
|
||||||
const ZLUnicodeUtil::Ucs2Char OleStreamReader::WORD_ZERO_WIDTH_UNBREAKABLE_SPACE = 0xfeff;
|
const ZLUnicodeUtil::Ucs2Char OleStreamReader::WORD_ZERO_WIDTH_UNBREAKABLE_SPACE = 0xfeff;
|
||||||
const ZLUnicodeUtil::Ucs2Char OleStreamReader::PICTURE = 0x0001;
|
const ZLUnicodeUtil::Ucs2Char OleStreamReader::INLINE_IMAGE = 0x0001;
|
||||||
const ZLUnicodeUtil::Ucs2Char OleStreamReader::DRAWN_OBJECT = 0x0008;
|
const ZLUnicodeUtil::Ucs2Char OleStreamReader::FLOAT_IMAGE = 0x0008;
|
||||||
|
|
||||||
//unicode values:
|
//unicode values:
|
||||||
const ZLUnicodeUtil::Ucs2Char OleStreamReader::NULL_SYMBOL = 0x0;
|
const ZLUnicodeUtil::Ucs2Char OleStreamReader::NULL_SYMBOL = 0x0;
|
||||||
|
@ -69,7 +69,8 @@ void OleStreamReader::clear() {
|
||||||
myNextStyleInfoIndex = 0;
|
myNextStyleInfoIndex = 0;
|
||||||
myNextCharInfoIndex = 0;
|
myNextCharInfoIndex = 0;
|
||||||
myNextBookmarkIndex = 0;
|
myNextBookmarkIndex = 0;
|
||||||
myNextPictureInfoIndex = 0;
|
myNextInlineImageInfoIndex = 0;
|
||||||
|
myNextFloatImageInfoIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OleStreamReader::readStream(OleMainStream &oleMainStream) {
|
bool OleStreamReader::readStream(OleMainStream &oleMainStream) {
|
||||||
|
@ -125,8 +126,7 @@ bool OleStreamReader::readStream(OleMainStream &oleMainStream) {
|
||||||
case WORD_END_FIELD:
|
case WORD_END_FIELD:
|
||||||
handleEndField();
|
handleEndField();
|
||||||
break;
|
break;
|
||||||
case PICTURE:
|
case INLINE_IMAGE: case FLOAT_IMAGE:
|
||||||
//pictures handle method is called from processPicture()
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
handleOtherControlChar(ucs2char);
|
handleOtherControlChar(ucs2char);
|
||||||
|
@ -157,34 +157,51 @@ bool OleStreamReader::getUcs2Char(OleMainStream &stream, ZLUnicodeUtil::Ucs2Char
|
||||||
}
|
}
|
||||||
ucs2char = myBuffer.at(myCurBufferPosition++);
|
ucs2char = myBuffer.at(myCurBufferPosition++);
|
||||||
processStyles(stream);
|
processStyles(stream);
|
||||||
if (ucs2char == PICTURE) {
|
|
||||||
processPicture(stream);
|
if (ucs2char == INLINE_IMAGE) {
|
||||||
|
processInlineImage(stream);
|
||||||
|
} else if (ucs2char == FLOAT_IMAGE) {
|
||||||
|
processFloatImage(stream);
|
||||||
}
|
}
|
||||||
++myCurCharPos;
|
++myCurCharPos;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OleStreamReader::processPicture(OleMainStream &stream) {
|
void OleStreamReader::processInlineImage(OleMainStream &stream) {
|
||||||
shared_ptr<OleStream> dataStream = stream.dataStream();
|
const OleMainStream::InlineImageInfoList &imageInfoList = stream.getInlineImageInfoList();
|
||||||
if (dataStream.isNull()) {
|
if (imageInfoList.empty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const OleMainStream::PictureInfoList &pictureInfoList = stream.getPictureInfoList();
|
//seek to curCharPos, because not all entries are real pictures
|
||||||
if (pictureInfoList.empty()) {
|
while(myNextInlineImageInfoIndex < imageInfoList.size() && imageInfoList.at(myNextInlineImageInfoIndex).first < myCurCharPos) {
|
||||||
return;
|
++myNextInlineImageInfoIndex;
|
||||||
}
|
}
|
||||||
//seek to curCharPos, because not all entries in PictureInfo are real pictures
|
while (myNextInlineImageInfoIndex < imageInfoList.size() && imageInfoList.at(myNextInlineImageInfoIndex).first == myCurCharPos) {
|
||||||
while(myNextPictureInfoIndex < pictureInfoList.size() && pictureInfoList.at(myNextPictureInfoIndex).first < myCurCharPos) {
|
OleMainStream::InlineImageInfo info = imageInfoList.at(myNextInlineImageInfoIndex).second;
|
||||||
++myNextPictureInfoIndex;
|
ZLFileImage::Blocks list = stream.getInlineImage(info.dataPos);
|
||||||
}
|
|
||||||
while (myNextPictureInfoIndex < pictureInfoList.size() && pictureInfoList.at(myNextPictureInfoIndex).first == myCurCharPos) {
|
|
||||||
OleMainStream::PictureInfo info = pictureInfoList.at(myNextPictureInfoIndex).second;
|
|
||||||
DocImageDataReader imageReader(dataStream);
|
|
||||||
ZLFileImage::Blocks list = imageReader.getImagePieceInfo(info.dataPos);
|
|
||||||
if (!list.empty()) {
|
if (!list.empty()) {
|
||||||
handlePicture(list);
|
handleImage(list);
|
||||||
}
|
}
|
||||||
++myNextPictureInfoIndex;
|
++myNextInlineImageInfoIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OleStreamReader::processFloatImage(OleMainStream &stream) {
|
||||||
|
const OleMainStream::FloatImageInfoList &imageInfoList = stream.getFloatImageInfoList();
|
||||||
|
if (imageInfoList.empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//seek to curCharPos, because not all entries are real pictures
|
||||||
|
while(myNextFloatImageInfoIndex < imageInfoList.size() && imageInfoList.at(myNextFloatImageInfoIndex).first < myCurCharPos) {
|
||||||
|
++myNextFloatImageInfoIndex;
|
||||||
|
}
|
||||||
|
while (myNextFloatImageInfoIndex < imageInfoList.size() && imageInfoList.at(myNextFloatImageInfoIndex).first == myCurCharPos) {
|
||||||
|
OleMainStream::FloatImageInfo info = imageInfoList.at(myNextFloatImageInfoIndex).second;
|
||||||
|
ZLFileImage::Blocks list = stream.getFloatImage(info.shapeID);
|
||||||
|
if (!list.empty()) {
|
||||||
|
handleImage(list);
|
||||||
|
}
|
||||||
|
++myNextFloatImageInfoIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,8 @@ public:
|
||||||
static const ZLUnicodeUtil::Ucs2Char WORD_SEPARATOR_FIELD;
|
static const ZLUnicodeUtil::Ucs2Char WORD_SEPARATOR_FIELD;
|
||||||
static const ZLUnicodeUtil::Ucs2Char WORD_END_FIELD;
|
static const ZLUnicodeUtil::Ucs2Char WORD_END_FIELD;
|
||||||
static const ZLUnicodeUtil::Ucs2Char WORD_ZERO_WIDTH_UNBREAKABLE_SPACE;
|
static const ZLUnicodeUtil::Ucs2Char WORD_ZERO_WIDTH_UNBREAKABLE_SPACE;
|
||||||
static const ZLUnicodeUtil::Ucs2Char PICTURE;
|
static const ZLUnicodeUtil::Ucs2Char INLINE_IMAGE;
|
||||||
static const ZLUnicodeUtil::Ucs2Char DRAWN_OBJECT;
|
static const ZLUnicodeUtil::Ucs2Char FLOAT_IMAGE;
|
||||||
|
|
||||||
//unicode values:
|
//unicode values:
|
||||||
static const ZLUnicodeUtil::Ucs2Char NULL_SYMBOL;
|
static const ZLUnicodeUtil::Ucs2Char NULL_SYMBOL;
|
||||||
|
@ -71,7 +71,7 @@ protected:
|
||||||
virtual void handleStartField() = 0;
|
virtual void handleStartField() = 0;
|
||||||
virtual void handleSeparatorField() = 0;
|
virtual void handleSeparatorField() = 0;
|
||||||
virtual void handleEndField() = 0;
|
virtual void handleEndField() = 0;
|
||||||
virtual void handlePicture(const ZLFileImage::Blocks &blocks) = 0;
|
virtual void handleImage(const ZLFileImage::Blocks &blocks) = 0;
|
||||||
virtual void handleOtherControlChar(ZLUnicodeUtil::Ucs2Char ucs2char) = 0;
|
virtual void handleOtherControlChar(ZLUnicodeUtil::Ucs2Char ucs2char) = 0;
|
||||||
|
|
||||||
virtual void handleFontStyle(unsigned int fontStyle) = 0;
|
virtual void handleFontStyle(unsigned int fontStyle) = 0;
|
||||||
|
@ -80,7 +80,8 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool getUcs2Char(OleMainStream &stream, ZLUnicodeUtil::Ucs2Char &ucs2char);
|
bool getUcs2Char(OleMainStream &stream, ZLUnicodeUtil::Ucs2Char &ucs2char);
|
||||||
void processPicture(OleMainStream &stream);
|
void processInlineImage(OleMainStream &stream);
|
||||||
|
void processFloatImage(OleMainStream &stream);
|
||||||
void processStyles(OleMainStream &stream);
|
void processStyles(OleMainStream &stream);
|
||||||
bool fillBuffer(OleMainStream &stream);
|
bool fillBuffer(OleMainStream &stream);
|
||||||
|
|
||||||
|
@ -97,7 +98,8 @@ private:
|
||||||
size_t myNextStyleInfoIndex;
|
size_t myNextStyleInfoIndex;
|
||||||
size_t myNextCharInfoIndex;
|
size_t myNextCharInfoIndex;
|
||||||
size_t myNextBookmarkIndex;
|
size_t myNextBookmarkIndex;
|
||||||
size_t myNextPictureInfoIndex;
|
size_t myNextInlineImageInfoIndex;
|
||||||
|
size_t myNextFloatImageInfoIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __OLESTREAMREADER_H__ */
|
#endif /* __OLESTREAMREADER_H__ */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue