public final class EscherAggregate extends AbstractEscherHolderRecord
It gets even worse when you start looking at TXO records.
So what we do with this class is aggregate lazily. That is we don't aggregate the MSODRAWING -> OBJ records unless we need to modify them.
At first document contains 4 types of records which belong to drawing layer. There are can be such sequence of record:
DrawingRecord ContinueRecord ... ContinueRecord ObjRecord | TextObjectRecord ..... ContinueRecord ... ContinueRecord ObjRecord | TextObjectRecord NoteRecord ... NoteRecord
To work with shapes we have to read data from Drawing and Continue records into single array of bytes and build escher(office art) records tree from this array. Each shape in drawing layer matches corresponding ObjRecord Each textbox matches corresponding TextObjectRecord
ObjRecord contains information about shape. Thus each ObjRecord corresponds EscherContainerRecord(SPGR)
EscherAggrefate contains also NoteRecords NoteRecords must be serial
(此类用于聚合 MSODRAWING 和 OBJ 记录组合。这是必要的,因为这些记录的序列化方式很奇怪。发生的情况是您获得了 MSODRAWING -> OBJ -> MSODRAWING -> OBJ 记录的组合,但 escher 记录被序列化_across_ MSODRAWING 记录。当您开始查看 TXO 记录时,情况会变得更糟。所以我们对这个类所做的就是惰性聚合。也就是说,除非我们需要修改它们,否则我们不会聚合 MSODRAWING -> OBJ 记录。首先文档包含属于绘图层的4类记录。可以有这样的记录序列: DrawingRecord ContinueRecord ... ContinueRecord ObjRecord | TextObjectRecord ..... ContinueRecord ... ContinueRecord ObjRecord | TextObjectRecord NoteRecord ... NoteRecord 要使用形状,我们必须从绘图和继续记录中读取数据到单个字节数组中,并从该数组中构建 escher(office art) 记录树。绘图层中的每个形状都匹配相应的 ObjRecord 每个文本框都匹配相应的 TextObjectRecord ObjRecord 包含有关形状的信息。因此每个 ObjRecord 对应 EscherContainerRecord(SPGR) EscherAggrefate 还包含 NoteRecords NoteRecords 必须是串行的)Constructor and Description |
---|
EscherAggregate(boolean createDefaultTree)
create new EscherAggregate
|
EscherAggregate(EscherAggregate other) |
Modifier and Type | Method and Description |
---|---|
void |
addTailRecord(NoteRecord note)
Add tail record to existing map
(将尾记录添加到现有地图)
|
void |
associateShapeToObjRecord(EscherRecord r, Record objRecord)
Associates an escher record to an OBJ record or a TXO record.
(将 escher 记录与 OBJ 记录或 TXO 记录相关联。)
|
EscherAggregate |
copy() |
static EscherAggregate |
createAggregate(java.util.List<RecordBase> records, int locFirstDrawingRecord)
Collapses the drawing records into an aggregate.
(将绘图记录折叠成一个聚合。)
|
java.util.Map<java.lang.String,java.util.function.Supplier<?>> |
getGenericProperties() |
HSSFRecordTypes |
getGenericRecordType() |
NoteRecord |
getNoteRecordByObj(ObjRecord obj) |
protected java.lang.String |
getRecordName() |
int |
getRecordSize()
gives the current serialized size of the record.
(给出记录的当前序列化大小.)
|
java.util.Map<EscherRecord,Record> |
getShapeToObjMapping() |
short |
getSid()
return the non static version of the id for this record.
(返回此记录的 id 的非静态版本。)
|
java.util.Map<java.lang.Integer,NoteRecord> |
getTailRecords() |
void |
removeShapeToObjRecord(EscherRecord rec)
Remove echerRecord and associated to it Obj or TextObj record
(删除 echerRecord 并将其关联到 Obj 或 TextObj 记录)
|
void |
removeTailRecord(NoteRecord note)
Remove tail record from the existing map
(从现有地图中删除尾记录)
|
int |
serialize(int offset, byte[] data)
Serializes this aggregate to a byte array.
(将此聚合序列化为字节数组。)
|
void |
setDgId(short dgId)
EscherDgContainer -EscherSpgrContainer -EscherDgRecord - set id for this record set id for DgRecord of DgContainer
(EscherDgContainer -EscherSpgrContainer -EscherDgRecord - 为 DgContainer 的 DgRecord 设置此记录的 id)
|
void |
setMainSpRecordId(int shapeId)
EscherDgContainer -EscherSpgrContainer --EscherSpContainer ---EscherSpRecord -set id for this record ---*** --*** -EscherDgRecord set id for the sp record of the first spContainer in main spgrConatiner
(EscherDgContainer -EscherSpgrContainer --EscherSpContainer ---EscherSpRecord -设置此记录的id ---*** --*** -EscherDgRecord 设置主spgrConatiner中第一个spContainer的sp记录的id)
|
java.lang.String |
toXml(java.lang.String tab)
Calculates the xml representation of this record.
(计算此记录的 xml 表示形式。)
|
addEscherRecord, addEscherRecord, clearEscherRecords, convertRawBytesToEscherRecords, decode, findFirstWithId, getEscherContainer, getEscherRecord, getEscherRecords, getGenericChildren, getRawData, join, processContinueRecord, setRawData
cloneViaReserialise, serialize, toString
public static final short sid
public static final short ST_MIN
public static final short ST_NOT_PRIMATIVE
public static final short ST_RECTANGLE
public static final short ST_ROUNDRECTANGLE
public static final short ST_ELLIPSE
public static final short ST_DIAMOND
public static final short ST_ISOCELESTRIANGLE
public static final short ST_RIGHTTRIANGLE
public static final short ST_PARALLELOGRAM
public static final short ST_TRAPEZOID
public static final short ST_HEXAGON
public static final short ST_OCTAGON
public static final short ST_PLUS
public static final short ST_STAR
public static final short ST_ARROW
public static final short ST_THICKARROW
public static final short ST_HOMEPLATE
public static final short ST_CUBE
public static final short ST_BALLOON
public static final short ST_SEAL
public static final short ST_ARC
public static final short ST_LINE
public static final short ST_PLAQUE
public static final short ST_CAN
public static final short ST_DONUT
public static final short ST_TEXTSIMPLE
public static final short ST_TEXTOCTAGON
public static final short ST_TEXTHEXAGON
public static final short ST_TEXTCURVE
public static final short ST_TEXTWAVE
public static final short ST_TEXTRING
public static final short ST_TEXTONCURVE
public static final short ST_TEXTONRING
public static final short ST_STRAIGHTCONNECTOR1
public static final short ST_BENTCONNECTOR2
public static final short ST_BENTCONNECTOR3
public static final short ST_BENTCONNECTOR4
public static final short ST_BENTCONNECTOR5
public static final short ST_CURVEDCONNECTOR2
public static final short ST_CURVEDCONNECTOR3
public static final short ST_CURVEDCONNECTOR4
public static final short ST_CURVEDCONNECTOR5
public static final short ST_CALLOUT1
public static final short ST_CALLOUT2
public static final short ST_CALLOUT3
public static final short ST_ACCENTCALLOUT1
public static final short ST_ACCENTCALLOUT2
public static final short ST_ACCENTCALLOUT3
public static final short ST_BORDERCALLOUT1
public static final short ST_BORDERCALLOUT2
public static final short ST_BORDERCALLOUT3
public static final short ST_ACCENTBORDERCALLOUT1
public static final short ST_ACCENTBORDERCALLOUT2
public static final short ST_ACCENTBORDERCALLOUT3
public static final short ST_RIBBON
public static final short ST_RIBBON2
public static final short ST_CHEVRON
public static final short ST_PENTAGON
public static final short ST_NOSMOKING
public static final short ST_SEAL8
public static final short ST_SEAL16
public static final short ST_SEAL32
public static final short ST_WEDGERECTCALLOUT
public static final short ST_WEDGERRECTCALLOUT
public static final short ST_WEDGEELLIPSECALLOUT
public static final short ST_WAVE
public static final short ST_FOLDEDCORNER
public static final short ST_LEFTARROW
public static final short ST_DOWNARROW
public static final short ST_UPARROW
public static final short ST_LEFTRIGHTARROW
public static final short ST_UPDOWNARROW
public static final short ST_IRREGULARSEAL1
public static final short ST_IRREGULARSEAL2
public static final short ST_LIGHTNINGBOLT
public static final short ST_HEART
public static final short ST_PICTUREFRAME
public static final short ST_QUADARROW
public static final short ST_LEFTARROWCALLOUT
public static final short ST_RIGHTARROWCALLOUT
public static final short ST_UPARROWCALLOUT
public static final short ST_DOWNARROWCALLOUT
public static final short ST_LEFTRIGHTARROWCALLOUT
public static final short ST_UPDOWNARROWCALLOUT
public static final short ST_QUADARROWCALLOUT
public static final short ST_BEVEL
public static final short ST_LEFTBRACKET
public static final short ST_RIGHTBRACKET
public static final short ST_LEFTBRACE
public static final short ST_RIGHTBRACE
public static final short ST_LEFTUPARROW
public static final short ST_BENTUPARROW
public static final short ST_BENTARROW
public static final short ST_SEAL24
public static final short ST_STRIPEDRIGHTARROW
public static final short ST_NOTCHEDRIGHTARROW
public static final short ST_BLOCKARC
public static final short ST_SMILEYFACE
public static final short ST_VERTICALSCROLL
public static final short ST_HORIZONTALSCROLL
public static final short ST_CIRCULARARROW
public static final short ST_NOTCHEDCIRCULARARROW
public static final short ST_UTURNARROW
public static final short ST_CURVEDRIGHTARROW
public static final short ST_CURVEDLEFTARROW
public static final short ST_CURVEDUPARROW
public static final short ST_CURVEDDOWNARROW
public static final short ST_CLOUDCALLOUT
public static final short ST_ELLIPSERIBBON
public static final short ST_ELLIPSERIBBON2
public static final short ST_FLOWCHARTPROCESS
public static final short ST_FLOWCHARTDECISION
public static final short ST_FLOWCHARTINPUTOUTPUT
public static final short ST_FLOWCHARTPREDEFINEDPROCESS
public static final short ST_FLOWCHARTINTERNALSTORAGE
public static final short ST_FLOWCHARTDOCUMENT
public static final short ST_FLOWCHARTMULTIDOCUMENT
public static final short ST_FLOWCHARTTERMINATOR
public static final short ST_FLOWCHARTPREPARATION
public static final short ST_FLOWCHARTMANUALINPUT
public static final short ST_FLOWCHARTMANUALOPERATION
public static final short ST_FLOWCHARTCONNECTOR
public static final short ST_FLOWCHARTPUNCHEDCARD
public static final short ST_FLOWCHARTPUNCHEDTAPE
public static final short ST_FLOWCHARTSUMMINGJUNCTION
public static final short ST_FLOWCHARTOR
public static final short ST_FLOWCHARTCOLLATE
public static final short ST_FLOWCHARTSORT
public static final short ST_FLOWCHARTEXTRACT
public static final short ST_FLOWCHARTMERGE
public static final short ST_FLOWCHARTOFFLINESTORAGE
public static final short ST_FLOWCHARTONLINESTORAGE
public static final short ST_FLOWCHARTMAGNETICTAPE
public static final short ST_FLOWCHARTMAGNETICDISK
public static final short ST_FLOWCHARTMAGNETICDRUM
public static final short ST_FLOWCHARTDISPLAY
public static final short ST_FLOWCHARTDELAY
public static final short ST_TEXTPLAINTEXT
public static final short ST_TEXTSTOP
public static final short ST_TEXTTRIANGLE
public static final short ST_TEXTTRIANGLEINVERTED
public static final short ST_TEXTCHEVRON
public static final short ST_TEXTCHEVRONINVERTED
public static final short ST_TEXTRINGINSIDE
public static final short ST_TEXTRINGOUTSIDE
public static final short ST_TEXTARCHUPCURVE
public static final short ST_TEXTARCHDOWNCURVE
public static final short ST_TEXTCIRCLECURVE
public static final short ST_TEXTBUTTONCURVE
public static final short ST_TEXTARCHUPPOUR
public static final short ST_TEXTARCHDOWNPOUR
public static final short ST_TEXTCIRCLEPOUR
public static final short ST_TEXTBUTTONPOUR
public static final short ST_TEXTCURVEUP
public static final short ST_TEXTCURVEDOWN
public static final short ST_TEXTCASCADEUP
public static final short ST_TEXTCASCADEDOWN
public static final short ST_TEXTWAVE1
public static final short ST_TEXTWAVE2
public static final short ST_TEXTWAVE3
public static final short ST_TEXTWAVE4
public static final short ST_TEXTINFLATE
public static final short ST_TEXTDEFLATE
public static final short ST_TEXTINFLATEBOTTOM
public static final short ST_TEXTDEFLATEBOTTOM
public static final short ST_TEXTINFLATETOP
public static final short ST_TEXTDEFLATETOP
public static final short ST_TEXTDEFLATEINFLATE
public static final short ST_TEXTDEFLATEINFLATEDEFLATE
public static final short ST_TEXTFADERIGHT
public static final short ST_TEXTFADELEFT
public static final short ST_TEXTFADEUP
public static final short ST_TEXTFADEDOWN
public static final short ST_TEXTSLANTUP
public static final short ST_TEXTSLANTDOWN
public static final short ST_TEXTCANUP
public static final short ST_TEXTCANDOWN
public static final short ST_FLOWCHARTALTERNATEPROCESS
public static final short ST_FLOWCHARTOFFPAGECONNECTOR
public static final short ST_CALLOUT90
public static final short ST_ACCENTCALLOUT90
public static final short ST_BORDERCALLOUT90
public static final short ST_ACCENTBORDERCALLOUT90
public static final short ST_LEFTRIGHTUPARROW
public static final short ST_SUN
public static final short ST_MOON
public static final short ST_BRACKETPAIR
public static final short ST_BRACEPAIR
public static final short ST_SEAL4
public static final short ST_DOUBLEWAVE
public static final short ST_ACTIONBUTTONBLANK
public static final short ST_ACTIONBUTTONHOME
public static final short ST_ACTIONBUTTONHELP
public static final short ST_ACTIONBUTTONINFORMATION
public static final short ST_ACTIONBUTTONFORWARDNEXT
public static final short ST_ACTIONBUTTONBACKPREVIOUS
public static final short ST_ACTIONBUTTONEND
public static final short ST_ACTIONBUTTONBEGINNING
public static final short ST_ACTIONBUTTONRETURN
public static final short ST_ACTIONBUTTONDOCUMENT
public static final short ST_ACTIONBUTTONSOUND
public static final short ST_ACTIONBUTTONMOVIE
public static final short ST_HOSTCONTROL
public static final short ST_TEXTBOX
public static final short ST_NIL
public EscherAggregate(boolean createDefaultTree)
createDefaultTree
- if true creates base tree of the escher records, see EscherAggregate.buildBaseTree() else return empty escher aggregate
(createDefaultTree - 如果 true 创建 escher 记录的基础树,请参阅 EscherAggregate.buildBaseTree() 否则返回空 escher 聚合)
public EscherAggregate(EscherAggregate other)
public short getSid()
Record
getSid
in class
AbstractEscherHolderRecord
(类 AbstractEscherHolderRecord 中的 getSid)
public java.lang.String toXml(java.lang.String tab)
tab
- - string which must be added before each line (used by default '\t')
(tab - - 必须在每行之前添加的字符串(默认使用''))
public static EscherAggregate createAggregate(java.util.List<RecordBase> records, int locFirstDrawingRecord)
records
- - list of all records inside sheet
(记录——工作表内所有记录的列表)
locFirstDrawingRecord
- - location of the first DrawingRecord inside sheet
(locFirstDrawingRecord - - 工作表内第一个 DrawingRecord 的位置)
public int serialize(int offset, byte[] data)
serialize
in class
AbstractEscherHolderRecord
offset
- The offset into the start of the array.
(offset - 到数组开头的偏移量。)
data
- The byte array to serialize to.
(data - 要序列化到的字节数组。)
public int getRecordSize()
RecordBase
getRecordSize
in class
AbstractEscherHolderRecord
public void associateShapeToObjRecord(EscherRecord r, Record objRecord)
r
- - ClientData or Textbox record
(r - - ClientData 或 Textbox 记录)
objRecord
- - Obj or TextObj record
(objRecord - - Obj 或 TextObj 记录)
public void removeShapeToObjRecord(EscherRecord rec)
rec
- - clientData or textbox record to be removed
(rec - 要删除的 clientData 或文本框记录)
protected java.lang.String getRecordName()
getRecordName
in class
AbstractEscherHolderRecord
(类 AbstractEscherHolderRecord 中的 getRecordName)
public void setDgId(short dgId)
dgId
- - id which must be set
(dgId - - 必须设置的id)
public void setMainSpRecordId(int shapeId)
shapeId
- - id which must be set
(shapeId - - 必须设置的id)
public java.util.Map<EscherRecord,Record> getShapeToObjMapping()
EscherClientDataRecord
and
EscherTextboxRecord
to their
TextObjectRecord
or
ObjRecord
.
We need to access it outside of EscherAggregate when building shapes
(EscherClientDataRecord 和 EscherTextboxRecord 到它们的 TextObjectRecord 或 ObjRecord 的映射的不可修改副本。构建形状时,我们需要在 EscherAggregate 之外访问它)public java.util.Map<java.lang.Integer,NoteRecord> getTailRecords()
public NoteRecord getNoteRecordByObj(ObjRecord obj)
obj
- - ObjRecord with id == NoteRecord.id
(obj - - 带有 id == NoteRecord.id 的 ObjRecord)
public void addTailRecord(NoteRecord note)
note
- to be added
(注 - 待补充)
public void removeTailRecord(NoteRecord note)
note
- to be removed
(注意 - 将被删除)
public EscherAggregate copy()
copy
in interface
Duplicatable
(复制到界面 Duplicatable)
copy
in class
AbstractEscherHolderRecord
(在类 AbstractEscherHolderRecord 中复制)
public HSSFRecordTypes getGenericRecordType()
getGenericRecordType
in interface
GenericRecord
(接口 GenericRecord 中的 getGenericRecordType)
getGenericRecordType
in class
Record
(类 Record 中的 getGenericRecordType)
public java.util.Map<java.lang.String,java.util.function.Supplier<?>> getGenericProperties()
Copyright 2021 The Apache Software Foundation or its licensors, as applicable.