Every edit in Pages that can be undone is an object in the document: a command
message. The saved command history lets an open document keep its undo stack. Apple has
not published these messages; the definitions below are those iWorkFileFormat recovered
from Pages 5.0 (2013), so later versions may add fields. This page lists the command
messages of four definition files: TPCommandArchives (Pages),
TSWPCommandArchives (text), TSDCommandArchives (drawing
objects) and the base commands of TSKArchives. The table commands are on
table undo commands and the
chart commands on
chart undo commands.
Notation as on the tables page:
req required, rep repeated, all others optional; a bracketed
number is the message type of the
message type numbers page. A message
shown without a number has none in the type registry that iWorkFileFormat read, so it is
nested in another message or its number is unknown. The source gives only the shape of
each command, not what it does; the descriptions here are read from the names and field
names and are not confirmed by Apple.
Base messages
Nearly every command starts with a TSK.CommandArchive in field 1, named
super. It is the only thing the commands share.
message TSK.CommandArchive {
1 TSP.Reference undoRedoState; 2 TSP.Reference undoCollection
}
message TSK.CommandGroupArchive { // type 202
req TSK.CommandArchive super = 1; rep TSP.Reference commands = 2;
3 TSP.IndexSet process_results
}
message TSK.CommandContainerArchive { // type 203
rep TSP.Reference commands = 1
}
message TSK.ReplaceAllChildCommandArchive { req TSK.CommandArchive super = 1 }
message TSK.ReplaceAllCommandArchive { // type 204
req TSK.CommandArchive super = 1; rep TSP.Reference commands = 2;
req string find_string = 3; req string replace_string = 4; req uint32 options = 5
}
message TSK.AddAnnotationAuthorCommandArchive { // type 214
req TSK.CommandArchive super = 1; 2 TSP.Reference document_root;
3 TSP.Reference annotation_author
}
message TSK.SetAnnotationAuthorColorCommandArchive { // type 215
req TSK.CommandArchive super = 1; 2 TSP.Reference annotation_author; 3 TSP.Color color
}
message TSS.ApplyThemeChildCommandArchive { // type 411
req TSK.CommandArchive super = 1; 2 TSP.Reference parent
}
A command group (202) is one undo step made of several commands. The history that
holds the groups, TSK.CommandHistory (201), and the selection behaviour
history are on document
messages. The Pages drawing layer wraps the commands of one gesture in
TSD.DrawablesCommandGroupArchive and selection behaviour messages,
described below.
Pages commands (TP)
Page and section layout, anchored and floating drawables, footnotes and document options.
Inserting, removing and moving drawables
message TP.InsertDrawablesCommandArchive { // type 10101
req TSK.CommandArchive super = 1; 2 uint32 page_index; 3 uint32 z_order;
rep TSP.Reference drawables = 4; 5 bool forPaste
}
message TP.RemoveDrawablesCommandArchive { // type 10102
message DrawableInfo { 1 uint32 page_index; 2 int32 z_order;
3 TSP.Reference drawable_object }
req TSK.CommandArchive super = 1; rep DrawableInfo drawables = 2
}
message TP.PasteAnchoredDrawablesCommandArchive { // type 10108
req TSK.CommandGroupArchive deprecated_super = 1; 4 TSK.CommandArchive super;
2 bool select; 3 TSP.Reference deprecated_undo_selection; 5 TSP.Reference canvas_selection
}
message TP.PasteDrawablesCommandArchive { // type 10109
message DrawableAndPage { 1 TSP.Reference drawable; 2 uint32 page_index }
req TSK.CommandArchive super = 1; rep DrawableAndPage drawables = 2
}
message TP.MoveDrawablesAttachedCommandArchive { // type 10110
message FloatingUndo {
1 TSP.Reference drawable; 2 TSD.GeometryArchive geometry; 3 TSP.Reference attachment;
4 uint32 wrap_type; 5 uint32 page_index; 6 int32 z_order
}
req TSK.CommandArchive super = 1; 2 TSWP.UndoTransaction undo_transaction;
rep FloatingUndo floating_undo = 3; 4 bool select; 5 bool make_inline
}
message TP.MoveDrawablesFloatingCommandArchive { // type 10111
message AttachedUndo {
1 TSP.Reference drawable; 2 TSD.GeometryArchive geometry; 3 TSP.Reference attachment;
4 uint32 page_index; 5 bool is_html_wrap; 6 uint32 type; 7 uint32 direction;
8 uint32 fit_type; 9 float margin; 10 float alpha_threshold; 11 TSP.Reference storage;
12 TSWP.UndoTransaction undo_transaction
}
req TSK.CommandArchive super = 1; 2 TSWP.UndoTransaction deprecated_undo_transaction;
rep AttachedUndo attached_undo = 3; 4 bool select
}
message TP.MoveInlineDrawableAnchoredCommandArchive { // type 10112
req TSK.CommandArchive super = 1; 2 TSP.Reference drawable; 3 bool is_html_wrap;
4 uint32 type; 5 uint32 direction; 6 uint32 fit_type; 7 float margin;
8 float alpha_threshold
}
message TP.MoveAnchoredDrawableInlineCommandArchive { // type 10119
req TSK.CommandArchive super = 1; 2 TSP.Reference drawable; 3 bool is_html_wrap;
4 uint32 type; 5 uint32 direction; 6 uint32 fit_type; 7 float margin;
8 float alpha_threshold; 9 uint32 z_order
}
message TP.RemoveAnchoredDrawableCommandArchive { // type 10142
req TSWP.TextCommandArchive super = 1; 2 uint32 char_index; 3 uint32 z_order
}
message TP.NudgeDrawablesCommandArchive { // type 10128
req TSK.CommandArchive super = 1; rep TSP.Reference child_commands = 2
}
message TP.MoveDrawablesPageIndexCommandArchive { // type 10130
message Drawable { 1 TSP.Reference drawable; 2 uint32 z_order }
req TSK.CommandArchive super = 1; 2 uint32 page_index; rep Drawable drawables = 3
}
message TP.SwapDrawableZOrderCommandArchive { // type 10141
message SwapPair { req uint32 z_order_1 = 1; req uint32 z_order_2 = 2 }
req TSK.CommandArchive super = 1; rep SwapPair swap_pairs = 2
}
The names point to the two ways Pages places an object: attached to the text
(inline or anchored to a character) or floating on a page at a position and z-order.
wrap_type, type, direction and
fit_type are unnamed integer codes in the source: their meaning is
unknown here (the exterior text wrap message on the
drawables page may use the
same codes, but the source does not say).
Master (page template) drawables
message TP.InsertMasterDrawablesCommandArchive { // type 10125
req TSK.CommandArchive super = 1; 2 TSP.Reference OBSOLETE_section;
rep TSP.Reference master_drawables = 3; 4 uint32 drawable_index;
5 TSP.Reference master_drawable_provider
}
message TP.RemoveMasterDrawablesCommandArchive { // type 10126
message MasterDrawable { 1 TSP.Reference drawable; 2 uint32 drawable_index }
req TSK.CommandArchive super = 1; 2 TSP.Reference OBSOLETE_section;
rep MasterDrawable master_drawables = 3; 4 TSP.Reference master_drawable_provider
}
message TP.PasteMasterDrawablesCommandArchive { // type 10127
req TSK.CommandArchive super = 1; 2 TSP.Reference section;
rep TSP.Reference master_drawables = 3; 4 uint32 drawable_index
}
message TP.MoveMasterDrawableZOrderCommandArchive { // type 10140
req TSK.CommandArchive super = 1; 2 TSP.Reference OBSOLETE_section;
rep TSP.Reference master_drawables = 3; rep uint32 indexes = 4;
5 TSP.Reference master_drawable_provider
}
Sections, headers, margins and page setup
message TP.InsertSectionBreakCommandArchive { // type 10152
req TSWP.TextCommandArchive super = 1
}
message TP.DeleteSectionCommandArchive { // type 10153
req TSK.CommandArchive super = 1
}
message TP.ReplaceSectionCommandArchive { // type 10154
req TSWP.TextCommandArchive super = 1
}
message TP.ChangeSectionPropertyCommandArchive { // type 10155
req TSK.CommandArchive super = 1; 2 uint32 section_index;
3 string section_property; 4 bool section_value_bool
}
message TP.ChangeHeaderFooterVisibilityCommandArchive { // type 10134
enum TPHeaderFooterType { kTPHeaderType = 0; kTPFooterType = 1 }
enum TPHeaderFragmentIndex { kTPHeaderLeft = 0; kTPHeaderCenter = 1; kTPHeaderRight = 2 }
req TSK.CommandArchive super = 1; 2 bool visible; 3 TPHeaderFooterType type;
4 TPHeaderFragmentIndex index_to_select; rep TSP.Reference storages = 5
}
message TP.ChangeSectionMarginsCommandArchive { // type 10120
enum SectionMargin { kSectionMarginLeft = 0; kSectionMarginRight = 1;
kSectionMarginTop = 2; kSectionMarginBottom = 3; kSectionMarginHeader = 4;
kSectionMarginFooter = 5 }
req TSK.CommandArchive super = 1; 2 TSP.Reference section; 3 SectionMargin margin;
4 float margin_value
}
message TP.ChangeDocumentPrinterOptionsCommandArchive { // type 10121
req TSK.CommandArchive super = 1; 2 TSP.Reference OBSOLETE_section;
3 float paper_width; 4 float paper_height; 5 float page_scale; 6 uint32 orientation;
7 string printer_id; 8 string paper_id
}
message TP.ToggleBodyLayoutDirectionCommandArchive { // type 10117
req TSK.CommandArchive super = 1; 2 bool new_direction_is_vertical
}
section_property is a string naming the property that changed; the source
gives no list of names (unknown). The orientation code is not named.
Footnotes
message TP.InsertFootnoteCommandArchive { // type 10113
req TSWP.TextCommandArchive super = 1
}
message TP.ChangeFootnoteFormatCommandArchive { // type 10114
enum FootnoteFormat { kFootnoteFormatNumeric = 0; kFootnoteFormatRoman = 1;
kFootnoteFormatSymbolic = 2; kFootnoteFormatJapaneseNumeric = 3;
kFootnoteFormatJapaneseIdeographic = 4 }
req TSK.CommandArchive super = 1; 2 FootnoteFormat format
}
message TP.ChangeFootnoteKindCommandArchive { // type 10115
enum FootnoteKind { kFootnoteKindFootnotes = 0; kFootnoteKindDocumentEndnotes = 1;
kFootnoteKindSectionEndnotes = 2 }
req TSK.CommandArchive super = 1; 2 FootnoteKind kind; 3 TSWP.UndoTransaction undo_transaction
}
message TP.ChangeFootnoteNumberingCommandArchive { // type 10116
enum FootnoteNumbering { kFootnoteNumberingContinuous = 0;
kFootnoteNumberingRestartEachPage = 1; kFootnoteNumberingRestartEachSection = 2 }
req TSK.CommandArchive super = 1; 2 FootnoteNumbering numbering
}
message TP.ChangeFootnoteSpacingCommandArchive { // type 10118
req TSK.CommandArchive super = 1; 2 int32 footnote_spacing
}
Document options and tracked changes
message TP.ChangeCTVisibilityCommandArchive { // type 10148
req TSK.CommandArchive super = 1; 2 bool markup_visible; 3 bool deletions_visible;
4 uint32 selection_range_location; 5 uint32 selection_range_length
}
message TP.TrackChangesCommandArchive { // type 10149
req TSK.CommandArchive super = 1; 2 bool track_changes;
rep TSP.Reference change_session_history = 3; 4 bool paused
}
message TP.PauseChangeTrackingCommandArchive { // type 10157
req TSK.CommandArchive super = 1; 2 bool paused
}
message TP.DocumentHyphenationCommandArchive { // type 10150
req TSK.CommandArchive super = 1; 2 bool hyphenate_document
}
message TP.DocumentLigaturesCommandArchive { // type 10151
req TSK.CommandArchive super = 1; 2 bool use_ligatures
}
message TP.DocumentHasBodyCommandArchive { // type 10156
req TSK.CommandArchive super = 1; 2 bool has_body
}
CT in ChangeCTVisibility most likely means change
tracking (the fields show or hide markup and deletions); the source does not spell it
out.
Text commands (TSWP)
Commands of the text framework, used by Pages, Keynote and Numbers. Most carry a
TSWP.UndoTransaction (the record that undoes a text edit; its messages
are on text and styles) and the
storage the command changed.
Editing text
message TSWP.DummyCommandArchive { req uint32 foo = 1 }
message TSWP.TextCommandArchive { // type 2101
enum Kind {
kKindContained = 0; kKindReplaceText = 1; kKindPaste = 2; kKindParagraphStyle = 3;
kKindListStyle = 4; kKindIndentParagraphLevel = 5; kKindDragText = 6;
kKindPasteStyle = 7; kKindApplyChangesInRange = 8; kKindSetParagraphLevel = 9;
kKindInsertCitationField = 10; kKindInsertBibliographyEntry = 11;
kKindFormatCitationFields = 12; kKindInsertTOCSmartField = 13;
kKindInsertDateTimeField = 14; kKindUpdateDateTimeField = 15;
kKindSetParagraphFirstTopicNumber = 16; kKindCharacterStyle = 17;
kKindRevertStyles = 18; kKindSetParagraphBidi = 19
}
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 UndoTransaction undo_transaction;
4 uint32 restore_range_location; 5 uint32 restore_range_length;
6 uint32 redo_restore_range_location; 7 uint32 redo_restore_range_length;
9 uint32 text_command_flags; 10 Kind kind [default = kKindContained]
}
message TSWP.ReplaceAllTextCommandArchive { // type 2104
1 TSK.ReplaceAllChildCommandArchive super; 2 TSP.Reference storage;
3 UndoTransaction undo_transaction
}
message TSWP.FormatTextCommandArchive { // type 2105
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 UndoTransaction undo_transaction;
8 uint32 selection_range_location; 9 uint32 selection_range_length;
11 uint32 text_command_flags
}
message TSWP.InsertAttachmentCommandArchive { // type 2102
1 TSK.CommandArchive super; 2 TSP.Reference storage;
3 uint32 selection_range_location; 4 uint32 selection_range_length;
5 TSP.Reference attachment; 6 UndoTransaction undo_transaction;
7 uint32 text_command_flags; 8 uint32 redo_restore_range_location;
9 uint32 redo_restore_range_length
}
message TSWP.ApplyPlaceholderTextCommandArchive { // type 2107
1 TSK.CommandArchive super; 2 TSP.Reference storage;
3 uint32 selection_range_location; 4 uint32 selection_range_length;
5 UndoTransaction undo_transaction
}
message TSWP.ApplyHighlightTextCommandArchive { // type 2108
1 TSK.CommandArchive super; 2 TSP.Reference storage;
3 uint32 selection_range_location; 4 uint32 selection_range_length;
5 UndoTransaction undo_transaction; 6 bool remove
}
message TSWP.UpdateDateTimeFieldCommandArchive { // type 2119
1 TextCommandArchive super; 2 TSP.Reference date_time_field; 3 TSP.Date date;
4 DateTimeSmartFieldArchive.DateTimeFormatterStyle date_style;
5 DateTimeSmartFieldArchive.DateTimeFormatterStyle time_style
}
message TSWP.AnchorAttachmentCommandArchive { // type 2206
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 TSP.Reference attachment;
4 uint32 h_offset_type; 5 float h_offset; 6 uint32 v_offset_type; 7 float v_offset;
8 UndoTransaction undo_transaction; 9 bool is_html_wrap
}
message TSWP.TextApplyThemeCommandArchive { // type 2207
1 TSS.ApplyThemeChildCommandArchive super; 2 TSP.Reference storage;
6 UndoTransaction undo_transaction
}
text_command_flags is an unnamed bit field in the source (unknown). The
offset_type codes are not named either. The range fields are character
positions and lengths in the storage.
Hyperlinks, ruby text and contents
message TSWP.CreateHyperlinkCommandArchive { // type 2113
1 TSK.CommandArchive super; 2 TSP.Reference storage;
3 uint32 selection_range_location; 4 uint32 selection_range_length;
5 string url_ref; 6 UndoTransaction undo_transaction
}
message TSWP.RemoveHyperlinkCommandArchive { // type 2114
1 TSK.CommandArchive super; 2 TSP.Reference storage;
3 uint32 selection_range_location; 4 uint32 selection_range_length;
5 UndoTransaction undo_transaction; 6 bool is_remove_character_style [default = true]
}
message TSWP.ModifyHyperlinkCommandArchive { // type 2115
1 TSK.CommandArchive super; 2 TSP.Reference hyperlink; 3 string display_text;
4 string url_ref; 5 UndoTransaction undo_transaction
}
message TSWP.ApplyRubyTextCommandArchive { // type 2116
1 TSK.CommandArchive super; 2 TSP.Reference storage;
3 uint32 selection_range_location; 4 uint32 selection_range_length;
5 string ruby_text; 6 UndoTransaction undo_transaction
}
message TSWP.RemoveRubyTextCommandArchive { // type 2117
1 TSK.CommandArchive super; 2 TSP.Reference storage;
3 uint32 selection_range_location; 4 uint32 selection_range_length;
5 UndoTransaction undo_transaction
}
message TSWP.ModifyRubyTextCommandArchive { // type 2118
1 TSK.CommandArchive super; 2 TSP.Reference ruby_field; 3 string ruby_text;
4 string base_text; 5 UndoTransaction undo_transaction
}
message TSWP.ModifyTOCSettingsBaseCommandArchive { // type 2120
1 TSK.CommandArchive super; 2 TSP.Reference old_toc_settings;
3 TSP.Reference new_toc_settings
}
message TSWP.ModifyTOCSettingsForTOCInfoCommandArchive { // type 2121
1 ModifyTOCSettingsBaseCommandArchive super; 2 TSP.Reference toc_info
}
message TSWP.ModifyTOCSettingsPresetForThemeCommandArchive { // type 2122
1 ModifyTOCSettingsBaseCommandArchive super; 2 TSP.Reference theme; 3 uint32 preset_index
}
Text-owned grids (rows and columns inside a storage)
These commands have no type number in the registry that was read. Their fields name a storage plus a row or column index, so they probably edit a grid kept in a text storage; the source does not say which objects use them.
message TSWP.SetColumnStyleCommandArchive {
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 UndoTransaction undo_transaction
}
message TSWP.ReplaceAllUsesOfStyleCommandArchive {
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 UndoTransaction undo_transaction
}
message TSWP.InsertColumnsCommandArchive {
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 uint32 column_index;
4 uint32 column_count; 5 UndoTransaction undo_transaction
}
message TSWP.RemoveColumnsCommandArchive { // same fields as InsertColumns
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 uint32 column_index;
4 uint32 column_count; 5 UndoTransaction undo_transaction
}
message TSWP.InsertRowsCommandArchive {
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 uint32 row_index;
4 uint32 row_count; 5 UndoTransaction undo_transaction
}
message TSWP.RemoveRowsCommandArchive { // same fields as InsertRows
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 uint32 row_index;
4 uint32 row_count; 5 UndoTransaction undo_transaction
}
message TSWP.MergeCellsCommandArchive {
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 uint32 row; 4 uint32 column;
5 uint32 row_count; 6 uint32 column_count; 7 UndoTransaction undo_transaction
}
message TSWP.MoveColumnsCommandArchive {
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 uint32 src_index;
4 uint32 dst_index; 5 uint32 count; 6 UndoTransaction undo_transaction
}
message TSWP.MoveRowsCommandArchive { // same fields as MoveColumns
1 TSK.CommandArchive super; 2 TSP.Reference storage; 3 uint32 src_index;
4 uint32 dst_index; 5 uint32 count; 6 UndoTransaction undo_transaction
}
Styles
message TSWP.StyleBaseCommandArchive { // type 2400
1 TSK.CommandArchive super; 2 TSP.Reference theme; 3 TSP.Reference style
}
message TSWP.StyleCreateCommandArchive { // type 2401
1 StyleBaseCommandArchive super; 2 uint32 preset_index
}
message TSWP.StyleRenameCommandArchive { // type 2402
1 StyleBaseCommandArchive super; 2 string updated_name; 3 string old_name
}
message TSWP.StyleUpdateCommandArchive { // type 2403
1 StyleBaseCommandArchive super; 2 TSP.Reference original_style;
3 TSP.Reference updated_style
}
message TSWP.StyleDeleteCommandArchive { // type 2404
1 StyleBaseCommandArchive super; 2 uint32 old_preset_index
}
message TSWP.StyleReorderCommandArchive { // type 2405
1 StyleBaseCommandArchive super; 2 uint32 old_preset_index; 3 uint32 new_preset_index
}
message TSWP.StyleUpdatePropertyMapCommandArchive { // type 2406
req TSS.StyleUpdatePropertyMapCommandArchive super = 1
}
message TSWP.ShapeApplyPresetCommandArchive { // type 2231
req TSD.ShapeApplyPresetCommandArchive super = 1
}
message TSWP.ShapePasteStyleCommandArchive { // type 2232
req TSD.PasteStyleCommandArchive super = 1; 2 TSP.Reference paragraph_style;
3 TSP.Reference list_style; 4 TSP.Reference character_style
}
The preset_index fields locate a style in the theme’s preset list. The
theme-level commands (types 410 to 418, TSS) are listed by number on
message type numbers; their fields
are in TSSArchives.proto, which this page does not reproduce except for
the two it embeds.
Drawing commands (TSD)
Commands on shapes, images, movies, groups and lines; the same in every iWork
program. Fields typed TSD.…Archive are messages of the
drawables page.
Command groups and selection
message TSD.DrawablesCommandGroupArchive { // type 3020
enum DrawablesCommandGroupType { Constructive = 1; Destructive = 2; InPlace = 3 }
req TSK.CommandGroupArchive super = 1; 2 TSD.CanvasSelectionArchive obsolete_selection;
3 TSP.Reference modelforselection; 4 DrawablesCommandGroupType type; 5 bool forDrag;
6 TSP.Reference archivedselection
}
message TSD.CommandSelectionBehaviorArchive { // type 3046
enum CommandSelectionBehaviorType { Constructive = 1; Destructive = 2; InPlace = 3;
Replace = 4 }
2 TSP.Reference model_for_selection; 3 CommandSelectionBehaviorType type;
4 TSP.Reference archived_selection; 5 TSP.Reference archived_new_selection
}
Geometry, path and grouping
message TSD.InfoGeometryCommandArchive { // type 3021
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 GeometryArchive newGeometry;
4 GeometryArchive oldGeometry; 5 bool shouldClearObjectPlaceholderFlag;
6 bool didMatchObjectPlaceholderGeometry
}
message TSD.DrawablePathSourceCommandArchive { // type 3022
req TSK.CommandArchive super = 1; 2 TSP.Reference info;
3 PathSourceArchive oldpathsource; 4 PathSourceArchive newpathsource
}
message TSD.ShapePathSourceFlipCommandArchive { // type 3023
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 bool newHorizontalFlip;
4 bool newVerticalFlip; 5 bool oldHorizontalFlip; 6 bool oldVerticalFlip
}
message TSD.GroupDrawablesCommandArchive { // type 3038
req TSK.CommandArchive super = 1; rep TSP.Reference drawables = 2; 3 TSP.Reference group
}
message TSD.UngroupGroupCommandArchive { // type 3039
req TSK.CommandArchive super = 1; rep TSP.Reference drawables = 2; 3 TSP.Reference group
}
message TSD.ContainerRemoveChildrenCommandArchive { // type 3052
req TSK.CommandArchive super = 1; 2 TSP.Reference container;
rep TSP.Reference children = 3; 4 TSP.IndexSet children_indices
}
message TSD.ContainerInsertChildrenCommandArchive { // type 3053
req TSK.CommandArchive super = 1; 2 TSP.Reference container;
rep TSP.Reference children = 3; 4 uint64 index
}
message TSD.ContainerReorderChildrenCommandArchive { // type 3054
req TSK.CommandArchive super = 1; 2 TSP.Reference container;
rep TSP.Reference children = 3; 4 TSP.IndexSet children_indices
}
message TSD.ConnectionLineConnectCommandArchive { // type 3041
req TSK.CommandArchive super = 1; req TSP.Reference connection_line = 2;
3 TSP.Reference connect_to; 4 TSP.Reference connect_from;
5 TSP.Reference old_connect_to; 6 TSP.Reference old_connect_from
}
message TSD.ShapeSetLineEndCommandArchive { // type 3035
req TSK.CommandArchive super = 1; 2 TSP.Reference shape; 3 LineEndArchive line_end;
4 bool is_head_line_end
}
message TSD.ExteriorTextWrapCommandArchive { // type 3036
message InfoAndWrap { 1 TSP.Reference info; 2 ExteriorTextWrapArchive exterior_text_wrap }
req TSK.CommandArchive super = 1; rep InfoAndWrap info_and_wrap = 2
}
message TSD.GuideCommandArchive { // type 3050
enum GuideCommandMode { Add = 1; Replace = 2; Delete = 3 }
req TSK.CommandArchive super = 1; 2 TSP.Reference storage;
3 UserDefinedGuideArchive old_guide; 4 UserDefinedGuideArchive new_guide;
5 GuideCommandMode mode
}
Styles and properties
message TSD.StyledInfoSetStyleCommandArchive { // type 3048
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 TSP.Reference style
}
message TSD.ShapeStyleSetValueCommandArchive { // type 3028
req StyledInfoSetStyleCommandArchive super = 1;
4 ShapeStylePropertiesArchive shape_properties
}
message TSD.ShapeApplyPresetCommandArchive { // type 3031
req StyledInfoSetStyleCommandArchive super = 1; 10 TSP.Reference stylepreset;
11 TSP.Color colorpreset; 12 FillArchive fillpreset; 13 ShadowArchive shadowpreset
}
message TSD.MediaStyleSetValueCommandArchive { // type 3030
req StyledInfoSetStyleCommandArchive super = 1;
4 MediaStylePropertiesArchive media_properties
}
message TSD.MediaApplyPresetCommandArchive { // type 3032
req StyledInfoSetStyleCommandArchive super = 1; 10 TSP.Reference stylepreset;
11 ShadowArchive shadowpreset
}
message TSD.DrawableApplyThemeCommandArchive { // type 3033
req TSS.ApplyThemeChildCommandArchive super = 1; 2 TSP.Reference info;
3 TSP.Reference style
}
message TSD.DrawableShadowCommandArchive {
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 ShadowArchive oldshadow;
4 ShadowArchive newshadow
}
message TSD.PasteStyleCommandArchive { // type 3059
req TSK.CommandArchive super = 1; req TSP.Reference dest_info = 2;
3 TSP.Reference shape_style
}
Images and movies
message TSD.MovieSetValueCommandArchive { // type 3034
message PropertyValue {
1 double starttime; 2 double endtime; 3 double postertime;
4 TSP.DataReference posterimagedata; 5 bool autoplay; 6 LoopOption loopOption;
7 float volume; 8 TSP.DataReference media; 9 TSP.DataReference importedauxiliarymedia
}
enum LoopOption { None = 0; Repeat = 1; BackAndForth = 2 }
req TSK.CommandArchive super = 1; 2 TSP.Reference movie;
3 string deprecated_property; 4 int32 property; 5 PropertyValue value
}
message TSD.ImageMediaCommandArchive { // type 3025
req TSK.CommandArchive super = 1; 2 TSP.Reference info;
8 TSP.DataReference newImageData; 9 TSP.DataReference oldImageData;
10 TSP.DataReference oldOriginalImageData; 6 TSP.Size oldNaturalSize;
11 TSP.DataReference newOriginalImageData; 12 ImageAdjustmentsArchive oldImageAdjustments;
13 TSP.DataReference oldAdjustedImageData; 14 TSP.DataReference oldEnhancedImageData;
3 TSP.Reference database_newImageData; 4 TSP.Reference database_oldImageData;
5 TSP.Reference database_oldOriginalImageData; 7 TSP.Reference database_newOriginalImageData
}
message TSD.ImageReplaceCommandArchive { // type 3026
req TSK.CommandArchive super = 1
}
message TSD.MediaOriginalSizeCommandArchive { // type 3027
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 TSP.Size newOriginalSize;
4 TSP.Size oldOriginalSize
}
message TSD.ImageMaskCommandArchive { // type 3024
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 TSP.Reference newMaskInfo;
4 TSP.Reference oldMaskInfo
}
message TSD.InstantAlphaCommandArchive { // type 3042
req TSK.CommandArchive super = 1; 2 TSP.Reference image; 3 TSP.Path oldpath;
4 TSP.Path newpath
}
message TSD.ImageAdjustmentsCommandArchive { // type 3055
req TSK.CommandArchive super = 1; 2 ImageAdjustmentsArchive old_image_adjustments;
3 ImageAdjustmentsArchive new_image_adjustments; 4 TSP.DataReference adjustedImageData;
5 TSP.DataReference replacedAdjustedImageData; 6 TSP.DataReference enhancedImageData;
7 TSP.DataReference replacedEnhancedImageData
}
message TSD.MediaFlagsCommandArchive { // type 3037
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 uint32 flags
}
MovieSetValueCommandArchive.property is an integer code naming which
member of PropertyValue changed; the source does not list the codes
(unknown). MediaFlagsCommandArchive.flags is likewise an unnamed bit
field.
Other drawing commands
message TSD.DrawableHyperlinkCommandArchive { // type 3040
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 string oldhyperlink_url;
4 string newhyperlink_url
}
message TSD.DrawableLockCommandArchive { // type 3043
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 bool lock
}
message TSD.DrawableInfoCommentCommandArchive { // type 3049
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 TSP.Reference old_comment;
4 TSP.Reference new_comment
}
message TSD.CommentStorageApplyCommandArchive { // type 3060
req TSK.CommandArchive super = 1; req TSP.Reference comment_storage = 2;
req string comment_string = 3; req string old_comment_string = 4
}
message TSD.DrawableAspectRatioLockedCommandArchive { // type 3051
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 bool aspect_ratio_locked
}
message TSD.DrawableAccessibilityDescriptionCommandArchive { // type 3058
req TSK.CommandArchive super = 1; 2 TSP.Reference info; 3 string accessibility_description
}
The theme fill command is defined in TSDArchives.proto:
message TSD.ThemeReplaceFillPresetCommandArchive { // type 3057
req TSK.CommandArchive super = 1; req TSP.Reference theme = 2; req FillArchive fill = 3;
req FillArchive old_fill = 4; req uint32 index = 5
}