diff --git a/opennurbs_line.cpp b/opennurbs_line.cpp index 91e17df9..f1d9a072 100644 --- a/opennurbs_line.cpp +++ b/opennurbs_line.cpp @@ -917,8 +917,8 @@ void ON_Triangle::Split(unsigned char edge, ON_3dPoint pt, ON_Triangle& out_a, O out_a.m_V[1] = m_V[1]; out_a.m_V[2] = pt; out_b.m_V[0] = pt; - out_b.m_V[1] = out_b.m_V[1]; - out_b.m_V[2] = out_b.m_V[2]; + out_b.m_V[1] = m_V[1]; + out_b.m_V[2] = m_V[2]; break; default: //2 out_a.m_V[0] = m_V[0]; diff --git a/opennurbs_linetype.cpp b/opennurbs_linetype.cpp index 7b4ec613..d24fb18c 100644 --- a/opennurbs_linetype.cpp +++ b/opennurbs_linetype.cpp @@ -86,6 +86,8 @@ void ON_LinetypeSegment::Dump( ON_TextLog& dump) const case ON_LinetypeSegment::eSegType::stSpace: dump.Print( "Segment type = Space: %g\n", m_length); break; + case ON_LinetypeSegment::eSegType::Unset: + break; } } diff --git a/opennurbs_mesh.h b/opennurbs_mesh.h index 834459d2..1dc93054 100644 --- a/opennurbs_mesh.h +++ b/opennurbs_mesh.h @@ -5309,17 +5309,18 @@ The map is an array of length m_F.Count(), ngon_map[] // // OPTIONAL texture coordinates for each vertex - // It would be nice if this were an ON_TextureCoordinates, - // but that breaks lots of checked out code that assumes - // m_T is an array of ON_2fPoints. - ON_MappingTag m_Ttag; // OPTIONAL tag for values in m_T[] - ON_2fPointArray m_T; // OPTIONAL texture coordinates for each vertex + // The m_Ttag member has been DEPRECATED. Please don't use it. + ON_MappingTag m_Ttag; // DEPRECATED + + // The m_T array has been DEPRECATED. Please don't use it. + // Instead, use the m_S array to store per-vertex texture coordinates. + ON_2fPointArray m_T; // DEPRECATED // RUNTIME ONLY // This array is used to cache texture coordinates used by - // rendering applications that require 1d texture coordinates, - // 3d texture coordinates, or multiple sets of texture - // coordinates (e.g. blended textures with different mappings). + // rendering applications that require 1d, 2d or 3d texture + // coordinates, or multiple sets of texture coordinates + // (e.g. blended textures with different mappings). // Users are responsible for verifying // m_TC[i].m_T.Count() = m_V.Count() ON_ClassArray m_TC; diff --git a/opennurbs_public_version.h b/opennurbs_public_version.h index cf60d049..9f2c4028 100644 --- a/opennurbs_public_version.h +++ b/opennurbs_public_version.h @@ -15,9 +15,9 @@ // #define RMA_VERSION_YEAR 2022 #define RMA_VERSION_MONTH 12 -#define RMA_VERSION_DATE 1 -#define RMA_VERSION_HOUR 14 -#define RMA_VERSION_MINUTE 39 +#define RMA_VERSION_DATE 12 +#define RMA_VERSION_HOUR 12 +#define RMA_VERSION_MINUTE 54 //////////////////////////////////////////////////////////////// // @@ -35,8 +35,8 @@ // 3 = build system release build #define RMA_VERSION_BRANCH 0 -#define VERSION_WITH_COMMAS 8,0,22335,14390 -#define VERSION_WITH_PERIODS 8.0.22335.14390 +#define VERSION_WITH_COMMAS 8,0,22346,12540 +#define VERSION_WITH_PERIODS 8.0.22346.12540 #define COPYRIGHT "Copyright (C) 1993-2022, Robert McNeel & Associates. All Rights Reserved." #define SPECIAL_BUILD_DESCRIPTION "Public OpenNURBS C++ 3dm file IO library." @@ -47,8 +47,8 @@ #define RMA_VERSION_NUMBER_SR_STRING "SR0" #define RMA_VERSION_NUMBER_SR_WSTRING L"SR0" -#define RMA_VERSION_WITH_PERIODS_STRING "8.0.22335.14390" -#define RMA_VERSION_WITH_PERIODS_WSTRING L"8.0.22335.14390" +#define RMA_VERSION_WITH_PERIODS_STRING "8.0.22346.12540" +#define RMA_VERSION_WITH_PERIODS_WSTRING L"8.0.22346.12540" diff --git a/opennurbs_xml.cpp b/opennurbs_xml.cpp index b0cd0902..53cb30b9 100644 --- a/opennurbs_xml.cpp +++ b/opennurbs_xml.cpp @@ -1557,19 +1557,28 @@ void AutoTypeVariant(ON_XMLVariant& v) class CPropertyData final { public: - CPropertyData() { CommonCtor(); } - CPropertyData(const CPropertyData& src) { CommonCtor(); m_sName = src.m_sName; m_value = src.m_value; } - CPropertyData(const ON_XMLVariant& v) { CommonCtor(); m_value = v; } - CPropertyData(const ON_wString& sName, const ON_XMLVariant& v) { CommonCtor(); SetName(sName); SetValue(v); } + CPropertyData() { g_lPropertyCount++; } + CPropertyData(const CPropertyData& src) { g_lPropertyCount++; m_sName = src.m_sName; m_value = src.m_value; } + CPropertyData(const ON_XMLVariant& v) { g_lPropertyCount++; m_value = v; } + CPropertyData(const ON_wString& sName, const ON_XMLVariant& v) { g_lPropertyCount++; SetName(sName); SetValue(v); } ~CPropertyData() { ON_ASSERT(m_iRefCount == 0); g_lPropertyCount--; } public: - void AddRef(void) { m_iRefCount++; } + void AddRef(void) + { + std::lock_guard lg(m_mutex); + m_iRefCount++; + } void Release(void) { - const auto ref = long(--m_iRefCount); - if (0 == ref) + bool del = false; + { + std::lock_guard lg(m_mutex); + del = (0 == --m_iRefCount); + } + + if (del) delete this; } @@ -1590,10 +1599,10 @@ public: public: ON_wString m_sName; ON_XMLVariant m_value; - std::atomic m_iRefCount; + int m_iRefCount = 1; + std::recursive_mutex m_mutex; protected: - void CommonCtor(void) { g_lPropertyCount++; std::atomic_init(&m_iRefCount, 1); } const CPropertyData& operator = (const CPropertyData& d) { m_sName = d.m_sName; m_value = d.m_value; return *this; } }; @@ -2001,8 +2010,7 @@ ON_XMLNode* ON_XMLNode::CImpl::AttachChildNode(ON_XMLNode* pNode) void ON_XMLNode::CImpl::AddEmptyDefaultProperty(void) { - static ON_XMLProperty defaultProp(L""); - AddProperty(defaultProp); + AddProperty(ON_XMLProperty(L"")); } void ON_XMLNode::CImpl::RemoveAllChildren(void) @@ -5147,15 +5155,12 @@ bool ON_RunXMLTests(const wchar_t* test_folder) #pragma warning (pop) //------------------------------------------------------------------------------------------------------------------- -#define ON_RDK_MATERIAL_SECTION L"material" ON_RDK_POSTFIX_SECTION -#define ON_RDK_ENVIRONMENT_SECTION L"environment" ON_RDK_POSTFIX_SECTION -#define ON_RDK_TEXTURE_SECTION L"texture" ON_RDK_POSTFIX_SECTION -#define ON_RDK_ENVIRONMENT L"environment" - ON_UUID uuidPostEffect_ToneMapper_Clamp = { 0xacb8d258, 0xc1d6, 0x499d, { 0xaa, 0x23, 0x02, 0xdc, 0xde, 0xa2, 0xb0, 0xa2 } }; ON_UUID uuidPostEffect_Gamma = { 0x84c0798d, 0xc43a, 0x4402, { 0x88, 0x91, 0xe0, 0xc8, 0x08, 0x8e, 0x67, 0xca } }; ON_UUID chanRGBA = { 0x453a9a1c, 0x9307, 0x4976, { 0xb2, 0x82, 0x4e, 0xad, 0x4d, 0x53, 0x98, 0x79 } }; ON_UUID chanDistanceFromCamera = { 0xb752ce0b, 0xc219, 0x4bdd, { 0xb1, 0x34, 0x26, 0x42, 0x5e, 0x1c, 0x43, 0x31 } }; +ON_UUID uuidRenderSettingsPreset_Studio = { 0x5898cc05, 0x4202, 0x4dfb, { 0x83, 0xfe, 0x8f, 0xa8, 0x8f, 0x91, 0xc7, 0xd6 } }; +ON_UUID uuidRenderSettingsPreset_Custom = { 0xc89a74fb, 0x1451, 0x4a9b, { 0xb8, 0x7d, 0xe3, 0x0f, 0xf3, 0x51, 0x0f, 0x96 } }; //------------------------------------------------------------------------------------------------------------------- #pragma ON_PRAGMA_WARNING_PUSH @@ -5192,17 +5197,12 @@ ON_RdkDocumentDefaults::ON_RdkDocumentDefaults(int version, ValueSets vs, void*) void ON_RdkDocumentDefaults::CreateXML(void) { - const bool for_old_file = (_major_version < 6); - auto& doc = Create(_root, ON_RDK_DOCUMENT); { if (ValueSets::All == _vs) { Create(doc, ON_RDK_CURRENT_CONTENT).CreateNodeAtPath(ON_RDK_ENVIRONMENT); Create(doc, ON_RDK_DEFAULT_CONTENT_SECTION); - Create(doc, ON_RDK_MATERIAL_SECTION); - Create(doc, ON_RDK_ENVIRONMENT_SECTION); - Create(doc, ON_RDK_TEXTURE_SECTION); } auto& settings = Create(doc, ON_RDK_SETTINGS); @@ -5253,9 +5253,9 @@ void ON_RdkDocumentDefaults::CreateXML(void) } // Rendering section. - if (ValueSets::All == _vs) + auto& rendering = Create(settings, ON_RDK_RENDERING); { - auto& rendering = Create(settings, ON_RDK_RENDERING); + if (ValueSets::All == _vs) { // Render channels. auto& render_channels = Create(rendering, ON_RDK_RENDER_CHANNELS); @@ -5274,22 +5274,27 @@ void ON_RdkDocumentDefaults::CreateXML(void) p.SetParam(ON_RDK_EMBED_SUPPORT_FILES_ON, true); p.SetParam(ON_RDK_DITHERING, ON_RDK_DITHERING_FLOYD_STEINBERG); p.SetParam(ON_RDK_USE_DITHERING, false); - p.SetParam(ON_RDK_GAMMA, for_old_file ? 1.0f : 2.2f); + p.SetParam(ON_RDK_GAMMA, (_major_version < 6) ? 1.0f : 2.2f); p.SetParam(ON_RDK_USE_POST_PROCESS_GAMMA, true); - p.SetParam(ON_RDK_USE_LINEAR_WORKFLOW, for_old_file ? false : true); - p.SetParam(ON_RDK_CUSTOM_REFLECTIVE_ENVIRONMENT_ON, for_old_file ? false : true); + p.SetParam(ON_RDK_USE_LINEAR_WORKFLOW, (_major_version < 6) ? false : true); p.SetParam(ON_RDK_CUSTOM_REFLECTIVE_ENVIRONMENT, ON_nil_uuid); + p.SetParam(ON_RDK_CUSTOM_REFLECTIVE_ENVIRONMENT_ON, (_major_version < 6) ? false : true); + p.SetParam(ON_RDK_CURRENT_PRESET, (_major_version < 8) ? uuidRenderSettingsPreset_Custom + : uuidRenderSettingsPreset_Studio); } - } - else - { - if (for_old_file) + else { - auto& rendering = Create(settings, ON_RDK_RENDERING); + ON_XMLParameters p(rendering); + + if (_major_version < 6) { - ON_XMLParameters p(rendering); p.SetParam(ON_RDK_CUSTOM_REFLECTIVE_ENVIRONMENT_ON, false); } + + if (_major_version < 8) + { + p.SetParam(ON_RDK_CURRENT_PRESET, uuidRenderSettingsPreset_Custom); + } } } @@ -5315,9 +5320,9 @@ void ON_RdkDocumentDefaults::CreateXML(void) p.SetParam(ON_RDK_SUN_OBSERVER_LATITUDE, 0.0); p.SetParam(ON_RDK_SUN_OBSERVER_LONGITUDE, 0.0); p.SetParam(ON_RDK_SUN_OBSERVER_TIMEZONE, 0.0); - p.SetParam(ON_RDK_SUN_SKYLIGHT_ON, for_old_file ? false : true); + p.SetParam(ON_RDK_SUN_SKYLIGHT_ON, (_major_version < 6) ? false : true); p.SetParam(ON_RDK_SUN_SKYLIGHT_SHADOW_INTENSITY, 1.0); - p.SetParam(ON_RDK_SUN_SKYLIGHT_CUSTOM_ENVIRONMENT_ON, for_old_file ? false : true); + p.SetParam(ON_RDK_SUN_SKYLIGHT_CUSTOM_ENVIRONMENT_ON, (_major_version < 6) ? false : true); p.SetParam(ON_RDK_SUN_SKYLIGHT_CUSTOM_ENVIRONMENT, ON_nil_uuid); } @@ -5361,11 +5366,11 @@ void ON_RdkDocumentDefaults::CreateXML(void) auto& ground_plane = Create(settings, ON_RDK_GROUND_PLANE); { ON_XMLParameters p(ground_plane); - p.SetParam(ON_RDK_GP_ON, for_old_file ? false : true); + p.SetParam(ON_RDK_GP_ON, (_major_version < 6) ? false : true); p.SetParam(ON_RDK_GP_SHOW_UNDERSIDE, false); p.SetParam(ON_RDK_GP_ALTITUDE, 0.0); p.SetParam(ON_RDK_GP_AUTO_ALTITUDE, true); - p.SetParam(ON_RDK_GP_SHADOW_ONLY, for_old_file ? false : true); + p.SetParam(ON_RDK_GP_SHADOW_ONLY, (_major_version < 6) ? false : true); p.SetParam(ON_RDK_GP_MATERIAL, L""); p.SetParam(ON_RDK_GP_TEXTURE_SIZE, ON_2dPoint(1.0, 1.0)); p.SetParam(ON_RDK_GP_TEXTURE_OFFSET, ON_2dPoint(0.0, 0.0)); @@ -5376,7 +5381,7 @@ void ON_RdkDocumentDefaults::CreateXML(void) } else { - if (for_old_file) + if (_major_version < 6) { auto& ground_plane = Create(settings, ON_RDK_GROUND_PLANE); { diff --git a/opennurbs_xml.h b/opennurbs_xml.h index 231439da..f2497dc1 100644 --- a/opennurbs_xml.h +++ b/opennurbs_xml.h @@ -21,6 +21,7 @@ typedef bool (*ON_XMLRecurseChildrenCallback)(class ON_XMLNode*, void*); #define ON_RDK_DOCUMENT L"render-content-manager-document" #define ON_RDK_CURRENT_CONTENT L"content" + #define ON_RDK_ENVIRONMENT L"environment" #define ON_RDK_DEFAULT_CONTENT_SECTION L"default-content-section" #define ON_RDK_SETTINGS L"settings" @@ -61,12 +62,14 @@ typedef bool (*ON_XMLRecurseChildrenCallback)(class ON_XMLNode*, void*); #define ON_RDK_PEP_LATE_SELECTION ON_RDK_PEP_TYPE_LATE ON_RDK_PEP_SELECTION_POSTFIX #define ON_RDK_RENDERING L"rendering" + #define ON_RDK_RENDER_CHANNELS L"render-channels" #define ON_RDK_RCH_LIST L"list" #define ON_RDK_RCH_MODE L"mode" #define ON_RDK_RCH_MODE_AUTOMATIC L"automatic" #define ON_RDK_RCH_MODE_CUSTOM L"custom" + #define ON_RDK_CURRENT_PRESET L"current-preset" #define ON_RDK_EMBED_SUPPORT_FILES_ON L"embed-support-files-on" #define ON_RDK_GAMMA L"gamma" #define ON_RDK_USE_DITHERING L"use-dithering"