# Visio Document Serialization Class Implementation Table ## Table Description This table serves as a reference for classes used for serialization/deserialization of Visio documents in SDKJS. It contains the following information: 1. **JavaScript Class (fromXml)** - The name of the JavaScript class that implements the `prototype.fromXml` method. Classes are listed in the order they appear in the `sdkjs-ooxml/visio/model/VisioDocument.js` file. The `AscVisio.` prefix is omitted for readability.Do not add or remove existing names in 1 column 2. **C++ Class (fromPPTY)** - The corresponding C++ class that implements the `fromPPTY` method for deserialization from binary format. An empty cell indicates that there is no corresponding C++ class or that its name is unknown. 3. **Binary Reading Implementation (SerializeReader.js)** - Indicator of the presence or absence of binary format reading method implementations in JavaScript (in the `visio/model/SerializeReader.js` file): - "+" means the class has binary reading method implementations (readAttribute/readChild) - "-" means the class does not have binary reading method implementations 4. **Binary Writing Implementation (SerializeWriter.js)** - Indicator of the presence or absence of binary format writing method implementations in JavaScript (in the `visio/model/SerializeWriter.js` file): - "+" means the class has binary writing method implementations (writeAttribute/writeChild) - "-" means the class does not have binary writing method implementations At the end of the table, C++ classes that have no direct JavaScript counterparts are also listed. This table is used to track the status of class serialization/deserialization implementations and can serve as a guide when developing new serialization methods. ## Current task specification Look at the any row in the table that have plus sign in the 3rd column. Add implementation only of the privateWriteAttributes and writeAttribute of the class from the 1st column to the file @[visio/model/SerializeWriter.js]. do not add privateWriteAttributes or writeAttribute with empty implementation. do not check null or undefined values in privateWriteAttributes Use AscVisio.CWindows.prototype.writeAttribute and AscVisio.CWindows.prototype.writeChild as references for implementation. and AscCommon.CBinaryFileWriter @[sdkjs/common/Drawings/Format/Format.js] as a source of binary methods Do not check undefined values in the privateWriteAttributes methods (e.g., no need to check "if (this.columnNameID !== undefined) {"). Do not check for null or undefined values before calling WriteRecord2 in writeChildren methods, as WriteRecord2 already has null/undefined checking internally (e.g., no need to check "if (this.documentSheet) { pWriter.WriteRecord2(4, this.documentSheet); }"). Check for null or undefined is needed before calling StartRecord. At the end, add a plus sign to this row in the 4rd column. | JavaScript Class (fromXml) | C++ Class (fromPPTY) | Binary Reading Implementation (SerializeReader.js) | Binary Writing Implementation (SerializeWriter.js) | | --- | --- | --- | --- | | CVisioDocument | CDocumentFile | + | + | | CWindows | CWindows | + | + | | CMasters | CMastersFile | + | + | | CPageContents | CPageFile | + | + | | CMasterContents | CMasterFile | + | + | | CPages | CPagesFile | + | + | | CComments | CComments | + | + | | CExtensions | | - | - | | CDataConnections | CDataConnections | + | + | | CDataRecordSets | CDataRecordSets | + | + | | CValidation | CValidationFile | + | + | | CSolutions | CSolutions | + | + | | CSolutionXML | | - | - | | Comments_Type | CCommentsFile | + | + | | RuleTest_Type | CRuleFormula | + | + | | RuleFilter_Type | CRuleFormula | + | + | | RowKeyValue_Type | CRowKeyValue | + | + | | DataColumn_Type | CDataColumn | + | + | | RuleInfo_Type | CRuleInfo | + | + | | IssueTarget_Type | CIssueTarget | + | + | | Rule_Type | CRule | + | + | | RuleSetFlags_Type | CRuleSetFlags | + | + | | AutoLinkComparison_Type | | - | - | | RefreshConflict_Type | | - | - | | RowMap_Type | CRowMap | + | + | | PrimaryKey_Type | CPrimaryKey | + | + | | DataColumns_Type | CDataColumns | + | + | | ADOData_Type | | - | - | | Icon_Type | CIcon | + | + | | PageSheet_Type | CPageSheet | + | + | | tp_Type | CText_tp | + | + | | pp_Type | CText_pp | + | + | | fld_Type | CText_fld | + | + | | cp_Type | CText_cp | + | + | | Rel_Type | | - | - | | CommentEntry_Type | CCommentEntry | + | + | | AuthorEntry_Type | CAuthorEntry | + | + | | RefreshableData_Type | | - | - | | PublishedPage_Type | | - | - | | HeaderFooterFont_Type | | - | - | | FooterRight_Type | | - | - | | FooterCenter_Type | | - | - | | FooterLeft_Type | | - | - | | HeaderRight_Type | | - | - | | HeaderCenter_Type | | - | - | | HeaderLeft_Type | | - | - | | FooterMargin_Type | | - | - | | HeaderMargin_Type | | - | - | | CustomToolbarsFile_Type | | - | - | | CustomMenusFile_Type | | - | - | | ProtectStyles_Type | | - | - | | SnapExtensions_Type | | - | - | | TimePrinted_Type | | - | - | | TimeEdited_Type | | - | - | | TimeSaved_Type | | - | - | | TimeCreated_Type | | - | - | | CustomProp_Type | | - | - | | PreviewPicture_Type | | - | - | | BuildNumberEdited_Type | | - | - | | BuildNumberCreated_Type | | - | - | | Template_Type | | - | - | | AlternateNames_Type | | - | - | | HyperlinkBase_Type | | - | - | | Desc_Type | | - | - | | Keywords_Type | | - | - | | Category_Type | | - | - | | Company_Type | | - | - | | Manager_Type | | - | - | | Creator_Type | | - | - | | Subject_Type | | - | - | | Title_Type | | - | - | | SectionDef_Type | | - | - | | FunctionDef_Type | | - | - | | CellDef_Type | | - | - | | Issue_Type | CIssue | + | + | | RuleSet_Type | CRuleSet | + | + | | ValidationProperties_Type | CValidationProperties | + | + | | DataRecordSet_Type | CDataRecordSet | + | + | | DataConnection_Type | CDataConnection | + | + | | Solution_Type | CSolution | + | + | | Window_Type | CWindow | + | + | | Page_Type | CPage | + | + | | Connect_Type | CConnect | + | + | | Shape_Type | CShape | + | + | | MasterShortcut_Type | | - | - | | Master_Type | CMaster | + | + | | Text_Type | CText | + | + | | ForeignData_Type | CForeignData | + | + | | Data_Type | | - | - | | RefBy_Type | CRefBy | + | + | | PublishSettings_Type | | - | - | | DataTransferInfo_Type | | - | - | | HeaderFooter_Type | CHeaderFooter | + | + | | EventItem_Type | CEventItem | + | + | | DocumentSheet_Type | CDocumentSheet | + | + | | StyleSheet_Type | CStyleSheet | + | + | | FaceName_Type | CFaceName | + | + | | ColorEntry_Type | CColorEntry | + | + | | DocumentSettings_Type | CDocumentSettings | + | + | | DocumentProperties_Type | | - | - | | CellDefBase_Type | | - | - | | ShapeSheet_Type | | - | - | | Section_Type | CSection | + | + | | Trigger_Type | CTrigger | + | + | | GeometryRow_Type | | - | - | | IndexedRow_Type | | - | - | | NamedIndexedRow_Type | | - | - | | Row_Type | CRow | + | + | | SolutionXML_Type | | - | - | | ExtendableCell_Type | | - | - | | Cell_Type | CCell | + | + | | | CText_text | + | + | | | CShapes | + | + | | | CConnects | - | - | | | CEventList | + | + | | | CStyleSheets | + | + | | | CColors | + | + | | | CFaceNames | + | + | | | CSolutionFile | - | - | | | CSolutionsFile | - | - | | | CIssues | - | - | | | CRuleSets | - | - | | | CCommentList | - | - | | | CAuthorList | - | - | | | CRuleFormula | - | - | | | CConnectionsFile | - | - | | | CRecordsetFile | - | - | | | CRecordsetsFile | - | - |