📄 stylesheet.java
字号:
newCHP._ftcFE = styleCHP._ftcFE; } if(genCHP._ftcOther == newCHP._ftcOther) { newCHP._ftcOther = styleCHP._ftcOther; } if(genCHP._hps == newCHP._hps) { newCHP._hps = styleCHP._hps; } if(genCHP._hpsPos == newCHP._hpsPos) { newCHP._hpsPos = styleCHP._hpsPos; } if(genCHP._kul == newCHP._kul) { newCHP._kul = styleCHP._kul; } if(genCHP._dxaSpace == newCHP._dxaSpace) { newCHP._dxaSpace = styleCHP._dxaSpace; } if(genCHP._ico == newCHP._ico) { newCHP._ico = styleCHP._ico; } if(genCHP._lidDefault == newCHP._lidDefault) { newCHP._lidDefault = styleCHP._lidDefault; } if(genCHP._lidFE == newCHP._lidFE) { newCHP._lidFE = styleCHP._lidFE; } break; case 0x48: newCHP._iss = (byte)param; break; case 0x49: newCHP._hps = Utils.convertBytesToShort(varParam, 0); break; case 0x4a: int increment = Utils.convertBytesToShort(varParam, 0); newCHP._hps = Math.max(newCHP._hps + increment, 8); break; case 0x4b: newCHP._hpsKern = param; break; case 0x4c: doCHPOperation(oldCHP, newCHP, 0x47, param, varParam, grpprl, offset, styleSheet); break; case 0x4d: float percentage = (float)param/100.0f; int add = (int)((float)percentage * (float)newCHP._hps); newCHP._hps += add; break; case 0x4e: newCHP._ysr = (byte)param; break; case 0x4f: newCHP._ftcAscii = (short)param; break; case 0x50: newCHP._ftcFE = (short)param; break; case 0x51: newCHP._ftcOther = (short)param; break; case 0x52: break; case 0x53: newCHP._fDStrike = getFlag(param); break; case 0x54: newCHP._fImprint = getFlag(param); break; case 0x55: newCHP._fSpec = getFlag(param); break; case 0x56: newCHP._fObj = getFlag(param); break; case 0x57: newCHP._fPropMark = getFlag(varParam[0]); newCHP._ibstPropRMark = (short)Utils.convertBytesToShort(varParam, 1); newCHP._dttmPropRMark = Utils.convertBytesToInt(varParam, 3); break; case 0x58: newCHP._fEmboss = getFlag(param); break; case 0x59: newCHP._sfxtText = (byte)param; break; case 0x5a: break; case 0x5b: break; case 0x5c: break; case 0x5d: break; case 0x5e: break; case 0x5f: break; case 0x60: break; case 0x61: break; case 0x62: newCHP._fDispFldRMark = getFlag(varParam[0]); newCHP._ibstDispFldRMark = (short)Utils.convertBytesToShort(varParam, 1); newCHP._dttmDispFldRMark = Utils.convertBytesToInt(varParam, 3); System.arraycopy(varParam, 7, newCHP._xstDispFldRMark, 0, 32); break; case 0x63: newCHP._ibstRMarkDel = (short)param; break; case 0x64: newCHP._dttmRMarkDel[0] = Utils.convertBytesToShort(grpprl, offset - 4); newCHP._dttmRMarkDel[1] = Utils.convertBytesToShort(grpprl, offset - 2); break; case 0x65: newCHP._brc[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4); newCHP._brc[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2); break; case 0x66: newCHP._shd = (short)param; break; case 0x67: break; case 0x68: break; case 0x69: break; case 0x6a: break; case 0x6b: break; case 0x6c: break; case 0x6d: newCHP._lidDefault = (short)param; break; case 0x6e: newCHP._lidFE = (short)param; break; case 0x6f: newCHP._idctHint = (byte)param; break; } } static Object uncompressProperty(byte[] grpprl, Object parent, StyleSheet styleSheet) { return uncompressProperty(grpprl, parent, styleSheet, true); } static Object uncompressProperty(byte[] grpprl, Object parent, StyleSheet styleSheet, boolean doIstd) { Object newProperty = null; int offset = 0; int propertyType = PAP_TYPE; if(parent instanceof PAP) { try { newProperty = ((PAP)parent).clone(); } catch(Exception e){} if(doIstd) { ((PAP)newProperty)._istd = Utils.convertBytesToShort(grpprl, 0); offset = 2; } } else if(parent instanceof CHP) { try { newProperty = ((CHP)parent).clone(); ((CHP)newProperty)._baseIstd = ((CHP)parent)._istd; } catch(Exception e){} propertyType = CHP_TYPE; } else if(parent instanceof SEP) { newProperty = parent; propertyType = SEP_TYPE; } else if(parent instanceof TAP) { newProperty = parent; propertyType = TAP_TYPE; offset = 2;//because this is really just a papx } else { return null; } while(offset < grpprl.length) { short sprm = Utils.convertBytesToShort(grpprl, offset); offset += 2; byte spra = (byte)((sprm & 0xe000) >> 13); int opSize = 0; int param = 0; byte[] varParam = null; switch(spra) { case 0: case 1: opSize = 1; param = grpprl[offset]; break; case 2: opSize = 2; param = Utils.convertBytesToShort(grpprl, offset); break; case 3: opSize = 4; param = Utils.convertBytesToInt(grpprl, offset); break; case 4: case 5: opSize = 2; param = Utils.convertBytesToShort(grpprl, offset); break; case 6://variable size //there is one sprm that is a very special case if(sprm != (short)0xd608) { opSize = Utils.convertUnsignedByteToInt(grpprl[offset]); offset++; } else { opSize = Utils.convertBytesToShort(grpprl, offset) - 1; offset += 2; } varParam = new byte[opSize]; System.arraycopy(grpprl, offset, varParam, 0, opSize); break; case 7: opSize = 3; param = Utils.convertBytesToInt((byte)0, grpprl[offset + 2], grpprl[offset + 1], grpprl[offset]); break; default: throw new RuntimeException("unrecognized pap opcode"); } offset += opSize; short operand = (short)(sprm & 0x1ff); byte type = (byte)((sprm & 0x1c00) >> 10); switch(propertyType) { case PAP_TYPE: if(type == 1)//papx stores TAP sprms along with PAP sprms { doPAPOperation((PAP)newProperty, operand, param, varParam, grpprl, offset, spra); } break; case CHP_TYPE: doCHPOperation((CHP)parent, (CHP)newProperty, operand, param, varParam, grpprl, offset, styleSheet); break; case SEP_TYPE: doSEPOperation((SEP)newProperty, operand, param, varParam); break; case TAP_TYPE: if(type == 5) { doTAPOperation((TAP)newProperty, operand, param, varParam); } break; } } return newProperty; } static void doPAPOperation(PAP newPAP, int operand, int param, byte[] varParam, byte[] grpprl, int offset, int spra) { switch(operand) { case 0: newPAP._istd = param; break; case 0x1: //permuteIstd(newPAP, varParam); break; case 0x2: if(newPAP._istd <=9 || newPAP._istd >=1) { newPAP._istd += param; if(param > 0) { newPAP._istd = Math.max(newPAP._istd, 9); } else { newPAP._istd = Math.min(newPAP._istd, 1); } } break; case 0x3: newPAP._jc = (byte)param; break; case 0x4: newPAP._fSideBySide = (byte)param; break; case 0x5: newPAP._fKeep = (byte)param; break; case 0x6: newPAP._fKeepFollow = (byte)param; break; case 0x7: newPAP._fPageBreakBefore = (byte)param; break; case 0x8: newPAP._brcl = (byte)param; break; case 0x9: newPAP._brcp = (byte)param; break; case 0xa: newPAP._ilvl = (byte)param; break; case 0xb: newPAP._ilfo = param; break; case 0xc: newPAP._fNoLnn = (byte)param; break; case 0xd: /**@todo handle tabs*/ break; case 0xe: newPAP._dxaRight = param; break; case 0xf: newPAP._dxaLeft = param; break; case 0x10: newPAP._dxaLeft += param; newPAP._dxaLeft = Math.max(0, newPAP._dxaLeft); break; case 0x11: newPAP._dxaLeft1 = param; break; case 0x12: newPAP._lspd[0] = Utils.convertBytesToShort(grpprl, offset - 4); newPAP._lspd[1] = Utils.convertBytesToShort(grpprl, offset - 2); break; case 0x13: newPAP._dyaBefore = param; break; case 0x14: newPAP._dyaAfter = param; break; case 0x15: /**@todo handle tabs*/ break; case 0x16: newPAP._fInTable = (byte)param; break; case 0x17: newPAP._fTtp =(byte)param; break; case 0x18: newPAP._dxaAbs = param; break; case 0x19: newPAP._dyaAbs = param; break; case 0x1a: newPAP._dxaWidth = param; break; case 0x1b: /** @todo handle paragraph postioning*/ /*byte pcVert = (param & 0x0c) >> 2; byte pcHorz = param & 0x03; if(pcVert != 3) { newPAP._pcVert = pcVert; } if(pcHorz != 3) { newPAP._pcHorz = pcHorz; }*/ break; case 0x1c: newPAP._brcTop1 = (short)param; break; case 0x1d: newPAP._brcLeft1 = (short)param; break; case 0x1e: newPAP._brcBottom1 = (short)param; break; case 0x1f: newPAP._brcRight1 = (short)param; break; case 0x20: newPAP._brcBetween1 = (short)param; break; case 0x21: newPAP._brcBar1 = (byte)param; break; case 0x22: newPAP._dxaFromText = param; break; case 0x23: newPAP._wr = (byte)param; break; case 0x24: newPAP._brcTop[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4); newPAP._brcTop[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2); break; case 0x25: newPAP._brcLeft[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4); newPAP._brcLeft[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2); break; case 0x26: newPAP._brcBottom[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4); newPAP._brcBottom[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2); break; case 0x27:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -