]> source.dussan.org Git - poi.git/commitdiff
For listing the contents of StyleTextPropAtom entries
authorNick Burch <nick@apache.org>
Sun, 14 Aug 2005 19:27:22 +0000 (19:27 +0000)
committerNick Burch <nick@apache.org>
Sun, 14 Aug 2005 19:27:22 +0000 (19:27 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353766 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java [new file with mode: 0644]

diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java b/src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java
new file mode 100644 (file)
index 0000000..9aed817
--- /dev/null
@@ -0,0 +1,117 @@
+
+/* ====================================================================
+   Copyright 2002-2004   Apache Software Foundation
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+
+
+package org.apache.poi.hslf.dev;
+
+import org.apache.poi.hslf.*;
+import org.apache.poi.hslf.model.*;
+import org.apache.poi.hslf.record.*;
+import org.apache.poi.hslf.record.StyleTextPropAtom.*;
+import org.apache.poi.hslf.usermodel.*;
+
+import java.io.*;
+import java.util.LinkedList;
+
+/**
+ * Uses record level code to locate StyleTextPropAtom entries.
+ * Having found them, it shows the contents
+ */
+public class TextStyleListing {
+       public static void main(String[] args) throws Exception {
+               if(args.length < 1) {
+                       System.err.println("Need to give a filename");
+                       System.exit(1);
+               }
+
+               HSLFSlideShow ss = new HSLFSlideShow(args[0]);
+
+               // Find the documents, and then their SLWT
+               Record[] records = ss.getRecords();
+               for(int i=0; i<records.length; i++) {
+                       if(records[i].getRecordType() == 1000l) {
+                               Record docRecord = records[i];
+                               Record[] docChildren = docRecord.getChildRecords();
+                               for(int j=0; j<docChildren.length; j++) {
+                                       if(docChildren[j] instanceof SlideListWithText) {
+                                               Record[] slwtChildren = docChildren[j].getChildRecords();
+
+                                               int lastTextLen = -1;
+                                               for(int k=0; k<slwtChildren.length; k++) {
+                                                       if(slwtChildren[k] instanceof TextCharsAtom) {
+                                                               lastTextLen = ((TextCharsAtom)slwtChildren[k]).getText().length();
+                                                       }
+                                                       if(slwtChildren[k] instanceof TextBytesAtom) {
+                                                               lastTextLen = ((TextBytesAtom)slwtChildren[k]).getText().length();
+                                                       }
+
+                                                       if(slwtChildren[k] instanceof StyleTextPropAtom) {
+                                                               StyleTextPropAtom stpa = (StyleTextPropAtom)slwtChildren[k];
+                                                               stpa.setParentTextSize(lastTextLen);
+                                                               showStyleTextPropAtom(stpa);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       public static void showStyleTextPropAtom(StyleTextPropAtom stpa) {
+               System.out.println("\nFound a StyleTextPropAtom");
+
+               LinkedList paragraphStyles = stpa.getParagraphStyles();
+               System.out.println("Contains " + paragraphStyles.size() + " paragraph styles:");
+               for(int i=0; i<paragraphStyles.size(); i++) {
+                       TextPropCollection tpc = (TextPropCollection)paragraphStyles.get(i);
+                       System.out.println(" In paragraph styling " + i + ":");
+                       System.out.println("  Characters covered is " + tpc.getCharactersCovered());
+                       showTextProps(tpc);
+               }
+               
+               LinkedList charStyles = stpa.getCharacterStyles();
+               System.out.println("Contains " + charStyles.size() + " character styles:");
+               for(int i=0; i<charStyles.size(); i++) {
+                       TextPropCollection tpc = (TextPropCollection)charStyles.get(i);
+                       System.out.println("  In character styling " + i + ":");
+                       System.out.println("    Characters covered is " + tpc.getCharactersCovered());
+                       showTextProps(tpc);
+               }
+       }
+
+       public static void showTextProps(TextPropCollection tpc) {
+               LinkedList textProps = tpc.getTextPropList();
+               System.out.println("    Contains " + textProps.size() + " TextProps");
+               for(int i=0; i<textProps.size(); i++) {
+                       TextProp tp = (TextProp)textProps.get(i);
+                       System.out.println("      " + i + " - " + tp.getName());
+                       System.out.println("          = " + tp.getValue());
+                       System.out.println("          @ " + tp.getMask());
+
+                       if(tp instanceof BitMaskTextProp) {
+                               BitMaskTextProp bmtp = (BitMaskTextProp)tp;
+                               String[] subPropNames = bmtp.getSubPropNames();
+                               boolean[] subPropMatches = bmtp.getSubPropMatches();
+                               for(int j=0; j<subPropNames.length; j++) {
+                                       System.out.println("            -> " + j + " - " + subPropNames[j]);
+                                       System.out.println("               " + j + " = " + subPropMatches[j]);
+                               }
+                       }
+               }
+       }
+}