Fixed Cuesheet bug so it doesn't load itself.

Added APL support (Vasfed).
CQTexperiment
vspader 2007-10-20 16:15:02 +00:00
parent 7bee3acc79
commit d6c6dea8a6
16 changed files with 5168 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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;
};
}

27
Plugins/APL/APLDecoder.h Normal file
View File

@ -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

168
Plugins/APL/APLDecoder.m Normal file
View File

@ -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

28
Plugins/APL/APLFile.h Normal file
View File

@ -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

134
Plugins/APL/APLFile.m Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

54
Plugins/APL/ApeTag.h Normal file
View File

@ -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

246
Plugins/APL/ApeTag.mm Normal file
View File

@ -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

26
Plugins/APL/Info.plist Normal file
View File

@ -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>

View File

@ -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])];