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
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.
|
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.
|
java.util.Map<java.lang.Integer,NoteRecord> |
getTailRecords() |
void |
removeShapeToObjRecord(EscherRecord rec)
Remove echerRecord and associated to it Obj or TextObj record
|
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
|
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
|
java.lang.String |
toXml(java.lang.String tab)
Calculates the xml representation of this record.
|
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 aggregatepublic EscherAggregate(EscherAggregate other)
public short getSid()
Record
getSid
in class AbstractEscherHolderRecord
public java.lang.String toXml(java.lang.String tab)
tab
- - string which must be added before each line (used by default '\t')public static EscherAggregate createAggregate(java.util.List<RecordBase> records, int locFirstDrawingRecord)
records
- - list of all records inside sheetlocFirstDrawingRecord
- - location of the first DrawingRecord inside sheetpublic int serialize(int offset, byte[] data)
serialize
in class AbstractEscherHolderRecord
offset
- The offset into the start of the array.data
- The byte array to serialize to.public int getRecordSize()
RecordBase
getRecordSize
in class AbstractEscherHolderRecord
public void associateShapeToObjRecord(EscherRecord r, Record objRecord)
r
- - ClientData or Textbox recordobjRecord
- - Obj or TextObj recordpublic void removeShapeToObjRecord(EscherRecord rec)
rec
- - clientData or textbox record to be removedprotected java.lang.String getRecordName()
getRecordName
in class AbstractEscherHolderRecord
public void setDgId(short dgId)
dgId
- - id which must be setpublic void setMainSpRecordId(int shapeId)
shapeId
- - id which must be setpublic 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
public java.util.Map<java.lang.Integer,NoteRecord> getTailRecords()
public NoteRecord getNoteRecordByObj(ObjRecord obj)
obj
- - ObjRecord with id == NoteRecord.idpublic void addTailRecord(NoteRecord note)
note
- to be addedpublic void removeTailRecord(NoteRecord note)
note
- to be removedpublic EscherAggregate copy()
copy
in interface Duplicatable
copy
in class AbstractEscherHolderRecord
public HSSFRecordTypes getGenericRecordType()
getGenericRecordType
in interface GenericRecord
getGenericRecordType
in class Record
public java.util.Map<java.lang.String,java.util.function.Supplier<?>> getGenericProperties()
Copyright 2021 The Apache Software Foundation or its licensors, as applicable.