From bfe338e26226c5b6f182fcde79c17e245a787a63 Mon Sep 17 00:00:00 2001 From: "Gene Z. Ragan" Date: Sat, 7 Aug 2021 23:15:20 -0700 Subject: [PATCH 1/9] Add script to build XCFramework. lipo scripts no longer needed. --- DevScripts/build-for-apple.sh | 211 -- README.md | 1 + Sourcecode/private/mx/core/EnumsBuiltin.h | 3 +- Xcode/Mx.xcodeproj/project.pbxproj | 16 +- .../xcshareddata/xcschemes/Mx.xcscheme | 2 +- .../xcshareddata/xcschemes/MxiOS.xcscheme | 4 +- .../xcshareddata/xcschemes/MxmacOS.xcscheme | 4 +- .../xcshareddata/xcschemes/dylib-iOS.xcscheme | 2 +- .../xcschemes/dylib-macOS.xcscheme | 2 +- Xcode/MxTest.xcodeproj/project.pbxproj | 2479 ----------------- .../xcshareddata/xcschemes/MxTest.xcscheme | 87 - Xcode/build_xcframework.sh | 45 + Xcode/mx.xcworkspace/contents.xcworkspacedata | 3 - 13 files changed, 64 insertions(+), 2795 deletions(-) delete mode 100755 DevScripts/build-for-apple.sh delete mode 100755 Xcode/MxTest.xcodeproj/project.pbxproj delete mode 100644 Xcode/MxTest.xcodeproj/xcshareddata/xcschemes/MxTest.xcscheme create mode 100755 Xcode/build_xcframework.sh diff --git a/DevScripts/build-for-apple.sh b/DevScripts/build-for-apple.sh deleted file mode 100755 index 75460dc04..000000000 --- a/DevScripts/build-for-apple.sh +++ /dev/null @@ -1,211 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -for tool in lipo xcodebuild mktemp uuidgen; do - if ! command -v ${tool} > /dev/null; then - echo "* Can't find executable '${tool}'" >&2 - exit 2 - fi -done - -# default values for optional parameters - -DEFAULT_BUILD_DIR="$(mktemp -d)/$(uuidgen)" -DEFAULT_TEST="false" -DEFAULT_CONFIGURATION="Release" -DEFAULT_CLEANUP="true" - -#################################################################################################################### -# Parsing Command Line Input -#################################################################################################################### - -usage() { - cat >&2 <&2 - exit 2 - fi -} - -parse_args() { - while [ ${#} -gt 0 ] ; do - case "${1}" in - # required - --outdir ) shift; OUTDIR="${1}" ;; - - # optional - --build-dir ) shift; BUILD_DIR="${1}" ;; - --test ) shift; TEST="${1}" ;; - --configuration ) shift; CONFIGURATION="${1}" ;; - --cleanup ) shift; CLEANUP="${1}" ;; - - --help ) usage; exit 0 ;; - *) - echo "ERROR: Unknown argument: ${1}" >&2 - usage - exit 2 - ;; - esac - shift - done - - BUILD_DIR="${BUILD_DIR:-${DEFAULT_BUILD_DIR}}" - TEST="${TEST:-${DEFAULT_TEST}}" - CLEANUP="${CLEANUP:-${DEFAULT_CLEANUP}}" - CONFIGURATION="${CONFIGURATION:-${DEFAULT_CONFIGURATION}}" - - # fail if required arguments are missing - required_arg "--outdir" "${OUTDIR}" - - # check that all optional args are also set by now (with defaults or passed args) - required_arg "--build-dir" "${BUILD_DIR}" - required_arg "--test" "${TEST}" - required_arg "--configuration" "${CONFIGURATION}" - required_arg "--cleanup" "${CLEANUP}" -} - - -#################################################################################################################### -# Helper Functions -#################################################################################################################### - -delete_build_dir() { - if [ "${CLEANUP}" = "true" ]; then - echo "deleting build dir" - rm -rf "${BUILD_DIR}" - fi; -} - -#################################################################################################################### -# Set Variables -#################################################################################################################### - -set_variables() { - # directories - this_script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" - mx_dir="${this_script_dir}/.." - xcworkspace="${mx_dir}/Xcode/mx.xcworkspace" - - # artifact names - ios_name="MxiOS" - ios_lib_name="lib${ios_name}" - ios_framework_name="${ios_name}.framework" - macos_name="MxmacOS" - macos_lib_name="lib${macos_name}" - macos_framework_name="${macos_name}.framework" - - # build-dir output paths - macos_build_path="${BUILD_DIR}/Build/Products/${CONFIGURATION}/${macos_framework_name}" - ios_build_path="${BUILD_DIR}/Build/Products/${CONFIGURATION}-iphoneos/${ios_framework_name}" - ios_simulator_build_path="${BUILD_DIR}/Build/Products/${CONFIGURATION}-iphonesimulator/${ios_framework_name}" - ios_build_binary="${ios_build_path}/${ios_name}" - ios_simulator_build_binary="${ios_simulator_build_path}/${ios_name}" - ios_binary_temp_path="${BUILD_DIR}/temp-fat-ios-binary" -} - -#################################################################################################################### -# Do Builds -#################################################################################################################### - -do_tests() { - if [ "${TEST}" -ne "true" ]; then - return 0 - fi; - - echo "TODO: test is not implemented, skipping" -} - -build_for_ios() { - xcodebuild \ - -workspace "${xcworkspace}" \ - -scheme "${ios_name}" \ - build \ - -derivedDataPath "${BUILD_DIR}" \ - -destination 'generic/platform=iOS' \ - -destination 'generic/platform=iOS simulator' \ - -configuration "${CONFIGURATION}" -} - -build_for_macos() { - xcodebuild \ - -workspace "${xcworkspace}" \ - -scheme "${macos_name}" \ - build \ - -derivedDataPath "${BUILD_DIR}" \ - -destination 'generic/platform=macOS' \ - -destination 'platform=OS X,arch=x86_64' \ - -configuration "${CONFIGURATION}" -} - -create_ios_fat_binary() { - echo "create_ios_fat_binary" - rm -f "/tmp/MxiOS-x86_64" - lipo "${ios_simulator_build_binary}" -extract x86_64 -output "/tmp/MxiOS-x86_64" - - lipo -create -output "${ios_binary_temp_path}" \ - "${ios_build_binary}" \ - "/tmp/MxiOS-x86_64" - - # in the ios framework, replace the 'skinny' binary with the 'fat' one - cp -f "${ios_binary_temp_path}" "${ios_build_binary}" -} - -move_outputs() { - echo "move_outputs" - rm -rf "${OUTDIR}/${ios_framework_name}" - rm -rf "${OUTDIR}/${macos_framework_name}" - mv -f "${ios_build_path}/" "${OUTDIR}/" - mv -f "${macos_build_path}/" "${OUTDIR}/" -} - -trap 'delete_build_dir' EXIT SIGINT SIGTERM - -main() { - parse_args "${@}" - set_variables - - mkdir -p "${BUILD_DIR}" - mkdir -p "${OUTDIR}" - - if [ "${TEST}" = "true" ]; then - do_tests - fi; - - build_for_ios - build_for_macos - create_ios_fat_binary - move_outputs - delete_build_dir - echo "Output:" - echo "${OUTDIR}/${ios_framework_name}" - echo "${OUTDIR}/${macos_framework_name}" -} - -main "${@}" \ No newline at end of file diff --git a/README.md b/README.md index ced660a79..2bcbbd1ea 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,7 @@ Contributors are not required to keep the Xcode project up-to-date. If you add, move or remove files from the codebase, it is likely that the Xcode CI run will fail. This will not prevent a contribution from being merged, the maintainer will fix the project after-the-fact. + # Using `mx` ## API diff --git a/Sourcecode/private/mx/core/EnumsBuiltin.h b/Sourcecode/private/mx/core/EnumsBuiltin.h index 5d78ff627..78fd00d3d 100644 --- a/Sourcecode/private/mx/core/EnumsBuiltin.h +++ b/Sourcecode/private/mx/core/EnumsBuiltin.h @@ -62,4 +62,5 @@ namespace mx std::ostream& toStream( std::ostream& os, const XlinkShow value ); std::ostream& operator<<( std::ostream& os, const XlinkShow value ); } -} \ No newline at end of file +} + diff --git a/Xcode/Mx.xcodeproj/project.pbxproj b/Xcode/Mx.xcodeproj/project.pbxproj index f21ab6a01..dae3041cb 100755 --- a/Xcode/Mx.xcodeproj/project.pbxproj +++ b/Xcode/Mx.xcodeproj/project.pbxproj @@ -6903,7 +6903,7 @@ 299F7FDE1CA8D2200084CAE5 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1140; + LastUpgradeCheck = 1250; ORGANIZATIONNAME = "Matthew James Briggs"; TargetAttributes = { 293FFED11DD25C74001477E8 = { @@ -6929,11 +6929,11 @@ }; buildConfigurationList = 299F7FE11CA8D2200084CAE5 /* Build configuration list for PBXProject "Mx" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - English, en, + Base, ); mainGroup = 299F7FDD1CA8D2200084CAE5; productRefGroup = 299F7FE71CA8D2200084CAE5 /* Products */; @@ -10389,6 +10389,7 @@ CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; @@ -10470,6 +10471,7 @@ CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; @@ -10644,7 +10646,7 @@ HEADER_SEARCH_PATHS = /usr/local/include; INFOPLIST_FILE = MxiOS/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ""; MTL_ENABLE_DEBUG_INFO = YES; @@ -10655,7 +10657,7 @@ "SDKROOT[arch=i386]" = "$(CORRESPONDING_SIMULATOR_SDK_NAME)"; "SDKROOT[arch=x86_64]" = "$(CORRESPONDING_SIMULATOR_SDK_NAME)"; SKIP_INSTALL = NO; - SUPPORTS_MACCATALYST = NO; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALID_ARCHS = "$(inherited)"; VERSIONING_SYSTEM = "apple-generic"; @@ -10684,7 +10686,7 @@ HEADER_SEARCH_PATHS = /usr/local/include; INFOPLIST_FILE = MxiOS/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ""; MTL_ENABLE_DEBUG_INFO = NO; @@ -10695,7 +10697,7 @@ "SDKROOT[arch=i386]" = "$(CORRESPONDING_SIMULATOR_SDK_NAME)"; "SDKROOT[arch=x86_64]" = "$(CORRESPONDING_SIMULATOR_SDK_NAME)"; SKIP_INSTALL = NO; - SUPPORTS_MACCATALYST = NO; + SUPPORTS_MACCATALYST = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VALID_ARCHS = "$(inherited)"; diff --git a/Xcode/Mx.xcodeproj/xcshareddata/xcschemes/Mx.xcscheme b/Xcode/Mx.xcodeproj/xcshareddata/xcschemes/Mx.xcscheme index d7ba27f66..a4d0d19b6 100644 --- a/Xcode/Mx.xcodeproj/xcshareddata/xcschemes/Mx.xcscheme +++ b/Xcode/Mx.xcodeproj/xcshareddata/xcschemes/Mx.xcscheme @@ -1,6 +1,6 @@ \"${PATH_ROOT}\"\n// This file was auto-generated by Xcode\n#pragma once\n\n// The absolute path to the root of the repository.\n#ifndef MX_REPO_ROOT_PATH\n#define MX_REPO_ROOT_PATH \"${REPO}\"\n#endif\nEOF\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 299F7FF21CA8D2620084CAE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 29DC3B55225C0FC200814240 /* FermataTest.cpp in Sources */, - 29DC3BD8225C0FC300814240 /* GroupTest.cpp in Sources */, - 29DC3B98225C0FC300814240 /* DegreeValueTest.cpp in Sources */, - 29DC3C36225C0FC300814240 /* ClefTest.cpp in Sources */, - 29DC3B0F225C0FC200814240 /* PartListTest.cpp in Sources */, - 29DC3B21225C0FC200814240 /* HarmonicTypeChoiceTest.cpp in Sources */, - 29DC3B84225C0FC300814240 /* MiscellaneousFieldTest.cpp in Sources */, - 29DC3C6A225C0FC300814240 /* HarmonicTest.cpp in Sources */, - 29DC3C60225C0FC300814240 /* DocumentPartwiseCreate.cpp in Sources */, - 29DC3BEF225C0FC300814240 /* PullOffTest.cpp in Sources */, - 29DC3C8C225C0FC300814240 /* OctaveTest.cpp in Sources */, - 29DC3B81225C0FC300814240 /* HoleTypeTest.cpp in Sources */, - 29DC3AE2225C0FC200814240 /* MxFileTest.cpp in Sources */, - 29DC3C23225C0FC300814240 /* KeyAccidentalTest.cpp in Sources */, - 29DC3BBB225C0FC300814240 /* PageHeightTest.cpp in Sources */, - 29DC3C40225C0FC300814240 /* FootnoteTest.cpp in Sources */, - 29DC3B32225C0FC200814240 /* MidiChannelTest.cpp in Sources */, - 29DC3B73225C0FC200814240 /* PartNameTest.cpp in Sources */, - 29DC3AED225C0FC200814240 /* ChordTimeTest.cpp in Sources */, - 29DC3C21225C0FC300814240 /* FigureTest.cpp in Sources */, - 29DC3BAC225C0FC300814240 /* FiguredBassTest.cpp in Sources */, - 29DC3B33225C0FC200814240 /* MidiProgramTest.cpp in Sources */, - 29DC3BE1225C0FC300814240 /* NormalDotTest.cpp in Sources */, - 29126F0B245A81F700B1F839 /* KeyDataTest.cpp in Sources */, - 29DC3BB6225C0FC300814240 /* MeasureLayoutTest.cpp in Sources */, - 29DC3BDD225C0FC300814240 /* SlideTest.cpp in Sources */, - 29DC3B5C225C0FC200814240 /* AccordionLowTest.cpp in Sources */, - 29DC3B67225C0FC200814240 /* DisplayStepTest.cpp in Sources */, - 29DC3C74225C0FC300814240 /* FalloffTest.cpp in Sources */, - 29DC3ADD225C0FC200814240 /* ImportTestImpl.cpp in Sources */, - 29DC3C5D225C0FC300814240 /* DynamicsTest.cpp in Sources */, - 29DC3B9F225C0FC300814240 /* TuningOctaveTest.cpp in Sources */, - 29DC3BFF225C0FC300814240 /* BassTest.cpp in Sources */, - 29DC3C70225C0FC300814240 /* OctaveShiftTest.cpp in Sources */, - 29DC3B01225C0FC200814240 /* ArrowDirectionTest.cpp in Sources */, - 29DC3B43225C0FC200814240 /* StemTest.cpp in Sources */, - 29DC3C1F225C0FC300814240 /* GroupSymbolTest.cpp in Sources */, - 29DC3B87225C0FC300814240 /* DirectiveTest.cpp in Sources */, - 29DC3B08225C0FC200814240 /* SystemLayoutTest.cpp in Sources */, - 29DC3B1E225C0FC200814240 /* DiatonicTest.cpp in Sources */, - 29DC3C44225C0FC300814240 /* PreciseDecimalTest.cpp in Sources */, - 29DC3B3C225C0FC200814240 /* SystemDistanceTest.cpp in Sources */, - 29DC3C7E225C0FC300814240 /* DetachedLegatoTest.cpp in Sources */, - 29DC3C33225C0FC300814240 /* PageLayoutTest.cpp in Sources */, - 29DC3B39225C0FC200814240 /* BeaterTest.cpp in Sources */, - 29DC3C25225C0FC300814240 /* CueTest.cpp in Sources */, - 29DC3C39225C0FC300814240 /* StickTest.cpp in Sources */, - 29DC3C97225C0FC300814240 /* SuffixTest.cpp in Sources */, - 29DC3AE4225C0FC200814240 /* StupidFileFunctions.cpp in Sources */, - 29DC3BC0225C0FC300814240 /* DocumentPartwiseConvertTest.cpp in Sources */, - 29DC3B56225C0FC200814240 /* ScoreTimewiseTest.cpp in Sources */, - 29DC3C53225C0FC300814240 /* CreditTypeTest.cpp in Sources */, - 29DC3C07225C0FC300814240 /* TenthsTest.cpp in Sources */, - 29DC3BF5225C0FC300814240 /* CapoTest.cpp in Sources */, - 29DC3BC6225C0FC300814240 /* MembraneTest.cpp in Sources */, - 29DC3AF6225C0FC200814240 /* ApiLoadSurvivalTest.cpp in Sources */, - 29DC3B26225C0FC200814240 /* InstrumentNameTest.cpp in Sources */, - 29DC3B8A225C0FC300814240 /* StaffLinesTest.cpp in Sources */, - 29843AD4248C0CCD006A8E34 /* PageDataTest.cpp in Sources */, - 29DC3BAA225C0FC300814240 /* SpiccatoTest.cpp in Sources */, - 29DC3BA0225C0FC300814240 /* ImageTest.cpp in Sources */, - 29DC3AF2225C0FC200814240 /* NoteDataTest.cpp in Sources */, - 29DC3BD2225C0FC300814240 /* DocumentTimewiseTest.cpp in Sources */, - 29DC3BED225C0FC300814240 /* DurationTest.cpp in Sources */, - 29DC3B6E225C0FC200814240 /* SignTest.cpp in Sources */, - 29DC3B13225C0FC200814240 /* BackupTest.cpp in Sources */, - 29DC3C0E225C0FC300814240 /* PartGroupOrScorePartTest.cpp in Sources */, - 29DC3C01225C0FC300814240 /* StringMuteTest.cpp in Sources */, - 29DC3AE7225C0FC200814240 /* DirectionDataTest.cpp in Sources */, - 29DC3BCE225C0FC300814240 /* CreditImageTest.cpp in Sources */, - 29DC3AE8225C0FC200814240 /* FreezingRoundTrip.cpp in Sources */, - 29DC3C2D225C0FC300814240 /* DashesTest.cpp in Sources */, - 297B99C3252A265F0089E958 /* TranspositionTest.cpp in Sources */, - 29DC3BFD225C0FC300814240 /* LayoutGroupTest.cpp in Sources */, - 29DC3B66225C0FC200814240 /* EndLineTest.cpp in Sources */, - 29DC3B27225C0FC200814240 /* PerMinuteTest.cpp in Sources */, - 29DC3BFA225C0FC300814240 /* BassAlterTest.cpp in Sources */, - 29DC3C85225C0FC300814240 /* StaffTypeTest.cpp in Sources */, - 29DC3BCA225C0FC300814240 /* HelloWorldTest.cpp in Sources */, - 29DC3B96225C0FC300814240 /* GroupingTest.cpp in Sources */, - 29DC3B00225C0FC200814240 /* GroupAbbreviationDisplayTest.cpp in Sources */, - 29DC3BAB225C0FC300814240 /* DegreeAlterTest.cpp in Sources */, - 29DC3C4A225C0FC300814240 /* IpaTest.cpp in Sources */, - 29DC3BE7225C0FC300814240 /* AlterTest.cpp in Sources */, - 29DC3BCF225C0FC300814240 /* SyllabicTest.cpp in Sources */, - 29DC3C3D225C0FC300814240 /* CueNoteGroupTest.cpp in Sources */, - 29DC3C63225C0FC300814240 /* MeasureStyleTest.cpp in Sources */, - 29DC3C20225C0FC300814240 /* ElisionSyllabicTextGroupTest.cpp in Sources */, - 29DC3C43225C0FC300814240 /* ToeTest.cpp in Sources */, - 29DC3C69225C0FC300814240 /* MultipleRestTest.cpp in Sources */, - 29DC3B2C225C0FC200814240 /* OrnamentsChoiceTest.cpp in Sources */, - 29DC3BF9225C0FC300814240 /* SystemMarginsTest.cpp in Sources */, - 29DC3C27225C0FC300814240 /* PedalTest.cpp in Sources */, - 29DC3BA1225C0FC300814240 /* HarmonyTest.cpp in Sources */, - 29DC3B7C225C0FC300814240 /* PartGroupTest.cpp in Sources */, - 29DC3B80225C0FC300814240 /* HoleTest.cpp in Sources */, - 29DC3B8E225C0FC300814240 /* DampAllTest.cpp in Sources */, - 29DC3BC4225C0FC300814240 /* StaffSizeTest.cpp in Sources */, - 29DC3C86225C0FC300814240 /* FingernailsTest.cpp in Sources */, - 29DC3B3A225C0FC200814240 /* TuningAlterTest.cpp in Sources */, - 29DC3BE9225C0FC300814240 /* BendChoiceTest.cpp in Sources */, - 29DC3BB9225C0FC300814240 /* FrameNoteTest.cpp in Sources */, - 29DC3BF3225C0FC300814240 /* PartAbbreviationDisplayTest.cpp in Sources */, - 29DC3C51225C0FC300814240 /* PanTest.cpp in Sources */, - 29DC3C50225C0FC300814240 /* StavesTest.cpp in Sources */, - 29DC3C00225C0FC300814240 /* OtherDirectionTest.cpp in Sources */, - 29DC3B70225C0FC200814240 /* DistanceTest.cpp in Sources */, - 29DC3C88225C0FC300814240 /* StaccatissimoTest.cpp in Sources */, - 29DC3B6F225C0FC200814240 /* PropertiesTest.cpp in Sources */, - 29DC3B40225C0FC200814240 /* TimeTest.cpp in Sources */, - 29DC3BF8225C0FC300814240 /* LyricFontTest.cpp in Sources */, - 29DC3B61225C0FC200814240 /* ScalingTest.cpp in Sources */, - 29DC3B6C225C0FC200814240 /* HarpPedalsTest.cpp in Sources */, - 29DC3BCB225C0FC300814240 /* DocumentPartwiseTest.cpp in Sources */, - 29DC3C68225C0FC300814240 /* FunctionTest.cpp in Sources */, - 29DC3B5E225C0FC200814240 /* TremoloTest.cpp in Sources */, - 29DC3C6B225C0FC300814240 /* BracketTest.cpp in Sources */, - 29DC3B3B225C0FC200814240 /* DampTest.cpp in Sources */, - 29DC3C92225C0FC300814240 /* GroupTimeTest.cpp in Sources */, - 29DC3C65225C0FC300814240 /* CreditWordsGroupTest.cpp in Sources */, - 29DC3B3E225C0FC200814240 /* PageMarginsTest.cpp in Sources */, - 29DC3AEE225C0FC200814240 /* ApiChordSimpleTest.cpp in Sources */, - 29DC3B60225C0FC200814240 /* IdentificationTest.cpp in Sources */, - 29DC3B14225C0FC200814240 /* BassStepTest.cpp in Sources */, - 29DC3B95225C0FC300814240 /* StringsTest.cpp in Sources */, - 29DC3B4C225C0FC200814240 /* OtherPercussionTest.cpp in Sources */, - 29DC3C35225C0FC300814240 /* DefaultsTest.cpp in Sources */, - 29DC3BDE225C0FC300814240 /* TimeRelationTest.cpp in Sources */, - 29DC3C34225C0FC300814240 /* SlashDotTest.cpp in Sources */, - 29DC3BDA225C0FC300814240 /* TimewisePartTest.cpp in Sources */, - 29DC3C71225C0FC300814240 /* LeftMarginTest.cpp in Sources */, - 29DC3B92225C0FC300814240 /* WorkTest.cpp in Sources */, - 29DC3ADF225C0FC200814240 /* SortAttributes.cpp in Sources */, - 29DC3BF0225C0FC300814240 /* MetalTest.cpp in Sources */, - 29DC3B0B225C0FC200814240 /* TrillMarkTest.cpp in Sources */, - 29DC3B71225C0FC200814240 /* ArrowTest.cpp in Sources */, - 29DC3C80225C0FC300814240 /* BarStyleTest.cpp in Sources */, - 29DC3BCD225C0FC300814240 /* EncodingTest.cpp in Sources */, - 29DC3B1D225C0FC200814240 /* NotationsChoiceTest.cpp in Sources */, - 29DC3B64225C0FC200814240 /* UpBowTest.cpp in Sources */, - 29DC3BB7225C0FC300814240 /* MakeFunctionsTest.cpp in Sources */, - 29DC3B65225C0FC200814240 /* RehearsalTest.cpp in Sources */, - 29DC3C5B225C0FC300814240 /* LyricLanguageTest.cpp in Sources */, - 29DC3C28225C0FC300814240 /* NoteheadTextTest.cpp in Sources */, - 29DC3AEC225C0FC200814240 /* ChordApiTest.cpp in Sources */, - 29DC3C54225C0FC300814240 /* VerticalTurnTest.cpp in Sources */, - 29DC3AE3225C0FC200814240 /* MxFileTestGroup.cpp in Sources */, - 29DC3B48225C0FC200814240 /* EncodingDescriptionTest.cpp in Sources */, - 29DC3C94225C0FC300814240 /* AccentTest.cpp in Sources */, - 29DC3ADB225C0FC200814240 /* MeasureWriterTest.cpp in Sources */, - 29DC3AF1225C0FC200814240 /* MeasureDataTest.cpp in Sources */, - 29DC3C18225C0FC300814240 /* MovementTitleTest.cpp in Sources */, - 29DC3BBC225C0FC300814240 /* VirtualNameTest.cpp in Sources */, - 29DC3B31225C0FC200814240 /* FigureNumberTest.cpp in Sources */, - 29DC3B82225C0FC300814240 /* AccidentalTest.cpp in Sources */, - 29DC3C19225C0FC300814240 /* DelayedInvertedTurnTest.cpp in Sources */, - 29DC3BF4225C0FC300814240 /* GroupNameTest.cpp in Sources */, - 29DC3B62225C0FC200814240 /* InstrumentSoundTest.cpp in Sources */, - 29DC3C6E225C0FC300814240 /* ScoopTest.cpp in Sources */, - 29DC3C2F225C0FC300814240 /* BeatsTest.cpp in Sources */, - 29DC3BA6225C0FC300814240 /* MidiUnpitchedTest.cpp in Sources */, - 29DC3B2A225C0FC200814240 /* UnstressTest.cpp in Sources */, - 29DC3C6D225C0FC300814240 /* FontSizeTest.cpp in Sources */, - 29DC3AE0225C0FC200814240 /* ExpectedFiles.cpp in Sources */, - 29DC3C4B225C0FC300814240 /* NoteTest.cpp in Sources */, - 29DC3BC8225C0FC300814240 /* OctaveChangeTest.cpp in Sources */, - 29DC3C75225C0FC300814240 /* DotTest.cpp in Sources */, - 29DC3BC1225C0FC300814240 /* TupletNormalTest.cpp in Sources */, - 29DC3B99225C0FC300814240 /* AccordionRegistrationTest.cpp in Sources */, - 29DC3B41225C0FC200814240 /* StickMaterialTest.cpp in Sources */, - 29DC3B42225C0FC200814240 /* FretTest.cpp in Sources */, - 29DC3B29225C0FC200814240 /* BottomMarginTest.cpp in Sources */, - 29DC3C30225C0FC300814240 /* KeyTest.cpp in Sources */, - 29DC3C89225C0FC300814240 /* SoundTest.cpp in Sources */, - 29DC3C77225C0FC300814240 /* VirtualInstrumentTest.cpp in Sources */, - 29DC3C99225C0FC300814240 /* StaffDistanceTest.cpp in Sources */, - 29DC3C29225C0FC300814240 /* ColorTest.cpp in Sources */, - 29DC3B30225C0FC200814240 /* DocumentHeaderTest.cpp in Sources */, - 29DC3C4E225C0FC300814240 /* RelationTest.cpp in Sources */, - 29DC3AFC225C0FC200814240 /* ChordDataSaveAndLoadTest.cpp in Sources */, - 29DC3C45225C0FC300814240 /* GraceTest.cpp in Sources */, - 29DC3B1B225C0FC200814240 /* BeamTest.cpp in Sources */, - 29DC3AF3225C0FC200814240 /* MetronomeApiTest.cpp in Sources */, - 29DC3B89225C0FC300814240 /* InstrumentsTest.cpp in Sources */, - 29DC3C05225C0FC300814240 /* FingeringTest.cpp in Sources */, - 29DC3BA7225C0FC300814240 /* TimpaniTest.cpp in Sources */, - 29DC3B57225C0FC200814240 /* PlayTest.cpp in Sources */, - 29DC3C11225C0FC300814240 /* SourceTest.cpp in Sources */, - 29DC3C6F225C0FC300814240 /* GraceNoteGroupTest.cpp in Sources */, - 29DC3B05225C0FC200814240 /* PedalStepTest.cpp in Sources */, - 29DC3BC7225C0FC300814240 /* CreditChoiceTest.cpp in Sources */, - 29DC3C38225C0FC300814240 /* MusicDataGroupTest.cpp in Sources */, - 29DC3C5C225C0FC300814240 /* ModeTest.cpp in Sources */, - 29DC3C8F225C0FC300814240 /* TransposeTest.cpp in Sources */, - 29DC3BD1225C0FC300814240 /* LineWidthTest.cpp in Sources */, - 29DC3B90225C0FC300814240 /* ForwardTest.cpp in Sources */, - 29DC3BBE225C0FC300814240 /* SoftwareTest.cpp in Sources */, - 29DC3C02225C0FC300814240 /* ElisionTest.cpp in Sources */, - 29DC3BB0225C0FC300814240 /* LaughingTest.cpp in Sources */, - 29DC3C7C225C0FC300814240 /* HarmonyChordGroupTest.cpp in Sources */, - 29DC3C66225C0FC300814240 /* ThumbPositionTest.cpp in Sources */, - 29DC3AEF225C0FC200814240 /* ApiTester.cpp in Sources */, - 29DC3C3E225C0FC300814240 /* ExtendTest.cpp in Sources */, - 29DC3B75225C0FC200814240 /* LineTest.cpp in Sources */, - 29DC3C6C225C0FC300814240 /* PlopTest.cpp in Sources */, - 29DC3C95225C0FC300814240 /* ReleaseTest.cpp in Sources */, - 29DC3BA3225C0FC300814240 /* MetronomeTypeTest.cpp in Sources */, - 29DC3AF4225C0FC200814240 /* ApiK016aMiscTest.cpp in Sources */, - 29DC3BBD225C0FC300814240 /* SoundingPitchTest.cpp in Sources */, - 29DC3BC3225C0FC300814240 /* PageWidthTest.cpp in Sources */, - 29A04F35244FBA62004A5D3C /* PitchDataTest.cpp in Sources */, - 29DC3C2C225C0FC300814240 /* InvertedMordentTest.cpp in Sources */, - 29DC3BF2225C0FC300814240 /* SegnoTest.cpp in Sources */, - 29DC3C73225C0FC300814240 /* GroupBarlineTest.cpp in Sources */, - 29DC3C7A225C0FC300814240 /* MetronomeNoteTest.cpp in Sources */, - 29DC3B63225C0FC200814240 /* SenzaMisuraTest.cpp in Sources */, - 29DC3C52225C0FC300814240 /* WorkTitleTest.cpp in Sources */, - 29DC3BE0225C0FC300814240 /* HeelTest.cpp in Sources */, - 29DC3B0D225C0FC200814240 /* MeasureRepeatTest.cpp in Sources */, - 29DC3C98225C0FC300814240 /* RootStepTest.cpp in Sources */, - 29DC3AD4225C0FC200814240 /* PrintFunctionsTest.cpp in Sources */, - 29DC3B8F225C0FC300814240 /* BookmarkTest.cpp in Sources */, - 29DC3C4D225C0FC300814240 /* PartSymbolTest.cpp in Sources */, - 29DC3AF7225C0FC200814240 /* ApiMuAccidentals1Test.cpp in Sources */, - 29DC3BE2225C0FC300814240 /* BarlineTest.cpp in Sources */, - 29DC3B5B225C0FC200814240 /* EyeglassesTest.cpp in Sources */, - 29DC3C32225C0FC300814240 /* FrameTest.cpp in Sources */, - 29DC3C3B225C0FC300814240 /* TimeModificationTest.cpp in Sources */, - 29DC3BE8225C0FC300814240 /* FeatureTest.cpp in Sources */, - 29DC3BDC225C0FC300814240 /* InstrumentAbbreviationTest.cpp in Sources */, - 29DC3C55225C0FC300814240 /* TurnTest.cpp in Sources */, - 29DC3B0A225C0FC200814240 /* TapTest.cpp in Sources */, - 29DC3B7D225C0FC300814240 /* TenutoTest.cpp in Sources */, - 29DC3AFA225C0FC200814240 /* TimeSignatureApiTest.cpp in Sources */, - 29DC3C3F225C0FC300814240 /* EditorialVoiceGroupTest.cpp in Sources */, - 29DC3B28225C0FC200814240 /* KeyOctaveTest.cpp in Sources */, - 29DC3B38225C0FC200814240 /* NormalNotesTest.cpp in Sources */, - 29DC3BD0225C0FC300814240 /* DateTest.cpp in Sources */, - 29DC3B72225C0FC200814240 /* ArtificialTest.cpp in Sources */, - 29DC3BE4225C0FC300814240 /* SlurTest.cpp in Sources */, - 29DC3BF1225C0FC300814240 /* OrnamentsTest.cpp in Sources */, - 29DC3C1D225C0FC300814240 /* BreathMarkTest.cpp in Sources */, - 29DC3C0D225C0FC300814240 /* PositiveIntegerOrEmptyTest.cpp in Sources */, - 29DC3C24225C0FC300814240 /* DisplayTextTest.cpp in Sources */, - 29DC3BEE225C0FC300814240 /* PitchTest.cpp in Sources */, - 29DC3B74225C0FC200814240 /* CreditWordsTest.cpp in Sources */, - 29DC3C90225C0FC300814240 /* BendAlterTest.cpp in Sources */, - 29DC3C2A225C0FC300814240 /* SystemDividersTest.cpp in Sources */, - 29DC3C14225C0FC300814240 /* NoteChoiceTest.cpp in Sources */, - 29DC3BD5225C0FC300814240 /* PartwisePartTest.cpp in Sources */, - 29DC3C78225C0FC300814240 /* HoleClosedTest.cpp in Sources */, - 29DC3C1E225C0FC300814240 /* FrameStringsTest.cpp in Sources */, - 29DC3C87225C0FC300814240 /* NoteSizeTest.cpp in Sources */, - 29DC3C8B225C0FC300814240 /* EnsembleTest.cpp in Sources */, - 29DC3B16225C0FC200814240 /* WavyLineTest.cpp in Sources */, - 29DC3B3F225C0FC200814240 /* VirtualLibraryTest.cpp in Sources */, - 29DC3BB2225C0FC300814240 /* LevelTest.cpp in Sources */, - 29DC3C91225C0FC300814240 /* DirectionTypeTest.cpp in Sources */, - 29DC3C62225C0FC300814240 /* ArpeggiateTest.cpp in Sources */, - 29DC3C93225C0FC300814240 /* ElisionSyllabicGroupTest.cpp in Sources */, - 29DC3BE6225C0FC300814240 /* StaffLayoutTest.cpp in Sources */, - 29DC3B2D225C0FC200814240 /* GroupAbbreviationTest.cpp in Sources */, - 29DC3BA2225C0FC300814240 /* DirectionTest.cpp in Sources */, - 29DC3C2E225C0FC300814240 /* MuteTest.cpp in Sources */, - 29DC3BF6225C0FC300814240 /* KeyStepTest.cpp in Sources */, - 29DC3C12225C0FC300814240 /* StaffTuningTest.cpp in Sources */, - 29DC3C7B225C0FC300814240 /* CodaTest.cpp in Sources */, - 29DC3BB5225C0FC300814240 /* MovementNumberTest.cpp in Sources */, - 29DC3B22225C0FC200814240 /* KeyAlterTest.cpp in Sources */, - 29DC3B1C225C0FC200814240 /* SnapPizzicatoTest.cpp in Sources */, - 29DC3C31225C0FC300814240 /* GlissandoTest.cpp in Sources */, - 29DC3C5E225C0FC300814240 /* SlashTypeTest.cpp in Sources */, - 29DC3C09225C0FC300814240 /* OffsetTest.cpp in Sources */, - 29DC3B8D225C0FC300814240 /* PitchedTest.cpp in Sources */, - 29DC3C47225C0FC300814240 /* MidiBankTest.cpp in Sources */, - 29DC3C0C225C0FC300814240 /* StringTest.cpp in Sources */, - 29DC3AFF225C0FC200814240 /* OpenStringTest.cpp in Sources */, - 29DC3B53225C0FC200814240 /* EncodingDateTest.cpp in Sources */, - 29DC3C08225C0FC300814240 /* MetronomeRelationTest.cpp in Sources */, - 29DC3B4D225C0FC200814240 /* StickTypeTest.cpp in Sources */, - 29DC3AE9225C0FC200814240 /* FreezingTest.cpp in Sources */, - 29DC3B45225C0FC200814240 /* WedgeTest.cpp in Sources */, - 29DC3C5A225C0FC300814240 /* SchleiferTest.cpp in Sources */, - 29DC3B58225C0FC200814240 /* LeftDividerTest.cpp in Sources */, - 29DC3C0A225C0FC300814240 /* EnumsTest.cpp in Sources */, - 29DC3BFE225C0FC300814240 /* OtherPlayTest.cpp in Sources */, - 29DC3B6B225C0FC200814240 /* PartAbbreviationTest.cpp in Sources */, - 29DC3B7E225C0FC300814240 /* NoteheadTest.cpp in Sources */, - 29DC3AF8225C0FC200814240 /* ApiK014aFermatasTest.cpp in Sources */, - 29DC3B2F225C0FC200814240 /* RootAlterTest.cpp in Sources */, - 29DC3C84225C0FC300814240 /* WordFontTest.cpp in Sources */, - 29DC3BB3225C0FC300814240 /* ClefOctaveChangeTest.cpp in Sources */, - 29DC3BA4225C0FC300814240 /* DocumentTimewiseCreate.cpp in Sources */, - 29DC3BB8225C0FC300814240 /* HandbellTest.cpp in Sources */, - 29DC3B69225C0FC200814240 /* FullNoteGroupTest.cpp in Sources */, - 29DC3B77225C0FC300814240 /* TypeTest.cpp in Sources */, - 29DC3BE5225C0FC300814240 /* DocumentTimewiseConvertTest.cpp in Sources */, - 29DC3C9A225C0FC300814240 /* StaccatoTest.cpp in Sources */, - 29DC3C8E225C0FC300814240 /* OtherTechnicalTest.cpp in Sources */, - 29DC3B83225C0FC300814240 /* MusicFontTest.cpp in Sources */, - 29DC3C7F225C0FC300814240 /* InterchangeableTest.cpp in Sources */, - 29DC3AF9225C0FC200814240 /* ApiLy43eTest.cpp in Sources */, - 29DC3BA9225C0FC300814240 /* WordsTest.cpp in Sources */, - 29DC3B35225C0FC200814240 /* ShakeTest.cpp in Sources */, - 29DC3B88225C0FC300814240 /* AccordionHighTest.cpp in Sources */, - 29DC3B9D225C0FC300814240 /* RestTest.cpp in Sources */, - 29DC3ADE225C0FC200814240 /* ImportTest.cpp in Sources */, - 29DC3B7F225C0FC300814240 /* StaffTest.cpp in Sources */, - 29DC3BD4225C0FC300814240 /* MetronomeTest.cpp in Sources */, - 29DC3B02225C0FC200814240 /* TupletTypeTest.cpp in Sources */, - 29DC3B6D225C0FC200814240 /* InversionTest.cpp in Sources */, - 29DC3B2B225C0FC200814240 /* SupportsTest.cpp in Sources */, - 29DC3BC5225C0FC300814240 /* TopSystemDistanceTest.cpp in Sources */, - 29DC3B4F225C0FC200814240 /* PrefixTest.cpp in Sources */, - 29DC3AD8225C0FC200814240 /* MagicTemplatesTest.cpp in Sources */, - 29DC3BBA225C0FC300814240 /* HummingTest.cpp in Sources */, - 29DC3AD6225C0FC200814240 /* ScoreWriterTest.cpp in Sources */, - 29DC3B7A225C0FC300814240 /* EffectTest.cpp in Sources */, - 29DC3C06225C0FC300814240 /* HammerOnTest.cpp in Sources */, - 29DC3C46225C0FC300814240 /* MidiDeviceTest.cpp in Sources */, - 29DC3AFB225C0FC200814240 /* ApiK009bSlurTest.cpp in Sources */, - 29DC3BEC225C0FC300814240 /* WorkNumberTest.cpp in Sources */, - 29DC3BD6225C0FC300814240 /* AppearanceTest.cpp in Sources */, - 29DC3C1B225C0FC300814240 /* ArticulationsTest.cpp in Sources */, - 29DC3C1C225C0FC300814240 /* TieTest.cpp in Sources */, - 29DC3B7B225C0FC300814240 /* TouchingPitchTest.cpp in Sources */, - 29DC3B86225C0FC300814240 /* NormalNoteGroupTest.cpp in Sources */, - 29DC3AD3225C0FC200814240 /* PositionFunctionsTest.cpp in Sources */, - 29DC3B91225C0FC300814240 /* TopMarginTest.cpp in Sources */, - 29DC3B5A225C0FC200814240 /* TupletTest.cpp in Sources */, - 29DC3B5D225C0FC200814240 /* BarreTest.cpp in Sources */, - 29DC3C3A225C0FC300814240 /* MeasureNumberingTest.cpp in Sources */, - 29DC3C57225C0FC300814240 /* OtherAppearanceTest.cpp in Sources */, - 29DC3B15225C0FC200814240 /* TupletActualTest.cpp in Sources */, - 29DC3B10225C0FC200814240 /* DoubleTongueTest.cpp in Sources */, - 29DC3B0E225C0FC200814240 /* AccordionMiddleTest.cpp in Sources */, - 29DC3BAF225C0FC300814240 /* DecimalsTest.cpp in Sources */, - 29DC3BAD225C0FC300814240 /* FirstFretTest.cpp in Sources */, - 29DC3C04225C0FC300814240 /* CaesuraTest.cpp in Sources */, - 29DC3B2E225C0FC200814240 /* DegreeTypeTest.cpp in Sources */, - 29DC3BD7225C0FC300814240 /* NonArpeggiateTest.cpp in Sources */, - 29DC3B8B225C0FC300814240 /* MidiNameTest.cpp in Sources */, - 29DC3BDF225C0FC300814240 /* ScoreInstrumentTest.cpp in Sources */, - 29DC3B12225C0FC200814240 /* StoppedTest.cpp in Sources */, - 29DC3BB1225C0FC300814240 /* BeatUnitTest.cpp in Sources */, - 29DC3BD3225C0FC300814240 /* ChromaticTest.cpp in Sources */, - 29DC3C42225C0FC300814240 /* ChordTest.cpp in Sources */, - 29DC3B18225C0FC200814240 /* MillimetersTest.cpp in Sources */, - 29DC3BF7225C0FC300814240 /* MiscellaneousTest.cpp in Sources */, - 29DC3B23225C0FC200814240 /* ScordaturaTest.cpp in Sources */, - 29DC3C37225C0FC300814240 /* StaffDetailsTest.cpp in Sources */, - 29DC3C64225C0FC300814240 /* BendTest.cpp in Sources */, - 29DC3AF5225C0FC200814240 /* ApiK015aLayoutTest.cpp in Sources */, - 29DC3B17225C0FC200814240 /* TripleTongueTest.cpp in Sources */, - 29DC3C79225C0FC300814240 /* TupletDotTest.cpp in Sources */, - 29DC3AE1225C0FC200814240 /* ChangeValues.cpp in Sources */, - 29DC3AD9225C0FC200814240 /* DirectionWriterTest.cpp in Sources */, - 29DC3B4B225C0FC200814240 /* MetronomeTupletTest.cpp in Sources */, - 29DC3B9B225C0FC300814240 /* DisplayStepOctaveGroupTest.cpp in Sources */, - 29DC3AD7225C0FC200814240 /* CurveFunctionsTest.cpp in Sources */, - 29DC3B44225C0FC200814240 /* ElevationTest.cpp in Sources */, - 29DC3B9C225C0FC300814240 /* RightMarginTest.cpp in Sources */, - 29DC3C56225C0FC300814240 /* BeatRepeatTest.cpp in Sources */, - 29DC3C26225C0FC300814240 /* PluckTest.cpp in Sources */, - 29DC3B59225C0FC200814240 /* SlashTest.cpp in Sources */, - 29DC3C17225C0FC300814240 /* AccidentalTextTest.cpp in Sources */, - 29DC3C82225C0FC300814240 /* ScorePartTest.cpp in Sources */, - 29DC3B49225C0FC200814240 /* CancelTest.cpp in Sources */, - 29DC3BA5225C0FC300814240 /* WoodTest.cpp in Sources */, - 29DC3B0C225C0FC200814240 /* SemiPitchedTest.cpp in Sources */, - 29DC3C41225C0FC300814240 /* TechnicalChoiceTest.cpp in Sources */, - 29DC3AF0225C0FC200814240 /* ApiK007cTest.cpp in Sources */, - 29DC3AD5225C0FC200814240 /* DirectionReaderTest.cpp in Sources */, - 29DC3B5F225C0FC200814240 /* ScorePartwiseTest.cpp in Sources */, - 29DC3C8D225C0FC300814240 /* AccordTest.cpp in Sources */, - 29DC3B19225C0FC200814240 /* KindTest.cpp in Sources */, - 29DC3BFB225C0FC300814240 /* FrameFretsTest.cpp in Sources */, - 29DC3BDB225C0FC300814240 /* DivisionsTest.cpp in Sources */, - 29DC3C72225C0FC300814240 /* InstrumentTest.cpp in Sources */, - 29DC3BFC225C0FC300814240 /* TextTest.cpp in Sources */, - 29DC3B09225C0FC200814240 /* StepTest.cpp in Sources */, - 29DC3B54225C0FC200814240 /* SoloTest.cpp in Sources */, - 29DC3C22225C0FC300814240 /* RootTest.cpp in Sources */, - 29DC3B47225C0FC200814240 /* PrintTest.cpp in Sources */, - 29DC3B93225C0FC300814240 /* EditorialGroupTest.cpp in Sources */, - 29DC3B04225C0FC200814240 /* DoubleTest.cpp in Sources */, - 29DC3B46225C0FC200814240 /* PedalAlterTest.cpp in Sources */, - 29DC3B1F225C0FC200814240 /* StickLocationTest.cpp in Sources */, - 29A04F36244FBA62004A5D3C /* MxlTest.cpp in Sources */, - 29DC3BCC225C0FC300814240 /* DelayedTurnTest.cpp in Sources */, - 29DC3C15225C0FC300814240 /* ActualNotesTest.cpp in Sources */, - 29DC3C2B225C0FC300814240 /* TiedTest.cpp in Sources */, - 29DC3B85225C0FC300814240 /* OpusTest.cpp in Sources */, - 29DC3BEB225C0FC300814240 /* EndParagraphTest.cpp in Sources */, - 29DC3C67225C0FC300814240 /* PartNameDisplayTest.cpp in Sources */, - 29DC3B78225C0FC300814240 /* WithBarTest.cpp in Sources */, - 29DC3B36225C0FC200814240 /* CircularArrowTest.cpp in Sources */, - 29DC3BAE225C0FC300814240 /* TimewiseMeasureTest.cpp in Sources */, - 29DC3C4F225C0FC300814240 /* LyricTextCoiceTest.cpp in Sources */, - 29DC3B06225C0FC200814240 /* CreatorTest.cpp in Sources */, - 29DC3BC9225C0FC300814240 /* MusicDataChoiceTest.cpp in Sources */, - 29DC3C83225C0FC300814240 /* FifthsTest.cpp in Sources */, - 29DC3B24225C0FC200814240 /* NaturalTest.cpp in Sources */, - 29DC3BB4225C0FC300814240 /* MetronomeDotTest.cpp in Sources */, - 29DC3B79225C0FC300814240 /* LyricTest.cpp in Sources */, - 29DC3B94225C0FC300814240 /* TuningStepTest.cpp in Sources */, - 29DC3BBF225C0FC300814240 /* StrongAccentTest.cpp in Sources */, - 29DC3C58225C0FC300814240 /* BeatTypeTest.cpp in Sources */, - 29DC3C16225C0FC300814240 /* MeasureDistanceTest.cpp in Sources */, - 29DC3B52225C0FC200814240 /* BasePitchTest.cpp in Sources */, - 29DC3B34225C0FC200814240 /* RightsTest.cpp in Sources */, - 29DC3AEB225C0FC200814240 /* BombeTest.cpp in Sources */, - 29DC3C1A225C0FC300814240 /* HarmonicInfoChoiceTest.cpp in Sources */, - 29DC3BE3225C0FC300814240 /* PrincipalVoiceTest.cpp in Sources */, - 29DC3C96225C0FC300814240 /* NumberOrNormal.cpp in Sources */, - 29DC3C7D225C0FC300814240 /* BeatUnitDotTest.cpp in Sources */, - 29DC3AEA225C0FC200814240 /* DocumentManagerTest.cpp in Sources */, - 29DC3B51225C0FC200814240 /* MetronomeBeamTest.cpp in Sources */, - 29DC3B6A225C0FC200814240 /* VoiceTest.cpp in Sources */, - 29DC3AE6225C0FC200814240 /* ApiK007aTest.cpp in Sources */, - 29DC3C49225C0FC300814240 /* FullNoteTypeChoiceTest.cpp in Sources */, - 29DC3B20225C0FC200814240 /* OtherArticulationTest.cpp in Sources */, - 29A04F34244FBA62004A5D3C /* NewSystemTest.cpp in Sources */, - 29DC3B25225C0FC200814240 /* MordentTest.cpp in Sources */, - 29DC3C0B225C0FC300814240 /* PartwiseMeasureTest.cpp in Sources */, - 29DC3C10225C0FC300814240 /* VolumeTest.cpp in Sources */, - 29DC3C13225C0FC300814240 /* OtherNotationTest.cpp in Sources */, - 29DC3B03225C0FC200814240 /* TechnicalTest.cpp in Sources */, - 29DC3B97225C0FC300814240 /* DisplayOctaveTest.cpp in Sources */, - 29DC3BC2225C0FC300814240 /* StressTest.cpp in Sources */, - 29DC3C4C225C0FC300814240 /* LinkTest.cpp in Sources */, - 29DC3BD9225C0FC300814240 /* MidiInstrumentTest.cpp in Sources */, - 29DC3B50225C0FC200814240 /* PedalTuningTest.cpp in Sources */, - 29DC3C03225C0FC300814240 /* DegreeTest.cpp in Sources */, - 29DC3B68225C0FC200814240 /* DownBowTest.cpp in Sources */, - 29DC3B07225C0FC200814240 /* YesNoNumberTest.cpp in Sources */, - 29DC3BEA225C0FC300814240 /* PercussionTest.cpp in Sources */, - 29DC3B9E225C0FC300814240 /* ScoreHeaderGroupTest.cpp in Sources */, - 29DC3B8C225C0FC300814240 /* OtherOrnamentTest.cpp in Sources */, - 29DC3B4E225C0FC200814240 /* EndingTest.cpp in Sources */, - 29DC3B11225C0FC200814240 /* RightDividerTest.cpp in Sources */, - 29DC3B76225C0FC200814240 /* EncoderTest.cpp in Sources */, - 29DC3C3C225C0FC300814240 /* InvertedTurnTest.cpp in Sources */, - 29DC3B4A225C0FC200814240 /* RepeatTest.cpp in Sources */, - 29DC3AE5225C0FC200814240 /* MxFileRepositoy.cpp in Sources */, - 29DC3B37225C0FC200814240 /* AccidentalMarkTest.cpp in Sources */, - 29DC3B9A225C0FC300814240 /* UnpitchedTest.cpp in Sources */, - 29DC3C61225C0FC300814240 /* PreBendTest.cpp in Sources */, - 29DC3B1A225C0FC200814240 /* CreditTest.cpp in Sources */, - 29DC3C5F225C0FC300814240 /* NormalTypeTest.cpp in Sources */, - 29DC3C59225C0FC300814240 /* HoleShapeTest.cpp in Sources */, - 29DC3BA8225C0FC300814240 /* GlassTest.cpp in Sources */, - 29DC3B3D225C0FC200814240 /* ArrowStyleTest.cpp in Sources */, - 29DC3C0F225C0FC300814240 /* GroupNameDisplayTest.cpp in Sources */, - 29DC3CB3225C11C100814240 /* main.cpp in Sources */, - 29DC3C8A225C0FC300814240 /* NotationsTest.cpp in Sources */, - 29DC3C76225C0FC300814240 /* DoitTest.cpp in Sources */, - 29DC3C48225C0FC300814240 /* IntegersTest.cpp in Sources */, - 29DC3C81225C0FC300814240 /* SyllabicTextGroupTest.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 299F7FFD1CA8D2620084CAE5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "MX_REPO_ROOT_PATH=\\\"$(PROJECT_DIR)/..\\\"", - "MX_BINARY_OUTPUT_PATH=\\\"$(BUILD_DIR)\\\"", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = "$(inherited)"; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - USER_HEADER_SEARCH_PATHS = "$PROJECT_DIR/../Sourcecode/include $PROJECT_DIR/../Sourcecode/private $PROJECT_DIR/../Sourcecode/private/mx/ezxml/src/include $PROJECT_DIR/../Sourcecode/private/mx/ezxml/src/private"; - }; - name = Debug; - }; - 299F7FFE1CA8D2620084CAE5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "MX_REPO_ROOT_PATH=\\\"$(PROJECT_DIR)/..\\\"", - "MX_BINARY_OUTPUT_PATH=\\\"$(BUILD_DIR)\\\"", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = "$(inherited)"; - SDKROOT = macosx; - USER_HEADER_SEARCH_PATHS = "$PROJECT_DIR/../Sourcecode/include $PROJECT_DIR/../Sourcecode/private $PROJECT_DIR/../Sourcecode/private/mx/ezxml/src/include $PROJECT_DIR/../Sourcecode/private/mx/ezxml/src/private"; - }; - name = Release; - }; - 299F80001CA8D2620084CAE5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = "-"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "DEBUG=1", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 299F80011CA8D2620084CAE5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_IDENTITY = "-"; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 299F7FF11CA8D2620084CAE5 /* Build configuration list for PBXProject "MxTest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 299F7FFD1CA8D2620084CAE5 /* Debug */, - 299F7FFE1CA8D2620084CAE5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 299F7FFF1CA8D2620084CAE5 /* Build configuration list for PBXNativeTarget "MxTest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 299F80001CA8D2620084CAE5 /* Debug */, - 299F80011CA8D2620084CAE5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 299F7FEE1CA8D2620084CAE5 /* Project object */; -} diff --git a/Xcode/MxTest.xcodeproj/xcshareddata/xcschemes/MxTest.xcscheme b/Xcode/MxTest.xcodeproj/xcshareddata/xcschemes/MxTest.xcscheme deleted file mode 100644 index b6bdfd738..000000000 --- a/Xcode/MxTest.xcodeproj/xcshareddata/xcschemes/MxTest.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Xcode/build_xcframework.sh b/Xcode/build_xcframework.sh new file mode 100755 index 000000000..942e7454d --- /dev/null +++ b/Xcode/build_xcframework.sh @@ -0,0 +1,45 @@ +#!/bin/zsh + +rm -r Mx.xcframework +rm -r build +#xcodebuild clean + +echo "Building for macOS" +xcodebuild archive \ +-scheme MxmacOS \ +-destination "platform=macOS" \ +-archivePath "build/Mx.macOS.xcarchive" \ +SKIP_INSTALL=NO + +echo "Building for iOS devices (arm64)" +xcodebuild archive \ +-scheme MxiOS \ +-sdk iphoneos \ +-destination "generic/platform=iOS" \ +-archivePath "build/Mx.iOS.xcarchive" \ +SKIP_INSTALL=NO + +echo "Building for iOS simulator" +xcodebuild archive \ +-scheme MxiOS \ +-sdk iphonesimulator \ +-archivePath "build/Mx.iOS-simulator.xcarchive" \ +SKIP_INSTALL=NO + +echo "Building for Mac Catalyst" +xcodebuild archive \ +-scheme MxiOS \ +-destination "platform=macOS,variant=Mac Catalyst" \ +-archivePath "build/Mx.catalyst.xcarchive" \ +SKIP_INSTALL=NO + +xcodebuild -create-xcframework \ +-framework "build/Mx.macOS.xcarchive/Products/Library/Frameworks/MxmacOS.framework" \ +-framework "build/Mx.iOS.xcarchive/Products/Library/Frameworks/MxiOS.framework" \ +-framework "build/Mx.iOS-simulator.xcarchive/Products/Library/Frameworks/MxiOS.framework" \ +-framework "build/Mx.catalyst.xcarchive/Products/Library/Frameworks/MxiOS.framework" \ +-output "Mx.xcframework" + +#rm -r build + +open . diff --git a/Xcode/mx.xcworkspace/contents.xcworkspacedata b/Xcode/mx.xcworkspace/contents.xcworkspacedata index 0b1b4e6cb..3313a1018 100755 --- a/Xcode/mx.xcworkspace/contents.xcworkspacedata +++ b/Xcode/mx.xcworkspace/contents.xcworkspacedata @@ -1,9 +1,6 @@ - - From 673febcecfd79952aafc55933c615389a8ffbeb5 Mon Sep 17 00:00:00 2001 From: "Gene Z. Ragan" Date: Wed, 2 Nov 2022 11:27:13 -0700 Subject: [PATCH 2/9] Update header files copied to framework bundle --- .gitignore | 3 ++- Xcode/Mx.xcodeproj/project.pbxproj | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 89dfcd51b..178d49a7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ build/ cmake-build-* Sourcecode/private/mxtest/file/PathRoot.h -**/xcuserdata/ \ No newline at end of file +**/xcuserdata/ +*.DS_Store \ No newline at end of file diff --git a/Xcode/Mx.xcodeproj/project.pbxproj b/Xcode/Mx.xcodeproj/project.pbxproj index dae3041cb..f5ea5d63f 100755 --- a/Xcode/Mx.xcodeproj/project.pbxproj +++ b/Xcode/Mx.xcodeproj/project.pbxproj @@ -3527,6 +3527,8 @@ 9CD50CCA238A3D2900ED7DD8 /* pugixml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9CD50C8B238A3CFA00ED7DD8 /* pugixml.cpp */; }; 9CD50CCB238A3D2900ED7DD8 /* XFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9CD50C8F238A3CFA00ED7DD8 /* XFactory.cpp */; }; 9CD50CCC238A3D2900ED7DD8 /* PugiDoc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9CD50C92238A3CFA00ED7DD8 /* PugiDoc.cpp */; }; + F28C5CDE2912E2530057288B /* TransposeData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 297B99C1252A263B0089E958 /* TransposeData.h */; }; + F28C5CDF2912E5AD0057288B /* TransposeData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 297B99C1252A263B0089E958 /* TransposeData.h */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -3582,6 +3584,7 @@ 9CD50C47238A323100ED7DD8 /* SystemData.h in CopyFiles */, 9CD50C48238A323100ED7DD8 /* TempoData.h in CopyFiles */, 9CD50C49238A323100ED7DD8 /* TimeSignatureData.h in CopyFiles */, + F28C5CDF2912E5AD0057288B /* TransposeData.h in CopyFiles */, 9CD50C4A238A323100ED7DD8 /* TupletData.h in CopyFiles */, 9CD50C4B238A323100ED7DD8 /* Version.h in CopyFiles */, 9CD50C4C238A323100ED7DD8 /* VoiceData.h in CopyFiles */, @@ -3642,6 +3645,7 @@ 9CD50C71238A32A100ED7DD8 /* SystemData.h in CopyFiles */, 9CD50C72238A32A100ED7DD8 /* TempoData.h in CopyFiles */, 9CD50C73238A32A100ED7DD8 /* TimeSignatureData.h in CopyFiles */, + F28C5CDE2912E2530057288B /* TransposeData.h in CopyFiles */, 9CD50C74238A32A100ED7DD8 /* TupletData.h in CopyFiles */, 9CD50C75238A32A100ED7DD8 /* Version.h in CopyFiles */, 9CD50C76238A32A100ED7DD8 /* VoiceData.h in CopyFiles */, From 78503b88d69393326466569df3315918a4392eef Mon Sep 17 00:00:00 2001 From: Gene <47258285+SemitoneGene@users.noreply.github.com> Date: Sun, 15 Jan 2023 15:10:43 -0700 Subject: [PATCH 3/9] Add Segno; Fix M1 crash in catch --- .gitignore | 1 + Sourcecode/include/mx/api/DirectionData.h | 13 +++++-- Sourcecode/include/mx/api/SegnoData.h | 38 +++++++++++++++++++ Sourcecode/private/cpul/catch.h | 6 ++- .../private/mx/impl/DirectionReader.cpp | 11 +++++- Xcode/Mx.xcodeproj/project.pbxproj | 6 +++ 6 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 Sourcecode/include/mx/api/SegnoData.h diff --git a/.gitignore b/.gitignore index 178d49a7d..0e17e2aa6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ build/ cmake-build-* Sourcecode/private/mxtest/file/PathRoot.h **/xcuserdata/ +**/xcshareddata/ *.DS_Store \ No newline at end of file diff --git a/Sourcecode/include/mx/api/DirectionData.h b/Sourcecode/include/mx/api/DirectionData.h index a74bd71a2..cc86ea21c 100644 --- a/Sourcecode/include/mx/api/DirectionData.h +++ b/Sourcecode/include/mx/api/DirectionData.h @@ -5,12 +5,13 @@ #pragma once #include "mx/api/ApiCommon.h" -#include "mx/api/WedgeData.h" +#include "mx/api/ChordData.h" #include "mx/api/MarkData.h" -#include "mx/api/TempoData.h" #include "mx/api/OttavaData.h" +#include "mx/api/SegnoData.h" +#include "mx/api/TempoData.h" +#include "mx/api/WedgeData.h" #include "mx/api/WordsData.h" -#include "mx/api/ChordData.h" namespace mx { @@ -62,6 +63,7 @@ namespace mx std::vector bracketStops; std::vector words; std::vector chords; + std::vector segnos; DirectionData() : tickTimePosition{ 0 } @@ -77,6 +79,7 @@ namespace mx , bracketStops{} , words{} , chords{} + , segnos{} { } @@ -93,7 +96,8 @@ namespace mx directionData.tempos.size() == 0 && directionData.ottavaStarts.size() == 0 && directionData.ottavaStops.size() == 0 && - directionData.words.size() == 0; + directionData.words.size() == 0 && + directionData.segnos.size() == 0; } MXAPI_EQUALS_BEGIN( DirectionData ) @@ -111,6 +115,7 @@ namespace mx MXAPI_EQUALS_MEMBER( bracketStops ) MXAPI_EQUALS_MEMBER( words ) MXAPI_EQUALS_MEMBER( chords ) + MXAPI_EQUALS_MEMBER( segnos ) MXAPI_EQUALS_END; MXAPI_NOT_EQUALS_AND_VECTORS( DirectionData ); } diff --git a/Sourcecode/include/mx/api/SegnoData.h b/Sourcecode/include/mx/api/SegnoData.h new file mode 100644 index 000000000..389581bac --- /dev/null +++ b/Sourcecode/include/mx/api/SegnoData.h @@ -0,0 +1,38 @@ +// MusicXML Class Library +// Copyright (c) by Matthew James Briggs +// Distributed under the MIT License + +#pragma once + +#include "mx/api/ApiCommon.h" +#include "mx/api/PositionData.h" +#include "mx/api/ColorData.h" +#include "mx/api/FontData.h" + +namespace mx +{ + namespace api + { + class SegnoData + { + public: + PositionData positionData; + bool isColorSpecified; + ColorData colorData; + + SegnoData() + : positionData{} + , isColorSpecified{ false } + , colorData{} + { + } + }; + + MXAPI_EQUALS_BEGIN( SegnoData ) + MXAPI_EQUALS_MEMBER( positionData ) + MXAPI_EQUALS_MEMBER( isColorSpecified ) + MXAPI_EQUALS_MEMBER( colorData ) + MXAPI_EQUALS_END; + MXAPI_NOT_EQUALS_AND_VECTORS( SegnoData ); + } +} diff --git a/Sourcecode/private/cpul/catch.h b/Sourcecode/private/cpul/catch.h index 58ea18f50..f9789228c 100644 --- a/Sourcecode/private/cpul/catch.h +++ b/Sourcecode/private/cpul/catch.h @@ -8642,7 +8642,11 @@ namespace Catch { #ifdef CATCH_PLATFORM_MAC - #define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */ + #if defined(__i386__) || defined(__x86_64__) + #define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */ + #elif defined(__aarch64__) + #define CATCH_TRAP() __asm__(".inst 0xd4200000") + #endif #elif defined(CATCH_PLATFORM_IPHONE) diff --git a/Sourcecode/private/mx/impl/DirectionReader.cpp b/Sourcecode/private/mx/impl/DirectionReader.cpp index 9341e9792..3d2b0d3cd 100644 --- a/Sourcecode/private/mx/impl/DirectionReader.cpp +++ b/Sourcecode/private/mx/impl/DirectionReader.cpp @@ -324,7 +324,16 @@ namespace mx void DirectionReader::parseSegno( const core::DirectionType& directionType) { - MX_UNUSED( directionType ); + const auto& segnoSet = directionType.getSegnoSet(); + + for( const auto& segnoPtr : segnoSet ) + { + api::SegnoData outSegno; + const auto& attr = *segnoPtr->getAttributes(); + outSegno.positionData = getPositionData( attr ); + outSegno.colorData = getColor( attr ); + myOutDirectionData.segnos.emplace_back( std::move( outSegno ) ); + } } diff --git a/Xcode/Mx.xcodeproj/project.pbxproj b/Xcode/Mx.xcodeproj/project.pbxproj index f5ea5d63f..2c6136f22 100755 --- a/Xcode/Mx.xcodeproj/project.pbxproj +++ b/Xcode/Mx.xcodeproj/project.pbxproj @@ -3398,6 +3398,8 @@ 29EAD73D1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; 29EAD73E1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; 29EAD73F1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; + 3DC022292974A13600A69637 /* SegnoData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; + 3DC0222A2974A13600A69637 /* SegnoData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; 9CD50C25238A323100ED7DD8 /* ApiCommon.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3863225C0DB800814240 /* ApiCommon.h */; }; 9CD50C26238A323100ED7DD8 /* ApiEquality.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3856225C0DB600814240 /* ApiEquality.h */; }; 9CD50C27238A323100ED7DD8 /* AppearanceData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3841225C0DB400814240 /* AppearanceData.h */; }; @@ -5054,6 +5056,7 @@ 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessingInstruction.cpp; sourceTree = ""; }; 29EAD73A1F0EA96B00BDE782 /* ProcessingInstruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessingInstruction.h; sourceTree = ""; }; 29F9465C245E72A6007E2308 /* AttributesIterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AttributesIterface.h; sourceTree = ""; }; + 3DC022282974A13600A69637 /* SegnoData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegnoData.h; sourceTree = ""; }; 9CD50C7F238A3CFA00ED7DD8 /* XAttributeIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XAttributeIterator.cpp; sourceTree = ""; }; 9CD50C80238A3CFA00ED7DD8 /* pugiconfig.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = pugiconfig.hpp; sourceTree = ""; }; 9CD50C81238A3CFA00ED7DD8 /* XElementIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XElementIterator.cpp; sourceTree = ""; }; @@ -6601,6 +6604,7 @@ 29DC3850225C0DB500814240 /* PositionData.h */, 29DC3846225C0DB400814240 /* PrintData.h */, 29DC3847225C0DB400814240 /* ScoreData.h */, + 3DC022282974A13600A69637 /* SegnoData.h */, 29843AD6248D47E9006A8E34 /* SizeData.h */, 29DC3849225C0DB500814240 /* SoundID.h */, 29DC3848225C0DB400814240 /* SpannerData.h */, @@ -6749,6 +6753,7 @@ 2999A90F24CD0AEC004637BA /* XlinkRole.h in Headers */, 2999A90A24CD0AEC004637BA /* XsIDREF.h in Headers */, 2999A8D324CD0AEC004637BA /* EndingNumber.h in Headers */, + 3DC0222A2974A13600A69637 /* SegnoData.h in Headers */, 2999A8B524CD0AEC004637BA /* XsNMToken.h in Headers */, 2999A8C924CD0AEC004637BA /* TimeOnly.h in Headers */, 293B06F3249F0BB800429597 /* EnumsBuiltin.h in Headers */, @@ -6773,6 +6778,7 @@ 2999A90E24CD0AEC004637BA /* XlinkRole.h in Headers */, 2999A90924CD0AEC004637BA /* XsIDREF.h in Headers */, 2999A8D224CD0AEC004637BA /* EndingNumber.h in Headers */, + 3DC022292974A13600A69637 /* SegnoData.h in Headers */, 2999A8B424CD0AEC004637BA /* XsNMToken.h in Headers */, 2999A8C824CD0AEC004637BA /* TimeOnly.h in Headers */, 293B06F2249F0BB800429597 /* EnumsBuiltin.h in Headers */, From c0c5531e5bdbf68f9fd0329573e106aa6fa3c1ee Mon Sep 17 00:00:00 2001 From: Gene <47258285+SemitoneGene@users.noreply.github.com> Date: Sun, 15 Jan 2023 17:39:39 -0700 Subject: [PATCH 4/9] Add SegnoData to public headers --- .gitignore | 1 + Xcode/Mx.xcodeproj/project.pbxproj | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 0e17e2aa6..e135d1e3b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ build/ cmake-build-* Sourcecode/private/mxtest/file/PathRoot.h +**/Mx.xcframework **/xcuserdata/ **/xcshareddata/ *.DS_Store \ No newline at end of file diff --git a/Xcode/Mx.xcodeproj/project.pbxproj b/Xcode/Mx.xcodeproj/project.pbxproj index 2c6136f22..52c4565dc 100755 --- a/Xcode/Mx.xcodeproj/project.pbxproj +++ b/Xcode/Mx.xcodeproj/project.pbxproj @@ -3400,6 +3400,8 @@ 29EAD73F1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; 3DC022292974A13600A69637 /* SegnoData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; 3DC0222A2974A13600A69637 /* SegnoData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; + 3DC0222E2974B19F00A69637 /* SegnoData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; + 3DC0222F2974B2D200A69637 /* SegnoData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; 9CD50C25238A323100ED7DD8 /* ApiCommon.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3863225C0DB800814240 /* ApiCommon.h */; }; 9CD50C26238A323100ED7DD8 /* ApiEquality.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3856225C0DB600814240 /* ApiEquality.h */; }; 9CD50C27238A323100ED7DD8 /* AppearanceData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3841225C0DB400814240 /* AppearanceData.h */; }; @@ -3540,15 +3542,6 @@ dstPath = mx/api; dstSubfolderSpec = 6; files = ( - 29703A0F24954A1600D0E3B3 /* DefaultsData.h in CopyFiles */, - 29703A1024954A1600D0E3B3 /* KeyComponent.h in CopyFiles */, - 29703A1124954A1600D0E3B3 /* LeftRight.h in CopyFiles */, - 29703A1224954A1600D0E3B3 /* MarginsData.h in CopyFiles */, - 29703A1324954A1600D0E3B3 /* PageData.h in CopyFiles */, - 29703A1424954A1600D0E3B3 /* PageLayoutData.h in CopyFiles */, - 29703A1524954A1600D0E3B3 /* PageMarginsData.h in CopyFiles */, - 29703A1624954A1600D0E3B3 /* SizeData.h in CopyFiles */, - 29703A1724954A1600D0E3B3 /* SystemLayoutData.h in CopyFiles */, 9CD50C25238A323100ED7DD8 /* ApiCommon.h in CopyFiles */, 9CD50C26238A323100ED7DD8 /* ApiEquality.h in CopyFiles */, 9CD50C27238A323100ED7DD8 /* AppearanceData.h in CopyFiles */, @@ -3557,15 +3550,19 @@ 9CD50C2A238A323100ED7DD8 /* ClefData.h in CopyFiles */, 9CD50C2B238A323100ED7DD8 /* ColorData.h in CopyFiles */, 9CD50C2C238A323100ED7DD8 /* CurveData.h in CopyFiles */, + 29703A0F24954A1600D0E3B3 /* DefaultsData.h in CopyFiles */, 9CD50C2D238A323100ED7DD8 /* DirectionData.h in CopyFiles */, 9CD50C2E238A323100ED7DD8 /* DocumentManager.h in CopyFiles */, 9CD50C2F238A323100ED7DD8 /* DurationData.h in CopyFiles */, 9CD50C30238A323100ED7DD8 /* EncodingData.h in CopyFiles */, 9CD50C31238A323100ED7DD8 /* FontData.h in CopyFiles */, + 29703A1024954A1600D0E3B3 /* KeyComponent.h in CopyFiles */, 9CD50C32238A323100ED7DD8 /* KeyData.h in CopyFiles */, 9CD50C33238A323100ED7DD8 /* LayoutData.h in CopyFiles */, + 29703A1124954A1600D0E3B3 /* LeftRight.h in CopyFiles */, 9CD50C34238A323100ED7DD8 /* LineData.h in CopyFiles */, 9CD50C35238A323100ED7DD8 /* LyricData.h in CopyFiles */, + 29703A1224954A1600D0E3B3 /* MarginsData.h in CopyFiles */, 9CD50C36238A323100ED7DD8 /* MarkData.h in CopyFiles */, 9CD50C37238A323100ED7DD8 /* MeasureData.h in CopyFiles */, 9CD50C38238A323100ED7DD8 /* MeasureLocation.h in CopyFiles */, @@ -3573,6 +3570,9 @@ 9CD50C3A238A323100ED7DD8 /* NoteAttachmentData.h in CopyFiles */, 9CD50C3B238A323100ED7DD8 /* NoteData.h in CopyFiles */, 9CD50C3C238A323100ED7DD8 /* OttavaData.h in CopyFiles */, + 29703A1324954A1600D0E3B3 /* PageData.h in CopyFiles */, + 29703A1424954A1600D0E3B3 /* PageLayoutData.h in CopyFiles */, + 29703A1524954A1600D0E3B3 /* PageMarginsData.h in CopyFiles */, 9CD50C3D238A323100ED7DD8 /* PageTextData.h in CopyFiles */, 9CD50C3E238A323100ED7DD8 /* PartData.h in CopyFiles */, 9CD50C3F238A323100ED7DD8 /* PartGroupData.h in CopyFiles */, @@ -3580,10 +3580,13 @@ 9CD50C41238A323100ED7DD8 /* PositionData.h in CopyFiles */, 9CD50C42238A323100ED7DD8 /* PrintData.h in CopyFiles */, 9CD50C43238A323100ED7DD8 /* ScoreData.h in CopyFiles */, + 3DC0222E2974B19F00A69637 /* SegnoData.h in CopyFiles */, + 29703A1624954A1600D0E3B3 /* SizeData.h in CopyFiles */, 9CD50C44238A323100ED7DD8 /* SoundID.h in CopyFiles */, 9CD50C45238A323100ED7DD8 /* SpannerData.h in CopyFiles */, 9CD50C46238A323100ED7DD8 /* StaffData.h in CopyFiles */, 9CD50C47238A323100ED7DD8 /* SystemData.h in CopyFiles */, + 29703A1724954A1600D0E3B3 /* SystemLayoutData.h in CopyFiles */, 9CD50C48238A323100ED7DD8 /* TempoData.h in CopyFiles */, 9CD50C49238A323100ED7DD8 /* TimeSignatureData.h in CopyFiles */, F28C5CDF2912E5AD0057288B /* TransposeData.h in CopyFiles */, @@ -3641,6 +3644,7 @@ 9CD50C6B238A32A100ED7DD8 /* PositionData.h in CopyFiles */, 9CD50C6C238A32A100ED7DD8 /* PrintData.h in CopyFiles */, 9CD50C6D238A32A100ED7DD8 /* ScoreData.h in CopyFiles */, + 3DC0222F2974B2D200A69637 /* SegnoData.h in CopyFiles */, 9CD50C6E238A32A100ED7DD8 /* SoundID.h in CopyFiles */, 9CD50C6F238A32A100ED7DD8 /* SpannerData.h in CopyFiles */, 9CD50C70238A32A100ED7DD8 /* StaffData.h in CopyFiles */, From e414ec7b7e0c2a474d201282cf96b6f264817d78 Mon Sep 17 00:00:00 2001 From: Gene <47258285+SemitoneGene@users.noreply.github.com> Date: Sun, 15 Jan 2023 22:11:03 -0700 Subject: [PATCH 5/9] Coda reading --- Sourcecode/include/mx/api/CodaData.h | 37 +++++++++++++++++++ Sourcecode/include/mx/api/DirectionData.h | 6 ++- Sourcecode/include/mx/api/SegnoData.h | 3 +- .../private/mx/impl/DirectionReader.cpp | 11 +++++- Xcode/Mx.xcodeproj/project.pbxproj | 10 +++-- 5 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 Sourcecode/include/mx/api/CodaData.h diff --git a/Sourcecode/include/mx/api/CodaData.h b/Sourcecode/include/mx/api/CodaData.h new file mode 100644 index 000000000..48af431e7 --- /dev/null +++ b/Sourcecode/include/mx/api/CodaData.h @@ -0,0 +1,37 @@ +// MusicXML Class Library +// Copyright (c) by Matthew James Briggs +// Distributed under the MIT License + +#pragma once + +#include "mx/api/ApiCommon.h" +#include "mx/api/ColorData.h" +#include "mx/api/PositionData.h" + +namespace mx +{ + namespace api + { + class CodaData + { + public: + PositionData positionData; + bool isColorSpecified; + ColorData colorData; + + CodaData() + : positionData{} + , isColorSpecified{ false } + , colorData{} + { + } + }; + + MXAPI_EQUALS_BEGIN( CodaData ) + MXAPI_EQUALS_MEMBER( positionData ) + MXAPI_EQUALS_MEMBER( isColorSpecified ) + MXAPI_EQUALS_MEMBER( colorData ) + MXAPI_EQUALS_END; + MXAPI_NOT_EQUALS_AND_VECTORS( CodaData ); + } +} diff --git a/Sourcecode/include/mx/api/DirectionData.h b/Sourcecode/include/mx/api/DirectionData.h index cc86ea21c..8777bd912 100644 --- a/Sourcecode/include/mx/api/DirectionData.h +++ b/Sourcecode/include/mx/api/DirectionData.h @@ -6,6 +6,7 @@ #include "mx/api/ApiCommon.h" #include "mx/api/ChordData.h" +#include "mx/api/CodaData.h" #include "mx/api/MarkData.h" #include "mx/api/OttavaData.h" #include "mx/api/SegnoData.h" @@ -64,6 +65,7 @@ namespace mx std::vector words; std::vector chords; std::vector segnos; + std::vector codas; DirectionData() : tickTimePosition{ 0 } @@ -97,7 +99,8 @@ namespace mx directionData.ottavaStarts.size() == 0 && directionData.ottavaStops.size() == 0 && directionData.words.size() == 0 && - directionData.segnos.size() == 0; + directionData.segnos.size() == 0 && + directionData.codas.size() == 0; } MXAPI_EQUALS_BEGIN( DirectionData ) @@ -116,6 +119,7 @@ namespace mx MXAPI_EQUALS_MEMBER( words ) MXAPI_EQUALS_MEMBER( chords ) MXAPI_EQUALS_MEMBER( segnos ) + MXAPI_EQUALS_MEMBER( codas ) MXAPI_EQUALS_END; MXAPI_NOT_EQUALS_AND_VECTORS( DirectionData ); } diff --git a/Sourcecode/include/mx/api/SegnoData.h b/Sourcecode/include/mx/api/SegnoData.h index 389581bac..592b01fd4 100644 --- a/Sourcecode/include/mx/api/SegnoData.h +++ b/Sourcecode/include/mx/api/SegnoData.h @@ -5,9 +5,8 @@ #pragma once #include "mx/api/ApiCommon.h" -#include "mx/api/PositionData.h" #include "mx/api/ColorData.h" -#include "mx/api/FontData.h" +#include "mx/api/PositionData.h" namespace mx { diff --git a/Sourcecode/private/mx/impl/DirectionReader.cpp b/Sourcecode/private/mx/impl/DirectionReader.cpp index 3d2b0d3cd..cdd23b500 100644 --- a/Sourcecode/private/mx/impl/DirectionReader.cpp +++ b/Sourcecode/private/mx/impl/DirectionReader.cpp @@ -356,7 +356,16 @@ namespace mx void DirectionReader::parseCoda( const core::DirectionType& directionType) { - MX_UNUSED( directionType ); + const auto& codaSet = directionType.getCodaSet(); + + for( const auto& codaPtr : codaSet ) + { + api::CodaData outCoda; + const auto& attr = *codaPtr->getAttributes(); + outCoda.positionData = getPositionData( attr ); + outCoda.colorData = getColor( attr ); + myOutDirectionData.codas.emplace_back( std::move( outCoda ) ); + } } diff --git a/Xcode/Mx.xcodeproj/project.pbxproj b/Xcode/Mx.xcodeproj/project.pbxproj index 52c4565dc..cd30d6b1a 100755 --- a/Xcode/Mx.xcodeproj/project.pbxproj +++ b/Xcode/Mx.xcodeproj/project.pbxproj @@ -3398,10 +3398,10 @@ 29EAD73D1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; 29EAD73E1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; 29EAD73F1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; - 3DC022292974A13600A69637 /* SegnoData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; - 3DC0222A2974A13600A69637 /* SegnoData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; 3DC0222E2974B19F00A69637 /* SegnoData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; 3DC0222F2974B2D200A69637 /* SegnoData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; + 3DC022452975110C00A69637 /* CodaData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC02242297510DE00A69637 /* CodaData.h */; }; + 3DC022462975114300A69637 /* CodaData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC02242297510DE00A69637 /* CodaData.h */; }; 9CD50C25238A323100ED7DD8 /* ApiCommon.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3863225C0DB800814240 /* ApiCommon.h */; }; 9CD50C26238A323100ED7DD8 /* ApiEquality.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3856225C0DB600814240 /* ApiEquality.h */; }; 9CD50C27238A323100ED7DD8 /* AppearanceData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3841225C0DB400814240 /* AppearanceData.h */; }; @@ -3548,6 +3548,7 @@ 9CD50C28238A323100ED7DD8 /* BarlineData.h in CopyFiles */, 9CD50C29238A323100ED7DD8 /* ChordData.h in CopyFiles */, 9CD50C2A238A323100ED7DD8 /* ClefData.h in CopyFiles */, + 3DC022452975110C00A69637 /* CodaData.h in CopyFiles */, 9CD50C2B238A323100ED7DD8 /* ColorData.h in CopyFiles */, 9CD50C2C238A323100ED7DD8 /* CurveData.h in CopyFiles */, 29703A0F24954A1600D0E3B3 /* DefaultsData.h in CopyFiles */, @@ -3619,6 +3620,7 @@ 9CD50C52238A32A000ED7DD8 /* BarlineData.h in CopyFiles */, 9CD50C53238A32A000ED7DD8 /* ChordData.h in CopyFiles */, 9CD50C54238A32A000ED7DD8 /* ClefData.h in CopyFiles */, + 3DC022462975114300A69637 /* CodaData.h in CopyFiles */, 9CD50C55238A32A000ED7DD8 /* ColorData.h in CopyFiles */, 9CD50C56238A32A000ED7DD8 /* CurveData.h in CopyFiles */, 9CD50C57238A32A000ED7DD8 /* DirectionData.h in CopyFiles */, @@ -5061,6 +5063,7 @@ 29EAD73A1F0EA96B00BDE782 /* ProcessingInstruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessingInstruction.h; sourceTree = ""; }; 29F9465C245E72A6007E2308 /* AttributesIterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AttributesIterface.h; sourceTree = ""; }; 3DC022282974A13600A69637 /* SegnoData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegnoData.h; sourceTree = ""; }; + 3DC02242297510DE00A69637 /* CodaData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodaData.h; sourceTree = ""; }; 9CD50C7F238A3CFA00ED7DD8 /* XAttributeIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XAttributeIterator.cpp; sourceTree = ""; }; 9CD50C80238A3CFA00ED7DD8 /* pugiconfig.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = pugiconfig.hpp; sourceTree = ""; }; 9CD50C81238A3CFA00ED7DD8 /* XElementIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XElementIterator.cpp; sourceTree = ""; }; @@ -6576,6 +6579,7 @@ 29DC3852225C0DB600814240 /* BarlineData.h */, 29DC384A225C0DB500814240 /* ChordData.h */, 29DC383D225C0DB300814240 /* ClefData.h */, + 3DC02242297510DE00A69637 /* CodaData.h */, 29DC3861225C0DB700814240 /* ColorData.h */, 29DC3859225C0DB600814240 /* CurveData.h */, 29843AD9248DE951006A8E34 /* DefaultsData.h */, @@ -6757,7 +6761,6 @@ 2999A90F24CD0AEC004637BA /* XlinkRole.h in Headers */, 2999A90A24CD0AEC004637BA /* XsIDREF.h in Headers */, 2999A8D324CD0AEC004637BA /* EndingNumber.h in Headers */, - 3DC0222A2974A13600A69637 /* SegnoData.h in Headers */, 2999A8B524CD0AEC004637BA /* XsNMToken.h in Headers */, 2999A8C924CD0AEC004637BA /* TimeOnly.h in Headers */, 293B06F3249F0BB800429597 /* EnumsBuiltin.h in Headers */, @@ -6782,7 +6785,6 @@ 2999A90E24CD0AEC004637BA /* XlinkRole.h in Headers */, 2999A90924CD0AEC004637BA /* XsIDREF.h in Headers */, 2999A8D224CD0AEC004637BA /* EndingNumber.h in Headers */, - 3DC022292974A13600A69637 /* SegnoData.h in Headers */, 2999A8B424CD0AEC004637BA /* XsNMToken.h in Headers */, 2999A8C824CD0AEC004637BA /* TimeOnly.h in Headers */, 293B06F2249F0BB800429597 /* EnumsBuiltin.h in Headers */, From 992ab7ad1f5809c3fa75fa8064f564b658a91779 Mon Sep 17 00:00:00 2001 From: Gene <47258285+SemitoneGene@users.noreply.github.com> Date: Mon, 16 Jan 2023 12:45:45 -0700 Subject: [PATCH 6/9] Add rehearsal marks --- Sourcecode/include/mx/api/DirectionData.h | 2 + Sourcecode/include/mx/api/RehearsalData.h | 46 +++++++++++++++++++ .../private/mx/impl/DirectionReader.cpp | 12 +++++ Xcode/Mx.xcodeproj/project.pbxproj | 10 ++++ 4 files changed, 70 insertions(+) create mode 100644 Sourcecode/include/mx/api/RehearsalData.h diff --git a/Sourcecode/include/mx/api/DirectionData.h b/Sourcecode/include/mx/api/DirectionData.h index 8777bd912..2a660267b 100644 --- a/Sourcecode/include/mx/api/DirectionData.h +++ b/Sourcecode/include/mx/api/DirectionData.h @@ -9,6 +9,7 @@ #include "mx/api/CodaData.h" #include "mx/api/MarkData.h" #include "mx/api/OttavaData.h" +#include "mx/api/RehearsalData.h" #include "mx/api/SegnoData.h" #include "mx/api/TempoData.h" #include "mx/api/WedgeData.h" @@ -66,6 +67,7 @@ namespace mx std::vector chords; std::vector segnos; std::vector codas; + std::vector rehearsals; DirectionData() : tickTimePosition{ 0 } diff --git a/Sourcecode/include/mx/api/RehearsalData.h b/Sourcecode/include/mx/api/RehearsalData.h new file mode 100644 index 000000000..4d21bc563 --- /dev/null +++ b/Sourcecode/include/mx/api/RehearsalData.h @@ -0,0 +1,46 @@ +// MusicXML Class Library +// Copyright (c) by Matthew James Briggs +// Distributed under the MIT License + +#pragma once + +#include "mx/api/ApiCommon.h" +#include "mx/api/ColorData.h" +#include "mx/api/PositionData.h" + +namespace mx +{ + namespace api + { + class RehearsalData + { + public: + std::string text; + PositionData positionData; + bool isColorSpecified; + ColorData colorData; + FontData fontData; + + // Additional data about enclosing shape is available + // but not supported at this time. + + RehearsalData() + : text{} + , positionData{} + , isColorSpecified{ false } + , colorData{} + , fontData{} + { + } + }; + + MXAPI_EQUALS_BEGIN( RehearsalData ) + MXAPI_EQUALS_MEMBER( text ) + MXAPI_EQUALS_MEMBER( positionData ) + MXAPI_EQUALS_MEMBER( isColorSpecified ) + MXAPI_EQUALS_MEMBER( colorData ) + MXAPI_EQUALS_MEMBER( fontData ) + MXAPI_EQUALS_END; + MXAPI_NOT_EQUALS_AND_VECTORS( RehearsalData ); + } +} diff --git a/Sourcecode/private/mx/impl/DirectionReader.cpp b/Sourcecode/private/mx/impl/DirectionReader.cpp index cdd23b500..41ba238ea 100644 --- a/Sourcecode/private/mx/impl/DirectionReader.cpp +++ b/Sourcecode/private/mx/impl/DirectionReader.cpp @@ -318,6 +318,18 @@ namespace mx void DirectionReader::parseRehearsal( const core::DirectionType& directionType) { + const auto& rehearsalSet = directionType.getRehearsalSet(); + + for( const auto& rehearsalPtr : rehearsalSet ) + { + api::RehearsalData outRehearsal; + const auto& attr = *rehearsalPtr->getAttributes(); + outRehearsal.text = rehearsalPtr->getValue().getValue(); + outRehearsal.positionData = getPositionData( attr ); + outRehearsal.colorData = getColor( attr ); + myOutDirectionData.rehearsals.emplace_back( std::move( outRehearsal ) ); + } + MX_UNUSED( directionType ); } diff --git a/Xcode/Mx.xcodeproj/project.pbxproj b/Xcode/Mx.xcodeproj/project.pbxproj index cd30d6b1a..ce299a7c7 100755 --- a/Xcode/Mx.xcodeproj/project.pbxproj +++ b/Xcode/Mx.xcodeproj/project.pbxproj @@ -3402,6 +3402,10 @@ 3DC0222F2974B2D200A69637 /* SegnoData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; 3DC022452975110C00A69637 /* CodaData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC02242297510DE00A69637 /* CodaData.h */; }; 3DC022462975114300A69637 /* CodaData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC02242297510DE00A69637 /* CodaData.h */; }; + 3DC022482975D1C700A69637 /* RehearsalData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022472975D1C700A69637 /* RehearsalData.h */; }; + 3DC022492975D1C700A69637 /* RehearsalData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022472975D1C700A69637 /* RehearsalData.h */; }; + 3DC0224A2975D86B00A69637 /* RehearsalData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022472975D1C700A69637 /* RehearsalData.h */; }; + 3DC0224B2975D89E00A69637 /* RehearsalData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022472975D1C700A69637 /* RehearsalData.h */; }; 9CD50C25238A323100ED7DD8 /* ApiCommon.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3863225C0DB800814240 /* ApiCommon.h */; }; 9CD50C26238A323100ED7DD8 /* ApiEquality.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3856225C0DB600814240 /* ApiEquality.h */; }; 9CD50C27238A323100ED7DD8 /* AppearanceData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3841225C0DB400814240 /* AppearanceData.h */; }; @@ -3580,6 +3584,7 @@ 9CD50C40238A323100ED7DD8 /* PitchData.h in CopyFiles */, 9CD50C41238A323100ED7DD8 /* PositionData.h in CopyFiles */, 9CD50C42238A323100ED7DD8 /* PrintData.h in CopyFiles */, + 3DC0224B2975D89E00A69637 /* RehearsalData.h in CopyFiles */, 9CD50C43238A323100ED7DD8 /* ScoreData.h in CopyFiles */, 3DC0222E2974B19F00A69637 /* SegnoData.h in CopyFiles */, 29703A1624954A1600D0E3B3 /* SizeData.h in CopyFiles */, @@ -3645,6 +3650,7 @@ 9CD50C6A238A32A100ED7DD8 /* PitchData.h in CopyFiles */, 9CD50C6B238A32A100ED7DD8 /* PositionData.h in CopyFiles */, 9CD50C6C238A32A100ED7DD8 /* PrintData.h in CopyFiles */, + 3DC0224A2975D86B00A69637 /* RehearsalData.h in CopyFiles */, 9CD50C6D238A32A100ED7DD8 /* ScoreData.h in CopyFiles */, 3DC0222F2974B2D200A69637 /* SegnoData.h in CopyFiles */, 9CD50C6E238A32A100ED7DD8 /* SoundID.h in CopyFiles */, @@ -5064,6 +5070,7 @@ 29F9465C245E72A6007E2308 /* AttributesIterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AttributesIterface.h; sourceTree = ""; }; 3DC022282974A13600A69637 /* SegnoData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegnoData.h; sourceTree = ""; }; 3DC02242297510DE00A69637 /* CodaData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodaData.h; sourceTree = ""; }; + 3DC022472975D1C700A69637 /* RehearsalData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RehearsalData.h; sourceTree = ""; }; 9CD50C7F238A3CFA00ED7DD8 /* XAttributeIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XAttributeIterator.cpp; sourceTree = ""; }; 9CD50C80238A3CFA00ED7DD8 /* pugiconfig.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = pugiconfig.hpp; sourceTree = ""; }; 9CD50C81238A3CFA00ED7DD8 /* XElementIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XElementIterator.cpp; sourceTree = ""; }; @@ -6611,6 +6618,7 @@ 29DC383F225C0DB400814240 /* PitchData.h */, 29DC3850225C0DB500814240 /* PositionData.h */, 29DC3846225C0DB400814240 /* PrintData.h */, + 3DC022472975D1C700A69637 /* RehearsalData.h */, 29DC3847225C0DB400814240 /* ScoreData.h */, 3DC022282974A13600A69637 /* SegnoData.h */, 29843AD6248D47E9006A8E34 /* SizeData.h */, @@ -6770,6 +6778,7 @@ 2999A8F624CD0AEC004637BA /* XlinkTitle.h in Headers */, 2999A8FB24CD0AEC004637BA /* XmlLang.h in Headers */, 2999A90024CD0AEC004637BA /* XsID.h in Headers */, + 3DC022492975D1C700A69637 /* RehearsalData.h in Headers */, 2999A8CE24CD0AEC004637BA /* CommaSeparatedText.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6794,6 +6803,7 @@ 2999A8F524CD0AEC004637BA /* XlinkTitle.h in Headers */, 2999A8FA24CD0AEC004637BA /* XmlLang.h in Headers */, 2999A8FF24CD0AEC004637BA /* XsID.h in Headers */, + 3DC022482975D1C700A69637 /* RehearsalData.h in Headers */, 2999A8CD24CD0AEC004637BA /* CommaSeparatedText.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; From 3d1067aca313ce47893f6c03946d0c7e1da24b18 Mon Sep 17 00:00:00 2001 From: Gene <47258285+SemitoneGene@users.noreply.github.com> Date: Mon, 16 Jan 2023 13:07:06 -0700 Subject: [PATCH 7/9] Add stubs for writing segnos, codas and rehearsals --- .../private/mx/impl/DirectionWriter.cpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Sourcecode/private/mx/impl/DirectionWriter.cpp b/Sourcecode/private/mx/impl/DirectionWriter.cpp index ad9867ea3..f9951c4b8 100644 --- a/Sourcecode/private/mx/impl/DirectionWriter.cpp +++ b/Sourcecode/private/mx/impl/DirectionWriter.cpp @@ -332,6 +332,33 @@ namespace mx addDirectionType( outDirType, directionPtr ); } } + + if( myDirectionData.segnos.size() > 0 ) { + + for( const auto& rehearsal : myDirectionData.segnos ) { + auto outDirType = core::makeDirectionType(); + outDirType->setChoice( core::DirectionType::Choice::segno ); + this->addDirectionType( outDirType, directionPtr ); + } + } + + if( myDirectionData.codas.size() > 0 ) { + + for( const auto& rehearsal : myDirectionData.codas ) { + auto outDirType = core::makeDirectionType(); + outDirType->setChoice( core::DirectionType::Choice::coda ); + this->addDirectionType( outDirType, directionPtr ); + } + } + + if( myDirectionData.rehearsals.size() > 0 ) { + + for( const auto& rehearsal : myDirectionData.rehearsals ) { + auto outDirType = core::makeDirectionType(); + outDirType->setChoice( core::DirectionType::Choice::rehearsal ); + this->addDirectionType( outDirType, directionPtr ); + } + } if( myIsFirstDirectionTypeAdded ) { From 816b0c5455478a321f00a32b3714b7495db91641 Mon Sep 17 00:00:00 2001 From: Gene <47258285+SemitoneGene@users.noreply.github.com> Date: Wed, 18 Jan 2023 13:51:38 -0800 Subject: [PATCH 8/9] gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 89dfcd51b..e135d1e3b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ build/ cmake-build-* Sourcecode/private/mxtest/file/PathRoot.h -**/xcuserdata/ \ No newline at end of file +**/Mx.xcframework +**/xcuserdata/ +**/xcshareddata/ +*.DS_Store \ No newline at end of file From b368cd3891486d40cfff888566f1b0348de4d5a4 Mon Sep 17 00:00:00 2001 From: Gene <47258285+SemitoneGene@users.noreply.github.com> Date: Wed, 18 Jan 2023 13:56:41 -0800 Subject: [PATCH 9/9] rehearsal segno and coda support --- Sourcecode/include/mx/api/CodaData.h | 37 +++++++++++++++ Sourcecode/include/mx/api/DirectionData.h | 19 ++++++-- Sourcecode/include/mx/api/RehearsalData.h | 46 +++++++++++++++++++ Sourcecode/include/mx/api/SegnoData.h | 37 +++++++++++++++ .../private/mx/impl/DirectionReader.cpp | 34 +++++++++++++- .../private/mx/impl/DirectionWriter.cpp | 27 +++++++++++ Xcode/Mx.xcodeproj/project.pbxproj | 44 ++++++++++++++---- 7 files changed, 229 insertions(+), 15 deletions(-) create mode 100644 Sourcecode/include/mx/api/CodaData.h create mode 100644 Sourcecode/include/mx/api/RehearsalData.h create mode 100644 Sourcecode/include/mx/api/SegnoData.h diff --git a/Sourcecode/include/mx/api/CodaData.h b/Sourcecode/include/mx/api/CodaData.h new file mode 100644 index 000000000..48af431e7 --- /dev/null +++ b/Sourcecode/include/mx/api/CodaData.h @@ -0,0 +1,37 @@ +// MusicXML Class Library +// Copyright (c) by Matthew James Briggs +// Distributed under the MIT License + +#pragma once + +#include "mx/api/ApiCommon.h" +#include "mx/api/ColorData.h" +#include "mx/api/PositionData.h" + +namespace mx +{ + namespace api + { + class CodaData + { + public: + PositionData positionData; + bool isColorSpecified; + ColorData colorData; + + CodaData() + : positionData{} + , isColorSpecified{ false } + , colorData{} + { + } + }; + + MXAPI_EQUALS_BEGIN( CodaData ) + MXAPI_EQUALS_MEMBER( positionData ) + MXAPI_EQUALS_MEMBER( isColorSpecified ) + MXAPI_EQUALS_MEMBER( colorData ) + MXAPI_EQUALS_END; + MXAPI_NOT_EQUALS_AND_VECTORS( CodaData ); + } +} diff --git a/Sourcecode/include/mx/api/DirectionData.h b/Sourcecode/include/mx/api/DirectionData.h index a74bd71a2..2a660267b 100644 --- a/Sourcecode/include/mx/api/DirectionData.h +++ b/Sourcecode/include/mx/api/DirectionData.h @@ -5,12 +5,15 @@ #pragma once #include "mx/api/ApiCommon.h" -#include "mx/api/WedgeData.h" +#include "mx/api/ChordData.h" +#include "mx/api/CodaData.h" #include "mx/api/MarkData.h" -#include "mx/api/TempoData.h" #include "mx/api/OttavaData.h" +#include "mx/api/RehearsalData.h" +#include "mx/api/SegnoData.h" +#include "mx/api/TempoData.h" +#include "mx/api/WedgeData.h" #include "mx/api/WordsData.h" -#include "mx/api/ChordData.h" namespace mx { @@ -62,6 +65,9 @@ namespace mx std::vector bracketStops; std::vector words; std::vector chords; + std::vector segnos; + std::vector codas; + std::vector rehearsals; DirectionData() : tickTimePosition{ 0 } @@ -77,6 +83,7 @@ namespace mx , bracketStops{} , words{} , chords{} + , segnos{} { } @@ -93,7 +100,9 @@ namespace mx directionData.tempos.size() == 0 && directionData.ottavaStarts.size() == 0 && directionData.ottavaStops.size() == 0 && - directionData.words.size() == 0; + directionData.words.size() == 0 && + directionData.segnos.size() == 0 && + directionData.codas.size() == 0; } MXAPI_EQUALS_BEGIN( DirectionData ) @@ -111,6 +120,8 @@ namespace mx MXAPI_EQUALS_MEMBER( bracketStops ) MXAPI_EQUALS_MEMBER( words ) MXAPI_EQUALS_MEMBER( chords ) + MXAPI_EQUALS_MEMBER( segnos ) + MXAPI_EQUALS_MEMBER( codas ) MXAPI_EQUALS_END; MXAPI_NOT_EQUALS_AND_VECTORS( DirectionData ); } diff --git a/Sourcecode/include/mx/api/RehearsalData.h b/Sourcecode/include/mx/api/RehearsalData.h new file mode 100644 index 000000000..4d21bc563 --- /dev/null +++ b/Sourcecode/include/mx/api/RehearsalData.h @@ -0,0 +1,46 @@ +// MusicXML Class Library +// Copyright (c) by Matthew James Briggs +// Distributed under the MIT License + +#pragma once + +#include "mx/api/ApiCommon.h" +#include "mx/api/ColorData.h" +#include "mx/api/PositionData.h" + +namespace mx +{ + namespace api + { + class RehearsalData + { + public: + std::string text; + PositionData positionData; + bool isColorSpecified; + ColorData colorData; + FontData fontData; + + // Additional data about enclosing shape is available + // but not supported at this time. + + RehearsalData() + : text{} + , positionData{} + , isColorSpecified{ false } + , colorData{} + , fontData{} + { + } + }; + + MXAPI_EQUALS_BEGIN( RehearsalData ) + MXAPI_EQUALS_MEMBER( text ) + MXAPI_EQUALS_MEMBER( positionData ) + MXAPI_EQUALS_MEMBER( isColorSpecified ) + MXAPI_EQUALS_MEMBER( colorData ) + MXAPI_EQUALS_MEMBER( fontData ) + MXAPI_EQUALS_END; + MXAPI_NOT_EQUALS_AND_VECTORS( RehearsalData ); + } +} diff --git a/Sourcecode/include/mx/api/SegnoData.h b/Sourcecode/include/mx/api/SegnoData.h new file mode 100644 index 000000000..592b01fd4 --- /dev/null +++ b/Sourcecode/include/mx/api/SegnoData.h @@ -0,0 +1,37 @@ +// MusicXML Class Library +// Copyright (c) by Matthew James Briggs +// Distributed under the MIT License + +#pragma once + +#include "mx/api/ApiCommon.h" +#include "mx/api/ColorData.h" +#include "mx/api/PositionData.h" + +namespace mx +{ + namespace api + { + class SegnoData + { + public: + PositionData positionData; + bool isColorSpecified; + ColorData colorData; + + SegnoData() + : positionData{} + , isColorSpecified{ false } + , colorData{} + { + } + }; + + MXAPI_EQUALS_BEGIN( SegnoData ) + MXAPI_EQUALS_MEMBER( positionData ) + MXAPI_EQUALS_MEMBER( isColorSpecified ) + MXAPI_EQUALS_MEMBER( colorData ) + MXAPI_EQUALS_END; + MXAPI_NOT_EQUALS_AND_VECTORS( SegnoData ); + } +} diff --git a/Sourcecode/private/mx/impl/DirectionReader.cpp b/Sourcecode/private/mx/impl/DirectionReader.cpp index 9341e9792..41ba238ea 100644 --- a/Sourcecode/private/mx/impl/DirectionReader.cpp +++ b/Sourcecode/private/mx/impl/DirectionReader.cpp @@ -318,13 +318,34 @@ namespace mx void DirectionReader::parseRehearsal( const core::DirectionType& directionType) { + const auto& rehearsalSet = directionType.getRehearsalSet(); + + for( const auto& rehearsalPtr : rehearsalSet ) + { + api::RehearsalData outRehearsal; + const auto& attr = *rehearsalPtr->getAttributes(); + outRehearsal.text = rehearsalPtr->getValue().getValue(); + outRehearsal.positionData = getPositionData( attr ); + outRehearsal.colorData = getColor( attr ); + myOutDirectionData.rehearsals.emplace_back( std::move( outRehearsal ) ); + } + MX_UNUSED( directionType ); } void DirectionReader::parseSegno( const core::DirectionType& directionType) { - MX_UNUSED( directionType ); + const auto& segnoSet = directionType.getSegnoSet(); + + for( const auto& segnoPtr : segnoSet ) + { + api::SegnoData outSegno; + const auto& attr = *segnoPtr->getAttributes(); + outSegno.positionData = getPositionData( attr ); + outSegno.colorData = getColor( attr ); + myOutDirectionData.segnos.emplace_back( std::move( outSegno ) ); + } } @@ -347,7 +368,16 @@ namespace mx void DirectionReader::parseCoda( const core::DirectionType& directionType) { - MX_UNUSED( directionType ); + const auto& codaSet = directionType.getCodaSet(); + + for( const auto& codaPtr : codaSet ) + { + api::CodaData outCoda; + const auto& attr = *codaPtr->getAttributes(); + outCoda.positionData = getPositionData( attr ); + outCoda.colorData = getColor( attr ); + myOutDirectionData.codas.emplace_back( std::move( outCoda ) ); + } } diff --git a/Sourcecode/private/mx/impl/DirectionWriter.cpp b/Sourcecode/private/mx/impl/DirectionWriter.cpp index ad9867ea3..f9951c4b8 100644 --- a/Sourcecode/private/mx/impl/DirectionWriter.cpp +++ b/Sourcecode/private/mx/impl/DirectionWriter.cpp @@ -332,6 +332,33 @@ namespace mx addDirectionType( outDirType, directionPtr ); } } + + if( myDirectionData.segnos.size() > 0 ) { + + for( const auto& rehearsal : myDirectionData.segnos ) { + auto outDirType = core::makeDirectionType(); + outDirType->setChoice( core::DirectionType::Choice::segno ); + this->addDirectionType( outDirType, directionPtr ); + } + } + + if( myDirectionData.codas.size() > 0 ) { + + for( const auto& rehearsal : myDirectionData.codas ) { + auto outDirType = core::makeDirectionType(); + outDirType->setChoice( core::DirectionType::Choice::coda ); + this->addDirectionType( outDirType, directionPtr ); + } + } + + if( myDirectionData.rehearsals.size() > 0 ) { + + for( const auto& rehearsal : myDirectionData.rehearsals ) { + auto outDirType = core::makeDirectionType(); + outDirType->setChoice( core::DirectionType::Choice::rehearsal ); + this->addDirectionType( outDirType, directionPtr ); + } + } if( myIsFirstDirectionTypeAdded ) { diff --git a/Xcode/Mx.xcodeproj/project.pbxproj b/Xcode/Mx.xcodeproj/project.pbxproj index dae3041cb..ce299a7c7 100755 --- a/Xcode/Mx.xcodeproj/project.pbxproj +++ b/Xcode/Mx.xcodeproj/project.pbxproj @@ -3398,6 +3398,14 @@ 29EAD73D1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; 29EAD73E1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; 29EAD73F1F0EA96B00BDE782 /* ProcessingInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */; }; + 3DC0222E2974B19F00A69637 /* SegnoData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; + 3DC0222F2974B2D200A69637 /* SegnoData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022282974A13600A69637 /* SegnoData.h */; }; + 3DC022452975110C00A69637 /* CodaData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC02242297510DE00A69637 /* CodaData.h */; }; + 3DC022462975114300A69637 /* CodaData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC02242297510DE00A69637 /* CodaData.h */; }; + 3DC022482975D1C700A69637 /* RehearsalData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022472975D1C700A69637 /* RehearsalData.h */; }; + 3DC022492975D1C700A69637 /* RehearsalData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC022472975D1C700A69637 /* RehearsalData.h */; }; + 3DC0224A2975D86B00A69637 /* RehearsalData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022472975D1C700A69637 /* RehearsalData.h */; }; + 3DC0224B2975D89E00A69637 /* RehearsalData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DC022472975D1C700A69637 /* RehearsalData.h */; }; 9CD50C25238A323100ED7DD8 /* ApiCommon.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3863225C0DB800814240 /* ApiCommon.h */; }; 9CD50C26238A323100ED7DD8 /* ApiEquality.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3856225C0DB600814240 /* ApiEquality.h */; }; 9CD50C27238A323100ED7DD8 /* AppearanceData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29DC3841225C0DB400814240 /* AppearanceData.h */; }; @@ -3527,6 +3535,8 @@ 9CD50CCA238A3D2900ED7DD8 /* pugixml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9CD50C8B238A3CFA00ED7DD8 /* pugixml.cpp */; }; 9CD50CCB238A3D2900ED7DD8 /* XFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9CD50C8F238A3CFA00ED7DD8 /* XFactory.cpp */; }; 9CD50CCC238A3D2900ED7DD8 /* PugiDoc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9CD50C92238A3CFA00ED7DD8 /* PugiDoc.cpp */; }; + F28C5CDE2912E2530057288B /* TransposeData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 297B99C1252A263B0089E958 /* TransposeData.h */; }; + F28C5CDF2912E5AD0057288B /* TransposeData.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 297B99C1252A263B0089E958 /* TransposeData.h */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -3536,32 +3546,28 @@ dstPath = mx/api; dstSubfolderSpec = 6; files = ( - 29703A0F24954A1600D0E3B3 /* DefaultsData.h in CopyFiles */, - 29703A1024954A1600D0E3B3 /* KeyComponent.h in CopyFiles */, - 29703A1124954A1600D0E3B3 /* LeftRight.h in CopyFiles */, - 29703A1224954A1600D0E3B3 /* MarginsData.h in CopyFiles */, - 29703A1324954A1600D0E3B3 /* PageData.h in CopyFiles */, - 29703A1424954A1600D0E3B3 /* PageLayoutData.h in CopyFiles */, - 29703A1524954A1600D0E3B3 /* PageMarginsData.h in CopyFiles */, - 29703A1624954A1600D0E3B3 /* SizeData.h in CopyFiles */, - 29703A1724954A1600D0E3B3 /* SystemLayoutData.h in CopyFiles */, 9CD50C25238A323100ED7DD8 /* ApiCommon.h in CopyFiles */, 9CD50C26238A323100ED7DD8 /* ApiEquality.h in CopyFiles */, 9CD50C27238A323100ED7DD8 /* AppearanceData.h in CopyFiles */, 9CD50C28238A323100ED7DD8 /* BarlineData.h in CopyFiles */, 9CD50C29238A323100ED7DD8 /* ChordData.h in CopyFiles */, 9CD50C2A238A323100ED7DD8 /* ClefData.h in CopyFiles */, + 3DC022452975110C00A69637 /* CodaData.h in CopyFiles */, 9CD50C2B238A323100ED7DD8 /* ColorData.h in CopyFiles */, 9CD50C2C238A323100ED7DD8 /* CurveData.h in CopyFiles */, + 29703A0F24954A1600D0E3B3 /* DefaultsData.h in CopyFiles */, 9CD50C2D238A323100ED7DD8 /* DirectionData.h in CopyFiles */, 9CD50C2E238A323100ED7DD8 /* DocumentManager.h in CopyFiles */, 9CD50C2F238A323100ED7DD8 /* DurationData.h in CopyFiles */, 9CD50C30238A323100ED7DD8 /* EncodingData.h in CopyFiles */, 9CD50C31238A323100ED7DD8 /* FontData.h in CopyFiles */, + 29703A1024954A1600D0E3B3 /* KeyComponent.h in CopyFiles */, 9CD50C32238A323100ED7DD8 /* KeyData.h in CopyFiles */, 9CD50C33238A323100ED7DD8 /* LayoutData.h in CopyFiles */, + 29703A1124954A1600D0E3B3 /* LeftRight.h in CopyFiles */, 9CD50C34238A323100ED7DD8 /* LineData.h in CopyFiles */, 9CD50C35238A323100ED7DD8 /* LyricData.h in CopyFiles */, + 29703A1224954A1600D0E3B3 /* MarginsData.h in CopyFiles */, 9CD50C36238A323100ED7DD8 /* MarkData.h in CopyFiles */, 9CD50C37238A323100ED7DD8 /* MeasureData.h in CopyFiles */, 9CD50C38238A323100ED7DD8 /* MeasureLocation.h in CopyFiles */, @@ -3569,19 +3575,27 @@ 9CD50C3A238A323100ED7DD8 /* NoteAttachmentData.h in CopyFiles */, 9CD50C3B238A323100ED7DD8 /* NoteData.h in CopyFiles */, 9CD50C3C238A323100ED7DD8 /* OttavaData.h in CopyFiles */, + 29703A1324954A1600D0E3B3 /* PageData.h in CopyFiles */, + 29703A1424954A1600D0E3B3 /* PageLayoutData.h in CopyFiles */, + 29703A1524954A1600D0E3B3 /* PageMarginsData.h in CopyFiles */, 9CD50C3D238A323100ED7DD8 /* PageTextData.h in CopyFiles */, 9CD50C3E238A323100ED7DD8 /* PartData.h in CopyFiles */, 9CD50C3F238A323100ED7DD8 /* PartGroupData.h in CopyFiles */, 9CD50C40238A323100ED7DD8 /* PitchData.h in CopyFiles */, 9CD50C41238A323100ED7DD8 /* PositionData.h in CopyFiles */, 9CD50C42238A323100ED7DD8 /* PrintData.h in CopyFiles */, + 3DC0224B2975D89E00A69637 /* RehearsalData.h in CopyFiles */, 9CD50C43238A323100ED7DD8 /* ScoreData.h in CopyFiles */, + 3DC0222E2974B19F00A69637 /* SegnoData.h in CopyFiles */, + 29703A1624954A1600D0E3B3 /* SizeData.h in CopyFiles */, 9CD50C44238A323100ED7DD8 /* SoundID.h in CopyFiles */, 9CD50C45238A323100ED7DD8 /* SpannerData.h in CopyFiles */, 9CD50C46238A323100ED7DD8 /* StaffData.h in CopyFiles */, 9CD50C47238A323100ED7DD8 /* SystemData.h in CopyFiles */, + 29703A1724954A1600D0E3B3 /* SystemLayoutData.h in CopyFiles */, 9CD50C48238A323100ED7DD8 /* TempoData.h in CopyFiles */, 9CD50C49238A323100ED7DD8 /* TimeSignatureData.h in CopyFiles */, + F28C5CDF2912E5AD0057288B /* TransposeData.h in CopyFiles */, 9CD50C4A238A323100ED7DD8 /* TupletData.h in CopyFiles */, 9CD50C4B238A323100ED7DD8 /* Version.h in CopyFiles */, 9CD50C4C238A323100ED7DD8 /* VoiceData.h in CopyFiles */, @@ -3611,6 +3625,7 @@ 9CD50C52238A32A000ED7DD8 /* BarlineData.h in CopyFiles */, 9CD50C53238A32A000ED7DD8 /* ChordData.h in CopyFiles */, 9CD50C54238A32A000ED7DD8 /* ClefData.h in CopyFiles */, + 3DC022462975114300A69637 /* CodaData.h in CopyFiles */, 9CD50C55238A32A000ED7DD8 /* ColorData.h in CopyFiles */, 9CD50C56238A32A000ED7DD8 /* CurveData.h in CopyFiles */, 9CD50C57238A32A000ED7DD8 /* DirectionData.h in CopyFiles */, @@ -3635,13 +3650,16 @@ 9CD50C6A238A32A100ED7DD8 /* PitchData.h in CopyFiles */, 9CD50C6B238A32A100ED7DD8 /* PositionData.h in CopyFiles */, 9CD50C6C238A32A100ED7DD8 /* PrintData.h in CopyFiles */, + 3DC0224A2975D86B00A69637 /* RehearsalData.h in CopyFiles */, 9CD50C6D238A32A100ED7DD8 /* ScoreData.h in CopyFiles */, + 3DC0222F2974B2D200A69637 /* SegnoData.h in CopyFiles */, 9CD50C6E238A32A100ED7DD8 /* SoundID.h in CopyFiles */, 9CD50C6F238A32A100ED7DD8 /* SpannerData.h in CopyFiles */, 9CD50C70238A32A100ED7DD8 /* StaffData.h in CopyFiles */, 9CD50C71238A32A100ED7DD8 /* SystemData.h in CopyFiles */, 9CD50C72238A32A100ED7DD8 /* TempoData.h in CopyFiles */, 9CD50C73238A32A100ED7DD8 /* TimeSignatureData.h in CopyFiles */, + F28C5CDE2912E2530057288B /* TransposeData.h in CopyFiles */, 9CD50C74238A32A100ED7DD8 /* TupletData.h in CopyFiles */, 9CD50C75238A32A100ED7DD8 /* Version.h in CopyFiles */, 9CD50C76238A32A100ED7DD8 /* VoiceData.h in CopyFiles */, @@ -5050,6 +5068,9 @@ 29EAD7391F0EA96B00BDE782 /* ProcessingInstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessingInstruction.cpp; sourceTree = ""; }; 29EAD73A1F0EA96B00BDE782 /* ProcessingInstruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessingInstruction.h; sourceTree = ""; }; 29F9465C245E72A6007E2308 /* AttributesIterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AttributesIterface.h; sourceTree = ""; }; + 3DC022282974A13600A69637 /* SegnoData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegnoData.h; sourceTree = ""; }; + 3DC02242297510DE00A69637 /* CodaData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodaData.h; sourceTree = ""; }; + 3DC022472975D1C700A69637 /* RehearsalData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RehearsalData.h; sourceTree = ""; }; 9CD50C7F238A3CFA00ED7DD8 /* XAttributeIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XAttributeIterator.cpp; sourceTree = ""; }; 9CD50C80238A3CFA00ED7DD8 /* pugiconfig.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = pugiconfig.hpp; sourceTree = ""; }; 9CD50C81238A3CFA00ED7DD8 /* XElementIterator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XElementIterator.cpp; sourceTree = ""; }; @@ -6565,6 +6586,7 @@ 29DC3852225C0DB600814240 /* BarlineData.h */, 29DC384A225C0DB500814240 /* ChordData.h */, 29DC383D225C0DB300814240 /* ClefData.h */, + 3DC02242297510DE00A69637 /* CodaData.h */, 29DC3861225C0DB700814240 /* ColorData.h */, 29DC3859225C0DB600814240 /* CurveData.h */, 29843AD9248DE951006A8E34 /* DefaultsData.h */, @@ -6596,7 +6618,9 @@ 29DC383F225C0DB400814240 /* PitchData.h */, 29DC3850225C0DB500814240 /* PositionData.h */, 29DC3846225C0DB400814240 /* PrintData.h */, + 3DC022472975D1C700A69637 /* RehearsalData.h */, 29DC3847225C0DB400814240 /* ScoreData.h */, + 3DC022282974A13600A69637 /* SegnoData.h */, 29843AD6248D47E9006A8E34 /* SizeData.h */, 29DC3849225C0DB500814240 /* SoundID.h */, 29DC3848225C0DB400814240 /* SpannerData.h */, @@ -6754,6 +6778,7 @@ 2999A8F624CD0AEC004637BA /* XlinkTitle.h in Headers */, 2999A8FB24CD0AEC004637BA /* XmlLang.h in Headers */, 2999A90024CD0AEC004637BA /* XsID.h in Headers */, + 3DC022492975D1C700A69637 /* RehearsalData.h in Headers */, 2999A8CE24CD0AEC004637BA /* CommaSeparatedText.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6778,6 +6803,7 @@ 2999A8F524CD0AEC004637BA /* XlinkTitle.h in Headers */, 2999A8FA24CD0AEC004637BA /* XmlLang.h in Headers */, 2999A8FF24CD0AEC004637BA /* XsID.h in Headers */, + 3DC022482975D1C700A69637 /* RehearsalData.h in Headers */, 2999A8CD24CD0AEC004637BA /* CommaSeparatedText.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0;