Fixed Cuesheet bug so it doesn't load itself.
Added APL support (Vasfed).CQTexperiment
parent
7bee3acc79
commit
d6c6dea8a6
|
@ -0,0 +1,285 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 42;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
99B98A1E0CC7E1CA00C256E9 /* ApeTag.mm in Sources */ = {isa = PBXBuildFile; fileRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; };
|
||||
99B98A1F0CC7E1CD00C256E9 /* APLDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; };
|
||||
99B98A200CC7E1CE00C256E9 /* APLFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; };
|
||||
99B98A210CC7E1D100C256E9 /* APLMetadataReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */; };
|
||||
99B98A260CC7E22500C256E9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; };
|
||||
99B98CE10CC7FD0000C256E9 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49B7048680CD000E48DA /* Info.plist */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
||||
17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APLMetadataReader.h; sourceTree = "<group>"; };
|
||||
17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APLMetadataReader.m; sourceTree = "<group>"; };
|
||||
32DBCF630370AF2F00C91783 /* APL_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APL_Prefix.pch; sourceTree = "<group>"; };
|
||||
8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8E8D42350CBB0F9800135C1B /* APLDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APLDecoder.h; sourceTree = "<group>"; };
|
||||
8E8D42360CBB0F9800135C1B /* APLDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APLDecoder.m; sourceTree = "<group>"; };
|
||||
8E8D423C0CBB0FF600135C1B /* Plugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Plugin.h; path = ../../Audio/Plugin.h; sourceTree = SOURCE_ROOT; };
|
||||
99B9863E0CC7A08600C256E9 /* APLFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APLFile.h; sourceTree = "<group>"; };
|
||||
99B9863F0CC7A08600C256E9 /* APLFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APLFile.m; sourceTree = "<group>"; };
|
||||
99B9865E0CC7A20800C256E9 /* ApeTag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApeTag.h; sourceTree = "<group>"; };
|
||||
99B9865F0CC7A20800C256E9 /* ApeTag.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ApeTag.mm; sourceTree = "<group>"; };
|
||||
99B989F40CC7E10400C256E9 /* APL.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = APL.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
99B989F20CC7E10400C256E9 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
99B98A260CC7E22500C256E9 /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
089C166AFE841209C02AAC07 /* CueSheet */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB77AFFE84173DC02AAC07 /* Classes */,
|
||||
32C88E010371C26100C91783 /* Other Sources */,
|
||||
089C167CFE841241C02AAC07 /* Resources */,
|
||||
089C1671FE841209C02AAC07 /* Frameworks and Libraries */,
|
||||
19C28FB8FE9D52D311CA2CBB /* Products */,
|
||||
);
|
||||
name = CueSheet;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */,
|
||||
1058C7AEFEA557BF11CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
name = "Frameworks and Libraries";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
089C167CFE841241C02AAC07 /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D5B49B7048680CD000E48DA /* Info.plist */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
08FB77AFFE84173DC02AAC07 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8E8D423C0CBB0FF600135C1B /* Plugin.h */,
|
||||
8E8D42350CBB0F9800135C1B /* APLDecoder.h */,
|
||||
8E8D42360CBB0F9800135C1B /* APLDecoder.m */,
|
||||
17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */,
|
||||
17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */,
|
||||
99B9863E0CC7A08600C256E9 /* APLFile.h */,
|
||||
99B9863F0CC7A08600C256E9 /* APLFile.m */,
|
||||
99B9865E0CC7A20800C256E9 /* ApeTag.h */,
|
||||
99B9865F0CC7A20800C256E9 /* ApeTag.mm */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
089C167FFE841241C02AAC07 /* AppKit.framework */,
|
||||
D2F7E65807B2D6F200F64583 /* CoreData.framework */,
|
||||
089C1672FE841209C02AAC07 /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FB8FE9D52D311CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
99B989F40CC7E10400C256E9 /* APL.bundle */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
32C88E010371C26100C91783 /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32DBCF630370AF2F00C91783 /* APL_Prefix.pch */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
99B989F30CC7E10400C256E9 /* APL Plugin */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 99B989F70CC7E10500C256E9 /* Build configuration list for PBXNativeTarget "APL Plugin" */;
|
||||
buildPhases = (
|
||||
99B989F00CC7E10400C256E9 /* Resources */,
|
||||
99B989F10CC7E10400C256E9 /* Sources */,
|
||||
99B989F20CC7E10400C256E9 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "APL Plugin";
|
||||
productName = APL;
|
||||
productReference = 99B989F40CC7E10400C256E9 /* APL.bundle */;
|
||||
productType = "com.apple.product-type.bundle";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "APL" */;
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 089C166AFE841209C02AAC07 /* CueSheet */;
|
||||
projectDirPath = "";
|
||||
targets = (
|
||||
99B989F30CC7E10400C256E9 /* APL Plugin */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
99B989F00CC7E10400C256E9 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
99B98CE10CC7FD0000C256E9 /* Info.plist in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
99B989F10CC7E10400C256E9 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
99B98A1E0CC7E1CA00C256E9 /* ApeTag.mm in Sources */,
|
||||
99B98A1F0CC7E1CD00C256E9 /* APLDecoder.m in Sources */,
|
||||
99B98A200CC7E1CE00C256E9 /* APLFile.m in Sources */,
|
||||
99B98A210CC7E1D100C256E9 /* APLMetadataReader.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1DEB913F08733D840010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
SYMROOT = ../../build;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB914008733D840010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
SYMROOT = ../../build;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
99B989F80CC7E10500C256E9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Library/Bundles";
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Foundation,
|
||||
"-framework",
|
||||
AppKit,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = APL;
|
||||
WRAPPER_EXTENSION = bundle;
|
||||
ZERO_LINK = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
99B989F90CC7E10500C256E9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Library/Bundles";
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Foundation,
|
||||
"-framework",
|
||||
AppKit,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = APL;
|
||||
WRAPPER_EXTENSION = bundle;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "APL" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB913F08733D840010E9CD /* Debug */,
|
||||
1DEB914008733D840010E9CD /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
99B989F70CC7E10500C256E9 /* Build configuration list for PBXNativeTarget "APL Plugin" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
99B989F80CC7E10500C256E9 /* Debug */,
|
||||
99B989F90CC7E10500C256E9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,694 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeExecutable = 99B989D30CC7DEF800C256E9 /* Executable */;
|
||||
activeTarget = 99B989F30CC7E10400C256E9 /* APL */;
|
||||
addToTargets = (
|
||||
);
|
||||
breakpoints = (
|
||||
99B98C910CC7F74600C256E9 /* ApeTag.mm:151 */,
|
||||
99B98C950CC7F75900C256E9 /* ApeTag.mm:146 */,
|
||||
99B98CA30CC7F7C000C256E9 /* ApeTag.mm:236 */,
|
||||
99B98CB00CC7F8A700C256E9 /* APLMetadataReader.m:21 */,
|
||||
99B98CC20CC7F96900C256E9 /* APLFile.m:121 */,
|
||||
);
|
||||
breakpointsGroup = 99B986E60CC7B5AC00C256E9 /* XCBreakpointsBucket */;
|
||||
codeSenseManager = 99B985FC0CC79D3500C256E9 /* Code sense */;
|
||||
executables = (
|
||||
99B989D30CC7DEF800C256E9 /* Executable */,
|
||||
);
|
||||
perUserDictionary = {
|
||||
PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
22,
|
||||
300,
|
||||
400,
|
||||
);
|
||||
PBXFileTableDataSourceColumnsKey = (
|
||||
PBXExecutablesDataSource_ActiveFlagID,
|
||||
PBXExecutablesDataSource_NameID,
|
||||
PBXExecutablesDataSource_CommentsID,
|
||||
);
|
||||
};
|
||||
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
20,
|
||||
850,
|
||||
20,
|
||||
48,
|
||||
43,
|
||||
43,
|
||||
20,
|
||||
);
|
||||
PBXFileTableDataSourceColumnsKey = (
|
||||
PBXFileDataSource_FiletypeID,
|
||||
PBXFileDataSource_Filename_ColumnID,
|
||||
PBXFileDataSource_Built_ColumnID,
|
||||
PBXFileDataSource_ObjectSize_ColumnID,
|
||||
PBXFileDataSource_Errors_ColumnID,
|
||||
PBXFileDataSource_Warnings_ColumnID,
|
||||
PBXFileDataSource_Target_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
20,
|
||||
200,
|
||||
670,
|
||||
20,
|
||||
48,
|
||||
43,
|
||||
43,
|
||||
);
|
||||
PBXFileTableDataSourceColumnsKey = (
|
||||
PBXFileDataSource_FiletypeID,
|
||||
PBXFileDataSource_Filename_ColumnID,
|
||||
PBXTargetDataSource_PrimaryAttribute,
|
||||
PBXFileDataSource_Built_ColumnID,
|
||||
PBXFileDataSource_ObjectSize_ColumnID,
|
||||
PBXFileDataSource_Errors_ColumnID,
|
||||
PBXFileDataSource_Warnings_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 214436110;
|
||||
PBXWorkspaceStateSaveDate = 214436110;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
99B9860D0CC79E9F00C256E9 /* PBXTextBookmark */ = 99B9860D0CC79E9F00C256E9 /* PBXTextBookmark */;
|
||||
99B9860E0CC79E9F00C256E9 /* PBXTextBookmark */ = 99B9860E0CC79E9F00C256E9 /* PBXTextBookmark */;
|
||||
99B986110CC79E9F00C256E9 /* PBXTextBookmark */ = 99B986110CC79E9F00C256E9 /* PBXTextBookmark */;
|
||||
99B986120CC79E9F00C256E9 /* PBXTextBookmark */ = 99B986120CC79E9F00C256E9 /* PBXTextBookmark */;
|
||||
99B986F00CC7B63400C256E9 /* PBXTextBookmark */ = 99B986F00CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B986F10CC7B63400C256E9 /* PBXTextBookmark */ = 99B986F10CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B987080CC7B63400C256E9 /* PBXTextBookmark */ = 99B987080CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B9870B0CC7B63400C256E9 /* PBXTextBookmark */ = 99B9870B0CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B9870C0CC7B63400C256E9 /* PBXTextBookmark */ = 99B9870C0CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B9870F0CC7B63400C256E9 /* PBXTextBookmark */ = 99B9870F0CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B987280CC7B63400C256E9 /* PBXTextBookmark */ = 99B987280CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B987290CC7B63400C256E9 /* PBXTextBookmark */ = 99B987290CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B987360CC7B63400C256E9 /* PBXTextBookmark */ = 99B987360CC7B63400C256E9 /* PBXTextBookmark */;
|
||||
99B987970CC7C17700C256E9 /* PBXTextBookmark */ = 99B987970CC7C17700C256E9 /* PBXTextBookmark */;
|
||||
99B987B70CC7C17700C256E9 /* PBXTextBookmark */ = 99B987B70CC7C17700C256E9 /* PBXTextBookmark */;
|
||||
99B987B80CC7C17700C256E9 /* PBXTextBookmark */ = 99B987B80CC7C17700C256E9 /* PBXTextBookmark */;
|
||||
99B9899A0CC7DDBA00C256E9 /* PBXTextBookmark */ = 99B9899A0CC7DDBA00C256E9 /* PBXTextBookmark */;
|
||||
99B98A350CC7E23F00C256E9 /* PBXTextBookmark */ = 99B98A350CC7E23F00C256E9 /* PBXTextBookmark */;
|
||||
99B98A770CC7E66D00C256E9 /* PBXTextBookmark */ = 99B98A770CC7E66D00C256E9 /* PBXTextBookmark */;
|
||||
99B98B350CC7F55800C256E9 /* PBXTextBookmark */ = 99B98B350CC7F55800C256E9 /* PBXTextBookmark */;
|
||||
99B98CB30CC7F8B700C256E9 /* PBXTextBookmark */ = 99B98CB30CC7F8B700C256E9 /* PBXTextBookmark */;
|
||||
99B98CB50CC7F8B700C256E9 /* PBXTextBookmark */ = 99B98CB50CC7F8B700C256E9 /* PBXTextBookmark */;
|
||||
99B98CC70CC7F99E00C256E9 /* PBXTextBookmark */ = 99B98CC70CC7F99E00C256E9 /* PBXTextBookmark */;
|
||||
99B98CE90CC7FD4200C256E9 /* PBXTextBookmark */ = 99B98CE90CC7FD4200C256E9 /* PBXTextBookmark */;
|
||||
99B98CEA0CC7FD4200C256E9 /* PBXTextBookmark */ = 99B98CEA0CC7FD4200C256E9 /* PBXTextBookmark */;
|
||||
99B98CEB0CC7FD4200C256E9 /* PBXTextBookmark */ = 99B98CEB0CC7FD4200C256E9 /* PBXTextBookmark */;
|
||||
99B98CF40CC7FD7D00C256E9 /* PBXTextBookmark */ = 99B98CF40CC7FD7D00C256E9 /* PBXTextBookmark */;
|
||||
99DF138F0CC7FEA600EC5F3E /* PBXTextBookmark */ = 99DF138F0CC7FEA600EC5F3E /* PBXTextBookmark */;
|
||||
99DF13A00CC7FF0600EC5F3E /* PBXTextBookmark */ = 99DF13A00CC7FF0600EC5F3E /* PBXTextBookmark */;
|
||||
99DF14AC0CC8013600EC5F3E /* PBXTextBookmark */ = 99DF14AC0CC8013600EC5F3E /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 99B985FB0CC79D3500C256E9 /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
089C167EFE841241C02AAC07 /* English */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1048, 517}}";
|
||||
sepNavWindowFrame = "{{268, 267}, {1071, 675}}";
|
||||
};
|
||||
};
|
||||
17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1101, 517}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1101, 517}}";
|
||||
sepNavWindowFrame = "{{176, 351}, {1071, 675}}";
|
||||
};
|
||||
};
|
||||
17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1235, 445}}";
|
||||
sepNavSelRange = "{438, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1235, 445}}";
|
||||
};
|
||||
};
|
||||
32DBCF630370AF2F00C91783 /* APL_Prefix.pch */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1048, 517}}";
|
||||
};
|
||||
};
|
||||
8D5B49B7048680CD000E48DA /* Info.plist */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1048, 517}}";
|
||||
sepNavWindowFrame = "{{291, 246}, {1071, 675}}";
|
||||
};
|
||||
};
|
||||
8E8D42170CBB0F3C00135C1B /* APLPlugin.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 752}}";
|
||||
sepNavSelRange = "{10, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1048, 752}}";
|
||||
sepNavWindowFrame = "{{61, 456}, {1071, 675}}";
|
||||
};
|
||||
};
|
||||
8E8D42180CBB0F3C00135C1B /* APLPlugin.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 752}}";
|
||||
sepNavSelRange = "{249, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1048, 752}}";
|
||||
};
|
||||
};
|
||||
8E8D42350CBB0F9800135C1B /* APLDecoder.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1101, 517}}";
|
||||
sepNavSelRange = "{437, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1101, 517}}";
|
||||
};
|
||||
};
|
||||
8E8D42360CBB0F9800135C1B /* APLDecoder.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 2366}}";
|
||||
sepNavSelRange = "{580, 9}";
|
||||
sepNavVisRect = "{{0, 188}, {1048, 517}}";
|
||||
};
|
||||
};
|
||||
8E8D423C0CBB0FF600135C1B /* Plugin.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 1064}}";
|
||||
sepNavSelRange = "{857, 0}";
|
||||
sepNavVisRect = "{{0, 512}, {1048, 517}}";
|
||||
sepNavWindowFrame = "{{153, 372}, {1071, 675}}";
|
||||
};
|
||||
};
|
||||
99B985FB0CC79D3500C256E9 /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
};
|
||||
scmType = "";
|
||||
};
|
||||
99B985FC0CC79D3500C256E9 /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
99B9860D0CC79E9F00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42170CBB0F3C00135C1B /* APLPlugin.h */;
|
||||
name = "CueSheetPlugin.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 121;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B9860E0CC79E9F00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42180CBB0F3C00135C1B /* APLPlugin.m */;
|
||||
name = "CueSheetPlugin.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 316;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B986110CC79E9F00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */;
|
||||
name = "CueSheetDecoder.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 650;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B986120CC79E9F00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */;
|
||||
name = "CueSheetDecoder.m: 15";
|
||||
rLen = 0;
|
||||
rLoc = 219;
|
||||
rType = 0;
|
||||
vrLen = 809;
|
||||
vrLoc = 758;
|
||||
};
|
||||
99B9863E0CC7A08600C256E9 /* APLFile.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}";
|
||||
sepNavSelRange = "{270, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1048, 517}}";
|
||||
};
|
||||
};
|
||||
99B9863F0CC7A08600C256E9 /* APLFile.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1190, 1890}}";
|
||||
sepNavSelRange = "{4298, 0}";
|
||||
sepNavVisRect = "{{0, 1336}, {1048, 517}}";
|
||||
sepNavWindowFrame = "{{524, 415}, {1071, 675}}";
|
||||
};
|
||||
};
|
||||
99B9865E0CC7A20800C256E9 /* ApeTag.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 770}}";
|
||||
sepNavSelRange = "{279, 0}";
|
||||
sepNavVisRect = "{{0, 253}, {1048, 517}}";
|
||||
};
|
||||
};
|
||||
99B9865F0CC7A20800C256E9 /* ApeTag.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1190, 3458}}";
|
||||
sepNavSelRange = "{9505, 0}";
|
||||
sepNavVisRect = "{{0, 2937}, {1048, 517}}";
|
||||
sepNavWindowFrame = "{{139, 321}, {1071, 675}}";
|
||||
};
|
||||
};
|
||||
99B986E60CC7B5AC00C256E9 /* XCBreakpointsBucket */ = {
|
||||
isa = XCBreakpointsBucket;
|
||||
name = "Project Breakpoints";
|
||||
objects = (
|
||||
99B98C910CC7F74600C256E9 /* ApeTag.mm:151 */,
|
||||
99B98C950CC7F75900C256E9 /* ApeTag.mm:146 */,
|
||||
99B98CA30CC7F7C000C256E9 /* ApeTag.mm:236 */,
|
||||
99B98CB00CC7F8A700C256E9 /* APLMetadataReader.m:21 */,
|
||||
99B98CC20CC7F96900C256E9 /* APLFile.m:121 */,
|
||||
);
|
||||
};
|
||||
99B986EC0CC7B63400C256E9 /* APETag.h */ = {
|
||||
isa = PBXFileReference;
|
||||
lastKnownFileType = sourcecode.c.h;
|
||||
name = APETag.h;
|
||||
path = "/Users/vasfed/cog_src/cog_new/Frameworks/MAC/mac-src/src/MACLib/APETag.h";
|
||||
sourceTree = "<absolute>";
|
||||
};
|
||||
99B986F00CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */;
|
||||
name = "APLMetadataReader.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 270;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B986F10CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */;
|
||||
name = "APLDecoder.h: trackEnd";
|
||||
rLen = 0;
|
||||
rLoc = 437;
|
||||
rType = 0;
|
||||
vrLen = 537;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B987080CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */;
|
||||
name = "APLFile.h: 15";
|
||||
rLen = 0;
|
||||
rLoc = 270;
|
||||
rType = 0;
|
||||
vrLen = 254;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B9870B0CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: 11";
|
||||
rLen = 0;
|
||||
rLoc = 251;
|
||||
rType = 0;
|
||||
vrLen = 228;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B9870C0CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9870D0CC7B63400C256E9 /* APETag.h */;
|
||||
name = "(null): 89";
|
||||
rLen = 0;
|
||||
rLoc = 4316;
|
||||
rType = 0;
|
||||
vrLen = 2481;
|
||||
vrLoc = 3650;
|
||||
};
|
||||
99B9870D0CC7B63400C256E9 /* APETag.h */ = {
|
||||
isa = PBXFileReference;
|
||||
lastKnownFileType = sourcecode.c.h;
|
||||
name = APETag.h;
|
||||
path = "/Users/vasfed/cog_src/cog_new/Frameworks/MAC/mac-src/src/MACLib/APETag.h";
|
||||
sourceTree = "<absolute>";
|
||||
};
|
||||
99B9870F0CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = "ApeTag.mm: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 186;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B987280CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */;
|
||||
name = "APLMetadataReader.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 275;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B987290CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */;
|
||||
name = "APLMetadataReader.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 505;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B987360CC7B63400C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
name = "APLFile.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 188;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B987970CC7C17700C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B986EC0CC7B63400C256E9 /* APETag.h */;
|
||||
name = "APETag.h: 89";
|
||||
rLen = 0;
|
||||
rLoc = 4316;
|
||||
rType = 0;
|
||||
vrLen = 1679;
|
||||
vrLoc = 3372;
|
||||
};
|
||||
99B987B70CC7C17700C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 089C167EFE841241C02AAC07 /* English */;
|
||||
name = "English: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 90;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B987B80CC7C17700C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8D5B49B7048680CD000E48DA /* Info.plist */;
|
||||
name = "Info.plist: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 783;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B9899A0CC7DDBA00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42170CBB0F3C00135C1B /* APLPlugin.h */;
|
||||
name = "APLPlugin.h: 2";
|
||||
rLen = 0;
|
||||
rLoc = 10;
|
||||
rType = 0;
|
||||
vrLen = 121;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B989D30CC7DEF800C256E9 /* Executable */ = {
|
||||
isa = PBXExecutable;
|
||||
activeArgIndex = 2147483647;
|
||||
activeArgIndices = (
|
||||
);
|
||||
argumentStrings = (
|
||||
);
|
||||
autoAttachOnCrash = 1;
|
||||
configStateDict = {
|
||||
"PBXLSLaunchAction-0" = {
|
||||
PBXLSLaunchAction = 0;
|
||||
PBXLSLaunchStartAction = 1;
|
||||
PBXLSLaunchStdioStyle = 2;
|
||||
PBXLSLaunchStyle = 0;
|
||||
class = PBXLSRunLaunchConfig;
|
||||
displayName = "Executable Runner";
|
||||
identifier = com.apple.Xcode.launch.runConfig;
|
||||
remoteHostInfo = "";
|
||||
startActionInfo = "";
|
||||
};
|
||||
};
|
||||
customDataFormattersEnabled = 1;
|
||||
debuggerPlugin = GDBDebugging;
|
||||
disassemblyDisplayState = 0;
|
||||
dylibVariantSuffix = _debug;
|
||||
enableDebugStr = 1;
|
||||
environmentEntries = (
|
||||
);
|
||||
executableSystemSymbolLevel = 0;
|
||||
executableUserSymbolLevel = 0;
|
||||
launchableReference = 99B989D40CC7DEF800C256E9 /* Cog.app */;
|
||||
libgmallocEnabled = 0;
|
||||
name = Executable;
|
||||
savedGlobals = {
|
||||
};
|
||||
sourceDirectories = (
|
||||
);
|
||||
variableFormatDictionary = {
|
||||
};
|
||||
};
|
||||
99B989D40CC7DEF800C256E9 /* Cog.app */ = {
|
||||
isa = PBXFileReference;
|
||||
explicitFileType = wrapper.application;
|
||||
name = Cog.app;
|
||||
path = /Users/vasfed/cog_src/cog_new/build/Debug/Cog.app;
|
||||
sourceTree = "<absolute>";
|
||||
};
|
||||
99B989F30CC7E10400C256E9 /* APL */ = {
|
||||
activeExec = 0;
|
||||
};
|
||||
99B989F50CC7E10400C256E9 /* APL-Info.plist */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1048, 517}}";
|
||||
sepNavWindowFrame = "{{383, 162}, {1071, 675}}";
|
||||
};
|
||||
};
|
||||
99B98A350CC7E23F00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42180CBB0F3C00135C1B /* APLPlugin.m */;
|
||||
name = "APLPlugin.m: 16";
|
||||
rLen = 0;
|
||||
rLoc = 249;
|
||||
rType = 0;
|
||||
vrLen = 316;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B98A770CC7E66D00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B989F50CC7E10400C256E9 /* APL-Info.plist */;
|
||||
name = "APL-Info.plist: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 620;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B98B350CC7F55800C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */;
|
||||
name = "APLFile.h: file";
|
||||
rLen = 0;
|
||||
rLoc = 270;
|
||||
rType = 0;
|
||||
vrLen = 481;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B98C910CC7F74600C256E9 /* ApeTag.mm:151 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
breakpointStyle = 0;
|
||||
continueAfterActions = 0;
|
||||
delayBeforeContinue = 0;
|
||||
fileReference = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
functionName = "-convertToCogTag";
|
||||
hitCount = 1;
|
||||
lineNumber = 151;
|
||||
location = APL;
|
||||
modificationTime = 214432023.266375;
|
||||
state = 1;
|
||||
};
|
||||
99B98C950CC7F75900C256E9 /* ApeTag.mm:146 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
breakpointStyle = 0;
|
||||
continueAfterActions = 0;
|
||||
delayBeforeContinue = 0;
|
||||
fileReference = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
functionName = "-convertToCogTag";
|
||||
hitCount = 1;
|
||||
lineNumber = 146;
|
||||
location = APL;
|
||||
modificationTime = 214432023.298172;
|
||||
state = 1;
|
||||
};
|
||||
99B98CA30CC7F7C000C256E9 /* ApeTag.mm:236 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
breakpointStyle = 0;
|
||||
continueAfterActions = 0;
|
||||
delayBeforeContinue = 0;
|
||||
fileReference = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
functionName = "-read:";
|
||||
hitCount = 1;
|
||||
lineNumber = 236;
|
||||
location = APL;
|
||||
modificationTime = 214432020.694053;
|
||||
state = 2;
|
||||
};
|
||||
99B98CB00CC7F8A700C256E9 /* APLMetadataReader.m:21 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
breakpointStyle = 0;
|
||||
continueAfterActions = 0;
|
||||
delayBeforeContinue = 0;
|
||||
fileReference = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */;
|
||||
functionName = "+metadataForURL:";
|
||||
hitCount = 1;
|
||||
lineNumber = 21;
|
||||
location = APL;
|
||||
modificationTime = 214432024.186878;
|
||||
state = 1;
|
||||
};
|
||||
99B98CB30CC7F8B700C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
name = "APLFile.m: 121";
|
||||
rLen = 0;
|
||||
rLoc = 4298;
|
||||
rType = 0;
|
||||
vrLen = 1169;
|
||||
vrLoc = 3316;
|
||||
};
|
||||
99B98CB50CC7F8B700C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: flags";
|
||||
rLen = 0;
|
||||
rLoc = 279;
|
||||
rType = 0;
|
||||
vrLen = 929;
|
||||
vrLoc = 323;
|
||||
};
|
||||
99B98CC20CC7F96900C256E9 /* APLFile.m:121 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
breakpointStyle = 0;
|
||||
continueAfterActions = 0;
|
||||
delayBeforeContinue = 0;
|
||||
fileReference = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
functionName = "-initWithFile:";
|
||||
hitCount = 0;
|
||||
lineNumber = 121;
|
||||
location = APL;
|
||||
modificationTime = 214432105.571593;
|
||||
state = 1;
|
||||
};
|
||||
99B98CC70CC7F99E00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */;
|
||||
name = "APLMetadataReader.m: 21";
|
||||
rLen = 0;
|
||||
rLoc = 438;
|
||||
rType = 0;
|
||||
vrLen = 503;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B98CE90CC7FD4200C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = "ApeTag.mm: 243";
|
||||
rLen = 0;
|
||||
rLoc = 9505;
|
||||
rType = 0;
|
||||
vrLen = 1505;
|
||||
vrLoc = 8010;
|
||||
};
|
||||
99B98CEA0CC7FD4200C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */;
|
||||
name = "APLDecoder.m: 109";
|
||||
rLen = 0;
|
||||
rLoc = 2741;
|
||||
rType = 0;
|
||||
vrLen = 854;
|
||||
vrLoc = 2350;
|
||||
};
|
||||
99B98CEB0CC7FD4200C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B989F50CC7E10400C256E9 /* APL-Info.plist */;
|
||||
name = "APL-Info.plist: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 620;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99B98CF40CC7FD7D00C256E9 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 089C167EFE841241C02AAC07 /* English */;
|
||||
name = "English: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 90;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99DF138F0CC7FEA600EC5F3E /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8D5B49B7048680CD000E48DA /* Info.plist */;
|
||||
name = "Info.plist: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 783;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99DF13A00CC7FF0600EC5F3E /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 32DBCF630370AF2F00C91783 /* APL_Prefix.pch */;
|
||||
name = "APL_Prefix.pch: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 148;
|
||||
vrLoc = 0;
|
||||
};
|
||||
99DF14AC0CC8013600EC5F3E /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 32DBCF630370AF2F00C91783 /* APL_Prefix.pch */;
|
||||
name = "APL_Prefix.pch: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 148;
|
||||
vrLoc = 0;
|
||||
};
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,685 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeTarget = 99B989F30CC7E10400C256E9 /* APL Plugin */;
|
||||
codeSenseManager = 171D08F70CCA5E71009FF3AB /* Code sense */;
|
||||
perUserDictionary = {
|
||||
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
20,
|
||||
1000,
|
||||
20,
|
||||
48,
|
||||
43,
|
||||
43,
|
||||
20,
|
||||
);
|
||||
PBXFileTableDataSourceColumnsKey = (
|
||||
PBXFileDataSource_FiletypeID,
|
||||
PBXFileDataSource_Filename_ColumnID,
|
||||
PBXFileDataSource_Built_ColumnID,
|
||||
PBXFileDataSource_ObjectSize_ColumnID,
|
||||
PBXFileDataSource_Errors_ColumnID,
|
||||
PBXFileDataSource_Warnings_ColumnID,
|
||||
PBXFileDataSource_Target_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
20,
|
||||
200,
|
||||
1000,
|
||||
20,
|
||||
48.1626,
|
||||
43,
|
||||
43,
|
||||
);
|
||||
PBXFileTableDataSourceColumnsKey = (
|
||||
PBXFileDataSource_FiletypeID,
|
||||
PBXFileDataSource_Filename_ColumnID,
|
||||
PBXTargetDataSource_PrimaryAttribute,
|
||||
PBXFileDataSource_Built_ColumnID,
|
||||
PBXFileDataSource_ObjectSize_ColumnID,
|
||||
PBXFileDataSource_Errors_ColumnID,
|
||||
PBXFileDataSource_Warnings_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 214588999;
|
||||
PBXWorkspaceStateSaveDate = 214588999;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
171D095A0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095A0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D095B0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095B0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D095C0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095C0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D095D0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095D0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D095E0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095E0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D095F0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095F0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09600CCA608C009FF3AB /* PBXTextBookmark */ = 171D09600CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09610CCA608C009FF3AB /* PBXTextBookmark */ = 171D09610CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09620CCA608C009FF3AB /* PBXTextBookmark */ = 171D09620CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09630CCA608C009FF3AB /* PBXTextBookmark */ = 171D09630CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09640CCA608C009FF3AB /* PBXTextBookmark */ = 171D09640CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09650CCA608C009FF3AB /* PBXTextBookmark */ = 171D09650CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09660CCA608C009FF3AB /* PBXTextBookmark */ = 171D09660CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09670CCA608C009FF3AB /* PBXTextBookmark */ = 171D09670CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09680CCA608C009FF3AB /* PBXTextBookmark */ = 171D09680CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09690CCA608C009FF3AB /* PBXTextBookmark */ = 171D09690CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D096A0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096A0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D096B0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096B0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D096C0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096C0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D096D0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096D0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D096E0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096E0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D096F0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096F0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09700CCA608C009FF3AB /* PBXTextBookmark */ = 171D09700CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09710CCA608C009FF3AB /* PBXTextBookmark */ = 171D09710CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09720CCA608C009FF3AB /* PBXTextBookmark */ = 171D09720CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09730CCA608C009FF3AB /* PBXTextBookmark */ = 171D09730CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09740CCA608C009FF3AB /* PBXTextBookmark */ = 171D09740CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09750CCA608C009FF3AB /* PBXTextBookmark */ = 171D09750CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09760CCA608C009FF3AB /* PBXTextBookmark */ = 171D09760CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09770CCA608C009FF3AB /* PBXTextBookmark */ = 171D09770CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09780CCA608C009FF3AB /* PBXTextBookmark */ = 171D09780CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09790CCA608C009FF3AB /* PBXTextBookmark */ = 171D09790CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D097A0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097A0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D097B0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097B0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D097C0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097C0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D097D0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097D0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D097E0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097E0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D097F0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097F0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09800CCA608C009FF3AB /* PBXTextBookmark */ = 171D09800CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09810CCA608C009FF3AB /* PBXTextBookmark */ = 171D09810CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09820CCA608C009FF3AB /* PBXTextBookmark */ = 171D09820CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09830CCA608C009FF3AB /* PBXTextBookmark */ = 171D09830CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09840CCA608C009FF3AB /* PBXTextBookmark */ = 171D09840CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09850CCA608C009FF3AB /* PBXTextBookmark */ = 171D09850CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09860CCA608C009FF3AB /* PBXTextBookmark */ = 171D09860CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09870CCA608C009FF3AB /* PBXTextBookmark */ = 171D09870CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09880CCA608C009FF3AB /* PBXTextBookmark */ = 171D09880CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D09890CCA608C009FF3AB /* PBXTextBookmark */ = 171D09890CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
171D098A0CCA608C009FF3AB /* PBXTextBookmark */ = 171D098A0CCA608C009FF3AB /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 171D08F60CCA5E71009FF3AB /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
171D08F60CCA5E71009FF3AB /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
};
|
||||
scmType = "";
|
||||
};
|
||||
171D08F70CCA5E71009FF3AB /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
171D095A0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */;
|
||||
name = "APLFile.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 482;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D095B0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */;
|
||||
name = "APLMetadataReader.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 505;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D095C0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */;
|
||||
name = "APLMetadataReader.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 271;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D095D0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */;
|
||||
name = "APLDecoder.h: 13";
|
||||
rLen = 0;
|
||||
rLoc = 179;
|
||||
rType = 0;
|
||||
vrLen = 541;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D095E0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */;
|
||||
name = "APLDecoder.m: 76";
|
||||
rLen = 0;
|
||||
rLoc = 2147;
|
||||
rType = 0;
|
||||
vrLen = 1611;
|
||||
vrLoc = 829;
|
||||
};
|
||||
171D095F0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = pack;
|
||||
rLen = 4;
|
||||
rLoc = 7379;
|
||||
rType = 0;
|
||||
vrLen = 2965;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09600CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: 24";
|
||||
rLen = 0;
|
||||
rLoc = 448;
|
||||
rType = 0;
|
||||
vrLen = 1233;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09610CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
name = "APLFile.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1946;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09620CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D423C0CBB0FF600135C1B /* Plugin.h */;
|
||||
name = "Plugin.h: 17";
|
||||
rLen = 0;
|
||||
rLoc = 384;
|
||||
rType = 0;
|
||||
vrLen = 1477;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09630CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8D5B49B7048680CD000E48DA /* Info.plist */;
|
||||
name = "Info.plist: 24";
|
||||
rLen = 0;
|
||||
rLoc = 747;
|
||||
rType = 0;
|
||||
vrLen = 774;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09640CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D423C0CBB0FF600135C1B /* Plugin.h */;
|
||||
name = "Plugin.h: 24";
|
||||
rLen = 0;
|
||||
rLoc = 525;
|
||||
rType = 0;
|
||||
vrLen = 1477;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09650CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8D5B49B7048680CD000E48DA /* Info.plist */;
|
||||
name = "Info.plist: 24";
|
||||
rLen = 0;
|
||||
rLoc = 747;
|
||||
rType = 0;
|
||||
vrLen = 774;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09660CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */;
|
||||
name = "APLMetadataReader.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 270;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09670CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */;
|
||||
name = "APLDecoder.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1749;
|
||||
vrLoc = 487;
|
||||
};
|
||||
171D09680CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D423C0CBB0FF600135C1B /* Plugin.h */;
|
||||
name = "Plugin.h: 24";
|
||||
rLen = 0;
|
||||
rLoc = 525;
|
||||
rType = 0;
|
||||
vrLen = 1477;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09690CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */;
|
||||
name = "APLDecoder.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 537;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D096A0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */;
|
||||
name = "APLDecoder.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1749;
|
||||
vrLoc = 487;
|
||||
};
|
||||
171D096B0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */;
|
||||
name = "APLFile.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 481;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D096C0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
name = "APLFile.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1943;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D096D0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */;
|
||||
name = "APLMetadataReader.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 270;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D096E0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */;
|
||||
name = "APLDecoder.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 537;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D096F0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */;
|
||||
name = "APLMetadataReader.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 503;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09700CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */;
|
||||
name = "APLDecoder.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1749;
|
||||
vrLoc = 487;
|
||||
};
|
||||
171D09710CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */;
|
||||
name = "APLFile.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 481;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09720CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = "ApeTag.mm: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 2965;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09730CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1252;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09740CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = "ApeTag.mm: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 2965;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09750CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
name = "APLFile.m: 15";
|
||||
rLen = 0;
|
||||
rLoc = 275;
|
||||
rType = 0;
|
||||
vrLen = 1946;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09760CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = "ApeTag.mm: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1628;
|
||||
vrLoc = 3725;
|
||||
};
|
||||
171D09770CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
name = "APLFile.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1946;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09780CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1234;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09790CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */;
|
||||
name = "APLFile.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 482;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D097A0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */;
|
||||
name = "APLMetadataReader.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 505;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D097B0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */;
|
||||
name = "APLMetadataReader.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 271;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D097C0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */;
|
||||
name = "APLDecoder.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1749;
|
||||
vrLoc = 487;
|
||||
};
|
||||
171D097D0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */;
|
||||
name = "APLDecoder.h: 13";
|
||||
rLen = 0;
|
||||
rLoc = 179;
|
||||
rType = 0;
|
||||
vrLen = 541;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D097E0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */;
|
||||
name = "APLDecoder.m: 76";
|
||||
rLen = 0;
|
||||
rLoc = 2147;
|
||||
rType = 0;
|
||||
vrLen = 1611;
|
||||
vrLoc = 829;
|
||||
};
|
||||
171D097F0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = "ApeTag.mm: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1628;
|
||||
vrLoc = 3725;
|
||||
};
|
||||
171D09800CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1234;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09810CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = "ApeTag.mm: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1628;
|
||||
vrLoc = 3725;
|
||||
};
|
||||
171D09820CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
name = "APLFile.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1946;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09830CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: 24";
|
||||
rLen = 0;
|
||||
rLoc = 448;
|
||||
rType = 0;
|
||||
vrLen = 1233;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09840CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = "ApeTag.mm: createTag:flags:data:";
|
||||
rLen = 0;
|
||||
rLoc = 3779;
|
||||
rType = 0;
|
||||
vrLen = 2149;
|
||||
vrLoc = 2801;
|
||||
};
|
||||
171D09850CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: 24";
|
||||
rLen = 0;
|
||||
rLoc = 448;
|
||||
rType = 0;
|
||||
vrLen = 1233;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09860CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */;
|
||||
name = pack;
|
||||
rLen = 4;
|
||||
rLoc = 7379;
|
||||
rType = 0;
|
||||
vrLen = 2965;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09870CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */;
|
||||
name = "ApeTag.h: 24";
|
||||
rLen = 0;
|
||||
rLoc = 448;
|
||||
rType = 0;
|
||||
vrLen = 1233;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09880CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */;
|
||||
name = "APLFile.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 1946;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D09890CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8E8D423C0CBB0FF600135C1B /* Plugin.h */;
|
||||
name = "Plugin.h: 17";
|
||||
rLen = 0;
|
||||
rLoc = 384;
|
||||
rType = 0;
|
||||
vrLen = 1477;
|
||||
vrLoc = 0;
|
||||
};
|
||||
171D098A0CCA608C009FF3AB /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8D5B49B7048680CD000E48DA /* Info.plist */;
|
||||
name = "Info.plist: 15";
|
||||
rLen = 0;
|
||||
rLoc = 528;
|
||||
rType = 0;
|
||||
vrLen = 774;
|
||||
vrLoc = 0;
|
||||
};
|
||||
17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
8D5B49B7048680CD000E48DA /* Info.plist */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}";
|
||||
sepNavSelRange = "{528, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
8E8D42350CBB0F9800135C1B /* APLDecoder.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}";
|
||||
sepNavSelRange = "{179, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
8E8D42360CBB0F9800135C1B /* APLDecoder.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 2366}}";
|
||||
sepNavSelRange = "{2147, 0}";
|
||||
sepNavVisRect = "{{0, 581}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
8E8D423C0CBB0FF600135C1B /* Plugin.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 1008}}";
|
||||
sepNavSelRange = "{525, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
99B9863E0CC7A08600C256E9 /* APLFile.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
99B9863F0CC7A08600C256E9 /* APLFile.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 1890}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
99B9865E0CC7A20800C256E9 /* ApeTag.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}";
|
||||
sepNavSelRange = "{448, 0}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
99B9865F0CC7A20800C256E9 /* ApeTag.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1431, 3458}}";
|
||||
sepNavSelRange = "{7379, 4}";
|
||||
sepNavVisRect = "{{0, 0}, {1431, 815}}";
|
||||
};
|
||||
};
|
||||
99B989F30CC7E10400C256E9 /* APL Plugin */ = {
|
||||
activeExec = 0;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
//
|
||||
// APLDecoder.h
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
#import "Plugin.h"
|
||||
|
||||
@class APLFile;
|
||||
|
||||
@interface APLDecoder : NSObject <CogDecoder> {
|
||||
id<CogSource> source;
|
||||
id<CogDecoder> decoder;
|
||||
|
||||
int bytesPerFrame; //Number of bytes per frame, ie channels * (bitsPerSample/8)
|
||||
int bytesPerSecond; //Number of bytes per second, ie bytesPerFrame * sampleRate
|
||||
int bytePosition; //Current position in bytes.
|
||||
|
||||
|
||||
|
||||
double trackStart;
|
||||
double trackEnd; //miliseconds until end of track.
|
||||
double trackLength; //track len in miliseconds
|
||||
|
||||
APLFile *apl;
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,168 @@
|
|||
//
|
||||
// CueSheetDecoder.m
|
||||
// CueSheet
|
||||
//
|
||||
// Created by Zaphod Beeblebrox on 10/8/07.
|
||||
// Copyright 2007 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "APLDecoder.h"
|
||||
#import "APLFile.h"
|
||||
|
||||
@implementation APLDecoder
|
||||
|
||||
+ (NSArray *)fileTypes {
|
||||
return [NSArray arrayWithObject:@"apl"];
|
||||
}
|
||||
|
||||
+ (NSArray *)mimeTypes {
|
||||
return [NSArray arrayWithObjects:@"application/x-apl", nil];
|
||||
}
|
||||
|
||||
- (NSDictionary *)properties {
|
||||
NSMutableDictionary *properties = [[decoder properties] mutableCopy];
|
||||
|
||||
//Need to alter length
|
||||
[properties setObject:[NSNumber numberWithDouble:trackLength] forKey:@"length"];
|
||||
return [properties autorelease];
|
||||
}
|
||||
|
||||
- (BOOL)open:(id<CogSource>)s
|
||||
{
|
||||
NSLog(@"Loading apl...");
|
||||
if (![[s url] isFileURL])
|
||||
return NO;
|
||||
|
||||
NSURL *url = [s url];
|
||||
[s close];
|
||||
|
||||
apl = [APLFile createWithFile:[url path]];
|
||||
[apl retain];
|
||||
|
||||
//Kind of a hackish way of accessing outside classes.
|
||||
source = [NSClassFromString(@"AudioSource") audioSourceForURL:[apl file]];
|
||||
[source retain];
|
||||
|
||||
if (![source open:[apl file]]) {
|
||||
NSLog(@"Could not open source for file '%@' referenced in apl", [apl file]);
|
||||
return NO;
|
||||
}
|
||||
decoder = [NSClassFromString(@"AudioDecoder") audioDecoderForSource:source];
|
||||
[decoder retain];
|
||||
|
||||
if (![decoder open:source]) {
|
||||
NSLog(@"Could not open decoder for source for apl");
|
||||
return NO;
|
||||
}
|
||||
|
||||
NSDictionary *properties = [decoder properties];
|
||||
int bitsPerSample = [[properties objectForKey:@"bitsPerSample"] intValue];
|
||||
int channels = [[properties objectForKey:@"channels"] intValue];
|
||||
float sampleRate = [[properties objectForKey:@"sampleRate"] floatValue];
|
||||
|
||||
|
||||
bytesPerFrame = (bitsPerSample/8) * channels;
|
||||
bytesPerSecond = (int)(bytesPerFrame * sampleRate);
|
||||
|
||||
if ([apl endBlock] > [apl startBlock]) trackEnd = ([apl endBlock] / sampleRate) * 1000.0;
|
||||
else trackEnd = [[properties objectForKey:@"length"] doubleValue];
|
||||
trackStart = ([apl startBlock]/sampleRate) * 1000.0;
|
||||
trackLength = trackEnd - trackStart;
|
||||
|
||||
[decoder seekToTime: trackStart];
|
||||
|
||||
//Note: Should register for observations of the decoder, but laziness consumes all.
|
||||
[self willChangeValueForKey:@"properties"];
|
||||
[self didChangeValueForKey:@"properties"];
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)close {
|
||||
if (decoder) {
|
||||
[decoder close];
|
||||
[decoder release];
|
||||
decoder = nil;
|
||||
}
|
||||
|
||||
if (source) {
|
||||
[source release];
|
||||
source = nil;
|
||||
}
|
||||
if (apl) {
|
||||
[apl release];
|
||||
apl = nil;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
- (BOOL)setTrack_1111:(NSURL *)url
|
||||
{
|
||||
// see if next apl is next track...
|
||||
if ([[url fragment] intValue] == [[track track] intValue] + 1) {
|
||||
NSArray *tracks = [cuesheet tracks];
|
||||
|
||||
int i;
|
||||
for (i = 0; i < [tracks count]; i++) {
|
||||
if ([[[tracks objectAtIndex:i] track] isEqualToString:[url fragment]]){
|
||||
[track release];
|
||||
track = [tracks objectAtIndex:i];
|
||||
[track retain];
|
||||
|
||||
CueSheetTrack *nextTrack = nil;
|
||||
if (i + 1 < [tracks count]) {
|
||||
nextTrack = [tracks objectAtIndex:i + 1];
|
||||
}
|
||||
|
||||
if (nextTrack && [[[nextTrack url] absoluteString] isEqualToString:[[track url] absoluteString]]) {
|
||||
trackEnd = [nextTrack time];
|
||||
}
|
||||
else {
|
||||
trackEnd = [[[decoder properties] objectForKey:@"length"] doubleValue]/1000.0;
|
||||
}
|
||||
|
||||
NSLog(@"CHANGING TRACK!");
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
#endif
|
||||
|
||||
- (double)seekToTime:(double)time //milliseconds
|
||||
{
|
||||
if (time > trackLength || time < 0) {
|
||||
//need a better way of returning fail.
|
||||
return -1.0;
|
||||
}
|
||||
|
||||
time += trackStart;
|
||||
|
||||
bytePosition = (time/1000.0) * bytesPerSecond;
|
||||
|
||||
NSLog(@"Before: %li", bytePosition);
|
||||
bytePosition -= bytePosition % bytesPerFrame;
|
||||
NSLog(@"After: %li", bytePosition);
|
||||
|
||||
return [decoder seekToTime:time];
|
||||
}
|
||||
|
||||
- (int)fillBuffer:(void *)buf ofSize:(UInt32)size
|
||||
{
|
||||
long trackByteEnd = (trackEnd/1000.0) * bytesPerSecond;
|
||||
trackByteEnd -= trackByteEnd % (bytesPerFrame);
|
||||
|
||||
if (bytePosition + size > trackByteEnd)
|
||||
size = trackByteEnd - bytePosition;
|
||||
|
||||
if (!size)
|
||||
return 0;
|
||||
|
||||
int n = [decoder fillBuffer:buf ofSize:size];
|
||||
bytePosition += n;
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
@end
|
|
@ -0,0 +1,28 @@
|
|||
//
|
||||
// APLFile.h
|
||||
// APL
|
||||
//
|
||||
// Created by ??????? ???????? on 10/18/07.
|
||||
// Copyright 2007 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@class ApeTag;
|
||||
|
||||
@interface APLFile : NSObject {
|
||||
long startBlock;
|
||||
long endBlock;
|
||||
ApeTag* tag;
|
||||
NSURL* file;
|
||||
}
|
||||
+createWithFile:(NSString*)f;
|
||||
-initWithFile:(NSString*)f;
|
||||
|
||||
-(long)startBlock; // always return 0 or greater!
|
||||
-(long)endBlock;
|
||||
-(ApeTag*) tag;
|
||||
-(NSURL*) file;
|
||||
|
||||
//writing support to be added in far future
|
||||
@end
|
|
@ -0,0 +1,134 @@
|
|||
//
|
||||
// APLFile.m
|
||||
// APL
|
||||
//
|
||||
// Created by ??????? ???????? on 10/18/07.
|
||||
// Copyright 2007 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "APLFile.h"
|
||||
#import "ApeTag.h"
|
||||
|
||||
@implementation APLFile
|
||||
+createWithFile:(NSString*)f { return [[APLFile alloc] initWithFile:f]; }
|
||||
|
||||
|
||||
-(NSString*) readline:(NSFileHandle*)f { // rather hack-style substitution to fgets...
|
||||
NSMutableData* d = [NSMutableData dataWithCapacity:100]; //it will grow, here should be most expected value (may gain few nanosecond from it =) )
|
||||
while(true) {
|
||||
NSData* byte = [f readDataOfLength:1];
|
||||
if (!byte)
|
||||
{
|
||||
[f seekToFileOffset:([f offsetInFile]-[d length])];
|
||||
return nil;
|
||||
}
|
||||
[d appendData:byte];
|
||||
if (*((const char*)[byte bytes]) == '\n') break;
|
||||
}
|
||||
NSString* s = [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding]; //!handle encoding error (in case binary data starts not from newline, impossible on real apl, but who knows...)
|
||||
return s;
|
||||
}
|
||||
|
||||
- (NSURL *)urlForPath:(NSString *)path relativeTo:(NSString *)baseFilename
|
||||
{
|
||||
NSRange protocolRange = [path rangeOfString:@"://"];
|
||||
if (protocolRange.location != NSNotFound)
|
||||
{
|
||||
return [NSURL URLWithString:path];
|
||||
}
|
||||
|
||||
NSMutableString *unixPath = [path mutableCopy];
|
||||
|
||||
NSString *fragment = @"";
|
||||
NSRange fragmentRange = [path rangeOfString:@"#"];
|
||||
if (fragmentRange.location != NSNotFound)
|
||||
{
|
||||
fragmentRange = NSMakeRange(fragmentRange.location, [unixPath length] - fragmentRange.location);
|
||||
|
||||
fragment = [unixPath substringWithRange:fragmentRange];
|
||||
[unixPath deleteCharactersInRange:fragmentRange];
|
||||
}
|
||||
|
||||
if (![unixPath hasPrefix:@"/"]) {
|
||||
//Only relative paths would have windows backslashes.
|
||||
[unixPath replaceOccurrencesOfString:@"\\" withString:@"/" options:0 range:NSMakeRange(0, [unixPath length])];
|
||||
|
||||
NSString *basePath = [[[baseFilename stringByStandardizingPath] stringByDeletingLastPathComponent] stringByAppendingString:@"/"];
|
||||
|
||||
[unixPath insertString:basePath atIndex:0];
|
||||
}
|
||||
|
||||
//Append the fragment
|
||||
return [NSURL URLWithString:[[[NSURL fileURLWithPath:unixPath] absoluteString] stringByAppendingString: fragment]];
|
||||
}
|
||||
|
||||
-initWithFile:(NSString*)filename {
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
//startBlock must be always >= 0
|
||||
NSFileHandle* f = (NSFileHandle*)[NSFileHandle fileHandleForReadingAtPath:filename];
|
||||
if(!f){
|
||||
NSLog(@"Failed to open apl file '%@' for reading", f);
|
||||
return nil;
|
||||
}
|
||||
NSString* header = @"[Monkey's Audio Image Link File]\r\n";
|
||||
NSData* da = [f readDataOfLength:[header length]];
|
||||
if (!da) {
|
||||
NSLog(@"Cannot read header");
|
||||
return nil;
|
||||
}
|
||||
NSString* str = [[NSString alloc] initWithData:da encoding: NSASCIIStringEncoding];
|
||||
if([str compare:header options:NSCaseInsensitiveSearch]) {
|
||||
NSLog(@"APL header mismatch");
|
||||
return nil;
|
||||
}
|
||||
//now read by lines, skip empty, up to line <tagline> (or any starting with '-' - may be other tags can be present)
|
||||
NSString* line = nil;
|
||||
NSScanner *scanner = nil;
|
||||
//NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
|
||||
while(line = [self readline:f]) {
|
||||
if (![line compare:@"----- APE TAG (DO NOT TOUCH!!!) -----\r\n" options:NSCaseInsensitiveSearch]) break;
|
||||
if([line characterAtIndex:0] == '-') break;
|
||||
[scanner release];
|
||||
scanner = [[NSScanner alloc] initWithString:line];
|
||||
NSString* field = nil, *value = nil;
|
||||
if (![scanner scanUpToString:@"=" intoString:&field]) continue;
|
||||
if (![scanner scanString:@"=" intoString:nil]) continue;
|
||||
if (![scanner scanUpToString:@"\r\n" intoString:&value]) continue;
|
||||
if (![field compare:@"Image File" options:NSCaseInsensitiveSearch])
|
||||
{
|
||||
[file release];
|
||||
file = [self urlForPath:value relativeTo:filename];
|
||||
NSLog(@"APL refers to file '%@'", file);
|
||||
continue;
|
||||
}
|
||||
if (![field compare:@"Start Block" options:NSCaseInsensitiveSearch])
|
||||
{
|
||||
startBlock = [value intValue]; //!!! bugs with files over 2GB
|
||||
NSLog(@"APL start block %d (%@)", startBlock, value);
|
||||
continue;
|
||||
}
|
||||
if (![field compare:@"Finish Block" options:NSCaseInsensitiveSearch])
|
||||
{
|
||||
endBlock = [value intValue]; //!!! bugs with files over 2GB
|
||||
NSLog(@"APL start block %d (%@)", endBlock, value);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
[scanner release];
|
||||
//check here for EOF? cocoa does not have this functionality :(
|
||||
tag = [ApeTag createFromFileRead:f];
|
||||
[f closeFile];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(long)startBlock { return startBlock; }
|
||||
-(long)endBlock { return endBlock; }
|
||||
-(ApeTag*) tag { return tag; }
|
||||
-(NSURL*) file { return file; }
|
||||
|
||||
|
||||
|
||||
@end
|
|
@ -0,0 +1,17 @@
|
|||
//
|
||||
// CueSheetMetadataReader.h
|
||||
// CueSheet
|
||||
//
|
||||
// Created by Vincent Spader on 10/12/07.
|
||||
// Copyright 2007 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
#import "Plugin.h"
|
||||
|
||||
@interface APLMetadataReader : NSObject <CogMetadataReader> {
|
||||
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,26 @@
|
|||
//
|
||||
// APLMetadataReader.m
|
||||
|
||||
|
||||
#import "APLMetadataReader.h"
|
||||
#import "APLDecoder.h"
|
||||
|
||||
#import "APLFile.h"
|
||||
#import "ApeTag.h"
|
||||
|
||||
@implementation APLMetadataReader
|
||||
|
||||
+ (NSArray *)fileTypes { return [APLDecoder fileTypes]; }
|
||||
+ (NSArray *)mimeTypes { return [APLDecoder mimeTypes]; }
|
||||
|
||||
+ (NSDictionary *)metadataForURL:(NSURL *)url {
|
||||
if (![url isFileURL]) return nil;
|
||||
|
||||
APLFile *apl = [APLFile createWithFile:[url path]];
|
||||
|
||||
ApeTag* tag = [apl tag];
|
||||
NSDictionary* res =[tag convertToCogTag];
|
||||
return res;
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// Prefix header for all source files of the 'CueSheet' target in the 'CueSheet' project.
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
|
@ -0,0 +1,54 @@
|
|||
//
|
||||
// ApeTag.h
|
||||
// MacApl
|
||||
//
|
||||
// Created by ??????? ???????? on 10/15/07.
|
||||
// Copyright 2007 Vasfed. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
//not full support!! and even may have not enougth checks to find a non-supported data!
|
||||
|
||||
|
||||
|
||||
@interface ApeTagItem: NSObject {
|
||||
UInt32 flags;
|
||||
NSString* tag;
|
||||
NSData* data;
|
||||
}
|
||||
|
||||
+createTag:(NSString*)t flags:(SInt32)f data:(NSData*)d;
|
||||
-initTag:(NSString*)t flags:(SInt32)f data:(NSData*)d;
|
||||
|
||||
//for writing:
|
||||
-(NSData*) pack;
|
||||
|
||||
//for reading:
|
||||
-(NSString*) tag;
|
||||
-(bool) isString; //returns whether data is UTF-8 string(or implicitly can be converted to)
|
||||
-(NSString*) getString; //returns string, if is not string - this is error, check isString before
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
@interface ApeTag : NSObject {
|
||||
NSMutableArray* fields;
|
||||
}
|
||||
|
||||
+(id)create;
|
||||
+(id)createFromFileRead:(NSFileHandle*)f;
|
||||
-(id)init;
|
||||
-(id)initFromFileRead:(NSFileHandle*)f;
|
||||
|
||||
-(NSArray*) fields; // returns fields array
|
||||
|
||||
-(void) addField:(NSString*)f text:(NSString*)t;
|
||||
-(NSData*) pack; //returns comoplete tag, ready for writing to file/transmitting smwhere
|
||||
|
||||
-(void) write:(NSFileHandle*)f; //writes to file output of -pack
|
||||
-(bool) read:(NSFileHandle*)f; //reads from file, returns true on success
|
||||
|
||||
-(NSDictionary*) convertToCogTag;
|
||||
@end
|
|
@ -0,0 +1,246 @@
|
|||
//
|
||||
// ApeTag.mm
|
||||
// MacApl
|
||||
//
|
||||
// Created by ??????? ???????? on 10/15/07.
|
||||
// Copyright 2007 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
// as simple as it can be - just write a readable tag, no options etc.
|
||||
|
||||
|
||||
#import "ApeTag.h"
|
||||
|
||||
#define CURRENT_APE_TAG_VERSION 2000
|
||||
/*****************************************************************************************
|
||||
"Standard" APE tag fields
|
||||
*****************************************************************************************/
|
||||
#define APE_TAG_FIELD_TITLE @"Title"
|
||||
#define APE_TAG_FIELD_ARTIST @"Artist"
|
||||
#define APE_TAG_FIELD_ALBUM @"Album"
|
||||
#define APE_TAG_FIELD_COMMENT @"Comment"
|
||||
#define APE_TAG_FIELD_YEAR @"Year"
|
||||
#define APE_TAG_FIELD_TRACK @"Track"
|
||||
#define APE_TAG_FIELD_GENRE @"Genre"
|
||||
#define APE_TAG_FIELD_COVER_ART_FRONT @"Cover Art (front)"
|
||||
#define APE_TAG_FIELD_NOTES @"Notes"
|
||||
#define APE_TAG_FIELD_LYRICS @"Lyrics"
|
||||
#define APE_TAG_FIELD_COPYRIGHT @"Copyright"
|
||||
#define APE_TAG_FIELD_BUY_URL @"Buy URL"
|
||||
#define APE_TAG_FIELD_ARTIST_URL @"Artist URL"
|
||||
#define APE_TAG_FIELD_PUBLISHER_URL @"Publisher URL"
|
||||
#define APE_TAG_FIELD_FILE_URL @"File URL"
|
||||
#define APE_TAG_FIELD_COPYRIGHT_URL @"Copyright URL"
|
||||
#define APE_TAG_FIELD_MJ_METADATA @"Media Jukebox Metadata"
|
||||
#define APE_TAG_FIELD_TOOL_NAME @"Tool Name"
|
||||
#define APE_TAG_FIELD_TOOL_VERSION @"Tool Version"
|
||||
#define APE_TAG_FIELD_PEAK_LEVEL @"Peak Level"
|
||||
#define APE_TAG_FIELD_REPLAY_GAIN_RADIO @"Replay Gain (radio)"
|
||||
#define APE_TAG_FIELD_REPLAY_GAIN_ALBUM @"Replay Gain (album)"
|
||||
#define APE_TAG_FIELD_COMPOSER @"Composer"
|
||||
#define APE_TAG_FIELD_KEYWORDS @"Keywords"
|
||||
|
||||
/*****************************************************************************************
|
||||
Standard APE tag field values
|
||||
*****************************************************************************************/
|
||||
#define APE_TAG_GENRE_UNDEFINED @"Undefined"
|
||||
/*****************************************************************************************
|
||||
Footer (and header) flags
|
||||
*****************************************************************************************/
|
||||
#define APE_TAG_FLAG_CONTAINS_HEADER (1 << 31)
|
||||
#define APE_TAG_FLAG_CONTAINS_FOOTER (1 << 30)
|
||||
#define APE_TAG_FLAG_IS_HEADER (1 << 29)
|
||||
|
||||
#define APE_TAG_FLAGS_DEFAULT (APE_TAG_FLAG_CONTAINS_FOOTER)
|
||||
|
||||
/*****************************************************************************************
|
||||
Tag field flags
|
||||
*****************************************************************************************/
|
||||
#define TAG_FIELD_FLAG_READ_ONLY (1 << 0)
|
||||
|
||||
#define TAG_FIELD_FLAG_DATA_TYPE_MASK (6)
|
||||
#define TAG_FIELD_FLAG_DATA_TYPE_TEXT_UTF8 (0 << 1)
|
||||
#define TAG_FIELD_FLAG_DATA_TYPE_BINARY (1 << 1)
|
||||
#define TAG_FIELD_FLAG_DATA_TYPE_EXTERNAL_INFO (2 << 1)
|
||||
#define TAG_FIELD_FLAG_DATA_TYPE_RESERVED (3 << 1)
|
||||
|
||||
/*****************************************************************************************
|
||||
The footer at the end of APE tagged files (can also optionally be at the front of the tag)
|
||||
*****************************************************************************************/
|
||||
#define APE_TAG_FOOTER_BYTES 32
|
||||
|
||||
//------------------------
|
||||
|
||||
@implementation ApeTagItem
|
||||
+createTag:(NSString*)t flags:(SInt32)f data:(NSData*)d{
|
||||
return [[ApeTagItem alloc] initTag:t flags:f data:d];
|
||||
}
|
||||
|
||||
-initTag:(NSString*)t flags:(SInt32)f data:(NSData*)d{
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
tag = [t copy];
|
||||
data = [d copy];
|
||||
flags = f;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(NSData*) pack {
|
||||
//item header:
|
||||
NSMutableData* d = [NSMutableData dataWithCapacity:8];
|
||||
UInt32 len = CFSwapInt32HostToLittle([data length]);
|
||||
UInt32 flags1 = CFSwapInt32HostToLittle(flags); // ApeTagv1 does not use this, 0 for v2 means only footer and all fields text in utf8 - just right what we want
|
||||
|
||||
[d appendBytes:&len length:4]; // lenth of value
|
||||
[d appendBytes:&flags1 length:4]; // 32 bits of flags
|
||||
[d appendData:[tag dataUsingEncoding: NSUTF8StringEncoding]]; // item tag
|
||||
char c = 0; [d appendBytes:&c length:1]; // 0x00 separator after tag
|
||||
[d appendData:data]; // item value
|
||||
return d;
|
||||
}
|
||||
|
||||
-(bool) isString { //returns whether data is UTF-8 string(or implicitly can be converted to)
|
||||
return (flags & TAG_FIELD_FLAG_DATA_TYPE_MASK) == TAG_FIELD_FLAG_DATA_TYPE_TEXT_UTF8;
|
||||
}
|
||||
-(NSString*) getString { //returns string, if is not string - this is error, check isString before
|
||||
if ([self isString]) return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
return nil;
|
||||
}
|
||||
-(NSString*) tag { return tag; }
|
||||
@end
|
||||
|
||||
|
||||
@implementation ApeTag
|
||||
+(id)create { return [[ApeTag alloc] init];}
|
||||
+(id)createFromFileRead:(NSFileHandle*)f { return [[ApeTag alloc] initFromFileRead:f]; }
|
||||
|
||||
-(id)init {
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
fields = [NSMutableArray array];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(id)initFromFileRead:(NSFileHandle*)f {
|
||||
self = [super init];
|
||||
if(self)
|
||||
{
|
||||
fields = [NSMutableArray array];
|
||||
if (![self read:f])
|
||||
return nil;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void) addField:(NSString*)f text:(NSString*)t {
|
||||
[fields addObject:[ApeTagItem createTag:f flags:(TAG_FIELD_FLAG_DATA_TYPE_TEXT_UTF8) data:[t dataUsingEncoding: NSUTF8StringEncoding]]];
|
||||
}
|
||||
|
||||
-(NSArray*) fields { return fields; }
|
||||
|
||||
-(NSDictionary*) convertToCogTag {
|
||||
NSLog(@"Converting ape tag to cog tag");
|
||||
NSMutableDictionary* d = [NSMutableDictionary dictionaryWithCapacity:6];
|
||||
NSEnumerator *e = [fields objectEnumerator];
|
||||
ApeTagItem* item;
|
||||
int n = 0;
|
||||
while ((item = [e nextObject]) != nil) {
|
||||
if (![[item tag] compare:APE_TAG_FIELD_ARTIST]) { [d setObject:[item getString] forKey:@"artist"]; n++;}
|
||||
if (![[item tag] compare:APE_TAG_FIELD_ALBUM]) {[d setObject:[item getString] forKey:@"album"]; n++;}
|
||||
if (![[item tag] compare:APE_TAG_FIELD_TITLE]) {[d setObject:[item getString] forKey:@"title"]; n++;}
|
||||
if (![[item tag] compare:APE_TAG_FIELD_TRACK]) {[d setObject:[item getString] forKey:@"track"]; n++;}
|
||||
if (![[item tag] compare:APE_TAG_FIELD_GENRE]) {[d setObject:[item getString] forKey:@"genre"]; n++;}
|
||||
if (![[item tag] compare:APE_TAG_FIELD_YEAR]) {[d setObject:[item getString] forKey:@"year"]; n++;}
|
||||
}
|
||||
if (n)
|
||||
return d;
|
||||
[d release]; d = nil;
|
||||
return nil;
|
||||
}
|
||||
|
||||
-(NSData*) pack {
|
||||
int len = 0, num = 0;
|
||||
NSMutableData* d = [NSMutableData dataWithCapacity:8];
|
||||
NSEnumerator *e = [fields objectEnumerator];
|
||||
id item;
|
||||
while ((item = [e nextObject]) != nil)
|
||||
{
|
||||
NSData* i = [item pack];
|
||||
[d appendData:i];
|
||||
len += [i length];
|
||||
num++;
|
||||
}
|
||||
UInt32 version = CFSwapInt32HostToLittle(CURRENT_APE_TAG_VERSION);
|
||||
UInt32 size = CFSwapInt32HostToLittle(len + APE_TAG_FOOTER_BYTES);
|
||||
UInt32 count = CFSwapInt32HostToLittle(num);
|
||||
UInt32 flags = CFSwapInt32HostToLittle(APE_TAG_FLAGS_DEFAULT);
|
||||
[d appendBytes:"APETAGEX" length:8];
|
||||
[d appendBytes:&version length:4];
|
||||
[d appendBytes:&size length:4];
|
||||
[d appendBytes:&count length:4];
|
||||
[d appendBytes:&flags length:4];
|
||||
[d appendBytes:"\0\0\0\0\0\0\0\0" length:8]; //reserved
|
||||
return d;
|
||||
}
|
||||
|
||||
-(void) write:(NSFileHandle*)file {
|
||||
[file writeData:[self pack]];
|
||||
}
|
||||
|
||||
-(NSString*) readToNull:(NSFileHandle*)f { //!!!
|
||||
NSMutableData* d = [NSMutableData dataWithCapacity:100]; //it will grow, here should be most expected value (may gain few nanosecond from it =) )
|
||||
while(true) {
|
||||
NSData* byte = [f readDataOfLength:1];
|
||||
if (!byte)
|
||||
{
|
||||
[f seekToFileOffset:0-[d length]];
|
||||
return nil;
|
||||
}
|
||||
if (*((const char*)[byte bytes]) == 0) break;
|
||||
[d appendData:byte];
|
||||
}
|
||||
NSString* s = [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding]; //!handle encoding error (in case binary data starts not from newline, impossible on real apl, but who knows...)
|
||||
return s;
|
||||
}
|
||||
|
||||
-(bool) read:(NSFileHandle*)f { //reads from file, returns true on success
|
||||
|
||||
//reading from file erases previous data:
|
||||
[fields removeAllObjects];
|
||||
|
||||
//!! prefix header may be present and we should read it but lazyness...
|
||||
NSString* header = @"APETAGEX";
|
||||
NSData* check = [f readDataOfLength:[header length]];
|
||||
[f seekToFileOffset:([f offsetInFile]-[check length])];
|
||||
if (check && [[[NSString alloc] initWithData:check encoding:NSASCIIStringEncoding] isEqualToString:header]) {
|
||||
NSLog(@"Reading of prefix header not implemented");
|
||||
return false;
|
||||
}
|
||||
|
||||
//read fields and store 'em
|
||||
while(true) {
|
||||
NSData* check = [f readDataOfLength:[header length]];
|
||||
[f seekToFileOffset:([f offsetInFile]-[check length])];
|
||||
if (check && [[[NSString alloc] initWithData:check encoding:NSASCIIStringEncoding] isEqualToString:header]) break; // reached footer
|
||||
|
||||
NSData* f_len = [f readDataOfLength:4];
|
||||
NSData* f_flag = [f readDataOfLength:4];
|
||||
NSString* f_name = [self readToNull:f];
|
||||
UInt32 len = CFSwapInt32LittleToHost(*(uint32_t*)[f_len bytes]);
|
||||
UInt32 flags = CFSwapInt32LittleToHost(*(uint32_t*)[f_flag bytes]);
|
||||
NSData* data = [f readDataOfLength:len];
|
||||
ApeTagItem* item = [ApeTagItem createTag:f_name flags:flags data:data];
|
||||
NSLog(@"Read tag '%@'='%@'", [item tag], [item getString]);
|
||||
[fields addObject:item];
|
||||
}
|
||||
//here we should read footer and check number of fields etc. - but who cares? =)
|
||||
// just clean up file pointer:
|
||||
[f readDataOfLength:APE_TAG_FOOTER_BYTES];
|
||||
return true;
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.vasfed.cog.apl</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -181,6 +181,9 @@
|
|||
NSEnumerator *e = [[[[NSClassFromString(@"PluginController") sharedPluginController] decodersByExtension] allKeys] objectEnumerator];
|
||||
while (ext = [e nextObject])
|
||||
{
|
||||
if ([ext isEqualToString:@"cue"])
|
||||
continue;
|
||||
|
||||
NSMutableString* newURL = [originalURL mutableCopy];
|
||||
[newURL replaceOccurrencesOfString:@"wav" withString:ext options:(NSAnchoredSearch | NSBackwardsSearch) range:NSMakeRange(0, [newURL length])];
|
||||
|
||||
|
|
Loading…
Reference in New Issue