BOOL ON_HatchPattern::Write( ON_BinaryArchive& ar) const { BOOL rc = ar.Write3dmChunkVersion(1,2); if (rc) rc = ar.WriteInt( m_hatchpattern_index); if (rc) rc = ar.WriteInt( m_type); if (rc) rc = ar.WriteString( m_hatchpattern_name); if (rc) rc = ar.WriteString( m_description); if( rc) { if( m_type == ftLines) { int i, count = m_lines.Count(); if ( count < 0 ) count = 0; rc = ar.WriteInt( count ); for( i = 0; i < count && rc; i++) rc = m_lines[i].Write( ar); } } // version 1.2 field if (rc) rc = ar.WriteUuid(m_hatchpattern_id); return rc; }
bool ON_PlugInRef::Write( ON_BinaryArchive& file ) const { bool rc = file.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,2); if (rc) { //version 1.0 fields if (rc) rc = file.WriteUuid(m_plugin_id); if (rc) rc = file.WriteInt(m_plugin_type); if (rc) rc = file.WriteString(m_plugin_name); if (rc) rc = file.WriteString(m_plugin_version); if (rc) rc = file.WriteString(m_plugin_filename); // version 1.1 fields if (rc) rc = file.WriteString(m_developer_organization); if (rc) rc = file.WriteString(m_developer_address); if (rc) rc = file.WriteString(m_developer_country); if (rc) rc = file.WriteString(m_developer_phone); if (rc) rc = file.WriteString(m_developer_email); if (rc) rc = file.WriteString(m_developer_website); if (rc) rc = file.WriteString(m_developer_updateurl); if (rc) rc = file.WriteString(m_developer_fax); // version 1.2 fields if (rc) rc = file.WriteInt(m_plugin_platform); if (rc) rc = file.WriteInt(m_plugin_sdk_version); if (rc) rc = file.WriteInt(m_plugin_sdk_service_release); if( !file.EndWrite3dmChunk() ) rc = false; } return rc; }
ON_BOOL32 ON_SurfaceArray::Write( ON_BinaryArchive& file ) const { ON_BOOL32 rc = file.BeginWrite3dmChunk( TCODE_ANONYMOUS_CHUNK, 0 ); if (rc) rc = file.Write3dmChunkVersion(1,0); if (rc ) { int i; rc = file.WriteInt( Count() ); for ( i = 0; rc && i < Count(); i++ ) { if ( m_a[i] ) { rc = file.WriteInt(1); if ( rc ) rc = file.WriteObject( *m_a[i] ); // polymorphic surfaces } else { // NULL surface rc = file.WriteInt(0); } } if ( !file.EndWrite3dmChunk() ) rc = false; } return rc; }
ON_BOOL32 ON_Light::Write( ON_BinaryArchive& file ) const { int i; ON_BOOL32 rc = file.Write3dmChunkVersion(1,2); // version 1.0 fields if ( rc ) rc = file.WriteInt( m_bOn ); i = m_style; if ( rc ) rc = file.WriteInt( i ); if ( rc ) rc = file.WriteDouble( m_intensity ); if ( rc ) rc = file.WriteDouble( m_watts ); if ( rc ) rc = file.WriteColor( m_ambient ); if ( rc ) rc = file.WriteColor( m_diffuse ); if ( rc ) rc = file.WriteColor( m_specular ); if ( rc ) rc = file.WriteVector( m_direction ); if ( rc ) rc = file.WritePoint( m_location ); if ( rc ) rc = file.WriteDouble( m_spot_angle ); if ( rc ) rc = file.WriteDouble( m_spot_exponent ); if ( rc ) rc = file.WriteVector( m_attenuation ); if ( rc ) rc = file.WriteDouble( m_shadow_intensity ); if ( rc ) rc = file.WriteInt( m_light_index ); if ( rc ) rc = file.WriteUuid( m_light_id ); if ( rc ) rc = file.WriteString( m_light_name ); // version 1.1 added support for linear and rectangular if ( rc ) rc = file.WriteVector( m_length ); if ( rc ) rc = file.WriteVector( m_width ); // version 1.2 added m_hotspot support if ( rc ) rc = file.WriteDouble( m_hotspot ); return rc; }
BOOL ON_BrepFace::Write( ON_BinaryArchive& file ) const { bool rc = file.WriteInt( m_face_index ); if ( rc ) rc = file.WriteArray( m_li ); if ( rc ) rc = file.WriteInt( m_si ); if ( rc ) rc = file.WriteInt( m_bRev ); if ( rc ) rc = file.WriteInt( m_face_material_channel ); return rc; }
BOOL ON_BrepLoop::Write( ON_BinaryArchive& file ) const { int i; BOOL rc = file.WriteInt( m_loop_index ); if (rc) rc = file.WriteArray( m_ti ); i = m_type; if (rc) rc = file.WriteInt( i ); if (rc) rc = file.WriteInt( m_fi ); return rc; }
bool ON_BezierCage::Write(ON_BinaryArchive& archive) const { bool rc = archive.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,0); if (rc) { rc = archive.WriteInt(m_dim); if(rc) rc = archive.WriteInt(m_is_rat); if (rc) rc = archive.WriteInt(m_order[0]); if (rc) rc = archive.WriteInt(m_order[1]); if (rc) rc = archive.WriteInt(m_order[2]); int i,j,k; const int cv_dim = m_is_rat?(m_dim+1):m_dim; double* bogus_cv = 0; for(i = 0; i < m_order[0] && rc; i++) { for(j = 0; j < m_order[1] && rc; j++) { for ( k = 0; k < m_order[2] && rc; k++) { const double* cv = CV(i,j,k); if ( !cv ) { if ( 0 == bogus_cv ) { bogus_cv = (double*)onmalloc(cv_dim*sizeof(*bogus_cv)); for ( int n = 0; n < cv_dim; n++ ) bogus_cv[n] = ON_UNSET_VALUE; } cv = bogus_cv; } rc = archive.WriteDouble(cv_dim,cv); } } } if ( 0 != bogus_cv ) onfree(bogus_cv); if ( !archive.EndWrite3dmChunk() ) { rc = false; } } return rc; }
BOOL ON_HatchLoop::Write( ON_BinaryArchive& ar) const { BOOL rc = ar.Write3dmChunkVersion(1,1); if( rc) rc = ar.WriteInt( m_type); if( rc) rc = ar.WriteObject( m_p2dCurve); return rc; }
BOOL ON_UserStringList::Write(ON_BinaryArchive& archive) const { bool rc = archive.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,0); if ( !rc ) return false; for(;;) { int count = m_e.Count(); rc = archive.WriteInt(count); if(!rc) break; for ( int i = 0; i < count && rc; i++ ) { rc = m_e[i].Write(archive); } if (!rc) break; break; } if ( !archive.EndWrite3dmChunk() ) rc = false; return rc; }
BOOL CSampleDocumentUserDataPlugIn::WriteDocument( CRhinoDoc& doc, ON_BinaryArchive& archive, const CRhinoFileWriteOptions& options ) { // Write plug-in document data. See rhinoSdkPlugIn.h details. // If the user is exporting selected geometry, just return bool bSelectedMode = options.Mode( CRhinoFileWriteOptions::SelectedMode ); if( bSelectedMode ) return TRUE; // Write the major and minor version of document as document data if( !archive.Write3dmChunkVersion(1, 0) ) return FALSE; // Write the number of string we intend to write as document data if( !archive.WriteInt(m_string_table.Count()) ) return FALSE; // Write our string table as document data for( int i = 0; i < m_string_table.Count(); i++ ) { if( !archive.WriteString(m_string_table[i]) ) return FALSE; } return TRUE; }
BOOL ON_BrepFaceArray::Write( ON_BinaryArchive& file ) const { int i; BOOL rc = file.BeginWrite3dmChunk( TCODE_ANONYMOUS_CHUNK, 0 ); if (rc) { rc = file.Write3dmChunkVersion(1,1); // 1.1 added m_face_uuid // chunk version 1.0 and later const int count = Count(); if (rc) rc = file.WriteInt( count ); for ( i = 0; rc && i < count; i++ ) { if (rc) rc = m_a[i].Write(file); } // chunk version 1.1 and later for ( i = 0; rc && i < count; i++ ) { rc = file.WriteUuid( m_a[i].m_face_uuid ); } if ( !file.EndWrite3dmChunk() ) rc = false; } return rc; }
ON_BOOL32 ON_Linetype::Write( ON_BinaryArchive& file) const { bool rc = file.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,1); if (rc) { for(;;) { // chunk version 1.0 fields rc = file.WriteInt( LinetypeIndex()); if(!rc) break; rc = file.WriteString( m_linetype_name ); if (!rc) break; rc = file.WriteArray( m_segments ); if(!rc) break; // chunk version 1.1 fields rc = file.WriteUuid( m_linetype_id ); if (!rc) break; break; } if ( !file.EndWrite3dmChunk() ) rc = false; } return rc; }
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; }
BOOL ON_Hatch::Write( ON_BinaryArchive& ar) const { BOOL rc = ar.Write3dmChunkVersion(1,1); if (rc) rc = ar.WritePlane( m_plane); if (rc) rc = ar.WriteDouble( m_pattern_scale); if (rc) rc = ar.WriteDouble( m_pattern_rotation); if (rc) rc = ar.WriteInt( m_pattern_index); if (rc) { int i, count = m_loops.Count(); if( count < 0 ) count = 0; BOOL rc = ar.WriteInt( count); for( i = 0; i < count && rc; i++) rc = m_loops[i]->Write( ar); } return rc; }
BOOL ON_BrepEdge::Write( ON_BinaryArchive& file ) const { BOOL rc = file.WriteInt( m_edge_index ); if (rc) rc = file.WriteInt( m_c3i ); int i = ProxyCurveIsReversed() ? 1 : 0; if (rc) rc = file.WriteInt( i ); if (rc) rc = file.WriteInterval( ProxyCurveDomain() ); if (rc) rc = file.WriteInt( 2, m_vi ); if (rc) rc = file.WriteArray( m_ti ); if (rc) rc = file.WriteDouble( m_tolerance ); if ( file.Archive3dmVersion() >= 3 ) { // added in opennurbs version 200206180 if (rc) rc = file.WriteInterval( Domain() ); } return rc; }
ON_BOOL32 ON_3dmRevisionHistory::Write( ON_BinaryArchive& file ) const { ON_BOOL32 rc = file.Write3dmChunkVersion( 1, 0 ); if (rc) rc = file.WriteString( m_sCreatedBy ); if (rc) rc = file.WriteTime( m_create_time ); if (rc) rc = file.WriteString( m_sLastEditedBy ); if (rc) rc = file.WriteTime(m_last_edit_time ); if (rc) rc = file.WriteInt( m_revision_count ); return rc; }
BOOL ON_BrepTrim::Write( ON_BinaryArchive& file ) const { ON_3dPoint P(0.0,0.0,0.0); BOOL rc = file.WriteInt( m_trim_index ); int i; if ( rc ) rc = file.WriteInt( m_c2i ); if ( rc ) rc = file.WriteInterval( ProxyCurveDomain() ); if ( rc ) rc = file.WriteInt( m_ei ); if ( rc ) rc = file.WriteInt( 2, m_vi ); if ( rc ) rc = file.WriteInt( m_bRev3d ); i = m_type; if ( rc ) rc = file.WriteInt( i ); i = m_iso; if ( rc ) rc = file.WriteInt( i ); if ( rc ) rc = file.WriteInt( m_li ); if ( rc ) rc = file.WriteDouble( 2, m_tolerance ); if ( file.Archive3dmVersion() < 3 ) { if ( rc ) rc = file.WritePoint( P ); // m_P[0] ); if ( rc ) rc = file.WritePoint( P ); // m_P[1] ); } else { // trim proxy curve information added in version 200206180 if (rc ) rc = file.WriteInterval( Domain() ); unsigned char b[24]; memset(b,0,sizeof(b)); b[0] = ProxyCurveIsReversed() ? 1 : 0; if (rc) rc = file.WriteChar(8,b); b[0] = 0; if (rc) rc = file.WriteChar(24,b); } if ( rc ) rc = file.WriteDouble( m__legacy_2d_tol ); if ( rc ) rc = file.WriteDouble( m__legacy_3d_tol ); return rc; }
ON_BOOL32 ON_TextEntity::Write( ON_BinaryArchive& file ) const { ON_BOOL32 rc = ON_Annotation::Write( file ); if( rc ) rc = file.WriteString( m_facename ); if( rc ) rc = file.WriteInt( m_fontweight ); if( rc ) rc = file.WriteDouble( m_height ); return rc; }
ON_BOOL32 MyUserData::Write( ON_BinaryArchive& file ) const { ON_BOOL32 rc = true; if ( rc ) rc = file.WriteInt(m_my_int); if ( rc ) rc = file.WriteLine(m_my_line); if ( rc ) rc = file.WriteString(m_my_string); return rc; }
ON_BOOL32 ON_Group::Write( ON_BinaryArchive& file // serialize definition to binary archive ) const { ON_BOOL32 rc = file.Write3dmChunkVersion(1,1); // version 1.0 fields if (rc) rc = file.WriteInt(m_group_index); if (rc) rc = file.WriteString(m_group_name); // version 1.1 fields if (rc) rc = file.WriteUuid(m_group_id); return rc; }
ON_BOOL32 ON_LineCurve::Write( ON_BinaryArchive& file // open binary file ) const { ON_BOOL32 rc = file.Write3dmChunkVersion(1,0); if (rc) { rc = file.WriteLine( m_line ); if (rc) rc = file.WriteInterval( m_t ); if (rc) rc = file.WriteInt(m_dim); } return rc; }
BOOL ON_BrepVertex::Write( ON_BinaryArchive& file ) const { BOOL rc = file.WriteInt( m_vertex_index ); if ( rc ) rc = file.WritePoint( point ); if ( rc ) rc = file.WriteArray( m_ei ); if ( rc ) rc = file.WriteDouble( m_tolerance ); return rc; }
bool ON_CompressedBuffer::Write( ON_BinaryArchive& binary_archive ) const { bool rc = binary_archive.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,0); if ( !rc ) return false; for(;;) { rc = binary_archive.WriteSize(m_sizeof_uncompressed); if (!rc) break; rc = binary_archive.WriteSize((m_buffer_compressed && m_sizeof_compressed>0) ? m_sizeof_compressed : 0); if (!rc) break; rc = binary_archive.WriteInt(m_crc_uncompressed); if (!rc) break; rc = binary_archive.WriteInt(m_crc_compressed); if (!rc) break; rc = binary_archive.WriteInt(m_method); if (!rc) break; rc = binary_archive.WriteInt(m_sizeof_element); if (!rc) break; if ( m_buffer_compressed && m_sizeof_compressed > 0 ) { rc = binary_archive.WriteByte(m_sizeof_compressed,m_buffer_compressed); if (!rc) break; } break; } if ( !binary_archive.EndWrite3dmChunk() ) rc = false; return rc; }
ON_BOOL32 ON_BrepRegion::Write(ON_BinaryArchive& file) const { bool rc = file.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,0); if ( !rc ) return false; for(;;) { rc = file.WriteInt( m_region_index ); if (!rc) break; rc = file.WriteInt( m_type ); if (!rc) break; rc = file.WriteArray( m_fsi ); if (!rc) break; rc = file.WriteBoundingBox( m_bbox ); if (!rc) break; break; } if (!file.EndWrite3dmChunk()) rc = false; return rc; }
ON_BOOL32 ON_BrepFaceSide::Write(ON_BinaryArchive& file) const { bool rc = file.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,0); if ( !rc ) return false; for(;;) { rc = file.WriteInt( m_faceside_index ); if (!rc) break; rc = file.WriteInt( m_ri ); if (!rc) break; rc = file.WriteInt( m_fi ); if (!rc) break; rc = file.WriteInt( m_srf_dir ); if (!rc) break; break; } if (!file.EndWrite3dmChunk()) rc = false; return rc; }
ON_BOOL32 ON_Annotation::Write( ON_BinaryArchive& file ) const { int i; ON_BOOL32 rc = file.Write3dmChunkVersion( 1, 0 ); // TODO: use // if (rc) rc = file.WritePoint(....); // if (rc) rc = file.WriteString(....); // if (rc) rc = file.WriteDouble(....); // to write object. i = m_type; if (rc) rc = file.WriteInt( i ); if (rc) rc = file.WritePlane( m_plane ); if (rc) rc = file.WriteArray( m_points ); if (rc) rc = file.WriteString( m_usertext ); if (rc) rc = file.WriteString( m_defaulttext ); if( rc ) rc = file.WriteInt( m_userpositionedtext ); return rc; }
ON_BOOL32 ON_MeshNgonUserData::Write(ON_BinaryArchive& archive) const { bool rc = archive.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,0); if (!rc) return false; for (;;) { int count = ( 0 == m_ngon_list ) ? 0 : m_ngon_list->NgonCount(); const ON_MeshNgon* ngon_array = (count > 0) ? m_ngon_list->Ngon(0) : 0; if ( 0 == ngon_array ) count = 0; rc = archive.WriteInt(count); if (count <= 0 || !rc) break; for ( int i = 0; i < count; i++ ) { const struct ON_MeshNgon& ngon = ngon_array[i]; rc = archive.WriteInt(ngon.N); if (!rc) break; rc = archive.WriteInt(ngon.N,ngon.vi); if (!rc) break; rc = archive.WriteInt(ngon.N,ngon.fi); if (!rc) break; } if (!rc) break; break; } if ( !archive.EndWrite3dmChunk() ) rc = false; return rc; }
ON_BOOL32 ON_PointCloud::Write( ON_BinaryArchive& file ) const { bool rc = file.Write3dmChunkVersion(1,1); if (rc) rc = file.WriteArray( m_P ); if (rc) rc = file.WritePlane( m_plane ); if (rc) rc = file.WriteBoundingBox( m_bbox ); if (rc) rc = file.WriteInt( m_flags); // added for 1.1 (7 December 2005) if (rc) rc = file.WriteArray(m_N); if (rc) rc = file.WriteArray(m_C); return rc; }
ON_BOOL32 ON_CurveOnSurface::Write( ON_BinaryArchive& file // open binary file ) const { ON_BOOL32 rc = IsValid(); if (rc) rc = file.WriteObject(*m_c2); if (rc) rc = file.WriteInt( m_c3?1:0 ); if ( rc && m_c3 ) rc = file.WriteObject(*m_c3); if (rc) rc = file.WriteObject(*m_s); return rc; }
BOOL ON_BrepLoopArray::Write( ON_BinaryArchive& file ) const { int i; BOOL rc = file.BeginWrite3dmChunk( TCODE_ANONYMOUS_CHUNK, 0 ); if (rc) { rc = file.Write3dmChunkVersion(1,0); const int count = Count(); if (rc) rc = file.WriteInt( count ); for ( i = 0; rc && i < count; i++ ) { if (rc) rc = m_a[i].Write(file); } if ( !file.EndWrite3dmChunk() ) rc = false; } return rc; }