ON_BOOL32 ON_Font::Write( ON_BinaryArchive& file // serialize definition to binary archive ) const { bool rc = file.Write3dmChunkVersion(1,2); while(rc) { rc = file.WriteInt(m_font_index); if (!rc) break; rc = file.WriteString(m_font_name); if (!rc) break; { // 18 October 2002 Dale Lear: // Lowell, wchar_t has different sizes on different OSs. // When writing a wchar_t string, you should use one // of the WriteString functions. This function must continue // to use WriteShort(64,...) so old files will remain valid. unsigned short sh[64]; memset(sh,0,sizeof(sh)); int i; for ( i = 0; i < 64 && i < face_name_size-1; i++ ) sh[i] = m_facename[i]; rc = file.WriteShort(64, sh); if (!rc) break; } // 1.1 additions rc = file.WriteInt( m_font_weight); if (!rc) break; rc = file.WriteInt( m_font_italic); if (!rc) break; rc = file.WriteDouble( m_linefeed_ratio); if (!rc) break; // 1.2 addition rc = file.WriteUuid( m_font_id); if (!rc) break; // 1.3 addition // rc = file.WriteInt( m_font_underlined); // if (!rc) break; break; } return rc; }
ON_BOOL32 ON_3dmObjectAttributes::Write( ON_BinaryArchive& file ) const { if ( file.Archive3dmVersion() >= 5 ) { // added at opennurbs version 200712190 return WriteV5Helper(file); } bool rc = file.Write3dmChunkVersion(1,7); // version 1.0 fields if (rc) rc = file.WriteUuid(m_uuid); if (rc) rc = file.WriteInt(m_layer_index); if (rc) rc = file.WriteInt(m_material_index); if (rc) rc = file.WriteColor(m_color); if (rc) { // OBSOLETE if (rc) rc = file.WriteLineStyle(m_line_style); // 23 March 2005 Dale Lear short s; s = (short)m_object_decoration; if (rc) rc = file.WriteShort(s); s = 0; if (rc) rc = file.WriteShort(s); if (rc) rc = file.WriteDouble(0.0); if (rc) rc = file.WriteDouble(1.0); } if (rc) rc = file.WriteInt(m_wire_density); if (rc) rc = file.WriteChar(m_mode); if (rc) rc = file.WriteChar(m_color_source); if (rc) rc = file.WriteChar(m_linetype_source); if (rc) rc = file.WriteChar(m_material_source); if (rc) rc = file.WriteString(m_name); if (rc) rc = file.WriteString(m_url); // version 1.1 fields if (rc) rc = file.WriteArray(m_group); // version 1.2 fields if (rc) rc = file.WriteBool(m_bVisible); // version 1.3 fields if (rc) rc = file.WriteArray(m_dmref); // version 1.4 fields - 23 March 2005 Dale Lear if (rc) rc = file.WriteInt(m_object_decoration); if (rc) rc = file.WriteChar(m_plot_color_source); if (rc) rc = file.WriteColor(m_plot_color); if (rc) rc = file.WriteChar(m_plot_weight_source); if (rc) rc = file.WriteDouble(m_plot_weight_mm); // version 1.5 fields 11 April 2005 if (rc) rc = file.WriteInt(m_linetype_index); // version 1.6 fields 2 September 2005 if (rc) { unsigned char uc = 0; switch(m_space) { case ON::no_space: uc = 0; break; case ON::model_space: uc = 0; break; case ON::page_space: uc = 1; break; } rc = file.WriteChar(uc); } if (rc) { // 22 Sep 2006 - the way ON_3dmObjectAttiributes indicates // that an object is put on a particular page view changed // from being saved in the m_dmref[] list to using the // m_space and m_viewport_id settings. But the file format // cannot change at this point. So, the bAddPagespaceDMR // is here to save the page info in the old dmr format. int count = m_dmref.Count(); if ( count < 0 ) count = 0; bool bAddPagespaceDMR = ( ON::page_space == m_space && !ON_UuidIsNil(m_viewport_id) ); rc = file.WriteInt( bAddPagespaceDMR ? (count+1) : count ); if ( rc && bAddPagespaceDMR ) { rc = file.WriteUuid(m_viewport_id); if (rc) rc = file.WriteUuid(ON_ObsoletePageSpaceObjectId); } int i; for ( i = 0; i < count && rc; i++ ) { const ON_DisplayMaterialRef& dmr = m_dmref[i]; rc = file.WriteUuid(dmr.m_viewport_id); if (rc) rc = file.WriteUuid(dmr.m_display_material_id); } } // version 1.7 fields 6 June 2006 if (rc) rc = m_rendering_attributes.Write(file); return rc; }
BOOL ON_Layer::Write( ON_BinaryArchive& file // serialize definition to binary archive ) const { int i; bool rc = file.Write3dmChunkVersion(1,8); while(rc) { // Save OBSOLETE mode value so we don't break file format if ( m_bVisible ) i = 0; // "normal" layer mode else if ( m_bLocked ) i = 2; // "locked" layer mode else i = 1; // "hidden" layer mode rc = file.WriteInt( i ); if (!rc) break; rc = file.WriteInt( m_layer_index ); if (!rc) break; rc = file.WriteInt( m_iges_level ); if (!rc) break; rc = file.WriteInt( m_material_index ); if (!rc) break; // Starting with version 200312110, this value is zero. For files written // with earlier versions, the number was a "model index" value that was // set to something >= 1, but never used. We have to continue to // read/write an integer here so that old/new versions of opennurbs can // read files written by new/old versions. i = 0; rc = file.WriteInt( i ); if (!rc) break; rc = file.WriteColor( m_color ); if (!rc) break; { // OBSOLETE LINE STYLE if ( rc ) rc = file.WriteLineStyle( LineStyle() ); // Starting with version 200503170, this section is "officially" not used. // Prior to that, it was old ON_LineStyle information that has // never been used. short s = 0; if (rc) rc = file.WriteShort(s); // default pattern if (rc) rc = file.WriteShort(s); // default pattern index if (rc) rc = file.WriteDouble(0.0); // default thickness if (rc) rc = file.WriteDouble(1.0); // default scale } if (!rc) break; rc = file.WriteString( m_name ); if (!rc) break; // 1.1 fields rc = file.WriteBool(m_bVisible); if (!rc) break; // 1.2 field rc = file.WriteInt( m_linetype_index); if (!rc) break; // 1.3 field - 23 March 2005 Dale Lear rc = file.WriteColor( m_plot_color); if (!rc) break; rc = file.WriteDouble( m_plot_weight_mm); if (!rc) break; // 1.4 field - 3 May 2005 Dale Lear // - locked and visible are independent settings rc = file.WriteBool( m_bLocked ); if (!rc) break; // 1.5 field rc = file.WriteUuid( m_layer_id ); if (!rc) break; // 1.6 field rc = file.WriteUuid( m_parent_layer_id ); if (!rc) break; // 1.6 field rc = file.WriteBool( m_bExpanded ); if (!rc) break; // 1.7 field - added 6 June 2006 rc = m_rendering_attributes.Write(file); if (!rc) break; // 1.8 field - added 19 Sep 2006 rc = file.WriteUuid(m_display_material_id); break; } return rc; }