[Fuse-for-macosx-commits] SF.net SVN: fuse-for-macosx: [466] trunk
Brought to you by:
fredm
|
From: <fr...@us...> - 2007-12-21 00:16:44
|
Revision: 466
http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=466&view=rev
Author: fredm
Date: 2007-12-20 16:16:49 -0800 (Thu, 20 Dec 2007)
Log Message:
-----------
Add QuickLook generator for Speccy-related files, thanks to James Weatherley for
JWSpectrumScreen that makes it all possible.
Modified Paths:
--------------
trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj
trunk/README
trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj
Added Paths:
-----------
trunk/FuseGenerator/
trunk/FuseGenerator/English.lproj/
trunk/FuseGenerator/English.lproj/InfoPlist.strings
trunk/FuseGenerator/FuseGenerator.xcodeproj/
trunk/FuseGenerator/FuseGenerator.xcodeproj/project.pbxproj
trunk/FuseGenerator/GeneratePreviewForURL.m
trunk/FuseGenerator/GenerateThumbnailForURL.m
trunk/FuseGenerator/Info.plist
trunk/FuseGenerator/JWSpectrumScreen/
trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.h
trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.m
trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.h
trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.m
trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimex.h
trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimex.m
trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimexHiRes.h
trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimexHiRes.m
trunk/FuseGenerator/JWSpectrumScreen/AttributeManager.c
trunk/FuseGenerator/JWSpectrumScreen/AttributeManager.h
trunk/FuseGenerator/JWSpectrumScreen/ColourMacros.c
trunk/FuseGenerator/JWSpectrumScreen/ColourMacros.h
trunk/FuseGenerator/JWSpectrumScreen/English.lproj/
trunk/FuseGenerator/JWSpectrumScreen/English.lproj/InfoPlist.strings
trunk/FuseGenerator/JWSpectrumScreen/Info.plist
trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.h
trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.m
trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.xcodeproj/
trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.xcodeproj/project.pbxproj
trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreenConstants.h
trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen_Prefix.pch
trunk/FuseGenerator/JWSpectrumScreen/PixelData.h
trunk/FuseGenerator/JWSpectrumScreen/README
trunk/FuseGenerator/LibspectrumSCRExtractor.h
trunk/FuseGenerator/LibspectrumSCRExtractor.m
trunk/FuseGenerator/config.h
trunk/FuseGenerator/generate.pl
trunk/FuseGenerator/libspectrum
trunk/FuseGenerator/libspectrum.h
trunk/FuseGenerator/main.c
Property changes on: trunk/FuseGenerator
___________________________________________________________________
Name: svn:ignore
+ build
Added: trunk/FuseGenerator/English.lproj/InfoPlist.strings
===================================================================
(Binary files differ)
Property changes on: trunk/FuseGenerator/English.lproj/InfoPlist.strings
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Property changes on: trunk/FuseGenerator/FuseGenerator.xcodeproj
___________________________________________________________________
Name: svn:ignore
+ *.pbxuser
*.mode1v3
Added: trunk/FuseGenerator/FuseGenerator.xcodeproj/project.pbxproj
===================================================================
--- trunk/FuseGenerator/FuseGenerator.xcodeproj/project.pbxproj (rev 0)
+++ trunk/FuseGenerator/FuseGenerator.xcodeproj/project.pbxproj 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,553 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 44;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 2C05A19C06CAA52B00D84F6F /* GeneratePreviewForURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C05A19B06CAA52B00D84F6F /* GeneratePreviewForURL.m */; };
+ 61E3BCFB0870B4F2002186A0 /* GenerateThumbnailForURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 61E3BCFA0870B4F2002186A0 /* GenerateThumbnailForURL.m */; };
+ 8D576312048677EA00EA77CD /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 08FB77B6FE84183AC02AAC07 /* main.c */; settings = {ATTRIBUTES = (); }; };
+ 8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */; };
+ 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; };
+ B63944AB0D18B0430059DAA5 /* LibspectrumSCRExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = B63944A90D18B0430059DAA5 /* LibspectrumSCRExtractor.m */; };
+ B63944FB0D18C7C30059DAA5 /* tape_accessors.txt in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B2E0D162B910036CC54 /* tape_accessors.txt */; };
+ B63944FC0D18C7C30059DAA5 /* snap_accessors.txt in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B2C0D162B810036CC54 /* snap_accessors.txt */; };
+ B63945090D18CA120059DAA5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B63945080D18CA120059DAA5 /* Cocoa.framework */; };
+ B6D30AE60D1627ED0036CC54 /* bzip2.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AE50D1627ED0036CC54 /* bzip2.c */; };
+ B6D30AEC0D16280E0036CC54 /* creator.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AE70D16280E0036CC54 /* creator.c */; };
+ B6D30AED0D16280E0036CC54 /* crypto.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AE80D16280E0036CC54 /* crypto.c */; };
+ B6D30AEE0D16280E0036CC54 /* csw.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AE90D16280E0036CC54 /* csw.c */; };
+ B6D30AEF0D16280E0036CC54 /* dck.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AEA0D16280E0036CC54 /* dck.c */; };
+ B6D30AF40D1628470036CC54 /* ide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AF10D1628470036CC54 /* ide.c */; };
+ B6D30AF60D1628470036CC54 /* libspectrum.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AF30D1628470036CC54 /* libspectrum.c */; };
+ B6D30AF80D16288A0036CC54 /* microdrive.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AF70D16288A0036CC54 /* microdrive.c */; };
+ B6D30AFA0D1628A10036CC54 /* plusd.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AF90D1628A10036CC54 /* plusd.c */; };
+ B6D30AFD0D1628DB0036CC54 /* rzx.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AFB0D1628DB0036CC54 /* rzx.c */; };
+ B6D30AFE0D1628DB0036CC54 /* sna.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AFC0D1628DB0036CC54 /* sna.c */; };
+ B6D30B060D1628F20036CC54 /* snapshot.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30AFF0D1628F20036CC54 /* snapshot.c */; };
+ B6D30B070D1628F20036CC54 /* snp.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B000D1628F20036CC54 /* snp.c */; };
+ B6D30B080D1628F20036CC54 /* sp.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B010D1628F20036CC54 /* sp.c */; };
+ B6D30B090D1628F20036CC54 /* symbol_table.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B020D1628F20036CC54 /* symbol_table.c */; };
+ B6D30B0A0D1628F20036CC54 /* szx.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B030D1628F20036CC54 /* szx.c */; };
+ B6D30B0B0D1628F20036CC54 /* tap.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B040D1628F20036CC54 /* tap.c */; };
+ B6D30B0C0D1628F20036CC54 /* tape.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B050D1628F20036CC54 /* tape.c */; };
+ B6D30B0F0D1629080036CC54 /* tape_block.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B0D0D1629080036CC54 /* tape_block.c */; };
+ B6D30B120D16298C0036CC54 /* timings.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B110D16298C0036CC54 /* timings.c */; };
+ B6D30B1B0D1629C20036CC54 /* tzx_read.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B130D1629C20036CC54 /* tzx_read.c */; };
+ B6D30B1C0D1629C20036CC54 /* tzx_write.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B140D1629C20036CC54 /* tzx_write.c */; };
+ B6D30B1D0D1629C20036CC54 /* warajevo_read.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B150D1629C20036CC54 /* warajevo_read.c */; };
+ B6D30B1E0D1629C20036CC54 /* wav.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B160D1629C20036CC54 /* wav.c */; };
+ B6D30B1F0D1629C20036CC54 /* z80.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B170D1629C20036CC54 /* z80.c */; };
+ B6D30B200D1629C20036CC54 /* z80em.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B180D1629C20036CC54 /* z80em.c */; };
+ B6D30B210D1629C20036CC54 /* zlib.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B190D1629C20036CC54 /* zlib.c */; };
+ B6D30B220D1629C20036CC54 /* zxs.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B1A0D1629C20036CC54 /* zxs.c */; };
+ B6D30B270D162A130036CC54 /* ghash.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B250D162A130036CC54 /* ghash.c */; };
+ B6D30B280D162A130036CC54 /* gslist.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B260D162A130036CC54 /* gslist.c */; };
+ B6D30B410D16533C0036CC54 /* AttributeBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B370D16533C0036CC54 /* AttributeBlock.m */; };
+ B6D30B430D16533C0036CC54 /* AttributeBlockIterator.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B390D16533C0036CC54 /* AttributeBlockIterator.m */; };
+ B6D30B450D16533C0036CC54 /* AttributeBlockTimex.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B3B0D16533C0036CC54 /* AttributeBlockTimex.m */; };
+ B6D30B470D16533C0036CC54 /* AttributeBlockTimexHiRes.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B3D0D16533C0036CC54 /* AttributeBlockTimexHiRes.m */; };
+ B6D30B480D16533C0036CC54 /* AttributeManager.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B3E0D16533C0036CC54 /* AttributeManager.c */; };
+ B6D30B4C0D1653510036CC54 /* ColourMacros.c in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B4A0D1653510036CC54 /* ColourMacros.c */; };
+ B6D30B510D1653730036CC54 /* JWSpectrumScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D30B4F0D1653730036CC54 /* JWSpectrumScreen.m */; };
+ C86B05270671AA6E00DD9006 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C86B05260671AA6E00DD9006 /* CoreServices.framework */; };
+ F28CFBFD0A3EC0AF000ABFF5 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F28CFBFC0A3EC0AF000ABFF5 /* ApplicationServices.framework */; };
+ F28CFC030A3EC0C6000ABFF5 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F28CFC020A3EC0C6000ABFF5 /* QuickLook.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXBuildRule section */
+ B6D30B300D162CCB0036CC54 /* PBXBuildRule */ = {
+ isa = PBXBuildRule;
+ compilerSpec = com.apple.compilers.proxy.script;
+ filePatterns = "*ape_accessors.txt";
+ fileType = pattern.proxy;
+ isEditable = 1;
+ outputFiles = (
+ "$(DERIVED_FILE_DIR)/$(INPUT_FILE_BASE).c",
+ "$(DERIVED_FILE_DIR)/tape_set.c",
+ );
+ script = "perl ${SRCROOT}/libspectrum/tape_accessors.pl ${INPUT_FILE_PATH} > ${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.c\nperl ${SRCROOT}/libspectrum/tape_set.pl ${INPUT_FILE_PATH} > ${DERIVED_FILE_DIR}/tape_set.c";
+ };
+ B6D30B310D162CCB0036CC54 /* PBXBuildRule */ = {
+ isa = PBXBuildRule;
+ compilerSpec = com.apple.compilers.proxy.script;
+ filePatterns = "*nap_accessors.txt";
+ fileType = pattern.proxy;
+ isEditable = 1;
+ outputFiles = (
+ "$(DERIVED_FILE_DIR)/$(INPUT_FILE_BASE).c",
+ );
+ script = "perl ${SRCROOT}/libspectrum/accessor.pl ${INPUT_FILE_PATH} > ${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.c";
+ };
+ B6D30B320D162CCB0036CC54 /* PBXBuildRule */ = {
+ isa = PBXBuildRule;
+ compilerSpec = com.apple.compilers.proxy.script;
+ filePatterns = "*ibspectrum.h.in";
+ fileType = pattern.proxy;
+ isEditable = 1;
+ outputFiles = (
+ "${SRCROOT}/libspectrum.h",
+ );
+ script = "perl -p ${SRCROOT}/generate.pl ${INPUT_FILE_PATH} > ${SRCROOT}/libspectrum.h";
+ };
+/* End PBXBuildRule section */
+
+/* Begin PBXFileReference section */
+ 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 08FB77B6FE84183AC02AAC07 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
+ 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
+ 2C05A19B06CAA52B00D84F6F /* GeneratePreviewForURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratePreviewForURL.m; sourceTree = "<group>"; };
+ 61E3BCFA0870B4F2002186A0 /* GenerateThumbnailForURL.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = GenerateThumbnailForURL.m; sourceTree = "<group>"; };
+ 8D576316048677EA00EA77CD /* FuseGenerator.qlgenerator */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FuseGenerator.qlgenerator; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+ B63944A80D18B0430059DAA5 /* LibspectrumSCRExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LibspectrumSCRExtractor.h; sourceTree = "<group>"; };
+ B63944A90D18B0430059DAA5 /* LibspectrumSCRExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LibspectrumSCRExtractor.m; sourceTree = "<group>"; };
+ B63944CB0D18C1CD0059DAA5 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = SOURCE_ROOT; };
+ B63945080D18CA120059DAA5 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
+ B6D30AE30D1627C90036CC54 /* libspectrum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libspectrum.h; path = ../libspectrum.h; sourceTree = "<group>"; };
+ B6D30AE50D1627ED0036CC54 /* bzip2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bzip2.c; sourceTree = "<group>"; };
+ B6D30AE70D16280E0036CC54 /* creator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = creator.c; sourceTree = "<group>"; };
+ B6D30AE80D16280E0036CC54 /* crypto.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crypto.c; sourceTree = "<group>"; };
+ B6D30AE90D16280E0036CC54 /* csw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = csw.c; sourceTree = "<group>"; };
+ B6D30AEA0D16280E0036CC54 /* dck.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dck.c; sourceTree = "<group>"; };
+ B6D30AF10D1628470036CC54 /* ide.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ide.c; sourceTree = "<group>"; };
+ B6D30AF20D1628470036CC54 /* internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internals.h; sourceTree = "<group>"; };
+ B6D30AF30D1628470036CC54 /* libspectrum.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = libspectrum.c; sourceTree = "<group>"; };
+ B6D30AF70D16288A0036CC54 /* microdrive.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = microdrive.c; sourceTree = "<group>"; };
+ B6D30AF90D1628A10036CC54 /* plusd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = plusd.c; sourceTree = "<group>"; };
+ B6D30AFB0D1628DB0036CC54 /* rzx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rzx.c; sourceTree = "<group>"; };
+ B6D30AFC0D1628DB0036CC54 /* sna.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sna.c; sourceTree = "<group>"; };
+ B6D30AFF0D1628F20036CC54 /* snapshot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snapshot.c; sourceTree = "<group>"; };
+ B6D30B000D1628F20036CC54 /* snp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snp.c; sourceTree = "<group>"; };
+ B6D30B010D1628F20036CC54 /* sp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sp.c; sourceTree = "<group>"; };
+ B6D30B020D1628F20036CC54 /* symbol_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = symbol_table.c; sourceTree = "<group>"; };
+ B6D30B030D1628F20036CC54 /* szx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = szx.c; sourceTree = "<group>"; };
+ B6D30B040D1628F20036CC54 /* tap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tap.c; sourceTree = "<group>"; };
+ B6D30B050D1628F20036CC54 /* tape.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tape.c; sourceTree = "<group>"; };
+ B6D30B0D0D1629080036CC54 /* tape_block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tape_block.c; sourceTree = "<group>"; };
+ B6D30B0E0D1629080036CC54 /* tape_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tape_block.h; sourceTree = "<group>"; };
+ B6D30B110D16298C0036CC54 /* timings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = timings.c; sourceTree = "<group>"; };
+ B6D30B130D1629C20036CC54 /* tzx_read.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tzx_read.c; sourceTree = "<group>"; };
+ B6D30B140D1629C20036CC54 /* tzx_write.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tzx_write.c; sourceTree = "<group>"; };
+ B6D30B150D1629C20036CC54 /* warajevo_read.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = warajevo_read.c; sourceTree = "<group>"; };
+ B6D30B160D1629C20036CC54 /* wav.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wav.c; sourceTree = "<group>"; };
+ B6D30B170D1629C20036CC54 /* z80.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = z80.c; sourceTree = "<group>"; };
+ B6D30B180D1629C20036CC54 /* z80em.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = z80em.c; sourceTree = "<group>"; };
+ B6D30B190D1629C20036CC54 /* zlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zlib.c; sourceTree = "<group>"; };
+ B6D30B1A0D1629C20036CC54 /* zxs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zxs.c; sourceTree = "<group>"; };
+ B6D30B250D162A130036CC54 /* ghash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ghash.c; sourceTree = "<group>"; };
+ B6D30B260D162A130036CC54 /* gslist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gslist.c; sourceTree = "<group>"; };
+ B6D30B2A0D162B720036CC54 /* libspectrum.h.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = libspectrum.h.in; sourceTree = "<group>"; };
+ B6D30B2C0D162B810036CC54 /* snap_accessors.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = snap_accessors.txt; sourceTree = "<group>"; };
+ B6D30B2E0D162B910036CC54 /* tape_accessors.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tape_accessors.txt; sourceTree = "<group>"; };
+ B6D30B360D16533C0036CC54 /* AttributeBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttributeBlock.h; path = JWSpectrumScreen/AttributeBlock.h; sourceTree = "<group>"; };
+ B6D30B370D16533C0036CC54 /* AttributeBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AttributeBlock.m; path = JWSpectrumScreen/AttributeBlock.m; sourceTree = "<group>"; };
+ B6D30B380D16533C0036CC54 /* AttributeBlockIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttributeBlockIterator.h; path = JWSpectrumScreen/AttributeBlockIterator.h; sourceTree = "<group>"; };
+ B6D30B390D16533C0036CC54 /* AttributeBlockIterator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AttributeBlockIterator.m; path = JWSpectrumScreen/AttributeBlockIterator.m; sourceTree = "<group>"; };
+ B6D30B3A0D16533C0036CC54 /* AttributeBlockTimex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttributeBlockTimex.h; path = JWSpectrumScreen/AttributeBlockTimex.h; sourceTree = "<group>"; };
+ B6D30B3B0D16533C0036CC54 /* AttributeBlockTimex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AttributeBlockTimex.m; path = JWSpectrumScreen/AttributeBlockTimex.m; sourceTree = "<group>"; };
+ B6D30B3C0D16533C0036CC54 /* AttributeBlockTimexHiRes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttributeBlockTimexHiRes.h; path = JWSpectrumScreen/AttributeBlockTimexHiRes.h; sourceTree = "<group>"; };
+ B6D30B3D0D16533C0036CC54 /* AttributeBlockTimexHiRes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AttributeBlockTimexHiRes.m; path = JWSpectrumScreen/AttributeBlockTimexHiRes.m; sourceTree = "<group>"; };
+ B6D30B3E0D16533C0036CC54 /* AttributeManager.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttributeManager.c; path = JWSpectrumScreen/AttributeManager.c; sourceTree = "<group>"; };
+ B6D30B3F0D16533C0036CC54 /* AttributeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttributeManager.h; path = JWSpectrumScreen/AttributeManager.h; sourceTree = "<group>"; };
+ B6D30B4A0D1653510036CC54 /* ColourMacros.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ColourMacros.c; path = JWSpectrumScreen/ColourMacros.c; sourceTree = "<group>"; };
+ B6D30B4B0D1653510036CC54 /* ColourMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ColourMacros.h; path = JWSpectrumScreen/ColourMacros.h; sourceTree = "<group>"; };
+ B6D30B4E0D1653730036CC54 /* JWSpectrumScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JWSpectrumScreen.h; path = JWSpectrumScreen/JWSpectrumScreen.h; sourceTree = "<group>"; };
+ B6D30B4F0D1653730036CC54 /* JWSpectrumScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = JWSpectrumScreen.m; path = JWSpectrumScreen/JWSpectrumScreen.m; sourceTree = "<group>"; };
+ B6D30B520D1653920036CC54 /* JWSpectrumScreenConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JWSpectrumScreenConstants.h; path = JWSpectrumScreen/JWSpectrumScreenConstants.h; sourceTree = "<group>"; };
+ B6D30B530D1653920036CC54 /* PixelData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PixelData.h; path = JWSpectrumScreen/PixelData.h; sourceTree = "<group>"; };
+ C86B05260671AA6E00DD9006 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
+ F28CFBFC0A3EC0AF000ABFF5 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
+ F28CFC020A3EC0C6000ABFF5 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = /System/Library/Frameworks/QuickLook.framework; sourceTree = "<absolute>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 8D576313048677EA00EA77CD /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */,
+ C86B05270671AA6E00DD9006 /* CoreServices.framework in Frameworks */,
+ F28CFBFD0A3EC0AF000ABFF5 /* ApplicationServices.framework in Frameworks */,
+ F28CFC030A3EC0C6000ABFF5 /* QuickLook.framework in Frameworks */,
+ B63945090D18CA120059DAA5 /* Cocoa.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 089C166AFE841209C02AAC07 /* FuseGenerator */ = {
+ isa = PBXGroup;
+ children = (
+ 08FB77AFFE84173DC02AAC07 /* Source */,
+ 089C167CFE841241C02AAC07 /* Resources */,
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
+ 19C28FB6FE9D52B211CA2CBB /* Products */,
+ );
+ name = FuseGenerator;
+ sourceTree = "<group>";
+ };
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ B63945080D18CA120059DAA5 /* Cocoa.framework */,
+ F28CFC020A3EC0C6000ABFF5 /* QuickLook.framework */,
+ F28CFBFC0A3EC0AF000ABFF5 /* ApplicationServices.framework */,
+ C86B05260671AA6E00DD9006 /* CoreServices.framework */,
+ 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */,
+ );
+ name = "External Frameworks and Libraries";
+ sourceTree = "<group>";
+ };
+ 089C167CFE841241C02AAC07 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 8D576317048677EA00EA77CD /* Info.plist */,
+ 8D5B49A704867FD3000E48DA /* InfoPlist.strings */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 08FB77AFFE84173DC02AAC07 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ B6D30B350D1653180036CC54 /* JWSpectrumScreen */,
+ B6D30AE20D16278E0036CC54 /* libspectrum */,
+ 61E3BCFA0870B4F2002186A0 /* GenerateThumbnailForURL.m */,
+ 2C05A19B06CAA52B00D84F6F /* GeneratePreviewForURL.m */,
+ 08FB77B6FE84183AC02AAC07 /* main.c */,
+ B63944A80D18B0430059DAA5 /* LibspectrumSCRExtractor.h */,
+ B63944A90D18B0430059DAA5 /* LibspectrumSCRExtractor.m */,
+ );
+ name = Source;
+ sourceTree = "<group>";
+ };
+ 19C28FB6FE9D52B211CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8D576316048677EA00EA77CD /* FuseGenerator.qlgenerator */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ B6D30AE20D16278E0036CC54 /* libspectrum */ = {
+ isa = PBXGroup;
+ children = (
+ B6D30B230D1629DC0036CC54 /* myglib */,
+ B63944CB0D18C1CD0059DAA5 /* config.h */,
+ B6D30B2E0D162B910036CC54 /* tape_accessors.txt */,
+ B6D30B2C0D162B810036CC54 /* snap_accessors.txt */,
+ B6D30B2A0D162B720036CC54 /* libspectrum.h.in */,
+ B6D30AE50D1627ED0036CC54 /* bzip2.c */,
+ B6D30AE70D16280E0036CC54 /* creator.c */,
+ B6D30AE80D16280E0036CC54 /* crypto.c */,
+ B6D30AE90D16280E0036CC54 /* csw.c */,
+ B6D30AEA0D16280E0036CC54 /* dck.c */,
+ B6D30AF10D1628470036CC54 /* ide.c */,
+ B6D30AF20D1628470036CC54 /* internals.h */,
+ B6D30AF30D1628470036CC54 /* libspectrum.c */,
+ B6D30AE30D1627C90036CC54 /* libspectrum.h */,
+ B6D30AF70D16288A0036CC54 /* microdrive.c */,
+ B6D30AF90D1628A10036CC54 /* plusd.c */,
+ B6D30AFB0D1628DB0036CC54 /* rzx.c */,
+ B6D30AFC0D1628DB0036CC54 /* sna.c */,
+ B6D30AFF0D1628F20036CC54 /* snapshot.c */,
+ B6D30B000D1628F20036CC54 /* snp.c */,
+ B6D30B010D1628F20036CC54 /* sp.c */,
+ B6D30B020D1628F20036CC54 /* symbol_table.c */,
+ B6D30B030D1628F20036CC54 /* szx.c */,
+ B6D30B040D1628F20036CC54 /* tap.c */,
+ B6D30B050D1628F20036CC54 /* tape.c */,
+ B6D30B0D0D1629080036CC54 /* tape_block.c */,
+ B6D30B0E0D1629080036CC54 /* tape_block.h */,
+ B6D30B110D16298C0036CC54 /* timings.c */,
+ B6D30B130D1629C20036CC54 /* tzx_read.c */,
+ B6D30B140D1629C20036CC54 /* tzx_write.c */,
+ B6D30B150D1629C20036CC54 /* warajevo_read.c */,
+ B6D30B160D1629C20036CC54 /* wav.c */,
+ B6D30B170D1629C20036CC54 /* z80.c */,
+ B6D30B180D1629C20036CC54 /* z80em.c */,
+ B6D30B190D1629C20036CC54 /* zlib.c */,
+ B6D30B1A0D1629C20036CC54 /* zxs.c */,
+ );
+ path = libspectrum;
+ sourceTree = "<group>";
+ };
+ B6D30B230D1629DC0036CC54 /* myglib */ = {
+ isa = PBXGroup;
+ children = (
+ B6D30B250D162A130036CC54 /* ghash.c */,
+ B6D30B260D162A130036CC54 /* gslist.c */,
+ );
+ path = myglib;
+ sourceTree = "<group>";
+ };
+ B6D30B350D1653180036CC54 /* JWSpectrumScreen */ = {
+ isa = PBXGroup;
+ children = (
+ B6D30B360D16533C0036CC54 /* AttributeBlock.h */,
+ B6D30B370D16533C0036CC54 /* AttributeBlock.m */,
+ B6D30B380D16533C0036CC54 /* AttributeBlockIterator.h */,
+ B6D30B390D16533C0036CC54 /* AttributeBlockIterator.m */,
+ B6D30B3A0D16533C0036CC54 /* AttributeBlockTimex.h */,
+ B6D30B3B0D16533C0036CC54 /* AttributeBlockTimex.m */,
+ B6D30B3C0D16533C0036CC54 /* AttributeBlockTimexHiRes.h */,
+ B6D30B3D0D16533C0036CC54 /* AttributeBlockTimexHiRes.m */,
+ B6D30B3E0D16533C0036CC54 /* AttributeManager.c */,
+ B6D30B3F0D16533C0036CC54 /* AttributeManager.h */,
+ B6D30B4A0D1653510036CC54 /* ColourMacros.c */,
+ B6D30B4B0D1653510036CC54 /* ColourMacros.h */,
+ B6D30B4E0D1653730036CC54 /* JWSpectrumScreen.h */,
+ B6D30B4F0D1653730036CC54 /* JWSpectrumScreen.m */,
+ B6D30B520D1653920036CC54 /* JWSpectrumScreenConstants.h */,
+ B6D30B530D1653920036CC54 /* PixelData.h */,
+ );
+ name = JWSpectrumScreen;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 8D57630E048677EA00EA77CD /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 8D57630D048677EA00EA77CD /* FuseGenerator */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 2CA3261E0896AD4900168862 /* Build configuration list for PBXNativeTarget "FuseGenerator" */;
+ buildPhases = (
+ 8D57630E048677EA00EA77CD /* Headers */,
+ 8D57630F048677EA00EA77CD /* Resources */,
+ 8D576311048677EA00EA77CD /* Sources */,
+ 8D576313048677EA00EA77CD /* Frameworks */,
+ 8D576315048677EA00EA77CD /* Rez */,
+ );
+ buildRules = (
+ B6D30B300D162CCB0036CC54 /* PBXBuildRule */,
+ B6D30B310D162CCB0036CC54 /* PBXBuildRule */,
+ B6D30B320D162CCB0036CC54 /* PBXBuildRule */,
+ );
+ dependencies = (
+ );
+ name = FuseGenerator;
+ productInstallPath = /Library/QuickLook;
+ productName = FuseGenerator;
+ productReference = 8D576316048677EA00EA77CD /* FuseGenerator.qlgenerator */;
+ productType = "com.apple.product-type.bundle";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 2CA326220896AD4900168862 /* Build configuration list for PBXProject "FuseGenerator" */;
+ compatibilityVersion = "Xcode 3.0";
+ hasScannedForEncodings = 1;
+ mainGroup = 089C166AFE841209C02AAC07 /* FuseGenerator */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 8D57630D048677EA00EA77CD /* FuseGenerator */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 8D57630F048677EA00EA77CD /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+ 8D576315048677EA00EA77CD /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 8D576311048677EA00EA77CD /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B63944FB0D18C7C30059DAA5 /* tape_accessors.txt in Sources */,
+ B63944FC0D18C7C30059DAA5 /* snap_accessors.txt in Sources */,
+ 8D576312048677EA00EA77CD /* main.c in Sources */,
+ 2C05A19C06CAA52B00D84F6F /* GeneratePreviewForURL.m in Sources */,
+ 61E3BCFB0870B4F2002186A0 /* GenerateThumbnailForURL.m in Sources */,
+ B6D30AE60D1627ED0036CC54 /* bzip2.c in Sources */,
+ B6D30AEC0D16280E0036CC54 /* creator.c in Sources */,
+ B6D30AED0D16280E0036CC54 /* crypto.c in Sources */,
+ B6D30AEE0D16280E0036CC54 /* csw.c in Sources */,
+ B6D30AEF0D16280E0036CC54 /* dck.c in Sources */,
+ B6D30AF40D1628470036CC54 /* ide.c in Sources */,
+ B6D30AF60D1628470036CC54 /* libspectrum.c in Sources */,
+ B6D30AF80D16288A0036CC54 /* microdrive.c in Sources */,
+ B6D30AFA0D1628A10036CC54 /* plusd.c in Sources */,
+ B6D30AFD0D1628DB0036CC54 /* rzx.c in Sources */,
+ B6D30AFE0D1628DB0036CC54 /* sna.c in Sources */,
+ B6D30B060D1628F20036CC54 /* snapshot.c in Sources */,
+ B6D30B070D1628F20036CC54 /* snp.c in Sources */,
+ B6D30B080D1628F20036CC54 /* sp.c in Sources */,
+ B6D30B090D1628F20036CC54 /* symbol_table.c in Sources */,
+ B6D30B0A0D1628F20036CC54 /* szx.c in Sources */,
+ B6D30B0B0D1628F20036CC54 /* tap.c in Sources */,
+ B6D30B0C0D1628F20036CC54 /* tape.c in Sources */,
+ B6D30B0F0D1629080036CC54 /* tape_block.c in Sources */,
+ B6D30B120D16298C0036CC54 /* timings.c in Sources */,
+ B6D30B1B0D1629C20036CC54 /* tzx_read.c in Sources */,
+ B6D30B1C0D1629C20036CC54 /* tzx_write.c in Sources */,
+ B6D30B1D0D1629C20036CC54 /* warajevo_read.c in Sources */,
+ B6D30B1E0D1629C20036CC54 /* wav.c in Sources */,
+ B6D30B1F0D1629C20036CC54 /* z80.c in Sources */,
+ B6D30B200D1629C20036CC54 /* z80em.c in Sources */,
+ B6D30B210D1629C20036CC54 /* zlib.c in Sources */,
+ B6D30B220D1629C20036CC54 /* zxs.c in Sources */,
+ B6D30B270D162A130036CC54 /* ghash.c in Sources */,
+ B6D30B280D162A130036CC54 /* gslist.c in Sources */,
+ B6D30B410D16533C0036CC54 /* AttributeBlock.m in Sources */,
+ B6D30B430D16533C0036CC54 /* AttributeBlockIterator.m in Sources */,
+ B6D30B450D16533C0036CC54 /* AttributeBlockTimex.m in Sources */,
+ B6D30B470D16533C0036CC54 /* AttributeBlockTimexHiRes.m in Sources */,
+ B6D30B480D16533C0036CC54 /* AttributeManager.c in Sources */,
+ B6D30B4C0D1653510036CC54 /* ColourMacros.c in Sources */,
+ B6D30B510D1653730036CC54 /* JWSpectrumScreen.m in Sources */,
+ B63944AB0D18B0430059DAA5 /* LibspectrumSCRExtractor.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 089C167EFE841241C02AAC07 /* English */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 2CA3261F0896AD4900168862 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = NO;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = /Library/QuickLook;
+ OTHER_LDFLAGS = (
+ "-lbz2",
+ "-lz",
+ );
+ PRODUCT_NAME = FuseGenerator;
+ VALID_ARCHS = "i386 ppc";
+ WRAPPER_EXTENSION = qlgenerator;
+ ZERO_LINK = YES;
+ };
+ name = Debug;
+ };
+ 2CA326200896AD4900168862 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = NO;
+ GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+ GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
+ GCC_WARN_MISSING_PARENTHESES = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VALUE = YES;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = /Library/QuickLook;
+ OTHER_LDFLAGS = (
+ "-lbz2",
+ "-lz",
+ );
+ PRODUCT_NAME = FuseGenerator;
+ VALID_ARCHS = "i386 ppc";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ WRAPPER_EXTENSION = qlgenerator;
+ };
+ name = Release;
+ };
+ 2CA326230896AD4900168862 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = YES;
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
+ };
+ name = Debug;
+ };
+ 2CA326240896AD4900168862 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ );
+ DEAD_CODE_STRIPPING = YES;
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 2CA3261E0896AD4900168862 /* Build configuration list for PBXNativeTarget "FuseGenerator" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 2CA3261F0896AD4900168862 /* Debug */,
+ 2CA326200896AD4900168862 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 2CA326220896AD4900168862 /* Build configuration list for PBXProject "FuseGenerator" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 2CA326230896AD4900168862 /* Debug */,
+ 2CA326240896AD4900168862 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 089C1669FE841209C02AAC07 /* Project object */;
+}
Added: trunk/FuseGenerator/GeneratePreviewForURL.m
===================================================================
--- trunk/FuseGenerator/GeneratePreviewForURL.m (rev 0)
+++ trunk/FuseGenerator/GeneratePreviewForURL.m 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,82 @@
+/* GeneratePreviewForURL.m: Extract preview from libspectrum-supported Spectrum files
+ Copyright (c) 2005 Fredrick Meunier
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Author contact information:
+
+ E-mail: fr...@sp...
+
+*/
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
+#include <QuickLook/QuickLook.h>
+
+#import "JWSpectrumScreen/JWSpectrumScreen.h"
+#import "LibspectrumSCRExtractor.h"
+
+/* -----------------------------------------------------------------------------
+ Generate a preview for file
+
+ This function's job is to create preview for designated file
+ ----------------------------------------------------------------------------- */
+
+OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
+{
+ NSAutoreleasePool *pool;
+ LibspectrumSCRExtractor *speccyFile;
+
+ /* Don't assume that there is an autorelease pool around the calling of this function. */
+ pool = [[NSAutoreleasePool alloc] init];
+
+ speccyFile = [[[LibspectrumSCRExtractor alloc] initWithContentsOfURL:(NSURL*)url] autorelease];
+
+ if( [speccyFile scrData] && [speccyFile class] == LIBSPECTRUM_CLASS_SCREENSHOT ) {
+ JWSpectrumScreen* screen = [[[JWSpectrumScreen alloc] initFromData:[speccyFile scrData]] autorelease];
+ NSBitmapImageRep* imageRep = [[screen imageRep] retain];
+ NSSize canvasSize = [screen canvasSize];
+
+ CGContextRef cgContext = QLPreviewRequestCreateContext(preview, *(CGSize *)&canvasSize, false, NULL);
+ if(cgContext) {
+ NSGraphicsContext* context = [NSGraphicsContext graphicsContextWithGraphicsPort:(void*)cgContext flipped:YES];
+ if(context) {
+ [NSGraphicsContext saveGraphicsState];
+ [NSGraphicsContext setCurrentContext:context];
+
+ // Now we're ready to draw using Cocoa.
+ NSImage* image = [[[NSImage alloc] initWithSize:canvasSize] autorelease];
+ [image addRepresentation:imageRep];
+ NSRect imageRect = NSMakeRect(0.0, 0.0, canvasSize.width, canvasSize.height);
+ [image drawAtPoint:NSMakePoint(0.0, 0.0)
+ fromRect:imageRect
+ operation:NSCompositeSourceOver
+ fraction:1.0];
+ [NSGraphicsContext restoreGraphicsState];
+ }
+ QLPreviewRequestFlushContext(preview, cgContext);
+ CFRelease(cgContext);
+ }
+ }
+
+ [pool release];
+
+ return noErr;
+}
+
+void CancelPreviewGeneration(void* thisInterface, QLPreviewRequestRef preview)
+{
+ // implement only if supported
+}
Added: trunk/FuseGenerator/GenerateThumbnailForURL.m
===================================================================
--- trunk/FuseGenerator/GenerateThumbnailForURL.m (rev 0)
+++ trunk/FuseGenerator/GenerateThumbnailForURL.m 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,82 @@
+/* GenerateThumbnailForURL.m: Extract thumbnail from libspectrum-supported Spectrum files
+ Copyright (c) 2005 Fredrick Meunier
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Author contact information:
+
+ E-mail: fr...@sp...
+
+*/
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
+#include <QuickLook/QuickLook.h>
+
+#import "JWSpectrumScreen/JWSpectrumScreen.h"
+#import "LibspectrumSCRExtractor.h"
+
+/* -----------------------------------------------------------------------------
+ Generate a thumbnail for file
+
+ This function's job is to create thumbnail for designated file as fast as possible
+ ----------------------------------------------------------------------------- */
+
+OSStatus GenerateThumbnailForURL(void *thisInterface, QLThumbnailRequestRef thumbnail, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options, CGSize maxSize)
+{
+ NSAutoreleasePool *pool;
+ LibspectrumSCRExtractor *speccyFile;
+
+ /* Don't assume that there is an autorelease pool around the calling of this function. */
+ pool = [[NSAutoreleasePool alloc] init];
+
+ speccyFile = [[[LibspectrumSCRExtractor alloc] initWithContentsOfURL:(NSURL*)url] autorelease];
+
+ if( [speccyFile scrData] ) {
+ JWSpectrumScreen* screen = [[[JWSpectrumScreen alloc] initFromData:[speccyFile scrData]] autorelease];
+ NSBitmapImageRep* imageRep = [[screen imageRep] retain];
+ NSSize canvasSize = [screen canvasSize];
+
+ CGContextRef cgContext = QLThumbnailRequestCreateContext(thumbnail, *(CGSize *)&canvasSize, false, NULL);
+ if(cgContext) {
+ NSGraphicsContext* context = [NSGraphicsContext graphicsContextWithGraphicsPort:(void*)cgContext flipped:YES];
+ if(context) {
+ [NSGraphicsContext saveGraphicsState];
+ [NSGraphicsContext setCurrentContext:context];
+
+ // Now we're ready to draw using Cocoa.
+ NSImage* image = [[[NSImage alloc] initWithSize:canvasSize] autorelease];
+ [image addRepresentation:imageRep];
+ NSRect imageRect = NSMakeRect(0.0, 0.0, canvasSize.width, canvasSize.height);
+ [image drawAtPoint:NSMakePoint(0.0, 0.0)
+ fromRect:imageRect
+ operation:NSCompositeSourceOver
+ fraction:1.0];
+ [NSGraphicsContext restoreGraphicsState];
+ }
+ QLThumbnailRequestFlushContext(thumbnail, cgContext);
+ CFRelease(cgContext);
+ }
+ }
+
+ [pool release];
+
+ return noErr;
+}
+
+void CancelThumbnailGeneration(void* thisInterface, QLThumbnailRequestRef thumbnail)
+{
+ // implement only if supported
+}
Added: trunk/FuseGenerator/Info.plist
===================================================================
--- trunk/FuseGenerator/Info.plist (rev 0)
+++ trunk/FuseGenerator/Info.plist 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeRole</key>
+ <string>QLGenerator</string>
+ <key>LSItemContentTypes</key>
+ <array>
+ <string>net.sourceforge.projects.fuse-emulator.Snapshot</string>
+ <string>net.sourceforge.projects.fuse-emulator.Tape</string>
+ <string>net.sourceforge.projects.fuse-emulator.MassStorage</string>
+ <string>net.sourceforge.projects.fuse-emulator.Cartridge</string>
+ <string>net.sourceforge.projects.fuse-emulator.dck</string>
+ <string>net.sourceforge.projects.fuse-emulator.csw</string>
+ <string>net.sourceforge.projects.fuse-emulator.hdf</string>
+ <string>net.sourceforge.projects.fuse-emulator.dsk</string>
+ <string>net.sourceforge.projects.fuse-emulator.mgt</string>
+ <string>net.sourceforge.projects.fuse-emulator.rzx</string>
+ <string>net.sourceforge.projects.fuse-emulator.scl</string>
+ <string>net.sourceforge.projects.fuse-emulator.scr</string>
+ <string>net.sourceforge.projects.fuse-emulator.slt</string>
+ <string>net.sourceforge.projects.fuse-emulator.sna</string>
+ <string>net.sourceforge.projects.fuse-emulator.sp</string>
+ <string>net.sourceforge.projects.fuse-emulator.szx</string>
+ <string>net.sourceforge.projects.fuse-emulator.snp</string>
+ <string>net.sourceforge.projects.fuse-emulator.tap</string>
+ <string>net.sourceforge.projects.fuse-emulator.trd</string>
+ <string>net.sourceforge.projects.fuse-emulator.tzx</string>
+ <string>net.sourceforge.projects.fuse-emulator.z80</string>
+ <string>net.sourceforge.projects.fuse-emulator.zxs</string>
+ </array>
+ </dict>
+ </array>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>net.sourceforge.projects.fuse-emulator.quicklookgenerator</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>CFPlugInDynamicRegisterFunction</key>
+ <string></string>
+ <key>CFPlugInDynamicRegistration</key>
+ <string>NO</string>
+ <key>CFPlugInFactories</key>
+ <dict>
+ <key>4FABDBA6-8BDD-44BF-A80C-C4F483AA0D6B</key>
+ <string>QuickLookGeneratorPluginFactory</string>
+ </dict>
+ <key>CFPlugInTypes</key>
+ <dict>
+ <key>5E2D9680-5022-40FA-B806-43349622E5B9</key>
+ <array>
+ <string>4FABDBA6-8BDD-44BF-A80C-C4F483AA0D6B</string>
+ </array>
+ </dict>
+ <key>CFPlugInUnloadFunction</key>
+ <string></string>
+ <key>QLNeedsToBeRunInMainThread</key>
+ <false/>
+ <key>QLPreviewHeight</key>
+ <real>600</real>
+ <key>QLPreviewWidth</key>
+ <real>800</real>
+ <key>QLSupportsConcurrentRequests</key>
+ <false/>
+ <key>QLThumbnailMinimumSize</key>
+ <real>17</real>
+</dict>
+</plist>
Property changes on: trunk/FuseGenerator/JWSpectrumScreen
___________________________________________________________________
Name: svn:ignore
+ build
Added: trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.h
===================================================================
--- trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.h (rev 0)
+++ trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.h 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,52 @@
+//
+// AttributeBlock.h
+// Mac2Spec
+//
+// Created by James on 20/8/2006.
+// Copyright 2006 James Weatherley. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "PixelData.h"
+
+@interface AttributeBlock : NSObject {
+
+ int ink;
+ int paper;
+ int inkCount;
+ int paperCount;
+
+ int index;
+ int height;
+ int width;
+
+ int bitmapOffset;
+ int attributeOffset;
+
+ int attributeCount;
+ int attributeRow;
+ int attributeCol;
+ const unsigned char* attributeBase;
+
+ unsigned char attributeByte;
+ unsigned char* rowBitmaps;
+
+ PixelData pixelData;
+
+ NSBitmapImageRep* macBitmap;
+}
+
+-(id)initWithBitmap:(NSBitmapImageRep*)bitmap attributeHeight:(int)height attributeWidth:(int)width index:(int)index;
+-(BOOL)setAttributeData;
+-(void)setAttributeRowAndColumn;
+-(void)setOffsets;
+-(void)normalizePaperAndInk;
+-(void)determineBitmap;
+-(void)pixelData;
+
+-(int)index;
+
+-(void)writeScreenOne:(unsigned char*)screenBase;
+-(void)writeScreenTwo:(unsigned char*)attrBase;
+
+@end
Added: trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.m
===================================================================
--- trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.m (rev 0)
+++ trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.m 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,209 @@
+//
+// AttributeBlock.m
+// Mac2Spec
+//
+// Created by James on 20/8/2006.
+// Copyright 2006 James Weatherley. All rights reserved.
+//
+
+#import "AttributeBlock.h"
+#import "AttributeManager.h"
+
+@implementation AttributeBlock
+
+-(id)initWithBitmap:(NSBitmapImageRep*)bitmap attributeHeight:(int)h attributeWidth:(int)w index:(int)idx
+{
+ if((self = [super init])) {
+ macBitmap = bitmap;
+ [macBitmap retain];
+
+ index = idx;
+ height = h;
+ width = w;
+
+ // Allocate width * height bytes of strorage - divide width by eight as width is in bits.
+ rowBitmaps = malloc((width / 8) * height * sizeof(unsigned char));
+ if(![self setAttributeData]) {
+ [self release];
+ self = 0;
+ }
+ }
+ return self;
+}
+
+-(void)dealloc
+{
+ [macBitmap release];
+ free(rowBitmaps);
+ [super dealloc];
+}
+
+-(BOOL)setAttributeData
+{
+ assert(index >=0);
+
+ BOOL success = FALSE;
+ [self setAttributeRowAndColumn];
+
+ if(index < attributeCount) {
+
+ [self pixelData];
+
+ attributeBase = attribute([macBitmap bitmapData], &pixelData, attributeCol * width, attributeRow * height);
+ [self determineBitmap];
+
+ // Use the commonest colour to determine if bright should be used.
+ int bright = 0;
+ if(paperCount > inkCount) {
+ bright = !!(paper & 0x00808080);
+ } else {
+ bright = !!(ink & 0x00808080);
+ }
+
+ // Convert paper and ink to three bit values.
+ paper = ((paper & 0x00400000) >> 21) |
+ ((paper & 0x00004000) >> 12) |
+ ((paper & 0x00000040) >> 6);
+
+ ink = ((ink & 0x00400000) >> 21) |
+ ((ink & 0x00004000) >> 12) |
+ ((ink & 0x00000040) >> 6);
+
+ assert(ink < 8);
+ assert(paper < 8);
+
+ [self normalizePaperAndInk];
+
+ // Build and write the attribute byte.
+ attributeByte = 0;
+ attributeByte |= paper << 3;
+ attributeByte |= ink;
+ attributeByte |= bright << 6;
+
+ [self setOffsets];
+ success = TRUE;
+ }
+
+ return success;
+}
+
+-(void)pixelData
+{
+ pixelData.bytesPerRow = [macBitmap bytesPerRow];
+ pixelData.samplesPerPixel = [macBitmap samplesPerPixel];
+ pixelData.attrCount = attributeCount;
+ pixelData.attrWidth = width;
+}
+
+-(void)setAttributeRowAndColumn
+{
+ unsigned int rows = [macBitmap bytesPerPlane] / [macBitmap bytesPerRow] / height;
+ unsigned int cols = [macBitmap bytesPerRow] / [macBitmap bitsPerPixel];
+ attributeCount = rows * cols;
+ attributeRow = index / cols;
+ attributeCol = index % cols;
+}
+
+-(void)determineBitmap
+{
+ paper = pixelRGBFromBlock(attributeBase, &pixelData, 0, 0);
+
+ // Scan the attribute block - create a bitmap for the row and determine paper and ink.
+ // It is assumed that the attribute block only contains two colours.
+ int x, y;
+ inkCount = 0;
+ paperCount = 0;
+ unsigned char* rowBitmap = malloc(width / 8 * sizeof(unsigned char));
+
+ for(y = 0; y < height; ++y) {
+ memset(rowBitmap, 0, sizeof(rowBitmap));
+ for(x = 0; x < width; ++x) {
+ int colour = pixelRGBFromBlock(attributeBase, &pixelData, x, y);
+ if(colour != paper) {
+ ink = colour;
+ ++inkCount;
+ // Set ink bit in data
+ *rowBitmap |= 1 << (width - 1 - x);
+ } else {
+ ++paperCount;
+ }
+ }
+ // Store the attribute block row bitmap.
+ rowBitmaps[y] = *rowBitmap;
+ }
+ assert(inkCount + paperCount == width * height);
+ free(rowBitmap);
+}
+
+-(void)normalizePaperAndInk
+{
+ if(paper < ink) {
+ int temp = paper;
+ paper = ink;
+ ink = temp;
+
+ int i;
+ for(i = 0; i < height * width / 8; ++i) {
+ rowBitmaps[i] = ~rowBitmaps[i];
+ }
+ }
+}
+
+-(void)setOffsets
+{
+ int attributeRows = attributeCount / 0x20;
+ int screenThird = 3 * attributeRow / attributeRows;
+ int blockRow = attributeRow * height / 8 % 8;
+ int blockLine = attributeRow * height % 8;
+
+ bitmapOffset = 0x800 * screenThird;
+ bitmapOffset += 0x20 * blockRow;
+ bitmapOffset += 0x100 * blockLine;
+ bitmapOffset += attributeCol;
+
+ attributeOffset = index;
+}
+
+-(void)writeScreenOne:(unsigned char*)screenBase
+{
+ int i;
+ for(i = 0; i < height; ++i) {
+ *(screenBase + bitmapOffset + (i * 0x100)) = rowBitmaps[i];
+ }
+}
+
+-(void)writeScreenTwo:(unsigned char*)attrBase
+{
+ *(attrBase + attributeOffset) = attributeByte;
+}
+
+-(int)index
+{
+ return index;
+}
+
+-(NSString*)description
+{
+ NSString* string = @"----------------\n";
+ NSString* numbers = [NSString stringWithFormat:@"ink:%d paper:%d attr:%x\n", ink, paper, attributeByte];
+ string = [string stringByAppendingString:numbers];
+
+ int i, j;
+ for(i = 0; i < height; ++i) {
+ NSString* line = @"";
+ unsigned char mask = 0x80;
+ for(j = 0; j < width; ++j) {
+ if(rowBitmaps[i] & mask) {
+ line = [line stringByAppendingString:@"*"];
+ } else {
+ line = [line stringByAppendingString:@"."];
+ }
+ mask >>= 1;
+ }
+ line = [NSString stringWithFormat:@"%@ : %x\n", line, rowBitmaps[i]];
+ string = [string stringByAppendingString:line];
+ }
+ return string;
+}
+
+@end
Added: trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.h
===================================================================
--- trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.h (rev 0)
+++ trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.h 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,34 @@
+//
+// AttributeBlockIterator.h
+// Mac2Spec
+//
+// Created by James on 20/8/2006.
+// Copyright 2006 James Weatherley. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "JWSpectrumScreenConstants.h"
+
+@class AttributeBlock;
+
+
+@interface AttributeBlockIterator : NSObject {
+
+ int index;
+ int mode;
+ int attributeHeight;
+ int attributeWidth;
+
+ TimexHiResMode hiResMode;
+
+ NSBitmapImageRep* bitmap;
+}
+
+- (id)initWithBitmap:(NSBitmapImageRep*)image mode:(int)mode;
+
+- (void)reset;
+- (AttributeBlock*)nextBlock;
+
+-(void)setHiResMode:(TimexHiResMode)mode;
+
+@end
Added: trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.m
===================================================================
--- trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.m (rev 0)
+++ trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.m 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,91 @@
+//
+// AttributeBlockIterator.m
+// Mac2Spec
+//
+// Created by James on 20/8/2006.
+// Copyright 2006 JamesWeatherley. All rights reserved.
+//
+#import "AttributeManager.h"
+#import "AttributeBlockIterator.h"
+#import "AttributeBlock.h"
+#import "AttributeBlockTimex.h"
+#import "AttributeBlockTimexHiRes.h"
+
+
+@implementation AttributeBlockIterator
+
+-(id)initWithBitmap:(NSBitmapImageRep*)image mode:(int)theMode
+{
+ if((self = [super init])) {
+ bitmap = image;
+ [bitmap retain];
+
+ mode = theMode;
+ if(mode == ATTRIBUTE_ZX) {
+ attributeHeight = ATTRIBUTE_HEIGHT_SINCLAIR;
+ attributeWidth = ATTRIBUTE_WIDTH;
+ } else if(mode == ATTRIBUTE_TIMEX_HI_COL) {
+ attributeHeight = ATTRIBUTE_HEIGHT_TIMEX_HI_COL;
+ attributeWidth = ATTRIBUTE_WIDTH;
+ } else if(mode == ATTRIBUTE_TIMEX_HI_RES) {
+ attributeHeight = ATTRIBUTE_HEIGHT_TIMEX_HI_RES;
+ attributeWidth = ATTRIBUTE_WIDTH_TIMEX_HI_RES;
+ } else {
+ assert(0);
+ }
+
+ [self reset];
+ }
+ return self;
+}
+
+-(void)dealloc
+{
+ [bitmap release];
+ [super dealloc];
+}
+
+-(void)reset
+{
+ index = 0;
+}
+
+-(void)setHiResMode:(TimexHiResMode)hiMode
+{
+ hiResMode = hiMode;
+}
+
+-(AttributeBlock*)nextBlock
+{
+ AttributeBlock* block = nil;
+
+ if(mode == ATTRIBUTE_ZX) {
+ block = [[AttributeBlock alloc] initWithBitmap:bitmap
+ attributeHeight:attributeHeight
+ attributeWidth:attributeWidth
+ index:index];
+ } else if(mode == ATTRIBUTE_TIMEX_HI_COL) {
+ block = [[AttributeBlockTimex alloc] initWithBitmap:bitmap
+ attributeHeight:attributeHeight
+ attributeWidth:attributeWidth
+ index:index];
+ } else if(mode == ATTRIBUTE_TIMEX_HI_RES) {
+ block = [[AttributeBlockTimexHiRes alloc] initWithBitmap:bitmap
+ attributeHeight:attributeHeight
+ attributeWidth:attributeWidth
+ index:index
+ mode:hiResMode];
+ }
+
+ if(!block) {
+ index = 0;
+ } else {
+ ++index;
+ }
+
+ [block autorelease];
+ return block;
+}
+
+
+@end
Added: trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimex.h
===================================================================
--- trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimex.h (rev 0)
+++ trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimex.h 2007-12-21 00:16:49 UTC (rev 466)
@@ -0,0 +1,18 @@
+//
+// AttributeBlockTimex.h
+// Mac2Spec
+//
+// Created by James on 26/8/2006.
+// Copyright 2006 James Weatherley. All rights reserved.
+//
+
+#import "AttributeBlock.h"
+
+
+@interface AttributeBlockTimex : AttributeBlock {
+
+}
+
+-(void)setOffsets;
+
+@end
Added: trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimex.m
===================================================================
--- trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTi...
[truncated message content] |