Kaydet (Commit) 5ea92728 authored tarafından David Tardon's avatar David Tardon

upload libepubgen 0.1.1

Change-Id: Ib294f412055ef23a6ca5608675bc924dacae56f4
Reviewed-on: https://gerrit.libreoffice.org/55248Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarDavid Tardon <dtardon@redhat.com>
üst 06f819ba
......@@ -37,8 +37,8 @@ export EPOXY_SHA256SUM := 1d8668b0a259c709899e1c4bab62d756d9002d546ce4f59c9665e2
export EPOXY_TARBALL := libepoxy-1.3.1.tar.bz2
export EPM_SHA256SUM := b3fc4c5445de6c9a801504a3ea3efb2d4ea9d5a622c9427e716736e7713ddb91
export EPM_TARBALL := 3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz
export EPUBGEN_SHA256SUM := 730bd1cbeee166334faadbc06c953a67b145c3c4754a3b503482066dae4cd633
export EPUBGEN_TARBALL := libepubgen-0.1.0.tar.bz2
export EPUBGEN_SHA256SUM := 03e084b994cbeffc8c3dd13303b2cb805f44d8f2c3b79f7690d7e3fc7f6215ad
export EPUBGEN_TARBALL := libepubgen-0.1.1.tar.xz
export ETONYEK_SHA256SUM := 9dc92347aee0cc9ed57b175a3e21f9d96ebe55d30fecb10e841d1050794ed82d
export ETONYEK_VERSION_MICRO := 8
export ETONYEK_TARBALL := libetonyek-0.1.$(ETONYEK_VERSION_MICRO).tar.xz
......
From 16c4e93af6d5eb9d021a671c54af664edc120df9 Mon Sep 17 00:00:00 2001
From: Mark Hung <marklh9@gmail.com>
Date: Mon, 23 Apr 2018 01:24:48 +0800
Subject: [PATCH] Enclose <span> with <ruby> if text:ruby-text is set.
---
src/lib/EPUBHTMLGenerator.cpp | 22 ++++++++++++++++++++++
src/test/EPUBTextGeneratorTest.cpp | 25 +++++++++++++++++++++++++
2 files changed, 47 insertions(+)
diff --git a/src/lib/EPUBHTMLGenerator.cpp b/src/lib/EPUBHTMLGenerator.cpp
index 0080816..a4467a9 100644
--- a/src/lib/EPUBHTMLGenerator.cpp
+++ b/src/lib/EPUBHTMLGenerator.cpp
@@ -397,6 +397,7 @@ struct EPUBHTMLGeneratorImpl
, m_linkPropertiesStack()
, m_paragraphAttributesStack()
, m_spanAttributesStack()
+ , m_rubyText()
, m_stylesMethod(stylesMethod)
, m_layoutMethod(layoutMethod)
, m_actualSink()
@@ -500,6 +501,9 @@ struct EPUBHTMLGeneratorImpl
std::stack<RVNGPropertyList> m_paragraphAttributesStack;
std::stack<RVNGPropertyList> m_spanAttributesStack;
+ /// This is set when the span has ruby text and should be wrapped in <ruby></ruby>.
+ std::string m_rubyText;
+
EPUBStylesMethod m_stylesMethod;
EPUBLayoutMethod m_layoutMethod;
@@ -743,6 +747,14 @@ void EPUBHTMLGenerator::openSpan(const RVNGPropertyList &propList)
attrs.insert("style", m_impl->m_spanManager.getStyle(propList, false).c_str());
break;
}
+
+ const librevenge::RVNGProperty *rubyText = propList["text:ruby-text"];
+ if (rubyText)
+ {
+ m_impl->m_rubyText = rubyText->getStr().cstr();
+ m_impl->output(false).openElement("ruby", attrs);
+ }
+
m_impl->output(false).openElement("span", attrs);
librevenge::RVNGPropertyList::Iter i(attrs);
@@ -761,6 +773,16 @@ void EPUBHTMLGenerator::closeSpan()
m_impl->m_spanAttributesStack.pop();
m_impl->output().closeElement("span");
+
+ if (m_impl->m_rubyText.length())
+ {
+ m_impl->output().openElement("rt");
+ m_impl->output().insertCharacters(m_impl->m_rubyText.c_str());
+ m_impl->output().closeElement("rt");
+ m_impl->output().closeElement("ruby");
+ m_impl->m_hasText = true;
+ m_impl->m_rubyText.clear();
+ }
}
void EPUBHTMLGenerator::openLink(const RVNGPropertyList &propList)
diff --git a/src/test/EPUBTextGeneratorTest.cpp b/src/test/EPUBTextGeneratorTest.cpp
index f03824f..61c7cac 100644
--- a/src/test/EPUBTextGeneratorTest.cpp
+++ b/src/test/EPUBTextGeneratorTest.cpp
@@ -240,6 +240,7 @@ private:
CPPUNIT_TEST(testSplitOnHeadingInPageSpan);
CPPUNIT_TEST(testSplitOnSizeInPageSpan);
CPPUNIT_TEST(testManyWritingModes);
+ CPPUNIT_TEST(testRubyElements);
CPPUNIT_TEST_SUITE_END();
private:
@@ -284,6 +285,7 @@ private:
void testSplitOnHeadingInPageSpan();
void testSplitOnSizeInPageSpan();
void testManyWritingModes();
+ void testRubyElements();
/// Asserts that exactly one xpath exists in buffer, and its content equals content.
void assertXPathContent(xmlBufferPtr buffer, const std::string &xpath, const std::string &content);
@@ -1507,6 +1509,29 @@ void EPUBTextGeneratorTest::testManyWritingModes()
assertXPath(package.m_streams["OEBPS/sections/section0002.xhtml"], "//xhtml:body", "class", "body1");
}
+void EPUBTextGeneratorTest::testRubyElements()
+{
+ StringEPUBPackage package;
+ libepubgen::EPUBTextGenerator generator(&package);
+ generator.startDocument(librevenge::RVNGPropertyList());
+ generator.openParagraph(librevenge::RVNGPropertyList());
+ {
+ librevenge::RVNGPropertyList span;
+ span.insert("text:ruby-text", "ruby text");
+ generator.openSpan(span);
+ generator.insertText("base text");
+ generator.closeSpan();
+ }
+ generator.closeParagraph();
+ generator.endDocument();
+
+ // Expects: <ruby><span>base text</span><rt>ruby text</rt></ruby>
+ CPPUNIT_ASSERT_XPATH(package.m_streams["OEBPS/sections/section0001.xhtml"], "//xhtml:ruby", 1);
+ CPPUNIT_ASSERT_XPATH_CONTENT(package.m_streams["OEBPS/sections/section0001.xhtml"], "//xhtml:ruby/xhtml:rt", "ruby text");
+ CPPUNIT_ASSERT_XPATH_CONTENT(package.m_streams["OEBPS/sections/section0001.xhtml"], "//xhtml:ruby/xhtml:span", "base text");
+}
+
+
CPPUNIT_TEST_SUITE_REGISTRATION(EPUBTextGeneratorTest);
}
--
2.14.1
From c3bd3bee2f6e01f0b5f5a8fb376ce175573a8e96 Mon Sep 17 00:00:00 2001
From: Mark Hung <marklh9@gmail.com>
Date: Sat, 24 Mar 2018 12:50:12 +0800
Subject: [PATCH 2/3] Always keep page properties when splitting the HTML file.
Those page properties shall be changed only via openPageSpan.
It was kept only when the layout out method is EPUB_LAYOUT_METHOD_FIXED
before.
---
src/lib/EPUBGenerator.cpp | 9 ++--
src/test/EPUBTextGeneratorTest.cpp | 98 ++++++++++++++++++++++++++++++++++++--
2 files changed, 99 insertions(+), 8 deletions(-)
diff --git a/src/lib/EPUBGenerator.cpp b/src/lib/EPUBGenerator.cpp
index 56db4dc..110667f 100644
--- a/src/lib/EPUBGenerator.cpp
+++ b/src/lib/EPUBGenerator.cpp
@@ -110,21 +110,20 @@ void EPUBGenerator::setDocumentMetaData(const RVNGPropertyList &props)
void EPUBGenerator::startNewHtmlFile()
{
// close the current HTML file
+ librevenge::RVNGPropertyList pageProperties;
if (bool(m_currentHtml))
{
endHtmlFile();
m_currentHtml->endDocument();
+ m_currentHtml->getPageProperties(pageProperties);
}
m_splitGuard.onSplit();
- librevenge::RVNGPropertyList pageProperties;
- if (m_layoutMethod == EPUB_LAYOUT_METHOD_FIXED && m_currentHtml)
- m_currentHtml->getPageProperties(pageProperties);
m_currentHtml = m_htmlManager.create(m_imageManager, m_fontManager, m_listStyleManager, m_paragraphStyleManager, m_spanStyleManager, m_tableStyleManager, m_stylesheetPath, m_stylesMethod, m_layoutMethod, m_version);
- if (m_layoutMethod == EPUB_LAYOUT_METHOD_FIXED)
- m_currentHtml->setPageProperties(pageProperties);
+ // Splitted html file should keep the same page property.
+ m_currentHtml->setPageProperties(pageProperties);
// restore state in the new file
m_currentHtml->startDocument(m_documentProps);
diff --git a/src/test/EPUBTextGeneratorTest.cpp b/src/test/EPUBTextGeneratorTest.cpp
index cf5e35f..0946408 100644
--- a/src/test/EPUBTextGeneratorTest.cpp
+++ b/src/test/EPUBTextGeneratorTest.cpp
@@ -235,7 +235,10 @@ private:
CPPUNIT_TEST(testFixedLayoutSpine);
CPPUNIT_TEST(testPageBreak);
CPPUNIT_TEST(testPageBreakImage);
- CPPUNIT_TEST(testWritingMode);
+ CPPUNIT_TEST(testPageSpanProperties);
+ CPPUNIT_TEST(testSplitOnPageBreakInPageSpan);
+ CPPUNIT_TEST(testSplitOnHeadingInPageSpan);
+ CPPUNIT_TEST(testSplitOnSizeInPageSpan);
CPPUNIT_TEST_SUITE_END();
private:
@@ -275,7 +278,10 @@ private:
void testFixedLayoutSpine();
void testPageBreak();
void testPageBreakImage();
- void testWritingMode();
+ void testPageSpanProperties();
+ void testSplitOnPageBreakInPageSpan();
+ void testSplitOnHeadingInPageSpan();
+ void testSplitOnSizeInPageSpan();
/// Asserts that exactly one xpath exists in buffer, and its content equals content.
void assertXPathContent(xmlBufferPtr buffer, const std::string &xpath, const std::string &content);
@@ -1352,7 +1358,7 @@ void EPUBTextGeneratorTest::testPageBreakImage()
CPPUNIT_ASSERT(package.m_streams.find("OEBPS/sections/section0002.xhtml") != package.m_streams.end());
}
-void EPUBTextGeneratorTest::testWritingMode()
+void EPUBTextGeneratorTest::testPageSpanProperties()
{
StringEPUBPackage package;
libepubgen::EPUBTextGenerator generator(&package);
@@ -1368,11 +1374,97 @@ void EPUBTextGeneratorTest::testWritingMode()
generator.openParagraph(para);
generator.insertText("Para1");
generator.closeParagraph();
+ }
+ generator.endDocument();
+ assertCss(package.m_cssStreams["OEBPS/styles/stylesheet.css"], ".body0", "writing-mode: vertical-rl", true);
+ assertXPath(package.m_streams["OEBPS/sections/section0001.xhtml"], "//xhtml:body", "class", "body0");
+}
+
+void EPUBTextGeneratorTest::testSplitOnPageBreakInPageSpan()
+{
+ StringEPUBPackage package;
+ libepubgen::EPUBTextGenerator generator(&package);
+ generator.setOption(libepubgen::EPUB_GENERATOR_OPTION_SPLIT, libepubgen::EPUB_SPLIT_METHOD_PAGE_BREAK);
+ generator.startDocument(librevenge::RVNGPropertyList());
+
+ {
+ librevenge::RVNGPropertyList page;
+ page.insert("style:writing-mode", "tb");
+ generator.openPageSpan(page);
+
+ librevenge::RVNGPropertyList para;
+ generator.openParagraph(para);
+ generator.insertText("Para1");
+ generator.closeParagraph();
+ // Splitting a new html file inside the page span, the writing-mode shall not change.
+ para.insert("fo:break-before", "page");
+ generator.openParagraph(para);
+ generator.insertText("Para2");
+ generator.closeParagraph();
+ generator.closePageSpan();
+ }
+ generator.endDocument();
+ assertCss(package.m_cssStreams["OEBPS/styles/stylesheet.css"], ".body0", "writing-mode: vertical-rl", true);
+ assertXPath(package.m_streams["OEBPS/sections/section0001.xhtml"], "//xhtml:body", "class", "body0");
+ assertXPath(package.m_streams["OEBPS/sections/section0002.xhtml"], "//xhtml:body", "class", "body0");
+}
+
+void EPUBTextGeneratorTest::testSplitOnHeadingInPageSpan()
+{
+ StringEPUBPackage package;
+ libepubgen::EPUBTextGenerator generator(&package);
+ generator.setOption(libepubgen::EPUB_GENERATOR_OPTION_SPLIT, libepubgen::EPUB_SPLIT_METHOD_HEADING);
+ generator.startDocument(librevenge::RVNGPropertyList());
+
+ {
+ librevenge::RVNGPropertyList page;
+ page.insert("style:writing-mode", "tb");
+ generator.openPageSpan(page);
+
+ librevenge::RVNGPropertyList para;
+ para.insert("text:outline-level", "1");
+ generator.openParagraph(para);
+ generator.insertText("Chapter1");
+ generator.closeParagraph();
+ // Splitting a new html file inside the page span, the writing-mode shall not change.
+ generator.openParagraph(para);
+ generator.insertText("Chapter2");
+ generator.closeParagraph();
+ generator.closePageSpan();
+ }
+ generator.endDocument();
+ assertCss(package.m_cssStreams["OEBPS/styles/stylesheet.css"], ".body0", "writing-mode: vertical-rl", true);
+ assertXPath(package.m_streams["OEBPS/sections/section0001.xhtml"], "//xhtml:body", "class", "body0");
+ assertXPath(package.m_streams["OEBPS/sections/section0002.xhtml"], "//xhtml:body", "class", "body0");
+}
+
+void EPUBTextGeneratorTest::testSplitOnSizeInPageSpan()
+{
+ StringEPUBPackage package;
+ libepubgen::EPUBTextGenerator generator(&package);
+ generator.setOption(libepubgen::EPUB_GENERATOR_OPTION_SPLIT, libepubgen::EPUB_SPLIT_METHOD_SIZE);
+ generator.setSplitSize(5);
+ generator.startDocument(librevenge::RVNGPropertyList());
+
+ {
+ librevenge::RVNGPropertyList page;
+ page.insert("style:writing-mode", "tb");
+ generator.openPageSpan(page);
+
+ librevenge::RVNGPropertyList para;
+ generator.openParagraph(para);
+ generator.insertText("Hello!");
+ generator.closeParagraph();
+ // Splitting a new html file inside the page span, the writing-mode shall not change.
+ generator.openParagraph(para);
+ generator.insertText("Hello!");
+ generator.closeParagraph();
generator.closePageSpan();
}
generator.endDocument();
assertCss(package.m_cssStreams["OEBPS/styles/stylesheet.css"], ".body0", "writing-mode: vertical-rl", true);
assertXPath(package.m_streams["OEBPS/sections/section0001.xhtml"], "//xhtml:body", "class", "body0");
+ assertXPath(package.m_streams["OEBPS/sections/section0002.xhtml"], "//xhtml:body", "class", "body0");
}
CPPUNIT_TEST_SUITE_REGISTRATION(EPUBTextGeneratorTest);
--
2.14.1
From 715786e10deaa6849a6e46b5a9884edde44e194b Mon Sep 17 00:00:00 2001
From: Mark Hung <marklh9@gmail.com>
Date: Sun, 25 Mar 2018 10:27:07 +0800
Subject: [PATCH 3/3] Ensure page properties in the page span works.
As the page properties are converted to CSS styles of the
body element, this patch force it to start a new HTML file
when openPageSpan is invoked to open the second page span.
This ensures that page properties in every page span works,
even there are multiple page spans between intentional HTML
page splits such as on size, on headings, or on page breaks.
---
src/lib/EPUBGenerator.cpp | 4 +++-
src/lib/EPUBSplitGuard.cpp | 19 ++++++++++++++++++-
src/lib/EPUBSplitGuard.h | 7 ++++++-
src/lib/EPUBTextGenerator.cpp | 5 +++++
src/test/EPUBTextGeneratorTest.cpp | 38 ++++++++++++++++++++++++++++++++++++++
5 files changed, 70 insertions(+), 3 deletions(-)
diff --git a/src/lib/EPUBGenerator.cpp b/src/lib/EPUBGenerator.cpp
index 110667f..9e0c972 100644
--- a/src/lib/EPUBGenerator.cpp
+++ b/src/lib/EPUBGenerator.cpp
@@ -44,7 +44,7 @@ EPUBGenerator::EPUBGenerator(EPUBPackage *const package, int version)
, m_documentProps()
, m_metadata()
, m_currentHtml()
- , m_splitGuard(EPUB_SPLIT_METHOD_PAGE_BREAK)
+ , m_splitGuard(EPUB_SPLIT_METHOD_PAGE_BREAK,true)
, m_version(version)
, m_stylesMethod(EPUB_STYLES_METHOD_CSS)
, m_layoutMethod(EPUB_LAYOUT_METHOD_REFLOWABLE)
@@ -173,6 +173,8 @@ void EPUBGenerator::setLayoutMethod(EPUBLayoutMethod layout)
if (m_layoutMethod == EPUB_LAYOUT_METHOD_FIXED)
// Fixed layout implies split on page break.
m_splitGuard.setSplitMethod(EPUB_SPLIT_METHOD_PAGE_BREAK);
+
+ m_splitGuard.setSplitOnSecondPageSpan(m_layoutMethod == EPUB_LAYOUT_METHOD_REFLOWABLE);
}
void EPUBGenerator::writeContainer()
diff --git a/src/lib/EPUBSplitGuard.cpp b/src/lib/EPUBSplitGuard.cpp
index 4f7531d..5bee515 100644
--- a/src/lib/EPUBSplitGuard.cpp
+++ b/src/lib/EPUBSplitGuard.cpp
@@ -15,8 +15,10 @@ namespace libepubgen
static const unsigned DEFAULT_SPLIT_HEADING_LEVEL = 1;
static const unsigned DEFAULT_SPLIT_SIZE = 1 << 16;
-EPUBSplitGuard::EPUBSplitGuard(const EPUBSplitMethod method)
+EPUBSplitGuard::EPUBSplitGuard(const EPUBSplitMethod method,bool splitOnSecondPageSpan)
: m_method(method)
+ , m_splitOnSecondPageSpan(splitOnSecondPageSpan)
+ , m_htmlEverInPageSpan(false)
, m_headingLevel(DEFAULT_SPLIT_HEADING_LEVEL)
, m_currentHeadingLevel(0)
, m_size(DEFAULT_SPLIT_SIZE)
@@ -25,6 +27,11 @@ EPUBSplitGuard::EPUBSplitGuard(const EPUBSplitMethod method)
{
}
+void EPUBSplitGuard::setHtmlEverInPageSpan(bool value)
+{
+ m_htmlEverInPageSpan = value;
+}
+
void EPUBSplitGuard::setSplitHeadingLevel(const unsigned level)
{
m_headingLevel = level;
@@ -45,6 +52,11 @@ void EPUBSplitGuard::setSplitMethod(EPUBSplitMethod method)
m_method = method;
}
+void EPUBSplitGuard::setSplitOnSecondPageSpan(bool value)
+{
+ m_splitOnSecondPageSpan = value;
+}
+
void EPUBSplitGuard::openLevel()
{
++m_nestingLevel;
@@ -70,6 +82,11 @@ bool EPUBSplitGuard::splitOnHeading(const unsigned level) const
return canSplit(EPUB_SPLIT_METHOD_HEADING) && (m_headingLevel >= level);
}
+bool EPUBSplitGuard::splitOnSecondPageSpan() const
+{
+ return m_splitOnSecondPageSpan && m_htmlEverInPageSpan;
+}
+
bool EPUBSplitGuard::inHeading(bool any) const
{
if (!m_currentHeadingLevel)
diff --git a/src/lib/EPUBSplitGuard.h b/src/lib/EPUBSplitGuard.h
index ff55846..a55bad3 100644
--- a/src/lib/EPUBSplitGuard.h
+++ b/src/lib/EPUBSplitGuard.h
@@ -18,13 +18,15 @@ namespace libepubgen
class EPUBSplitGuard
{
public:
- explicit EPUBSplitGuard(EPUBSplitMethod method);
+ explicit EPUBSplitGuard(EPUBSplitMethod method,bool splitOnSecondPageSpan);
void setSplitHeadingLevel(unsigned level);
void setCurrentHeadingLevel(unsigned level);
void setSplitSize(unsigned size);
+ void setHtmlEverInPageSpan(bool value);
/// Allows overwriting the value given in the constructor.
void setSplitMethod(EPUBSplitMethod method);
+ void setSplitOnSecondPageSpan(bool value);
void openLevel();
void closeLevel();
@@ -32,6 +34,7 @@ public:
bool splitOnPageBreak() const;
bool splitOnHeading(unsigned level) const;
+ bool splitOnSecondPageSpan() const;
bool inHeading(bool any) const;
bool splitOnSize() const;
@@ -42,6 +45,8 @@ private:
private:
EPUBSplitMethod m_method;
+ bool m_splitOnSecondPageSpan;
+ bool m_htmlEverInPageSpan;
unsigned m_headingLevel;
unsigned m_currentHeadingLevel;
unsigned m_size;
diff --git a/src/lib/EPUBTextGenerator.cpp b/src/lib/EPUBTextGenerator.cpp
index 8e88adb..db9d360 100644
--- a/src/lib/EPUBTextGenerator.cpp
+++ b/src/lib/EPUBTextGenerator.cpp
@@ -110,6 +110,7 @@ void EPUBTextGenerator::Impl::startHtmlFile()
void EPUBTextGenerator::Impl::endHtmlFile()
{
+ getSplitGuard().setHtmlEverInPageSpan(false);
if (m_inPageSpan)
getHtml()->openPageSpan(m_pageSpanProps);
if (bool(m_currentHeader))
@@ -206,10 +207,14 @@ void EPUBTextGenerator::openPageSpan(const librevenge::RVNGPropertyList &propLis
{
assert(!m_impl->m_inPageSpan);
+ if (m_impl->getSplitGuard().splitOnSecondPageSpan())
+ m_impl->startNewHtmlFile();
+
m_impl->m_inPageSpan = true;
m_impl->m_pageSpanProps = propList;
m_impl->getHtml()->openPageSpan(propList);
+ m_impl->getSplitGuard().setHtmlEverInPageSpan(true);
}
void EPUBTextGenerator::closePageSpan()
diff --git a/src/test/EPUBTextGeneratorTest.cpp b/src/test/EPUBTextGeneratorTest.cpp
index 0946408..b5e43a5 100644
--- a/src/test/EPUBTextGeneratorTest.cpp
+++ b/src/test/EPUBTextGeneratorTest.cpp
@@ -239,6 +239,7 @@ private:
CPPUNIT_TEST(testSplitOnPageBreakInPageSpan);
CPPUNIT_TEST(testSplitOnHeadingInPageSpan);
CPPUNIT_TEST(testSplitOnSizeInPageSpan);
+ CPPUNIT_TEST(testManyWritingModes);
CPPUNIT_TEST_SUITE_END();
private:
@@ -282,6 +283,7 @@ private:
void testSplitOnPageBreakInPageSpan();
void testSplitOnHeadingInPageSpan();
void testSplitOnSizeInPageSpan();
+ void testManyWritingModes();
/// Asserts that exactly one xpath exists in buffer, and its content equals content.
void assertXPathContent(xmlBufferPtr buffer, const std::string &xpath, const std::string &content);
@@ -1467,6 +1469,42 @@ void EPUBTextGeneratorTest::testSplitOnSizeInPageSpan()
assertXPath(package.m_streams["OEBPS/sections/section0002.xhtml"], "//xhtml:body", "class", "body0");
}
+void EPUBTextGeneratorTest::testManyWritingModes()
+{
+ StringEPUBPackage package;
+ libepubgen::EPUBTextGenerator generator(&package);
+ generator.setOption(libepubgen::EPUB_GENERATOR_OPTION_SPLIT, libepubgen::EPUB_SPLIT_METHOD_PAGE_BREAK);
+ generator.startDocument(librevenge::RVNGPropertyList());
+
+ {
+ librevenge::RVNGPropertyList page;
+ page.insert("style:writing-mode", "tb");
+ generator.openPageSpan(page);
+
+ librevenge::RVNGPropertyList para;
+ generator.openParagraph(para);
+ generator.insertText("Para1");
+ generator.closeParagraph();
+ generator.closePageSpan();
+ }
+ {
+ librevenge::RVNGPropertyList page;
+ page.insert("style:writing-mode", "lr");
+ generator.openPageSpan(page);
+
+ librevenge::RVNGPropertyList para;
+ generator.openParagraph(para);
+ generator.insertText("Para1");
+ generator.closeParagraph();
+ generator.closePageSpan();
+ }
+ generator.endDocument();
+ assertCss(package.m_cssStreams["OEBPS/styles/stylesheet.css"], ".body0", "writing-mode: vertical-rl", true);
+ assertCss(package.m_cssStreams["OEBPS/styles/stylesheet.css"], ".body1", "writing-mode: horizontal-tb", true);
+ assertXPath(package.m_streams["OEBPS/sections/section0001.xhtml"], "//xhtml:body", "class", "body0");
+ assertXPath(package.m_streams["OEBPS/sections/section0002.xhtml"], "//xhtml:body", "class", "body1");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(EPUBTextGeneratorTest);
}
--
2.14.1
......@@ -8,16 +8,6 @@
#
epubgen_patches :=
# Backport of <https://sourceforge.net/p/libepubgen/code/ci/006848cb62225647c418d5143d4e88a9d73829da/>.
epubgen_patches += libepubgen-epub3.patch.1
# Backport of <https://sourceforge.net/p/libepubgen/code/ci/9a284081eea4a95235a6d6a6a50cbe3f7ad323ba/>.
epubgen_patches += 0001-Support-writing-mode-for-reflowable-layout-method.patch.1
# Backport of <https://sourceforge.net/p/libepubgen/code/ci/0318031b9094b9180d1d391d0ca31a782b016e99/>.
epubgen_patches += 0002-Always-keep-page-properties-when-splitting-the-HTML-.patch.1
# Backport of <https://sourceforge.net/p/libepubgen/code/ci/1f602fcaa74fc9dbc6457019d11c602ff4040a4e/>.
epubgen_patches += 0003-Ensure-page-properties-in-the-page-span-works.patch.1
# Backport of <https://sourceforge.net/p/libepubgen/code/ci/aa254c9e6f2d1ecfa2512111746a77c05ba9717f/>
epubgen_patches += 0001-Enclose-span-with-ruby-if-text-ruby-text-is-set.patch.1
ifeq ($(COM_IS_CLANG),TRUE)
ifneq ($(filter -fsanitize=%,$(CC)),)
......
......@@ -428,10 +428,10 @@
"dest-filename": "external/tarballs/ReemKufi-0.7.zip"
},
{
"url": "https://dev-www.libreoffice.org/src/libepubgen-0.1.0.tar.bz2",
"sha256": "730bd1cbeee166334faadbc06c953a67b145c3c4754a3b503482066dae4cd633",
"url": "https://dev-www.libreoffice.org/src/libepubgen-0.1.1.tar.xz",
"sha256": "03e084b994cbeffc8c3dd13303b2cb805f44d8f2c3b79f7690d7e3fc7f6215ad",
"type": "file",
"dest-filename": "external/tarballs/libepubgen-0.1.0.tar.bz2"
"dest-filename": "external/tarballs/libepubgen-0.1.1.tar.xz"
},
{
"url": "https://dev-www.libreoffice.org/src/libqxp-0.0.1.tar.xz",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment