Author: fanningpj
Date: Tue Mar 11 23:47:19 2025
New Revision: 1924323

URL: http://svn.apache.org/viewvc?rev=1924323&view=rev
Log:
reformat

Modified:
    
poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java

Modified: 
poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java?rev=1924323&r1=1924322&r2=1924323&view=diff
==============================================================================
--- 
poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java
 (original)
+++ 
poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java
 Tue Mar 11 23:47:19 2025
@@ -46,423 +46,400 @@ public final class ParagraphSprmUncompre
 
     private static final Logger LOG = 
PoiLogManager.getLogger(ParagraphSprmUncompressor.class);
 
-  public ParagraphSprmUncompressor()
-  {
-  }
-
-  public static ParagraphProperties uncompressPAP(ParagraphProperties parent,
-                                                  byte[] grpprl,
-                                                  int offset)
-  {
-    ParagraphProperties newProperties = parent.copy();
-    SprmIterator sprmIt = new SprmIterator(grpprl, offset);
-
-    while (sprmIt.hasNext())
-    {
-      SprmOperation sprm = sprmIt.next();
-
-      // PAPXs can contain table sprms if the paragraph marks the end of a
-      // table row
-      if (sprm.getType() == SprmOperation.TYPE_PAP)
-      {
-          try
-          {
-              unCompressPAPOperation( newProperties, sprm );
-          }
-          catch ( Exception exc )
-          {
-            LOG.atError().withThrowable(exc).log("Unable to apply SPRM 
operation '{}'", box(sprm.getOperation()));
-          }
-      }
+    public ParagraphSprmUncompressor() {
     }
 
-    return newProperties;
-  }
+    public static ParagraphProperties uncompressPAP(ParagraphProperties parent,
+                                                    byte[] grpprl,
+                                                    int offset) {
+        ParagraphProperties newProperties = parent.copy();
+        SprmIterator sprmIt = new SprmIterator(grpprl, offset);
+
+        while (sprmIt.hasNext()) {
+            SprmOperation sprm = sprmIt.next();
+
+            // PAPXs can contain table sprms if the paragraph marks the end of 
a
+            // table row
+            if (sprm.getType() == SprmOperation.TYPE_PAP) {
+                try {
+                    unCompressPAPOperation(newProperties, sprm);
+                } catch (Exception exc) {
+                    LOG.atError().withThrowable(exc).log("Unable to apply SPRM 
operation '{}'", box(sprm.getOperation()));
+                }
+            }
+        }
+
+        return newProperties;
+    }
 
-  /**
-   * Performs an operation on a ParagraphProperties object. Used to uncompress
-   * from a papx.
-   *
-   * @param newPAP The ParagraphProperties object to perform the operation on.
-   * @param sprm sn SPRM operation.
-   */
-  static void unCompressPAPOperation (ParagraphProperties newPAP, 
SprmOperation sprm)
-  {
-    switch (sprm.getOperation())
-    {
-      case 0:
-        newPAP.setIstd (sprm.getOperand());
-        break;
-      case 0x1:
+    /**
+     * Performs an operation on a ParagraphProperties object. Used to 
uncompress
+     * from a papx.
+     *
+     * @param newPAP The ParagraphProperties object to perform the operation 
on.
+     * @param sprm   sn SPRM operation.
+     */
+    static void unCompressPAPOperation(ParagraphProperties newPAP, 
SprmOperation sprm) {
+        switch (sprm.getOperation()) {
+            case 0:
+                newPAP.setIstd(sprm.getOperand());
+                break;
+            case 0x1:
 
-        // Used only for piece table grpprl's not for PAPX
+                // Used only for piece table grpprl's not for PAPX
 //        int istdFirst = LittleEndian.getShort (varParam, 2);
 //        int istdLast = LittleEndian.getShort (varParam, 4);
 //        if ((newPAP.getIstd () > istdFirst) || (newPAP.getIstd () <= 
istdLast))
 //        {
 //          permuteIstd (newPAP, varParam, opSize);
 //        }
-        break;
-      case 0x2:
-        if (newPAP.getIstd () <= 9 || newPAP.getIstd () >= 1)
-        {
-          byte paramTmp = (byte) sprm.getOperand();
-          newPAP.setIstd (newPAP.getIstd () + paramTmp);
-          newPAP.setLvl ((byte) (newPAP.getLvl () + paramTmp));
-
-          if (((paramTmp >> 7) & 0x01) == 1)
-          {
-            newPAP.setIstd (Math.max (newPAP.getIstd (), 1));
-          }
-          else
-          {
-            newPAP.setIstd (Math.min (newPAP.getIstd (), 9));
-          }
-
-        }
-        break;
-      case 0x3:
-        // Physical justification of the paragraph
-        newPAP.setJc ((byte) sprm.getOperand());
-        break;
-      case 0x4:
-        newPAP.setFSideBySide (sprm.getOperand() != 0);
-        break;
-      case 0x5:
-        newPAP.setFKeep (sprm.getOperand() != 0);
-        break;
-      case 0x6:
-        newPAP.setFKeepFollow (sprm.getOperand() != 0);
-        break;
-      case 0x7:
-        newPAP.setFPageBreakBefore (sprm.getOperand() != 0);
-        break;
-      case 0x8:
-        newPAP.setBrcl ((byte) sprm.getOperand());
-        break;
-      case 0x9:
-        newPAP.setBrcp ((byte) sprm.getOperand());
-        break;
-      case 0xa:
-        newPAP.setIlvl ((byte) sprm.getOperand());
-        break;
-        case 0xb:
-            /* sprmPIlfo -- 0x460B */
-            newPAP.setIlfo( sprm.getOperandShortSigned() );
-            break;
-      case 0xc:
-        newPAP.setFNoLnn (sprm.getOperand() != 0);
-        break;
-      case 0xd:
-        // handle tabs . variable parameter. separate processing needed
-        handleTabs(newPAP, sprm);
-        break;
-      case 0xe:
-        newPAP.setDxaRight (sprm.getOperand());
-        break;
-      case 0xf:
-        newPAP.setDxaLeft (sprm.getOperand());
-        break;
-      case 0x10:
-
-        // sprmPNest is only stored in grpprls linked to a piece table.
-        newPAP.setDxaLeft (newPAP.getDxaLeft () + sprm.getOperand());
-        newPAP.setDxaLeft (Math.max (0, newPAP.getDxaLeft ()));
-        break;
-      case 0x11:
-        newPAP.setDxaLeft1 (sprm.getOperand());
-        break;
-      case 0x12:
-        newPAP.setLspd(new LineSpacingDescriptor(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
-        break;
-      case 0x13:
-        newPAP.setDyaBefore (sprm.getOperand());
-        break;
-      case 0x14:
-        newPAP.setDyaAfter (sprm.getOperand());
-        break;
-      case 0x15:
-        // fast saved only
-        //applySprmPChgTabs (newPAP, varParam, opSize);
-        break;
-        case 0x16:
-            // sprmPFInTable -- 0x2416
-            newPAP.setFInTable( sprm.getOperand()  != 0);
-            break;
-      case 0x17:
-        newPAP.setFTtp ( sprm.getOperand() != 0);
-        break;
-      case 0x18:
-        newPAP.setDxaAbs (sprm.getOperand());
-        break;
-      case 0x19:
-        newPAP.setDyaAbs (sprm.getOperand());
-        break;
-      case 0x1a:
-        newPAP.setDxaWidth (sprm.getOperand());
-        break;
-      case 0x1b:
-        byte param = (byte)sprm.getOperand();
-        // TODO: handle paragraph postioning
-        byte pcVert = (byte) ((param & 0x0c) >> 2);
-        byte pcHorz = (byte) (param & 0x03);
-        if (pcVert != 3)
-        {
-          newPAP.setPcVert (pcVert);
+                break;
+            case 0x2:
+                if (newPAP.getIstd() <= 9 || newPAP.getIstd() >= 1) {
+                    byte paramTmp = (byte) sprm.getOperand();
+                    newPAP.setIstd(newPAP.getIstd() + paramTmp);
+                    newPAP.setLvl((byte) (newPAP.getLvl() + paramTmp));
+
+                    if (((paramTmp >> 7) & 0x01) == 1) {
+                        newPAP.setIstd(Math.max(newPAP.getIstd(), 1));
+                    } else {
+                        newPAP.setIstd(Math.min(newPAP.getIstd(), 9));
+                    }
+
+                }
+                break;
+            case 0x3:
+                // Physical justification of the paragraph
+                newPAP.setJc((byte) sprm.getOperand());
+                break;
+            case 0x4:
+                newPAP.setFSideBySide(sprm.getOperand() != 0);
+                break;
+            case 0x5:
+                newPAP.setFKeep(sprm.getOperand() != 0);
+                break;
+            case 0x6:
+                newPAP.setFKeepFollow(sprm.getOperand() != 0);
+                break;
+            case 0x7:
+                newPAP.setFPageBreakBefore(sprm.getOperand() != 0);
+                break;
+            case 0x8:
+                newPAP.setBrcl((byte) sprm.getOperand());
+                break;
+            case 0x9:
+                newPAP.setBrcp((byte) sprm.getOperand());
+                break;
+            case 0xa:
+                newPAP.setIlvl((byte) sprm.getOperand());
+                break;
+            case 0xb:
+                /* sprmPIlfo -- 0x460B */
+                newPAP.setIlfo(sprm.getOperandShortSigned());
+                break;
+            case 0xc:
+                newPAP.setFNoLnn(sprm.getOperand() != 0);
+                break;
+            case 0xd:
+                // handle tabs . variable parameter. separate processing needed
+                handleTabs(newPAP, sprm);
+                break;
+            case 0xe:
+                newPAP.setDxaRight(sprm.getOperand());
+                break;
+            case 0xf:
+                newPAP.setDxaLeft(sprm.getOperand());
+                break;
+            case 0x10:
+
+                // sprmPNest is only stored in grpprls linked to a piece table.
+                newPAP.setDxaLeft(newPAP.getDxaLeft() + sprm.getOperand());
+                newPAP.setDxaLeft(Math.max(0, newPAP.getDxaLeft()));
+                break;
+            case 0x11:
+                newPAP.setDxaLeft1(sprm.getOperand());
+                break;
+            case 0x12:
+                newPAP.setLspd(new LineSpacingDescriptor(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
+                break;
+            case 0x13:
+                newPAP.setDyaBefore(sprm.getOperand());
+                break;
+            case 0x14:
+                newPAP.setDyaAfter(sprm.getOperand());
+                break;
+            case 0x15:
+                // fast saved only
+                //applySprmPChgTabs (newPAP, varParam, opSize);
+                break;
+            case 0x16:
+                // sprmPFInTable -- 0x2416
+                newPAP.setFInTable(sprm.getOperand() != 0);
+                break;
+            case 0x17:
+                newPAP.setFTtp(sprm.getOperand() != 0);
+                break;
+            case 0x18:
+                newPAP.setDxaAbs(sprm.getOperand());
+                break;
+            case 0x19:
+                newPAP.setDyaAbs(sprm.getOperand());
+                break;
+            case 0x1a:
+                newPAP.setDxaWidth(sprm.getOperand());
+                break;
+            case 0x1b:
+                byte param = (byte) sprm.getOperand();
+                // TODO: handle paragraph postioning
+                byte pcVert = (byte) ((param & 0x0c) >> 2);
+                byte pcHorz = (byte) (param & 0x03);
+                if (pcVert != 3) {
+                    newPAP.setPcVert(pcVert);
+                }
+                if (pcHorz != 3) {
+                    newPAP.setPcHorz(pcHorz);
+                }
+                break;
+
+            // BrcXXX1 is older Version. Brc is used
+            // case 0x1c:
+            // newPAP.setBrcTop1((short)param);
+            // break;
+            // case 0x1d:
+            // newPAP.setBrcLeft1((short)param);
+            // break;
+            // case 0x1e:
+            // newPAP.setBrcBottom1((short)param);
+            // break;
+            // case 0x1f:
+            // newPAP.setBrcRight1((short)param);
+            // break;
+            // case 0x20:
+            // newPAP.setBrcBetween1((short)param);
+            // break;
+            // case 0x21:
+            // newPAP.setBrcBar1((byte)param);
+            // break;
+
+            case 0x22:
+                newPAP.setDxaFromText(sprm.getOperand());
+                break;
+            case 0x23:
+                newPAP.setWr((byte) sprm.getOperand());
+                break;
+            case 0x24:
+                newPAP.setBrcTop(new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
+                break;
+            case 0x25:
+                newPAP.setBrcLeft(new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
+                break;
+            case 0x26:
+                newPAP.setBrcBottom(new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
+                break;
+            case 0x27:
+                newPAP.setBrcRight(new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
+                break;
+            case 0x28:
+                newPAP.setBrcBetween(new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
+                break;
+            case 0x29:
+                newPAP.setBrcBar(new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
+                break;
+            case 0x2a:
+                newPAP.setFNoAutoHyph(sprm.getOperand() != 0);
+                break;
+            case 0x2b:
+                newPAP.setDyaHeight(sprm.getOperand());
+                break;
+            case 0x2c:
+                newPAP.setDcs(new DropCapSpecifier((short) sprm.getOperand()));
+                break;
+            case 0x2d:
+                newPAP.setShd(new ShadingDescriptor80((short) 
sprm.getOperand())
+                        .toShadingDescriptor());
+                break;
+            case 0x2e:
+                newPAP.setDyaFromText(sprm.getOperand());
+                break;
+            case 0x2f:
+                newPAP.setDxaFromText(sprm.getOperand());
+                break;
+            case 0x30:
+                newPAP.setFLocked(sprm.getOperand() != 0);
+                break;
+            case 0x31:
+                newPAP.setFWidowControl(sprm.getOperand() != 0);
+                break;
+            case 0x33:
+                newPAP.setFKinsoku(sprm.getOperand() != 0);
+                break;
+            case 0x34:
+                newPAP.setFWordWrap(sprm.getOperand() != 0);
+                break;
+            case 0x35:
+                newPAP.setFOverflowPunct(sprm.getOperand() != 0);
+                break;
+            case 0x36:
+                newPAP.setFTopLinePunct(sprm.getOperand() != 0);
+                break;
+            case 0x37:
+                newPAP.setFAutoSpaceDE(sprm.getOperand() != 0);
+                break;
+            case 0x38:
+                newPAP.setFAutoSpaceDN(sprm.getOperand() != 0);
+                break;
+            case 0x39:
+                newPAP.setWAlignFont(sprm.getOperand());
+                break;
+            case 0x3a:
+                newPAP.setFontAlign((short) sprm.getOperand());
+                break;
+            case 0x3b:
+                //obsolete
+                break;
+            case 0x3e: {
+                // TODO: REMOVEME
+                byte[] buf = Arrays.copyOfRange(sprm.getGrpprl(), 
sprm.getGrpprlOffset(), sprm.getGrpprlOffset() + (sprm.size() - 3));
+                newPAP.setAnld(buf);
+                break;
+            }
+            case 0x3f:
+                //don't really need this. spec is confusing regarding this
+                //sprm
+                byte[] varParam = sprm.getGrpprl();
+                int offset = sprm.getGrpprlOffset();
+                newPAP.setFPropRMark(varParam[offset] != 0);
+                newPAP.setIbstPropRMark(LittleEndian.getShort(varParam, offset 
+ 1));
+                newPAP.setDttmPropRMark(new DateAndTime(varParam, offset + 3));
+                break;
+            case 0x40:
+                // This condition commented out, as Word seems to set outline 
levels even for
+                //  paragraph with other styles than Heading 1..9, even though 
specification
+                //  does not say so. See bug 49820 for discussion.
+                //if (newPAP.getIstd () < 1 && newPAP.getIstd () > 9)
+            {
+                newPAP.setLvl((byte) sprm.getOperand());
+            }
+            break;
+            case 0x41:
+                // sprmPFBiDi
+                newPAP.setFBiDi(sprm.getOperand() != 0);
+                break;
+            case 0x43:
+
+                //pap.fNumRMIns
+                newPAP.setFNumRMIns(sprm.getOperand() != 0);
+                break;
+            case 0x44:
+
+                //undocumented
+                break;
+            case 0x45:
+                if (sprm.getSizeCode() == 6) {
+                    byte[] buf = new byte[sprm.size() - 3];
+                    System.arraycopy(buf, 0, sprm.getGrpprl(), 
sprm.getGrpprlOffset(), buf.length);
+                    newPAP.setNumrm(buf);
+                } else {
+                    /**@todo handle large PAPX from data stream*/
+                }
+                break;
+
+            case 0x47:
+                newPAP.setFUsePgsuSettings(sprm.getOperand() != 0);
+                break;
+            case 0x48:
+                newPAP.setFAdjustRight(sprm.getOperand() != 0);
+                break;
+            case 0x49:
+                // sprmPItap -- 0x6649
+                newPAP.setItap(sprm.getOperand());
+                break;
+            case 0x4a:
+                // sprmPDtap -- 0x664a
+                newPAP.setItap((byte) (newPAP.getItap() + sprm.getOperand()));
+                break;
+            case 0x4b:
+                // sprmPFInnerTableCell -- 0x244b
+                newPAP.setFInnerTableCell(sprm.getOperand() != 0);
+                break;
+            case 0x4c:
+                // sprmPFInnerTtp -- 0x244c
+                newPAP.setFTtpEmbedded(sprm.getOperand() != 0);
+                break;
+            case 0x4d:
+                // sprmPShd -- 0xc64d
+                ShadingDescriptor shadingDescriptor = new ShadingDescriptor(
+                        sprm.getGrpprl(), 3);
+                newPAP.setShading(shadingDescriptor);
+                break;
+            case 0x5d:
+                // sprmPDxaRight -- 0x845d
+                newPAP.setDxaRight(sprm.getOperand());
+                break;
+            case 0x5e:
+                // sprmPDxaLeft -- 0x845e
+                newPAP.setDxaLeft(sprm.getOperand());
+                break;
+            case 0x60:
+                // sprmPDxaLeft1 -- 0x8460
+                newPAP.setDxaLeft1(sprm.getOperand());
+                break;
+            case 0x61:
+                // sprmPJc
+                newPAP.setJustificationLogical((byte) sprm.getOperand());
+                break;
+            case 0x67:
+                // sprmPRsid -- 0x6467
+                newPAP.setRsid(sprm.getOperand());
+                break;
+            default:
+                LOG.atDebug().log("Unknown PAP sprm ignored: {}", sprm);
+                break;
         }
-        if (pcHorz != 3)
-        {
-          newPAP.setPcHorz (pcHorz);
-        }
-        break;
+    }
 
-        // BrcXXX1 is older Version. Brc is used
-        // case 0x1c:
-        // newPAP.setBrcTop1((short)param);
-        // break;
-        // case 0x1d:
-        // newPAP.setBrcLeft1((short)param);
-        // break;
-        // case 0x1e:
-        // newPAP.setBrcBottom1((short)param);
-        // break;
-        // case 0x1f:
-        // newPAP.setBrcRight1((short)param);
-        // break;
-        // case 0x20:
-        // newPAP.setBrcBetween1((short)param);
-        // break;
-        // case 0x21:
-        // newPAP.setBrcBar1((byte)param);
-        // break;
-
-      case 0x22:
-        newPAP.setDxaFromText (sprm.getOperand());
-        break;
-      case 0x23:
-        newPAP.setWr((byte)sprm.getOperand());
-        break;
-      case 0x24:
-        newPAP.setBrcTop(new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
-        break;
-      case 0x25:
-        newPAP.setBrcLeft(new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
-        break;
-      case 0x26:
-        newPAP.setBrcBottom (new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
-        break;
-      case 0x27:
-        newPAP.setBrcRight (new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
-        break;
-      case 0x28:
-        newPAP.setBrcBetween (new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
-        break;
-      case 0x29:
-        newPAP.setBrcBar (new BorderCode(sprm.getGrpprl(), 
sprm.getGrpprlOffset()));
-        break;
-      case 0x2a:
-        newPAP.setFNoAutoHyph (sprm.getOperand() != 0);
-        break;
-      case 0x2b:
-        newPAP.setDyaHeight (sprm.getOperand());
-        break;
-      case 0x2c:
-        newPAP.setDcs (new DropCapSpecifier((short)sprm.getOperand()));
-        break;
-        case 0x2d:
-            newPAP.setShd( new ShadingDescriptor80( (short) sprm.getOperand() )
-                    .toShadingDescriptor() );
-            break;
-      case 0x2e:
-        newPAP.setDyaFromText (sprm.getOperand());
-        break;
-      case 0x2f:
-        newPAP.setDxaFromText (sprm.getOperand());
-        break;
-      case 0x30:
-        newPAP.setFLocked (sprm.getOperand() != 0);
-        break;
-      case 0x31:
-        newPAP.setFWidowControl (sprm.getOperand() != 0);
-        break;
-      case 0x33:
-        newPAP.setFKinsoku (sprm.getOperand() != 0);
-        break;
-      case 0x34:
-        newPAP.setFWordWrap (sprm.getOperand() != 0);
-        break;
-      case 0x35:
-        newPAP.setFOverflowPunct (sprm.getOperand() != 0);
-        break;
-      case 0x36:
-        newPAP.setFTopLinePunct (sprm.getOperand() != 0);
-        break;
-      case 0x37:
-        newPAP.setFAutoSpaceDE (sprm.getOperand() != 0);
-        break;
-      case 0x38:
-        newPAP.setFAutoSpaceDN (sprm.getOperand() != 0);
-        break;
-      case 0x39:
-        newPAP.setWAlignFont (sprm.getOperand());
-        break;
-      case 0x3a:
-        newPAP.setFontAlign ((short) sprm.getOperand());
-        break;
-      case 0x3b:
-        //obsolete
-        break;
-      case 0x3e: {
-        // TODO: REMOVEME
-        byte[] buf = Arrays.copyOfRange(sprm.getGrpprl(), 
sprm.getGrpprlOffset(), sprm.getGrpprlOffset() + (sprm.size() - 3));
-        newPAP.setAnld(buf);
-        break;
-      }
-      case 0x3f:
-        //don't really need this. spec is confusing regarding this
-        //sprm
-          byte[] varParam = sprm.getGrpprl();
-          int offset = sprm.getGrpprlOffset();
-          newPAP.setFPropRMark (varParam[offset]  != 0 );
-          newPAP.setIbstPropRMark (LittleEndian.getShort (varParam, offset + 
1));
-          newPAP.setDttmPropRMark (new DateAndTime(varParam, offset + 3));
-        break;
-      case 0x40:
-        // This condition commented out, as Word seems to set outline levels 
even for
-        //  paragraph with other styles than Heading 1..9, even though 
specification
-        //  does not say so. See bug 49820 for discussion.
-        //if (newPAP.getIstd () < 1 && newPAP.getIstd () > 9)
-        {
-          newPAP.setLvl ((byte) sprm.getOperand());
-        }
-        break;
-      case 0x41:
-        // sprmPFBiDi
-        newPAP.setFBiDi(sprm.getOperand() != 0);
-        break;
-      case 0x43:
-
-        //pap.fNumRMIns
-        newPAP.setFNumRMIns (sprm.getOperand() != 0);
-        break;
-      case 0x44:
-
-        //undocumented
-        break;
-      case 0x45:
-        if (sprm.getSizeCode() == 6)
-        {
-          byte[] buf = new byte[sprm.size() - 3];
-          System.arraycopy(buf, 0, sprm.getGrpprl(), sprm.getGrpprlOffset(), 
buf.length);
-          newPAP.setNumrm (buf);
+    private static void handleTabs(ParagraphProperties pap, SprmOperation 
sprm) {
+        byte[] grpprl = sprm.getGrpprl();
+        int offset = sprm.getGrpprlOffset();
+        int delSize = grpprl[offset++];
+        int[] tabPositions = pap.getRgdxaTab();
+        TabDescriptor[] tabDescriptors = pap.getRgtbd();
+
+        Map<Integer, TabDescriptor> tabMap = new HashMap<>();
+        for (int x = 0; x < tabPositions.length; x++) {
+            tabMap.put(tabPositions[x], tabDescriptors[x]);
         }
-        else
-        {
-          /**@todo handle large PAPX from data stream*/
-        }
-        break;
 
-      case 0x47:
-        newPAP.setFUsePgsuSettings (sprm.getOperand() != 0);
-        break;
-      case 0x48:
-        newPAP.setFAdjustRight (sprm.getOperand() != 0);
-        break;
-        case 0x49:
-            // sprmPItap -- 0x6649
-            newPAP.setItap( sprm.getOperand() );
-            break;
-        case 0x4a:
-            // sprmPDtap -- 0x664a
-            newPAP.setItap( (byte) ( newPAP.getItap() + sprm.getOperand() ) );
-            break;
-        case 0x4b:
-            // sprmPFInnerTableCell -- 0x244b
-            newPAP.setFInnerTableCell( sprm.getOperand()  != 0);
-            break;
-        case 0x4c:
-            // sprmPFInnerTtp -- 0x244c
-            newPAP.setFTtpEmbedded( sprm.getOperand()  != 0);
-            break;
-        case 0x4d:
-            // sprmPShd -- 0xc64d
-            ShadingDescriptor shadingDescriptor = new ShadingDescriptor(
-                    sprm.getGrpprl(), 3 );
-            newPAP.setShading( shadingDescriptor );
-            break;
-        case 0x5d:
-            // sprmPDxaRight -- 0x845d
-            newPAP.setDxaRight( sprm.getOperand() );
-            break;
-        case 0x5e:
-            // sprmPDxaLeft -- 0x845e
-            newPAP.setDxaLeft( sprm.getOperand() );
-            break;
-        case 0x60:
-            // sprmPDxaLeft1 -- 0x8460
-            newPAP.setDxaLeft1( sprm.getOperand() );
-            break;
-      case 0x61:
-        // sprmPJc
-        newPAP.setJustificationLogical((byte) sprm.getOperand());
-        break;
-      case 0x67:
-          // sprmPRsid -- 0x6467
-          newPAP.setRsid( sprm.getOperand() );
-          break;
-        default:
-            LOG.atDebug().log("Unknown PAP sprm ignored: {}", sprm);
-            break;
+        for (int x = 0; x < delSize; x++) {
+            tabMap.remove((int) LittleEndian.getShort(grpprl, offset));
+            offset += LittleEndianConsts.SHORT_SIZE;
         }
-  }
 
-  private static void handleTabs(ParagraphProperties pap, SprmOperation sprm)
-  {
-    byte[] grpprl = sprm.getGrpprl();
-    int offset = sprm.getGrpprlOffset();
-    int delSize = grpprl[offset++];
-    int[] tabPositions = pap.getRgdxaTab();
-    TabDescriptor[] tabDescriptors = pap.getRgtbd();
-
-    Map<Integer, TabDescriptor> tabMap = new HashMap<>();
-    for (int x = 0; x < tabPositions.length; x++)
-    {
-      tabMap.put(tabPositions[x], tabDescriptors[x]);
-    }
+        int addSize = grpprl[offset++];
+        int start = offset;
+        for (int x = 0; x < addSize; x++) {
+            Integer key = (int) LittleEndian.getShort(grpprl, offset);
+            TabDescriptor val = new TabDescriptor(grpprl, start + 
((TBDAbstractType.getSize() * addSize) + x));
+            tabMap.put(key, val);
+            offset += LittleEndianConsts.SHORT_SIZE;
+        }
 
-    for (int x = 0; x < delSize; x++)
-    {
-      tabMap.remove((int) LittleEndian.getShort(grpprl, offset));
-      offset += LittleEndianConsts.SHORT_SIZE;
-    }
+        tabPositions = new int[tabMap.size()];
+        tabDescriptors = new TabDescriptor[tabPositions.length];
 
-    int addSize = grpprl[offset++];
-    int start = offset;
-    for (int x = 0; x < addSize; x++)
-    {
-      Integer key = (int) LittleEndian.getShort(grpprl, offset);
-      TabDescriptor val = new TabDescriptor( grpprl, start + 
((TBDAbstractType.getSize() * addSize) + x) );
-      tabMap.put(key, val);
-      offset += LittleEndianConsts.SHORT_SIZE;
-    }
+        List<Integer> list = new ArrayList<>(tabMap.keySet());
+        Collections.sort(list);
 
-    tabPositions = new int[tabMap.size()];
-    tabDescriptors = new TabDescriptor[tabPositions.length];
-
-    List<Integer> list = new ArrayList<>(tabMap.keySet());
-    Collections.sort(list);
+        for (int x = 0; x < tabPositions.length; x++) {
+            Integer key = list.get(x);
+            tabPositions[x] = key;
+            if (tabMap.containsKey(key))
+                tabDescriptors[x] = tabMap.get(key);
+            else
+                tabDescriptors[x] = new TabDescriptor();
+        }
 
-    for (int x = 0; x < tabPositions.length; x++)
-    {
-      Integer key = list.get(x);
-      tabPositions[x] = key;
-      if (tabMap.containsKey( key ))
-          tabDescriptors[x] = tabMap.get(key);
-      else
-          tabDescriptors[x] = new TabDescriptor();
+        pap.setRgdxaTab(tabPositions);
+        pap.setRgtbd(tabDescriptors);
     }
-
-    pap.setRgdxaTab(tabPositions);
-    pap.setRgtbd(tabDescriptors);
-  }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to