~ubuntu-branches/ubuntu/karmic/openoffice.org-l10n/karmic

« back to all changes in this revision

Viewing changes to ooo-build/scratch/mso-dumper/src/pptrecord.py

  • Committer: Bazaar Package Importer
  • Author(s): Chris Cheney
  • Date: 2009-08-13 16:30:00 UTC
  • mfrom: (1.1.26 upstream)
  • Revision ID: james.westby@ubuntu.com-20090813163000-ck1d5pxexe0jg8p4
Tags: 1:3.1.1~rc1-1ubuntu1
* Copy of the openoffice.org source.
  - debian/changelog: Change source name.
  - debian/control.in: Change source name.
  - debian/control: Regenerate control file.

* Resynchronise with Debian (r1631). Remaining changes:
  - Add Launchpad integration support.
  - Add Launchpad translations support.
  - Add package openoffice.org-style-human.
  - Add some Ubuntu-specific bitmaps. Adjust broffice diversions for these.
  - Add support for compressing debs with lzma.
  - Add support for shared /usr/share/doc directories.
  - Add support to build l10n as a separate source.
  - Add support to build on lpia.
  - Add support to turn off building on sparc.
  - Add Xb-Npp-xxx tags according to "firefox distro add-on suport" spec.
  - Use imagemagick instead of graphicsmagick.
  - openoffice.org-help switch to internal copy of lucene.
  - Disable gnome-vfs support since it is buggy.
  - Switch desktop files from %U to %F for gvfs fuse.
* Resynchronise with ooo-build-3-1-1 (7b03695ba14f142cfde58b4592af50cd60e3e787).

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
#
5
5
#    Author:
6
6
#      Kohei Yoshida  <kyoshida@novell.com>
7
 
#      Thorsten Behrens <tbehrens@novell.com>           
 
7
#      Thorsten Behrens <tbehrens@novell.com>
8
8
#
9
9
#   The Contents of this file are made available subject to the terms
10
10
#   of GNU Lesser General Public License Version 2.1 and any later
61
61
 
62
62
    def isEmpty (self):
63
63
        return len(self.bytes) <= self.pos
64
 
    
 
64
 
65
65
    def readBytes (self, length):
66
66
        r = self.bytes[self.pos:self.pos+length]
67
67
        self.pos += length
84
84
        else:
85
85
            return 'no'
86
86
 
87
 
    def getTrueFalse (self, boolVal):
88
 
        if boolVal:
89
 
            return 'true'
90
 
        else:
91
 
            return 'false'
92
 
 
93
87
    def readUnsignedInt (self, length):
94
88
        bytes = self.readBytes(length)
95
89
        return globals.getUnsignedInt(bytes)
159
153
                # eat propValue bytes from complexBytes
160
154
                complexBytes = allComplexBytes[:propValue]
161
155
                allComplexBytes = allComplexBytes[propValue:]
162
 
                
 
156
 
163
157
            if propType in propData:
164
158
                handler = propData[propType][1](propType, propValue, isComplex, isBlip, complexBytes, self.appendLine)
165
159
                handler.output()
167
161
                self.appendLine("%4.4Xh: [unknown property type: %4.4Xh, value: %8.8Xh, complex: %d, blip: %d]"%(propType, propType, propValue, isComplex, isBlip))
168
162
 
169
163
# -------------------------------------------------------------------
 
164
# special record handler: shape anchor rect
 
165
 
 
166
class Rect(BaseRecordHandler):
 
167
    """Rectangle."""
 
168
 
 
169
    def parseBytes (self):
 
170
        # seems there are 16bit and 32bit coordinate values in the
 
171
        # wild
 
172
        if self.size == 16:
 
173
            left = self.readUnsignedInt(4)
 
174
            top = self.readUnsignedInt(4)
 
175
            right = self.readUnsignedInt(4)
 
176
            bottom = self.readUnsignedInt(4)
 
177
            self.appendLine("Anchor(long): (%d,%d)(%d,%d)"%(left,top,right,bottom))
 
178
        elif self.size == 8:
 
179
            top = self.readUnsignedInt(2)
 
180
            left = self.readUnsignedInt(2)
 
181
            right = self.readUnsignedInt(2)
 
182
            bottom = self.readUnsignedInt(2)
 
183
            self.appendLine("Anchor(short): (%d,%d)(%d,%d)"%(left,top,right,bottom))
 
184
        else:
 
185
            self.appendLine("%4.4Xh: [invalid anchor payload (size: %d)]"%(propType, self.size))
 
186
 
 
187
 
 
188
# -------------------------------------------------------------------
 
189
# special record handler: shape
 
190
 
 
191
class Shape(BaseRecordHandler):
 
192
    """PowerPoint Shape."""
 
193
 
 
194
    def parseBytes (self):
 
195
        # recordInstance gives shape type
 
196
        theType = self.recordInstance
 
197
 
 
198
        # 4 bytes shape id
 
199
        shapeId = self.readUnsignedInt(4)
 
200
        if theType in shapeTypes:
 
201
            self.appendLine("Shape %s, id=%d"%(shapeTypes[theType][0], shapeId))
 
202
        else:
 
203
            self.appendLine("Unknown shape, id=%d"%shapeId)
 
204
 
 
205
        # 4 bytes shape persist flags
 
206
        flags = self.readUnsignedInt(4)
 
207
 
 
208
        group = (flags & 0x00000001) != 0
 
209
        child = (flags & 0x00000002) != 0
 
210
        patriarch = (flags & 0x00000004) != 0
 
211
        deleted = (flags & 0x00000008) != 0
 
212
        oleshape = (flags & 0x00000010) != 0
 
213
        haveMaster = (flags & 0x00000020) != 0
 
214
        flipH = (flags & 0x00000040) != 0
 
215
        flipV = (flags & 0x00000080) != 0
 
216
        connector = (flags & 0x00000100) != 0
 
217
        haveAnchor = (flags & 0x00000200) != 0
 
218
        background = (flags & 0x00000400) != 0
 
219
        haveTypeProp = (flags & 0x00000800) != 0
 
220
 
 
221
        self.appendLine("flags:\n"
 
222
                        "                group        = %d\n"
 
223
                        "                child        = %d\n"
 
224
                        "                patriarch    = %d\n"
 
225
                        "                deleted      = %d\n"
 
226
                        "                oleshape     = %d\n"
 
227
                        "                haveMaster   = %d\n"
 
228
                        "                flipH        = %d\n"
 
229
                        "                flipV        = %d\n"
 
230
                        "                connector    = %d\n"
 
231
                        "                haveAnchor   = %d\n"
 
232
                        "                background   = %d\n"
 
233
                        "                haveTypeProp = %d"%(group,
 
234
                                                             child,
 
235
                                                             patriarch,
 
236
                                                             deleted,
 
237
                                                             oleshape,
 
238
                                                             haveMaster,
 
239
                                                             flipH,
 
240
                                                             flipV,
 
241
                                                             connector,
 
242
                                                             haveAnchor,
 
243
                                                             background,
 
244
                                                             haveTypeProp))
 
245
 
 
246
# -------------------------------------------------------------------
 
247
# special record handler: TextHeader
 
248
 
 
249
class TextHeader(BaseRecordHandler):
 
250
    """TextHeaderAtom."""
 
251
 
 
252
    def parseBytes (self):
 
253
        # 4 bytes type
 
254
        textType = self.readUnsignedInt(4)
 
255
        if textType in textHeader:
 
256
            self.appendLine("Text type: %s"%textHeader[textType][0])
 
257
        else:
 
258
            self.appendLine("Text type: unknown")
 
259
 
 
260
 
 
261
# -------------------------------------------------------------------
170
262
# special record handler: document atom
171
263
 
172
264
class DocAtom(BaseRecordHandler):
234
326
        if not "ShapeText" in self.streamProperties:
235
327
            self.appendLine("no shape text given, assuming length of 1")
236
328
            textLen = 1
237
 
        else:    
 
329
        else:
238
330
            textLen = len(self.streamProperties["ShapeText"])
239
331
 
240
332
        # 4 bytes: <count> characters of shape text this para run is meant for
248
340
            self.appendLine("para props for %d chars, indent: %d"%(runLen,indentLevel))
249
341
            self.parseParaStyle()
250
342
            self.appendLine("-"*61)
251
 
            
 
343
 
252
344
        # 4 bytes: <count> characters of shape text this char run is meant for
253
345
        # <char attribs>
254
346
        # repeat until all shape text is consumed
259
351
            self.appendLine("char props for %d chars"%runLen)
260
352
            self.parseCharStyle()
261
353
            self.appendLine("-"*61)
262
 
            
 
354
 
263
355
    def appendParaProp (self, text):
264
356
        self.appendLine("para prop given: "+text)
265
357
 
393
485
        # level has one para and one char prop entry, the para prop
394
486
        # entry misses the indent specifier it has for StyleTextAtom.
395
487
        numLevels = self.readUnsignedInt(2)
396
 
        
 
488
 
397
489
        for i in xrange(0, numLevels):
398
490
            self.appendLine("para props for indent level: %d"%i)
399
491
            self.parseParaStyle()
401
493
            self.appendLine("char props for indent level: %d"%i)
402
494
            self.parseCharStyle()
403
495
            self.appendLine("-"*61)
404
 
            
 
496
 
405
497
 
406
498
# -------------------------------------------------------------------
407
499
# special record handlers: property atoms
419
511
        self.printer = printer
420
512
        if self.propType in propData:
421
513
            self.propEntry = propData[self.propType]
422
 
    
 
514
 
423
515
    def output (self):
424
516
        if self.propType in propData:
425
517
            self.printer("%4.4Xh: %s = %8.8Xh [\"%s\" - default handler]"%(self.propType, self.propEntry[0],
428
520
class BoolPropertyHandler(BasePropertyHandler):
429
521
    """Bool properties."""
430
522
 
 
523
    def getTrueFalse (self, boolVal):
 
524
        if boolVal:
 
525
            return 'true'
 
526
        else:
 
527
            return 'false'
 
528
 
431
529
    def output (self):
432
530
        bitMask = 1
433
 
        for i in xrange(self.propType, self.propType-32):
 
531
        for i in xrange(self.propType, self.propType-32, -1):
434
532
            if i in propData:
435
533
                propEntry = propData[i]
436
 
                if type(propEntry[1]) == type(BoolPropertyHandler):
 
534
                if propEntry[1] == BoolPropertyHandler:
437
535
                    flagValue = self.getTrueFalse(self.propValue & bitMask)
438
 
                    self.printer("%4.4Xh: %s = %d [\"%s\"]"%(self.propType, propEntry[0], flagValue, propEntry[2]))
 
536
                    self.printer("%4.4Xh: %s = %s [\"%s\"]"%(i, propEntry[0], flagValue, propEntry[2]))
439
537
            bitMask *= 2
440
538
 
441
 
            
 
539
 
442
540
class LongPropertyHandler(BasePropertyHandler):
443
541
    """Long property."""
444
542
 
446
544
        if self.propType in propData:
447
545
            self.printer("%4.4Xh: %s = %d [\"%s\"]"%(self.propType, self.propEntry[0],
448
546
                                                     self.propValue, self.propEntry[2]))
449
 
        
 
547
 
450
548
class MsoArrayPropertyHandler(BasePropertyHandler):
451
549
    """MsoArray property."""
452
550
 
474
572
                    self.printer("%4.4Xh: %d = %Xh"%(self.propType,i,currElem))
475
573
 
476
574
class UniCharPropertyHandler(BasePropertyHandler):
477
 
    """unicode string property."""  
 
575
    """unicode string property."""
478
576
 
479
577
    def output (self):
480
578
        if self.isComplex:
487
585
    def output (self):
488
586
        value = self.propValue / 65536.0
489
587
        self.printer("%4.4Xh: %s = %f [\"%s\"]"%(self.propType, self.propEntry[0], value, self.propEntry[2]))
490
 
    
 
588
 
491
589
class ColorPropertyHandler(BasePropertyHandler):
492
 
    """Color property."""   
 
590
    """Color property."""
493
591
 
494
592
    def split (self, packedColor):
495
593
        return ((packedColor & 0xFF0000) // 0x10000, (packedColor & 0xFF00) / 0x100, (packedColor & 0xFF))
496
 
    
 
594
 
497
595
    def output (self):
498
596
        propEntry = ["<color atom>", None, "undocumented color property"]
499
597
        if self.propType in propData:
504
602
                                            propEntry[2]))
505
603
 
506
604
class CharPropertyHandler(BasePropertyHandler):
507
 
    """string property."""  
 
605
    """string property."""
508
606
 
509
607
    def output (self):
510
608
        if self.isComplex:
512
610
            self.printer("%4.4Xh: %s = %s: [\"%s\"]"%(self.propType, self.propEntry[0], name, self.propEntry[2]))
513
611
 
514
612
class HandlesPropertyHandler(BasePropertyHandler):
515
 
    """handles property."""  
 
613
    """handles property."""
516
614
 
517
615
class ZipStoragePropertyHandler(BasePropertyHandler):
518
 
    """zip storage."""  
 
616
    """zip storage."""
519
617
 
520
618
    def output (self):
521
619
        globals.outputZipContent(self.bytes, self.printer, 61)
523
621
# -------------------------------------------------------------------
524
622
# special record handler: properties
525
623
#
526
 
# IDs and comments from OOo's svx/inc/svx/msdffdef.hxx
 
624
# IDs, shape types and comments from OOo's svx/inc/svx/msdffdef.hxx
527
625
# (slightly adapted)
528
626
#
529
627
# opcode: [canonical name, prop handler, comment]
530
628
 
531
629
propData = {
532
 
 
 
630
# Transform group
 
631
   0:  ["DFF_Prop_Left",                         LongPropertyHandler,      "left pos of unrotated shape in emu"],
 
632
   1:  ["DFF_Prop_Top",                          LongPropertyHandler,      "top pos of unrotated shape in emu"],
 
633
   2:  ["DFF_Prop_Right",                        LongPropertyHandler,      "right pos of unrotated shape in emu"],
 
634
   3:  ["DFF_Prop_Bottom",                       LongPropertyHandler,      "bottom pos of unrotated shape in emu"],
533
635
   4:  ["DFF_Prop_Rotation",                     FixedPointHandler,        "degrees"],
 
636
   5:  ["DFF_Prop_gvPage",                       LongPropertyHandler,      "no idea, MSOGV"],
 
637
   61: ["DFF_Prop_fChangePage",                  BoolPropertyHandler,      "no idea"],
 
638
   62: ["DFF_Prop_fFlipV",                       BoolPropertyHandler,      "vertical flip"],
 
639
   63: ["DFF_Prop_fFlipH",                       BoolPropertyHandler,      "horiz flip"],
 
640
 
 
641
# Protection group
 
642
 118:  ["DFF_Prop_LockAgainstUngrouping",        BoolPropertyHandler,              "Do not ungroup this shape"],
534
643
 119:  ["DFF_Prop_LockRotation",                 BoolPropertyHandler,              "No rotation"],
535
644
 120:  ["DFF_Prop_LockAspectRatio",              BoolPropertyHandler,              "Don't allow changes in aspect ratio"],
536
645
 121:  ["DFF_Prop_LockPosition",                 BoolPropertyHandler,              "Don't allow the shape to be moved"],
540
649
 125:  ["DFF_Prop_LockText",                     BoolPropertyHandler,              "Do not edit text"],
541
650
 126:  ["DFF_Prop_LockAdjustHandles",            BoolPropertyHandler,              "Do not adjust"],
542
651
 127:  ["DFF_Prop_LockAgainstGrouping",          BoolPropertyHandler,              "Do not group this shape"],
543
 
      
 
652
 
 
653
# Text group
544
654
 128:  ["DFF_Prop_lTxid",                        LongPropertyHandler,              "id for the text, value determined by the host"],
545
655
 129:  ["DFF_Prop_dxTextLeft",                   LongPropertyHandler,              "margins relative to shape's inscribed text rectangle (in EMUs)"],
546
656
 130:  ["DFF_Prop_dyTextTop",                    LongPropertyHandler, ""],
553
663
 137:  ["DFF_Prop_cdirFont",                     LongPropertyHandler,              "Font rotation in 90 degree steps"],
554
664
 138:  ["DFF_Prop_hspNext",                      LongPropertyHandler,              "ID of the next shape (used by Word for linked textboxes)"],
555
665
 139:  ["DFF_Prop_txdir",                        LongPropertyHandler,              "Bi-Di Text direction"],
 
666
 140:  ["DFF_Prop_ccol",                         LongPropertyHandler,              "Column count"],
 
667
 141:  ["DFF_Prop_dzColMargin",                  LongPropertyHandler,              "Column margin on both sides, in emu"],
556
668
 187:  ["DFF_Prop_SelectText",                   BoolPropertyHandler,              "TRUE if single click selects text, FALSE if two clicks"],
557
669
 188:  ["DFF_Prop_AutoTextMargin",               BoolPropertyHandler,              "use host's margin calculations"],
558
670
 189:  ["DFF_Prop_RotateText",                   BoolPropertyHandler,              "Rotate text with shape"],
559
671
 190:  ["DFF_Prop_FitShapeToText",               BoolPropertyHandler,              "Size shape to fit text size"],
560
672
 191:  ["DFF_Prop_FitTextToShape",               BoolPropertyHandler,              "Size text to fit shape size"],
561
 
      
 
673
 
 
674
# GeoText group
562
675
 192:  ["DFF_Prop_gtextUNICODE",                 UniCharPropertyHandler,            "UNICODE text string"],
563
676
 193:  ["DFF_Prop_gtextRTF",                     CharPropertyHandler,             "RTF text string"],
564
677
 194:  ["DFF_Prop_gtextAlign",                   LongPropertyHandler,              "alignment on curve"],
565
678
 195:  ["DFF_Prop_gtextSize",                    LongPropertyHandler,              "default point size"],
566
 
 196:  ["DFF_Prop_gtextSpacing",                 LongPropertyHandler,              "fixed point 16.16"],
 
679
 196:  ["DFF_Prop_gtextSpacing",                 FixedPointHandler,              "fixed point 16.16"],
567
680
 197:  ["DFF_Prop_gtextFont",                    UniCharPropertyHandler,            "font family name"],
 
681
 198:  ["DFF_Prop_gtextCSSFont",                 UniCharPropertyHandler,            "css font family name, preserves css font selectors"],
568
682
 240:  ["DFF_Prop_gtextFReverseRows",            BoolPropertyHandler,              "Reverse row order"],
569
683
 241:  ["DFF_Prop_fGtext",                       BoolPropertyHandler,              "Has text effect"],
570
684
 242:  ["DFF_Prop_gtextFVertical",               BoolPropertyHandler,              "Rotate characters"],
581
695
 253:  ["DFF_Prop_gtextFShadow",                 BoolPropertyHandler,              "Shadow font"],
582
696
 254:  ["DFF_Prop_gtextFSmallcaps",              BoolPropertyHandler,              "Small caps font"],
583
697
 255:  ["DFF_Prop_gtextFStrikethrough",          BoolPropertyHandler,              "Strike through font"],
584
 
      
 
698
 
 
699
# Blip group
585
700
 256:  ["DFF_Prop_cropFromTop",                  FixedPointHandler,        "Fraction times total image height, as appropriate."],
586
701
 257:  ["DFF_Prop_cropFromBottom",               FixedPointHandler,        "Fraction times total image height, as appropriate."],
587
702
 258:  ["DFF_Prop_cropFromLeft",                 FixedPointHandler,        "Fraction times total image width, as appropriate."],
600
715
 271:  ["DFF_Prop_pibPrint",                     LongPropertyHandler,              "Blip ID to display when printing"],
601
716
 272:  ["DFF_Prop_pibPrintName",                 UniCharPropertyHandler,            "Blip file name"],
602
717
 273:  ["DFF_Prop_pibPrintFlags",                LongPropertyHandler,              "Blip flags"],
 
718
 274:  ["DFF_Prop_movie",                        LongPropertyHandler,              "movie data"],
 
719
 282:  ["DFF_Prop_pictureRecolor",               ColorPropertyHandler,             "Recolor pic to this color"],
 
720
 313:  ["DFF_Prop_picturePreserveGrays",         BoolPropertyHandler,              "leave grays when doing color manipulation"],
 
721
 314:  ["DFF_Prop_fRewind",                      BoolPropertyHandler,              "rewind movie when done"],
 
722
 315:  ["DFF_Prop_fLooping",                     BoolPropertyHandler,              "Is movie looping"],
603
723
 316:  ["DFF_Prop_fNoHitTestPicture",            BoolPropertyHandler,              "Do not hit test the picture"],
604
724
 317:  ["DFF_Prop_pictureGray",                  BoolPropertyHandler,              "grayscale display"],
605
725
 318:  ["DFF_Prop_pictureBiLevel",               BoolPropertyHandler,              "bi-level display"],
606
726
 319:  ["DFF_Prop_pictureActive",                BoolPropertyHandler,              "Server is active (OLE objects only)"],
607
 
      
 
727
 
 
728
# Geometry group
608
729
 320:  ["DFF_Prop_geoLeft",                      LongPropertyHandler,              "Defines the G (geometry) coordinate space."],
609
730
 321:  ["DFF_Prop_geoTop",                       LongPropertyHandler, ""],
610
731
 322:  ["DFF_Prop_geoRight",                     LongPropertyHandler, ""],
629
750
 342:  ["DFF_Prop_pFormulas",                   LongPropertyHandler, ""],
630
751
 343:  ["DFF_Prop_textRectangles",              LongPropertyHandler, ""],
631
752
 344:  ["DFF_Prop_connectorType",               LongPropertyHandler,               "0=none, 1=segments, 2=custom, 3=rect"],
 
753
 345:  ["DFF_Prop_pFragments",                  MsoArrayPropertyHandler,           "Array of fragment ids"],
 
754
 377:  ["DFF_Prop_fColumnLine",                  BoolPropertyHandler,              "Column style may be set"],
632
755
 378:  ["DFF_Prop_fShadowOK",                    BoolPropertyHandler,              "Shadow may be set"],
633
756
 379:  ["DFF_Prop_f3DOK",                        BoolPropertyHandler,              "3D may be set"],
634
757
 380:  ["DFF_Prop_fLineOK",                      BoolPropertyHandler,              "Line style may be set"],
635
758
 381:  ["DFF_Prop_fGtextOK",                     BoolPropertyHandler,              "Text effect (FontWork) supported"],
636
759
 382:  ["DFF_Prop_fFillShadeShapeOK",            BoolPropertyHandler, ""],
637
760
 383:  ["DFF_Prop_fFillOK",                      BoolPropertyHandler,              "OK to fill the shape through the UI or VBA?"],
638
 
      
 
761
 
 
762
# Fill group
639
763
 384:  ["DFF_Prop_fillType",                     LongPropertyHandler,              "MSO_FILLTYPE Type of fill"],
640
764
 385:  ["DFF_Prop_fillColor",                    ColorPropertyHandler,             "Foreground color"],
641
765
 386:  ["DFF_Prop_fillOpacity",                  FixedPointHandler,        "Fill Opacity"],
647
771
 392:  ["DFF_Prop_fillBlipFlags",                LongPropertyHandler,              "Blip flags"],
648
772
 393:  ["DFF_Prop_fillWidth",                    LongPropertyHandler,              "How big (A units) to make a metafile texture."],
649
773
 394:  ["DFF_Prop_fillHeight",                   LongPropertyHandler, ""],
650
 
 395:  ["DFF_Prop_fillAngle",                    LongPropertyHandler,              "Fade angle - degrees in 16.16"],
 
774
 395:  ["DFF_Prop_fillAngle",                    FixedPointHandler,              "Fade angle - degrees in 16.16"],
651
775
 396:  ["DFF_Prop_fillFocus",                    LongPropertyHandler,              "Linear shaded fill focus percent"],
652
776
 397:  ["DFF_Prop_fillToLeft",                   FixedPointHandler,        "Fraction 16.16"],
653
777
 398:  ["DFF_Prop_fillToTop",                    FixedPointHandler,        "Fraction 16.16"],
665
789
 410:  ["DFF_Prop_fillShapeOriginX",             LongPropertyHandler, ""],
666
790
 411:  ["DFF_Prop_fillShapeOriginY",             LongPropertyHandler, ""],
667
791
 412:  ["DFF_Prop_fillShadeType",                LongPropertyHandler,              "Type of shading, if a shaded (gradient) fill."],
 
792
 441:  ["DFF_Prop_fRecolorFillAsPicture",        BoolPropertyHandler,              "Recolor pic according to pic recolor props from pic prop set"],
 
793
 442:  ["DFF_Prop_fUseShapeAnchor",              BoolPropertyHandler,              "Fit fill to shape anchor, not bounds"],
668
794
 443:  ["DFF_Prop_fFilled",                      BoolPropertyHandler,              "Is shape filled?"],
669
795
 444:  ["DFF_Prop_fHitTestFill",                 BoolPropertyHandler,              "Should we hit test fill?"],
670
796
 445:  ["DFF_Prop_fillShape",                    BoolPropertyHandler,              "Register pattern on shape"],
671
797
 446:  ["DFF_Prop_fillUseRect",                  BoolPropertyHandler,              "Use the large rect?"],
672
798
 447:  ["DFF_Prop_fNoFillHitTest",               BoolPropertyHandler,              "Hit test a shape as though filled"],
673
 
      
 
799
 
 
800
# Line group
674
801
 448:  ["DFF_Prop_lineColor",                    ColorPropertyHandler,             "Color of line"],
675
802
 449:  ["DFF_Prop_lineOpacity",                  LongPropertyHandler,              "Not implemented"],
676
803
 450:  ["DFF_Prop_lineBackColor",                ColorPropertyHandler,             "Background color"],
695
822
 469:  ["DFF_Prop_lineEndArrowLength",           LongPropertyHandler,              "Arrow at end"],
696
823
 470:  ["DFF_Prop_lineJoinStyle",                LongPropertyHandler,              "How to join lines"],
697
824
 471:  ["DFF_Prop_lineEndCapStyle",              LongPropertyHandler,              "How to end lines"],
 
825
 505:  ["DFF_Prop_fInsetPen",                    BoolPropertyHandler,              "Draw line inside the shape"],
 
826
 506:  ["DFF_Prop_fInsetPenOK",                  BoolPropertyHandler,              "Enable inset pen property on this shape"],
698
827
 507:  ["DFF_Prop_fArrowheadsOK",                BoolPropertyHandler,              "Allow arrowheads if prop. is set"],
699
828
 508:  ["DFF_Prop_fLine",                        BoolPropertyHandler,              "Any line?"],
700
829
 509:  ["DFF_Prop_fHitTestLine",                 BoolPropertyHandler,              "Should we hit test lines?"],
701
830
 510:  ["DFF_Prop_lineFillShape",                BoolPropertyHandler,              "Register pattern on shape"],
702
831
 511:  ["DFF_Prop_fNoLineDrawDash",              BoolPropertyHandler,              "Draw a dashed line if no line"],
703
 
      
 
832
 
 
833
# Shadow group
704
834
 512:  ["DFF_Prop_shadowType",                   LongPropertyHandler,              "Type of effect"],
705
835
 513:  ["DFF_Prop_shadowColor",                  ColorPropertyHandler,             "Foreground color"],
706
836
 514:  ["DFF_Prop_shadowHighlight",              ColorPropertyHandler,             "Embossed color"],
721
851
 529:  ["DFF_Prop_shadowOriginY",                LongPropertyHandler, ""],
722
852
 574:  ["DFF_Prop_fShadow",                      BoolPropertyHandler,              "Any shadow?"],
723
853
 575:  ["DFF_Prop_fshadowObscured",              BoolPropertyHandler,              "Excel5-style shadow"],
724
 
      
 
854
 
 
855
# Perspective group
725
856
 576:  ["DFF_Prop_perspectiveType",              LongPropertyHandler,              "Where transform applies"],
726
857
 577:  ["DFF_Prop_perspectiveOffsetX",           LongPropertyHandler,              "The LONG values define a transformation matrix, effectively, each value is scaled by the perspectiveWeight parameter."],
727
858
 578:  ["DFF_Prop_perspectiveOffsetY",           LongPropertyHandler, ""],
735
866
 586:  ["DFF_Prop_perspectiveOriginX",           LongPropertyHandler, ""],
736
867
 587:  ["DFF_Prop_perspectiveOriginY",           LongPropertyHandler, ""],
737
868
 639:  ["DFF_Prop_fPerspective",                 BoolPropertyHandler,              "On/off"],
738
 
      
 
869
 
 
870
# 3d object group
739
871
 640:  ["DFF_Prop_c3DSpecularAmt",               FixedPointHandler,        "Fixed-point 16.16"],
740
872
 641:  ["DFF_Prop_c3DDiffuseAmt",                FixedPointHandler,        "Fixed-point 16.16"],
741
873
 642:  ["DFF_Prop_c3DShininess",                 LongPropertyHandler,              "Default gives OK results"],
749
881
 701:  ["DFF_Prop_fc3DMetallic",                 BoolPropertyHandler,              "Use metallic specularity?"],
750
882
 702:  ["DFF_Prop_fc3DUseExtrusionColor",        BoolPropertyHandler, ""],
751
883
 703:  ["DFF_Prop_fc3DLightFace",                BoolPropertyHandler, ""],
752
 
      
 
884
 
 
885
# 3d style group
753
886
 704:  ["DFF_Prop_c3DYRotationAngle",            FixedPointHandler,        "degrees (16.16) about y axis"],
754
887
 705:  ["DFF_Prop_c3DXRotationAngle",            FixedPointHandler,        "degrees (16.16) about x axis"],
755
888
 706:  ["DFF_Prop_c3DRotationAxisX",             LongPropertyHandler,              "These specify the rotation axis; only their relative magnitudes matter."],
782
915
 765:  ["DFF_Prop_fc3DParallel",                 BoolPropertyHandler,              "Parallel projection?"],
783
916
 766:  ["DFF_Prop_fc3DKeyHarsh",                 BoolPropertyHandler,              "Is key lighting harsh?"],
784
917
 767:  ["DFF_Prop_fc3DFillHarsh",                BoolPropertyHandler,              "Is fill lighting harsh?"],
785
 
      
 
918
 
 
919
# shape group
786
920
 769:  ["DFF_Prop_hspMaster",                    LongPropertyHandler,              "master shape"],
787
921
 771:  ["DFF_Prop_cxstyle",                      LongPropertyHandler,              "Type of connector"],
788
922
 772:  ["DFF_Prop_bWMode",                       LongPropertyHandler,              "Settings for modifications to be made when in different forms of black-and-white mode."],
793
927
 828:  ["DFF_Prop_fLockShapeType",               BoolPropertyHandler,              "Lock the shape type (don't allow Change Shape)"],
794
928
 830:  ["DFF_Prop_fDeleteAttachedObject",        BoolPropertyHandler, ""],
795
929
 831:  ["DFF_Prop_fBackground",                  BoolPropertyHandler,              "If TRUE, this is the background shape."],
796
 
      
 
930
 
 
931
# callout group
797
932
 832:  ["DFF_Prop_spcot",                        LongPropertyHandler,              "Callout type"],
798
933
 833:  ["DFF_Prop_dxyCalloutGap",                LongPropertyHandler,              "Distance from box to first point.(EMUs)"],
799
934
 834:  ["DFF_Prop_spcoa",                        LongPropertyHandler,              "Callout angle (any, 30,45,60,90,0)"],
807
942
 893:  ["DFF_Prop_fCalloutMinusY",               BoolPropertyHandler, ""],
808
943
 894:  ["DFF_Prop_fCalloutDropAuto",             BoolPropertyHandler,              "If true, then we occasionally invert the drop distance"],
809
944
 895:  ["DFF_Prop_fCalloutLengthSpecified",      BoolPropertyHandler,              "if true, we look at dxyCalloutLengthSpecified"],
810
 
      
 
945
 
 
946
# group shape group
811
947
 896:  ["DFF_Prop_wzName",                       UniCharPropertyHandler,            "Shape Name (present only if explicitly set)"],
812
948
 897:  ["DFF_Prop_wzDescription",                UniCharPropertyHandler,            "alternate text"],
813
949
 898:  ["DFF_Prop_pihlShape",                    LongPropertyHandler,              "The hyperlink in the shape."],
817
953
 902:  ["DFF_Prop_dxWrapDistRight",              LongPropertyHandler,              "Right wrapping distance from text (Word)"],
818
954
 903:  ["DFF_Prop_dyWrapDistBottom",             LongPropertyHandler,              "Bottom wrapping distance from text (Word)"],
819
955
 904:  ["DFF_Prop_lidRegroup",                   LongPropertyHandler,              "Regroup ID"],
820
 
 927:  ["DFF_Prop_tableProperties",             LongPropertyHandler, "Type of table: bit 1 plain, bit 2 placeholder, bit 3 rtl"],
821
 
 928:  ["DFF_Prop_tableRowProperties",          MsoArrayPropertyHandler, "Table row properties (row heights, actually)"],
822
 
 937:  ["DFF_Prop_xmlstuff",                     ZipStoragePropertyHandler, "Embedded ooxml"],
 
956
 905:  ["DFF_Prop_groupLeft",                    LongPropertyHandler,              "group left pos"],
 
957
 906:  ["DFF_Prop_groupTop",                     LongPropertyHandler,              "group top pos"],
 
958
 907:  ["DFF_Prop_groupRight",                   LongPropertyHandler,              "group right pos"],
 
959
 908:  ["DFF_Prop_groupBottom",                  LongPropertyHandler,              "group bottom pos"],
 
960
 909:  ["DFF_Prop_wzTooltip",                    UniCharPropertyHandler,           "hyperlink tooltip"],
 
961
 910:  ["DFF_Prop_wzScript",                     UniCharPropertyHandler,           "javascript, vbscript of shape"],
 
962
 911:  ["DFF_Prop_xAlign",                       LongPropertyHandler,              "X pos cm from left"],
 
963
 912:  ["DFF_Prop_xRelTo",                       LongPropertyHandler,              "X relative to column"],
 
964
 913:  ["DFF_Prop_yAlign",                       LongPropertyHandler,              "Y pos cm below"],
 
965
 914:  ["DFF_Prop_yRelTo",                       LongPropertyHandler,              "Y relative to paragraph"],
 
966
 915:  ["DFF_Prop_pctHR",                        LongPropertyHandler,              "Percentage width for horizontal rule"],
 
967
 916:  ["DFF_Prop_alignHR",                      LongPropertyHandler,              "alignment for horiz rule: left=0, center=1, right=2"],
 
968
 917:  ["DFF_Prop_dxHeightHR",                   LongPropertyHandler,              "height for HR"],
 
969
 918:  ["DFF_Prop_dxWidthHR",                    LongPropertyHandler,              "width for HR"],
 
970
 919:  ["DFF_Prop_wzScriptEx",                   UniCharPropertyHandler,           "extended script attrs"],
 
971
 920:  ["DFF_Prop_scriptLang",                   LongPropertyHandler,              "script language"],
 
972
 921:  ["DFF_Prop_wzScriptIdAttr",               UniCharPropertyHandler,           "Id script attr"],
 
973
 922:  ["DFF_Prop_wzScriptLangAttr",             UniCharPropertyHandler,           "Id script lang attr"],
 
974
 923:  ["DFF_Prop_borderTopColor",               ColorPropertyHandler,              "top border color (word)"],
 
975
 924:  ["DFF_Prop_borderLeftColor",              ColorPropertyHandler,              "left border color (word)"],
 
976
 925:  ["DFF_Prop_borderBottomColor",            ColorPropertyHandler,              "bottom border color (word)"],
 
977
 926:  ["DFF_Prop_borderRightColor",             ColorPropertyHandler,              "right border color (word)"],
 
978
 927:  ["DFF_Prop_tableProperties",              LongPropertyHandler, "Type of table: bit 1 plain, bit 2 placeholder, bit 3 rtl"],
 
979
 928:  ["DFF_Prop_tableRowProperties",           MsoArrayPropertyHandler, "Table row properties (row heights, actually)"],
 
980
 929:  ["DFF_Prop_scriptHtmlLocation",           LongPropertyHandler,              "script html location"],
 
981
 930:  ["DFF_Prop_wzApplet",                     UniCharPropertyHandler,           "applet body"],
 
982
 934:  ["DFF_Prop_wzAppletArg",                  UniCharPropertyHandler,           "applet arg"],
 
983
 937:  ["DFF_Prop_metroBlob",                    ZipStoragePropertyHandler,        "Embedded ooxml"],
 
984
 938:  ["DFF_Prop_dght",                         LongPropertyHandler,              "shape's z order. smaller means further away"],
 
985
 944:  ["DFF_Prop_fLayoutInCell",                BoolPropertyHandler,              "layout inside nested table when true"],
 
986
 945:  ["DFF_Prop_fIsBullet",                    BoolPropertyHandler,              "is shape picture bullet"],
 
987
 946:  ["DFF_Prop_fStandardHR",                  BoolPropertyHandler,              "true iff not graphical HR"],
 
988
 947:  ["DFF_Prop_fNoshadeHR",                   BoolPropertyHandler,              "true iff HR with NOSHADE set"],
 
989
 948:  ["DFF_Prop_fHorizRule",                   BoolPropertyHandler,              "true if horiz rule"],
 
990
 949:  ["DFF_Prop_fUserDrawn",                   BoolPropertyHandler,              "user drawn shape on ppt master"],
 
991
 950:  ["DFF_Prop_fAllowOverlap",                BoolPropertyHandler,              "overlap with other shapes permitted in web view"],
 
992
 951:  ["DFF_Prop_fReallyHidden",                BoolPropertyHandler,              "when hidden flag really set by user"],
 
993
 952:  ["DFF_Prop_fScriptAnchor",                BoolPropertyHandler,              "show visual clue that this shape has script block"],
 
994
 
 
995
# dunno group
823
996
 953:  ["DFF_Prop_fEditedWrap",                  BoolPropertyHandler,              "Has the wrap polygon been edited?"],
824
997
 954:  ["DFF_Prop_fBehindDocument",              BoolPropertyHandler,              "Word-only (shape is behind text)"],
825
998
 955:  ["DFF_Prop_fOnDblClickNotify",            BoolPropertyHandler,              "Notify client on a double click"],
826
999
 956:  ["DFF_Prop_fIsButton",                    BoolPropertyHandler,              "A button shape (i.e., clicking performs an action). Set for shapes with attached hyperlinks or macros."],
827
1000
 957:  ["DFF_Prop_fOneD",                        BoolPropertyHandler,              "1D adjustment"],
828
1001
 958:  ["DFF_Prop_fHidden",                      BoolPropertyHandler,              "Do not display"],
829
 
 959:  ["DFF_Prop_fPrint",                       BoolPropertyHandler,              "Print this shape"]
830
 
 
831
 
}
832
 
 
833
 
 
 
1002
 959:  ["DFF_Prop_fPrint",                       BoolPropertyHandler,              "Print this shape"],
 
1003
 
 
1004
# clip group
 
1005
 1728: ["DFF_Prop_pVerticesClip",                MsoArrayPropertyHandler,          "vertices of clip path"],
 
1006
 1729: ["DFF_Prop_pSegmentInfoClip",             MsoArrayPropertyHandler,          "segment info of clip path"],
 
1007
 1730: ["DFF_Prop_shapePathClip",                LongPropertyHandler,              "type of clipping path"],
 
1008
 1790: ["DFF_Prop_fClipToWrap",                  BoolPropertyHandler,              "clip shape to text tight wrap polygon"],
 
1009
 1791: ["DFF_Prop_fClippedOk",                   BoolPropertyHandler,              "enable additional clipping"]
 
1010
 
 
1011
}
 
1012
 
 
1013
 
 
1014
shapeTypes = {
 
1015
   0:  ["mso_sptNotPrimitive"],
 
1016
   1:  ["mso_sptRectangle"],
 
1017
   2:  ["mso_sptRoundRectangle"],
 
1018
   3:  ["mso_sptEllipse"],
 
1019
   4:  ["mso_sptDiamond"],
 
1020
   5:  ["mso_sptIsocelesTriangle"],
 
1021
   6:  ["mso_sptRightTriangle"],
 
1022
   7:  ["mso_sptParallelogram"],
 
1023
   8:  ["mso_sptTrapezoid"],
 
1024
   9:  ["mso_sptHexagon"],
 
1025
   10:  ["mso_sptOctagon"],
 
1026
   11:  ["mso_sptPlus"],
 
1027
   12:  ["mso_sptStar"],
 
1028
   13:  ["mso_sptArrow"],
 
1029
   14:  ["mso_sptThickArrow"],
 
1030
   15:  ["mso_sptHomePlate"],
 
1031
   16:  ["mso_sptCube"],
 
1032
   17:  ["mso_sptBalloon"],
 
1033
   18:  ["mso_sptSeal"],
 
1034
   19:  ["mso_sptArc"],
 
1035
   20:  ["mso_sptLine"],
 
1036
   21:  ["mso_sptPlaque"],
 
1037
   22:  ["mso_sptCan"],
 
1038
   23:  ["mso_sptDonut"],
 
1039
   24:  ["mso_sptTextSimple"],
 
1040
   25:  ["mso_sptTextOctagon"],
 
1041
   26:  ["mso_sptTextHexagon"],
 
1042
   27:  ["mso_sptTextCurve"],
 
1043
   28:  ["mso_sptTextWave"],
 
1044
   29:  ["mso_sptTextRing"],
 
1045
   30:  ["mso_sptTextOnCurve"],
 
1046
   31:  ["mso_sptTextOnRing"],
 
1047
   32:  ["mso_sptStraightConnector1"],
 
1048
   33:  ["mso_sptBentConnector2"],
 
1049
   34:  ["mso_sptBentConnector3"],
 
1050
   35:  ["mso_sptBentConnector4"],
 
1051
   36:  ["mso_sptBentConnector5"],
 
1052
   37:  ["mso_sptCurvedConnector2"],
 
1053
   38:  ["mso_sptCurvedConnector3"],
 
1054
   39:  ["mso_sptCurvedConnector4"],
 
1055
   40:  ["mso_sptCurvedConnector5"],
 
1056
   41:  ["mso_sptCallout1"],
 
1057
   42:  ["mso_sptCallout2"],
 
1058
   43:  ["mso_sptCallout3"],
 
1059
   44:  ["mso_sptAccentCallout1"],
 
1060
   45:  ["mso_sptAccentCallout2"],
 
1061
   46:  ["mso_sptAccentCallout3"],
 
1062
   47:  ["mso_sptBorderCallout1"],
 
1063
   48:  ["mso_sptBorderCallout2"],
 
1064
   49:  ["mso_sptBorderCallout3"],
 
1065
   50:  ["mso_sptAccentBorderCallout1"],
 
1066
   51:  ["mso_sptAccentBorderCallout2"],
 
1067
   52:  ["mso_sptAccentBorderCallout3"],
 
1068
   53:  ["mso_sptRibbon"],
 
1069
   54:  ["mso_sptRibbon2"],
 
1070
   55:  ["mso_sptChevron"],
 
1071
   56:  ["mso_sptPentagon"],
 
1072
   57:  ["mso_sptNoSmoking"],
 
1073
   58:  ["mso_sptSeal8"],
 
1074
   59:  ["mso_sptSeal16"],
 
1075
   60:  ["mso_sptSeal32"],
 
1076
   61:  ["mso_sptWedgeRectCallout"],
 
1077
   62:  ["mso_sptWedgeRRectCallout"],
 
1078
   63:  ["mso_sptWedgeEllipseCallout"],
 
1079
   64:  ["mso_sptWave"],
 
1080
   65:  ["mso_sptFoldedCorner"],
 
1081
   66:  ["mso_sptLeftArrow"],
 
1082
   67:  ["mso_sptDownArrow"],
 
1083
   68:  ["mso_sptUpArrow"],
 
1084
   69:  ["mso_sptLeftRightArrow"],
 
1085
   70:  ["mso_sptUpDownArrow"],
 
1086
   71:  ["mso_sptIrregularSeal1"],
 
1087
   72:  ["mso_sptIrregularSeal2"],
 
1088
   73:  ["mso_sptLightningBolt"],
 
1089
   74:  ["mso_sptHeart"],
 
1090
   75:  ["mso_sptPictureFrame"],
 
1091
   76:  ["mso_sptQuadArrow"],
 
1092
   77:  ["mso_sptLeftArrowCallout"],
 
1093
   78:  ["mso_sptRightArrowCallout"],
 
1094
   79:  ["mso_sptUpArrowCallout"],
 
1095
   80:  ["mso_sptDownArrowCallout"],
 
1096
   81:  ["mso_sptLeftRightArrowCallout"],
 
1097
   82:  ["mso_sptUpDownArrowCallout"],
 
1098
   83:  ["mso_sptQuadArrowCallout"],
 
1099
   84:  ["mso_sptBevel"],
 
1100
   85:  ["mso_sptLeftBracket"],
 
1101
   86:  ["mso_sptRightBracket"],
 
1102
   87:  ["mso_sptLeftBrace"],
 
1103
   88:  ["mso_sptRightBrace"],
 
1104
   89:  ["mso_sptLeftUpArrow"],
 
1105
   90:  ["mso_sptBentUpArrow"],
 
1106
   91:  ["mso_sptBentArrow"],
 
1107
   92:  ["mso_sptSeal24"],
 
1108
   93:  ["mso_sptStripedRightArrow"],
 
1109
   94:  ["mso_sptNotchedRightArrow"],
 
1110
   95:  ["mso_sptBlockArc"],
 
1111
   96:  ["mso_sptSmileyFace"],
 
1112
   97:  ["mso_sptVerticalScroll"],
 
1113
   98:  ["mso_sptHorizontalScroll"],
 
1114
   99:  ["mso_sptCircularArrow"],
 
1115
   100:  ["mso_sptNotchedCircularArrow"],
 
1116
   101:  ["mso_sptUturnArrow"],
 
1117
   102:  ["mso_sptCurvedRightArrow"],
 
1118
   103:  ["mso_sptCurvedLeftArrow"],
 
1119
   104:  ["mso_sptCurvedUpArrow"],
 
1120
   105:  ["mso_sptCurvedDownArrow"],
 
1121
   106:  ["mso_sptCloudCallout"],
 
1122
   107:  ["mso_sptEllipseRibbon"],
 
1123
   108:  ["mso_sptEllipseRibbon2"],
 
1124
   109:  ["mso_sptFlowChartProcess"],
 
1125
   110:  ["mso_sptFlowChartDecision"],
 
1126
   111:  ["mso_sptFlowChartInputOutput"],
 
1127
   112:  ["mso_sptFlowChartPredefinedProcess"],
 
1128
   113:  ["mso_sptFlowChartInternalStorage"],
 
1129
   114:  ["mso_sptFlowChartDocument"],
 
1130
   115:  ["mso_sptFlowChartMultidocument"],
 
1131
   116:  ["mso_sptFlowChartTerminator"],
 
1132
   117:  ["mso_sptFlowChartPreparation"],
 
1133
   118:  ["mso_sptFlowChartManualInput"],
 
1134
   119:  ["mso_sptFlowChartManualOperation"],
 
1135
   120:  ["mso_sptFlowChartConnector"],
 
1136
   121:  ["mso_sptFlowChartPunchedCard"],
 
1137
   122:  ["mso_sptFlowChartPunchedTape"],
 
1138
   123:  ["mso_sptFlowChartSummingJunction"],
 
1139
   124:  ["mso_sptFlowChartOr"],
 
1140
   125:  ["mso_sptFlowChartCollate"],
 
1141
   126:  ["mso_sptFlowChartSort"],
 
1142
   127:  ["mso_sptFlowChartExtract"],
 
1143
   128:  ["mso_sptFlowChartMerge"],
 
1144
   129:  ["mso_sptFlowChartOfflineStorage"],
 
1145
   130:  ["mso_sptFlowChartOnlineStorage"],
 
1146
   131:  ["mso_sptFlowChartMagneticTape"],
 
1147
   132:  ["mso_sptFlowChartMagneticDisk"],
 
1148
   133:  ["mso_sptFlowChartMagneticDrum"],
 
1149
   134:  ["mso_sptFlowChartDisplay"],
 
1150
   135:  ["mso_sptFlowChartDelay"],
 
1151
   136:  ["mso_sptTextPlainText"],
 
1152
   137:  ["mso_sptTextStop"],
 
1153
   138:  ["mso_sptTextTriangle"],
 
1154
   139:  ["mso_sptTextTriangleInverted"],
 
1155
   140:  ["mso_sptTextChevron"],
 
1156
   141:  ["mso_sptTextChevronInverted"],
 
1157
   142:  ["mso_sptTextRingInside"],
 
1158
   143:  ["mso_sptTextRingOutside"],
 
1159
   144:  ["mso_sptTextArchUpCurve"],
 
1160
   145:  ["mso_sptTextArchDownCurve"],
 
1161
   146:  ["mso_sptTextCircleCurve"],
 
1162
   147:  ["mso_sptTextButtonCurve"],
 
1163
   148:  ["mso_sptTextArchUpPour"],
 
1164
   149:  ["mso_sptTextArchDownPour"],
 
1165
   150:  ["mso_sptTextCirclePour"],
 
1166
   151:  ["mso_sptTextButtonPour"],
 
1167
   152:  ["mso_sptTextCurveUp"],
 
1168
   153:  ["mso_sptTextCurveDown"],
 
1169
   154:  ["mso_sptTextCascadeUp"],
 
1170
   155:  ["mso_sptTextCascadeDown"],
 
1171
   156:  ["mso_sptTextWave1"],
 
1172
   157:  ["mso_sptTextWave2"],
 
1173
   158:  ["mso_sptTextWave3"],
 
1174
   159:  ["mso_sptTextWave4"],
 
1175
   160:  ["mso_sptTextInflate"],
 
1176
   161:  ["mso_sptTextDeflate"],
 
1177
   162:  ["mso_sptTextInflateBottom"],
 
1178
   163:  ["mso_sptTextDeflateBottom"],
 
1179
   164:  ["mso_sptTextInflateTop"],
 
1180
   165:  ["mso_sptTextDeflateTop"],
 
1181
   166:  ["mso_sptTextDeflateInflate"],
 
1182
   167:  ["mso_sptTextDeflateInflateDeflate"],
 
1183
   168:  ["mso_sptTextFadeRight"],
 
1184
   169:  ["mso_sptTextFadeLeft"],
 
1185
   170:  ["mso_sptTextFadeUp"],
 
1186
   171:  ["mso_sptTextFadeDown"],
 
1187
   172:  ["mso_sptTextSlantUp"],
 
1188
   173:  ["mso_sptTextSlantDown"],
 
1189
   174:  ["mso_sptTextCanUp"],
 
1190
   175:  ["mso_sptTextCanDown"],
 
1191
   176:  ["mso_sptFlowChartAlternateProcess"],
 
1192
   177:  ["mso_sptFlowChartOffpageConnector"],
 
1193
   178:  ["mso_sptCallout90"],
 
1194
   179:  ["mso_sptAccentCallout90"],
 
1195
   180:  ["mso_sptBorderCallout90"],
 
1196
   181:  ["mso_sptAccentBorderCallout90"],
 
1197
   182:  ["mso_sptLeftRightUpArrow"],
 
1198
   183:  ["mso_sptSun"],
 
1199
   184:  ["mso_sptMoon"],
 
1200
   185:  ["mso_sptBracketPair"],
 
1201
   186:  ["mso_sptBracePair"],
 
1202
   187:  ["mso_sptSeal4"],
 
1203
   188:  ["mso_sptDoubleWave"],
 
1204
   189:  ["mso_sptActionButtonBlank"],
 
1205
   190:  ["mso_sptActionButtonHome"],
 
1206
   191:  ["mso_sptActionButtonHelp"],
 
1207
   192:  ["mso_sptActionButtonInformation"],
 
1208
   193:  ["mso_sptActionButtonForwardNext"],
 
1209
   194:  ["mso_sptActionButtonBackPrevious"],
 
1210
   195:  ["mso_sptActionButtonEnd"],
 
1211
   196:  ["mso_sptActionButtonBeginning"],
 
1212
   197:  ["mso_sptActionButtonReturn"],
 
1213
   198:  ["mso_sptActionButtonDocument"],
 
1214
   199:  ["mso_sptActionButtonSound"],
 
1215
   200:  ["mso_sptActionButtonMovie"],
 
1216
   201:  ["mso_sptHostControl"],
 
1217
   202:  ["mso_sptTextBox"]
 
1218
}
 
1219
 
 
1220
textHeader = {
 
1221
   0:  ["title"],
 
1222
   1:  ["body"],
 
1223
   2:  ["notes"],
 
1224
   3:  ["outline"],
 
1225
   4:  ["text in a shape"],
 
1226
   5:  ["subtitle in title slide"],
 
1227
   6:  ["title in title slide"],
 
1228
   7:  ["body in two-column slide"],
 
1229
   8:  ["body in four-column slide"]
 
1230
}