From 5df58d63b89672093c350dd077accb47ab9bd36f Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 3 Jul 2006 20:53:08 +0000 Subject: [PATCH] Yegor's Slide Title patch from bug 39948 git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@418847 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/org/apache/poi/hslf/model/Slide.java | 28 +++++++- .../poi/hslf/usermodel/TestSlideOrdering.java | 70 +++++++++++++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java b/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java index 25521fbde2..621984ce69 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java @@ -143,7 +143,33 @@ public class Slide extends Sheet } - // Accesser methods follow + // Complex Accesser methods follow + + /** + * Return title of this slide or null if the slide does not have title. + *

+ * The title is a run of text of type TextHeaderAtom.CENTER_TITLE_TYPE or + * TextHeaderAtom.TITLE_TYPE + *

+ * + * @see TextHeaderAtom + * + * @return title of this slide + */ + public String getTitle(){ + TextRun[] txt = getTextRuns(); + for (int i = 0; i < txt.length; i++) { + int type = txt[i].getRunType(); + if (type == TextHeaderAtom.CENTER_TITLE_TYPE || + type == TextHeaderAtom.TITLE_TYPE ){ + String title = txt[i].getText(); + return title; + } + } + return null; + } + + // Simple Accesser methods follow /** * Returns an array of all the TextRuns found diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestSlideOrdering.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestSlideOrdering.java index 0406178c08..515f65ebd9 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestSlideOrdering.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestSlideOrdering.java @@ -85,4 +85,74 @@ public class TestSlideOrdering extends TestCase { assertEquals(firstTRs[1], s2.getTextRuns()[0].getText()); assertEquals(firstTRs[2], s3.getTextRuns()[0].getText()); } + + /** + * Assert that the order of slides is correct. + * + * @param filename file name of the slide show to assert + * @param titles array of reference slide titles + */ + protected void assertSlideOrdering(String filename, String[] titles) throws Exception { + SlideShow ppt = new SlideShow(new HSLFSlideShow(filename)); + Slide[] slide = ppt.getSlides(); + + assertEquals(titles.length, slide.length); + for (int i = 0; i < slide.length; i++) { + String title = slide[i].getTitle(); + assertEquals("Wrong slide title in " + filename, titles[i], title); + } + } + + public void testTitles() throws Exception{ + String dirname = System.getProperty("HSLF.testdata.path"); + + assertSlideOrdering(dirname + "/basic_test_ppt_file.ppt", + new String[]{ + "This is a test title", + "This is the title on page 2" + }); + + assertSlideOrdering(dirname + "/incorrect_slide_order.ppt", + new String[]{ + "Slide 1", + "Slide 2", + "Slide 3" + }); + + assertSlideOrdering(dirname + "/next_test_ppt_file.ppt", + new String[]{ + "This is a test title", + "This is the title on page 2" + }); +String a = "’"; +System.err.println((int)(a.toCharArray()[0])); + + assertSlideOrdering(dirname + "/Single_Coloured_Page.ppt", + new String[]{ + "This is a title, it" + (char)0x2019 +"s in black" + }); + + assertSlideOrdering(dirname + "/Single_Coloured_Page_With_Fonts_and_Alignments.ppt", + new String[]{ + "This is a title, it"+ (char)0x2019 +"s in black" + }); + + assertSlideOrdering(dirname + "/ParagraphStylesShorterThanCharStyles.ppt", + new String[]{ + "ROMANCE: AN ANALYSIS", + "AGENDA", + "You are an important supplier of various items that I need", + (char)0x0B + "Although The Psycho set back my relationship process, recovery is luckily enough under way", + "Since the time that we seriously go out together, you rank highly among existing relationships", + "Although our personal interests are mostly compatible, the greatest gap exists in Sex and Shopping", + "Your physical characteristics are strong when compared with your competition", + "The combination of your high physical appearance and personality rank you highly, although your sister is also a top prospect", + "When people found out that we were going out, their responses have been mixed", + "The benchmark of relationship lifecycles, suggests that we are on schedule", + "In summary we can say that we are on the right track, but we must remain aware of possible roadblocks ", + "THE ANSWER", + "Unfortunately a huge disconnect exists between my needs and your existing service", + "SUMMARY", + }); + } } -- 2.39.5