fuse-for-macosx-commits Mailing List for Fuse for macOS (Page 23)
Brought to you by:
fredm
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(9) |
Dec
(31) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(24) |
Feb
(11) |
Mar
(6) |
Apr
(48) |
May
(9) |
Jun
(38) |
Jul
(33) |
Aug
(15) |
Sep
|
Oct
(3) |
Nov
(6) |
Dec
(3) |
2008 |
Jan
|
Feb
(24) |
Mar
(11) |
Apr
(22) |
May
(7) |
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(3) |
Nov
(18) |
Dec
(23) |
2009 |
Jan
(16) |
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
(7) |
Jul
(4) |
Aug
(11) |
Sep
(9) |
Oct
|
Nov
(3) |
Dec
(2) |
2010 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
(2) |
May
(8) |
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(9) |
Nov
|
Dec
(8) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(5) |
Nov
(2) |
Dec
|
2012 |
Jan
(4) |
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(10) |
Nov
(13) |
Dec
(11) |
2013 |
Jan
(4) |
Feb
(1) |
Mar
(8) |
Apr
(8) |
May
(16) |
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2014 |
Jan
|
Feb
(6) |
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(6) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(10) |
Jun
(9) |
Jul
(6) |
Aug
(5) |
Sep
(3) |
Oct
(6) |
Nov
(5) |
Dec
|
From: <fr...@us...> - 2007-01-09 21:00:02
|
Revision: 287 http://svn.sourceforge.net/fuse-for-macosx/?rev=287&view=rev Author: fredm Date: 2007-01-09 13:00:00 -0800 (Tue, 09 Jan 2007) Log Message: ----------- Move version strings to 20070110. Modified Paths: -------------- trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2007-01-09 14:15:49 UTC (rev 286) +++ trunk/fuse/fusepb/Info-Fuse.plist 2007-01-09 21:00:00 UTC (rev 287) @@ -361,11 +361,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>20061129</string> + <string>20070110</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>20061129</string> + <string>20070110</string> <key>NSMainNibFile</key> <string>SDLMain</string> <key>NSPrincipalClass</key> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-09 14:15:53
|
Revision: 286 http://svn.sourceforge.net/fuse-for-macosx/?rev=286&view=rev Author: fredm Date: 2007-01-09 06:15:49 -0800 (Tue, 09 Jan 2007) Log Message: ----------- Provide prototype for memset. Modified Paths: -------------- trunk/fuse/profile.c Modified: trunk/fuse/profile.c =================================================================== --- trunk/fuse/profile.c 2007-01-09 14:14:51 UTC (rev 285) +++ trunk/fuse/profile.c 2007-01-09 14:15:49 UTC (rev 286) @@ -27,6 +27,7 @@ #include <config.h> #include <stdlib.h> +#include <string.h> #include <libspectrum.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-09 14:14:57
|
Revision: 285 http://svn.sourceforge.net/fuse-for-macosx/?rev=285&view=rev Author: fredm Date: 2007-01-09 06:14:51 -0800 (Tue, 09 Jan 2007) Log Message: ----------- Also pass on native keysyms to the input layer. Modified Paths: -------------- trunk/fuse/ui/sdl/sdlkeyboard.c Modified: trunk/fuse/ui/sdl/sdlkeyboard.c =================================================================== --- trunk/fuse/ui/sdl/sdlkeyboard.c 2007-01-03 12:53:51 UTC (rev 284) +++ trunk/fuse/ui/sdl/sdlkeyboard.c 2007-01-09 14:14:51 UTC (rev 285) @@ -211,6 +211,7 @@ unicode_keysyms_hash ); if( fuse_keysym != INPUT_KEY_NONE ) { unicode_keysym = fuse_keysym; + /* record current values of caps and symbol shift. We will temoprarily * override these for the duration of the unicoded simulated keypresses */ @@ -228,6 +229,10 @@ if( fuse_keysym == INPUT_KEY_NONE ) return; fuse_event.type = INPUT_EVENT_KEYPRESS; + if( unicode_keysym == INPUT_KEY_NONE ) + fuse_event.types.key.native_key = fuse_keysym; + else + fuse_event.types.key.native_key = unicode_keysym; fuse_event.types.key.spectrum_key = fuse_keysym; input_event( &fuse_event ); @@ -262,6 +267,10 @@ if( fuse_keysym == INPUT_KEY_NONE ) return; fuse_event.type = INPUT_EVENT_KEYRELEASE; + /* SDL doesn't provide key release information for UNICODE, assuming that + the values will just be used for dialog boxes et. al. so put in SDL keysym + equivalent and hope for the best */ + fuse_event.types.key.native_key = fuse_keysym; fuse_event.types.key.spectrum_key = fuse_keysym; input_event( &fuse_event ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-03 12:53:52
|
Revision: 284 http://svn.sourceforge.net/fuse-for-macosx/?rev=284&view=rev Author: fredm Date: 2007-01-03 04:53:51 -0800 (Wed, 03 Jan 2007) Log Message: ----------- Make bilinear filter option an independant checkbox again. Modified Paths: -------------- branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib Modified: branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2007-01-02 13:11:37 UTC (rev 283) +++ branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2007-01-03 12:53:51 UTC (rev 284) @@ -11,32 +11,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>1502</integer> + <integer>1489</integer> </dict> <key>NSAccessibilityConnectors</key> <dict> <key>CF$UID</key> - <integer>1499</integer> + <integer>1486</integer> </dict> <key>NSAccessibilityOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1500</integer> + <integer>1487</integer> </dict> <key>NSAccessibilityOidsValues</key> <dict> <key>CF$UID</key> - <integer>1501</integer> + <integer>1488</integer> </dict> <key>NSClassesKeys</key> <dict> <key>CF$UID</key> - <integer>1217</integer> + <integer>1203</integer> </dict> <key>NSClassesValues</key> <dict> <key>CF$UID</key> - <integer>1218</integer> + <integer>1204</integer> </dict> <key>NSConnections</key> <dict> @@ -56,34 +56,34 @@ <key>NSNamesKeys</key> <dict> <key>CF$UID</key> - <integer>1158</integer> + <integer>1143</integer> </dict> <key>NSNamesValues</key> <dict> <key>CF$UID</key> - <integer>1159</integer> + <integer>1144</integer> </dict> <key>NSNextOid</key> - <integer>1058</integer> + <integer>1061</integer> <key>NSObjectsKeys</key> <dict> <key>CF$UID</key> - <integer>1151</integer> + <integer>1136</integer> </dict> <key>NSObjectsValues</key> <dict> <key>CF$UID</key> - <integer>1157</integer> + <integer>1142</integer> </dict> <key>NSOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1219</integer> + <integer>1205</integer> </dict> <key>NSOidsValues</key> <dict> <key>CF$UID</key> - <integer>1220</integer> + <integer>1206</integer> </dict> <key>NSRoot</key> <dict> @@ -142,7 +142,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -160,115 +160,111 @@ </dict> <dict> <key>CF$UID</key> - <integer>806</integer> + <integer>808</integer> </dict> <dict> <key>CF$UID</key> - <integer>816</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>817</integer> </dict> <dict> <key>CF$UID</key> - <integer>821</integer> + <integer>818</integer> </dict> <dict> <key>CF$UID</key> - <integer>824</integer> + <integer>822</integer> </dict> <dict> <key>CF$UID</key> - <integer>827</integer> + <integer>825</integer> </dict> <dict> <key>CF$UID</key> - <integer>830</integer> + <integer>828</integer> </dict> <dict> <key>CF$UID</key> - <integer>833</integer> + <integer>831</integer> </dict> <dict> <key>CF$UID</key> - <integer>836</integer> + <integer>834</integer> </dict> <dict> <key>CF$UID</key> - <integer>839</integer> + <integer>837</integer> </dict> <dict> <key>CF$UID</key> - <integer>842</integer> + <integer>840</integer> </dict> <dict> <key>CF$UID</key> - <integer>845</integer> + <integer>843</integer> </dict> <dict> <key>CF$UID</key> - <integer>848</integer> + <integer>846</integer> </dict> <dict> <key>CF$UID</key> - <integer>851</integer> + <integer>849</integer> </dict> <dict> <key>CF$UID</key> - <integer>854</integer> + <integer>852</integer> </dict> <dict> <key>CF$UID</key> - <integer>857</integer> + <integer>855</integer> </dict> <dict> <key>CF$UID</key> - <integer>860</integer> + <integer>858</integer> </dict> <dict> <key>CF$UID</key> - <integer>863</integer> + <integer>861</integer> </dict> <dict> <key>CF$UID</key> - <integer>866</integer> + <integer>864</integer> </dict> <dict> <key>CF$UID</key> - <integer>869</integer> + <integer>867</integer> </dict> <dict> <key>CF$UID</key> - <integer>872</integer> + <integer>870</integer> </dict> <dict> <key>CF$UID</key> - <integer>875</integer> + <integer>873</integer> </dict> <dict> <key>CF$UID</key> - <integer>878</integer> + <integer>876</integer> </dict> <dict> <key>CF$UID</key> - <integer>881</integer> + <integer>879</integer> </dict> <dict> <key>CF$UID</key> - <integer>884</integer> + <integer>882</integer> </dict> <dict> <key>CF$UID</key> - <integer>892</integer> + <integer>885</integer> </dict> <dict> <key>CF$UID</key> - <integer>899</integer> + <integer>893</integer> </dict> <dict> <key>CF$UID</key> - <integer>902</integer> + <integer>900</integer> </dict> <dict> <key>CF$UID</key> @@ -276,83 +272,83 @@ </dict> <dict> <key>CF$UID</key> - <integer>905</integer> + <integer>904</integer> </dict> <dict> <key>CF$UID</key> - <integer>914</integer> + <integer>906</integer> </dict> <dict> <key>CF$UID</key> - <integer>917</integer> + <integer>915</integer> </dict> <dict> <key>CF$UID</key> - <integer>921</integer> + <integer>918</integer> </dict> <dict> <key>CF$UID</key> - <integer>937</integer> + <integer>922</integer> </dict> <dict> <key>CF$UID</key> - <integer>941</integer> + <integer>938</integer> </dict> <dict> <key>CF$UID</key> - <integer>945</integer> + <integer>942</integer> </dict> <dict> <key>CF$UID</key> - <integer>950</integer> + <integer>946</integer> </dict> <dict> <key>CF$UID</key> - <integer>953</integer> + <integer>951</integer> </dict> <dict> <key>CF$UID</key> - <integer>956</integer> + <integer>954</integer> </dict> <dict> <key>CF$UID</key> - <integer>959</integer> + <integer>957</integer> </dict> <dict> <key>CF$UID</key> - <integer>965</integer> + <integer>960</integer> </dict> <dict> <key>CF$UID</key> - <integer>968</integer> + <integer>966</integer> </dict> <dict> <key>CF$UID</key> - <integer>971</integer> + <integer>969</integer> </dict> <dict> <key>CF$UID</key> - <integer>975</integer> + <integer>972</integer> </dict> <dict> <key>CF$UID</key> - <integer>977</integer> + <integer>976</integer> </dict> <dict> <key>CF$UID</key> - <integer>979</integer> + <integer>978</integer> </dict> <dict> <key>CF$UID</key> - <integer>981</integer> + <integer>980</integer> </dict> <dict> <key>CF$UID</key> - <integer>983</integer> + <integer>982</integer> </dict> <dict> <key>CF$UID</key> - <integer>985</integer> + <integer>984</integer> </dict> <dict> <key>CF$UID</key> @@ -368,27 +364,27 @@ </dict> <dict> <key>CF$UID</key> - <integer>990</integer> + <integer>989</integer> </dict> <dict> <key>CF$UID</key> - <integer>993</integer> + <integer>991</integer> </dict> <dict> <key>CF$UID</key> - <integer>996</integer> + <integer>994</integer> </dict> <dict> <key>CF$UID</key> - <integer>999</integer> + <integer>997</integer> </dict> <dict> <key>CF$UID</key> - <integer>1002</integer> + <integer>1000</integer> </dict> <dict> <key>CF$UID</key> - <integer>1009</integer> + <integer>1003</integer> </dict> <dict> <key>CF$UID</key> @@ -404,7 +400,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>1015</integer> + <integer>1013</integer> </dict> <dict> <key>CF$UID</key> @@ -412,11 +408,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>1019</integer> + <integer>1017</integer> </dict> <dict> <key>CF$UID</key> - <integer>1022</integer> + <integer>1020</integer> </dict> <dict> <key>CF$UID</key> @@ -424,11 +420,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>1026</integer> + <integer>1024</integer> </dict> <dict> <key>CF$UID</key> - <integer>1031</integer> + <integer>1027</integer> </dict> <dict> <key>CF$UID</key> @@ -444,7 +440,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>1037</integer> + <integer>1035</integer> </dict> <dict> <key>CF$UID</key> @@ -452,35 +448,35 @@ </dict> <dict> <key>CF$UID</key> - <integer>1041</integer> + <integer>1039</integer> </dict> <dict> <key>CF$UID</key> - <integer>1046</integer> + <integer>1042</integer> </dict> <dict> <key>CF$UID</key> - <integer>1050</integer> + <integer>1047</integer> </dict> <dict> <key>CF$UID</key> - <integer>1056</integer> + <integer>1051</integer> </dict> <dict> <key>CF$UID</key> - <integer>1061</integer> + <integer>1057</integer> </dict> <dict> <key>CF$UID</key> - <integer>1065</integer> + <integer>1062</integer> </dict> <dict> <key>CF$UID</key> - <integer>1069</integer> + <integer>1066</integer> </dict> <dict> <key>CF$UID</key> - <integer>1071</integer> + <integer>1070</integer> </dict> <dict> <key>CF$UID</key> @@ -488,96 +484,100 @@ </dict> <dict> <key>CF$UID</key> - <integer>1075</integer> + <integer>1073</integer> </dict> <dict> <key>CF$UID</key> - <integer>1078</integer> + <integer>1076</integer> </dict> <dict> <key>CF$UID</key> - <integer>1082</integer> + <integer>1079</integer> </dict> <dict> <key>CF$UID</key> - <integer>1084</integer> + <integer>1083</integer> </dict> <dict> <key>CF$UID</key> - <integer>1086</integer> + <integer>1085</integer> </dict> <dict> <key>CF$UID</key> - <integer>1089</integer> + <integer>1087</integer> </dict> <dict> <key>CF$UID</key> - <integer>1092</integer> + <integer>1090</integer> </dict> <dict> <key>CF$UID</key> - <integer>1094</integer> + <integer>1093</integer> </dict> <dict> <key>CF$UID</key> - <integer>1096</integer> + <integer>1095</integer> </dict> <dict> <key>CF$UID</key> - <integer>1099</integer> + <integer>1097</integer> </dict> <dict> <key>CF$UID</key> - <integer>1102</integer> + <integer>1100</integer> </dict> <dict> <key>CF$UID</key> - <integer>1105</integer> + <integer>1103</integer> </dict> <dict> <key>CF$UID</key> - <integer>1108</integer> + <integer>1106</integer> </dict> <dict> <key>CF$UID</key> - <integer>1112</integer> + <integer>1109</integer> </dict> <dict> <key>CF$UID</key> - <integer>1114</integer> + <integer>1113</integer> </dict> <dict> <key>CF$UID</key> - <integer>1116</integer> + <integer>1115</integer> </dict> <dict> <key>CF$UID</key> - <integer>1118</integer> + <integer>1117</integer> </dict> <dict> <key>CF$UID</key> - <integer>1120</integer> + <integer>1119</integer> </dict> <dict> <key>CF$UID</key> - <integer>1124</integer> + <integer>1121</integer> </dict> <dict> <key>CF$UID</key> - <integer>1131</integer> + <integer>1123</integer> </dict> <dict> <key>CF$UID</key> - <integer>1136</integer> + <integer>1125</integer> </dict> <dict> <key>CF$UID</key> - <integer>1141</integer> + <integer>1128</integer> </dict> <dict> <key>CF$UID</key> - <integer>1146</integer> + <integer>1130</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>1132</integer> + </dict> </array> </dict> <dict> @@ -1072,7 +1072,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>805</integer> + <integer>807</integer> </dict> <key>NSSource</key> <dict> @@ -1084,22 +1084,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>804</integer> + <integer>806</integer> </dict> <key>NSMaxSize</key> <dict> <key>CF$UID</key> - <integer>803</integer> + <integer>805</integer> </dict> <key>NSMinSize</key> <dict> <key>CF$UID</key> - <integer>802</integer> + <integer>804</integer> </dict> <key>NSScreenRect</key> <dict> <key>CF$UID</key> - <integer>801</integer> + <integer>803</integer> </dict> <key>NSViewClass</key> <dict> @@ -1164,7 +1164,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>800</integer> + <integer>802</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1181,7 +1181,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -1191,11 +1191,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>762</integer> + <integer>764</integer> </dict> <dict> <key>CF$UID</key> - <integer>795</integer> + <integer>797</integer> </dict> </array> </dict> @@ -1203,7 +1203,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>761</integer> + <integer>763</integer> </dict> <key>NSAllowTruncatedLabels</key> <true/> @@ -1227,7 +1227,7 @@ <key>NSSelectedTabViewItem</key> <dict> <key>CF$UID</key> - <integer>759</integer> + <integer>761</integer> </dict> <key>NSSubviews</key> <dict> @@ -1251,7 +1251,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -1292,7 +1292,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -1302,6 +1302,10 @@ </dict> <dict> <key>CF$UID</key> + <integer>105</integer> + </dict> + <dict> + <key>CF$UID</key> <integer>109</integer> </dict> </array> @@ -1310,27 +1314,27 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>108</integer> + <integer>104</integer> </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>103</integer> </dict> <key>NSCellClass</key> <dict> <key>CF$UID</key> - <integer>88</integer> + <integer>84</integer> </dict> <key>NSCellSize</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>82</integer> </dict> <key>NSCells</key> <dict> @@ -1352,7 +1356,7 @@ <key>NSIntercellSpacing</key> <dict> <key>CF$UID</key> - <integer>87</integer> + <integer>83</integer> </dict> <key>NSMatrixFlags</key> <integer>1143472128</integer> @@ -1368,15 +1372,13 @@ <key>NSProtoCell</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>85</integer> </dict> <key>NSSelectedCell</key> <dict> <key>CF$UID</key> - <integer>61</integer> + <integer>55</integer> </dict> - <key>NSSelectedRow</key> - <integer>1</integer> <key>NSSuperview</key> <dict> <key>CF$UID</key> @@ -1390,7 +1392,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -1495,7 +1497,7 @@ <key>NSTag</key> <integer>2</integer> </dict> - <string>Normal size</string> + <string>No filter</string> <dict> <key>$class</key> <dict> @@ -2040,15 +2042,10 @@ <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSAlternateImage</key> - <dict> - <key>CF$UID</key> - <integer>18</integer> - </dict> <key>NSButtonFlags</key> - <integer>1211912703</integer> + <integer>-2034450177</integer> <key>NSButtonFlags2</key> - <integer>2</integer> + <integer>7</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> @@ -2068,11 +2065,6 @@ <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSNormalImage</key> - <dict> - <key>CF$UID</key> - <integer>81</integer> - </dict> <key>NSPeriodicDelay</key> <integer>400</integer> <key>NSPeriodicInterval</key> @@ -2085,37 +2077,8 @@ </dict> <string>Bilinear filter</string> <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>84</integer> - </dict> - <key>NSClassName</key> - <dict> - <key>CF$UID</key> - <integer>82</integer> - </dict> - <key>NSResourceName</key> - <dict> - <key>CF$UID</key> - <integer>83</integer> - </dict> - </dict> - <string>NSImage</string> - <string>NSSwitch</string> - <dict> <key>$classes</key> <array> - <string>NSCustomResource</string> - <string>%NSCustomResource</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSCustomResource</string> - </dict> - <dict> - <key>$classes</key> - <array> <string>NSMutableArray</string> <string>NSArray</string> <string>NSObject</string> @@ -2148,12 +2111,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>86</integer> </dict> <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>91</integer> + <integer>87</integer> </dict> <key>NSPeriodicDelay</key> <integer>400</integer> @@ -2170,24 +2133,24 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>98</integer> </dict> <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>96</integer> </dict> <key>NSImageFlags</key> <integer>549453824</integer> <key>NSReps</key> <dict> <key>CF$UID</key> - <integer>93</integer> + <integer>89</integer> </dict> <key>NSSize</key> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>88</integer> </dict> </dict> <string>{18, 18}</string> @@ -2195,13 +2158,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>90</integer> </dict> </array> </dict> @@ -2209,17 +2172,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>95</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>91</integer> </dict> <dict> <key>CF$UID</key> - <integer>96</integer> + <integer>92</integer> </dict> </array> </dict> @@ -2228,12 +2191,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>94</integer> </dict> <key>NSTIFFRepresentation</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>93</integer> </dict> </dict> <data> @@ -2381,7 +2344,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSColorSpace</key> <integer>3</integer> @@ -2413,22 +2376,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSCatalogName</key> <dict> <key>CF$UID</key> - <integer>104</integer> + <integer>100</integer> </dict> <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>106</integer> + <integer>102</integer> </dict> <key>NSColorName</key> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>101</integer> </dict> <key>NSColorSpace</key> <integer>6</integer> @@ -2439,7 +2402,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSColorSpace</key> <integer>3</integer> @@ -2452,7 +2415,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSColorSpace</key> <integer>3</integer> @@ -2483,6 +2446,88 @@ <key>NSCell</key> <dict> <key>CF$UID</key> + <integer>107</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>106</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{18, 120}, {151, 18}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>22</integer> + </dict> + <key>NSAlternateContents</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSAlternateImage</key> + <dict> + <key>CF$UID</key> + <integer>18</integer> + </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>2</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>108</integer> + </dict> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>105</integer> + </dict> + <key>NSKeyEquivalent</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSPeriodicDelay</key> + <integer>200</integer> + <key>NSPeriodicInterval</key> + <integer>25</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + </dict> + <string>Black and white TV</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>23</integer> + </dict> + <key>NSCell</key> + <dict> + <key>CF$UID</key> <integer>111</integer> </dict> <key>NSEnabled</key> @@ -2555,7 +2600,7 @@ <integer>15</integer> </dict> </dict> - <string>Black and white TV</string> + <string>Bilinear filter</string> <string>{{10, 7}, {585, 299}}</string> <dict> <key>$classes</key> @@ -2572,7 +2617,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -2598,15 +2643,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>588</integer> + <integer>590</integer> </dict> <dict> <key>CF$UID</key> - <integer>671</integer> + <integer>673</integer> </dict> <dict> <key>CF$UID</key> - <integer>759</integer> + <integer>761</integer> </dict> </array> </dict> @@ -2619,7 +2664,7 @@ <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSIdentifier</key> <dict> @@ -2655,7 +2700,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -3132,12 +3177,12 @@ <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>103</integer> </dict> <key>NSCellClass</key> <dict> @@ -3204,7 +3249,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -3491,7 +3536,7 @@ <integer>1</integer> <key>NS.mantissa</key> <data> - AQCAAbgAAAAAAIABAFuBkA== + AQDkFlCCQQDI1/+/lmKlkA== </data> <key>NS.mantissa.bo</key> <integer>1</integer> @@ -4366,7 +4411,7 @@ <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSIdentifier</key> <dict> @@ -4424,7 +4469,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -4946,7 +4991,7 @@ <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellFlags</key> <integer>67239424</integer> @@ -4978,12 +5023,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSCatalogName</key> <dict> <key>CF$UID</key> - <integer>104</integer> + <integer>100</integer> </dict> <key>NSColor</key> <dict> @@ -5003,7 +5048,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSColorSpace</key> <integer>3</integer> @@ -5047,7 +5092,7 @@ <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSLabel</key> <dict> @@ -5091,7 +5136,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -5417,7 +5462,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -5458,7 +5503,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -5492,17 +5537,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>108</integer> + <integer>104</integer> </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>103</integer> </dict> <key>NSCellClass</key> <dict> @@ -5570,7 +5615,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -5762,12 +5807,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>98</integer> </dict> <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>96</integer> </dict> <key>NSImageFlags</key> <integer>549453824</integer> @@ -5787,7 +5832,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -5801,13 +5846,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>95</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>91</integer> </dict> <dict> <key>CF$UID</key> @@ -5819,7 +5864,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>94</integer> </dict> <key>NSTIFFRepresentation</key> <dict> @@ -5913,12 +5958,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>98</integer> </dict> <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>96</integer> </dict> <key>NSImageFlags</key> <integer>549453824</integer> @@ -5938,7 +5983,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -5952,13 +5997,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>95</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>91</integer> </dict> <dict> <key>CF$UID</key> @@ -5970,7 +6015,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>94</integer> </dict> <key>NSTIFFRepresentation</key> <dict> @@ -6064,12 +6109,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>98</integer> </dict> <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>96</integer> </dict> <key>NSImageFlags</key> <integer>549453824</integer> @@ -6089,7 +6134,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -6103,13 +6148,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>95</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>91</integer> </dict> <dict> <key>CF$UID</key> @@ -6121,7 +6166,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>94</integer> </dict> <key>NSTIFFRepresentation</key> <dict> @@ -6215,12 +6260,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>98</integer> </dict> <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>96</integer> </dict> <key>NSImageFlags</key> <integer>549453824</integer> @@ -6240,7 +6285,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -6254,13 +6299,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>95</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>91</integer> </dict> <dict> <key>CF$UID</key> @@ -6272,7 +6317,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>94</integer> </dict> <key>NSTIFFRepresentation</key> <dict> @@ -6409,7 +6454,7 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>86</integer> </dict> <key>NSNormalImage</key> <dict> @@ -6763,12 +6808,12 @@ <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>103</integer> </dict> <key>NSCellClass</key> <dict> @@ -6835,7 +6880,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -7278,17 +7323,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSCatalogName</key> <dict> <key>CF$UID</key> - <integer>104</integer> + <integer>100</integer> </dict> <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>103</integer> </dict> <key>NSColorName</key> <dict> @@ -7303,7 +7348,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSColorSpace</key> <integer>3</integer> @@ -7377,7 +7422,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -7418,7 +7463,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -7650,12 +7695,12 @@ <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>103</integer> </dict> <key>NSCellClass</key> <dict> @@ -7722,7 +7767,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -8030,7 +8075,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSColorSpace</key> <integer>3</integer> @@ -8050,7 +8095,7 @@ <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSLabel</key> <dict> @@ -8094,7 +8139,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -8289,12 +8334,12 @@ <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>103</integer> </dict> <key>NSCellClass</key> <dict> @@ -8361,7 +8406,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -8842,12 +8887,12 @@ <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>587</integer> + <integer>589</integer> </dict> <key>NSTabView</key> <dict> @@ -8869,7 +8914,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>586</integer> + <integer>588</integer> </dict> <key>NSNextResponder</key> <dict> @@ -8886,7 +8931,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -8896,11 +8941,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>513</integer> + <integer>515</integer> </dict> <dict> <key>CF$UID</key> - <integer>556</integer> + <integer>558</integer> </dict> </array> </dict> @@ -8922,7 +8967,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>507</integer> + <integer>509</integer> </dict> <key>NSNextResponder</key> <dict> @@ -8932,7 +8977,7 @@ <key>NSOffsets</key> <dict> <key>CF$UID</key> - <integer>508</integer> + <integer>510</integer> </dict> <key>NSSubviews</key> <dict> @@ -8947,7 +8992,7 @@ <key>NSTitleCell</key> <dict> <key>CF$UID</key> - <integer>509</integer> + <integer>511</integer> </dict> <key>NSTitlePosition</key> <integer>2</integer> @@ -8958,7 +9003,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -8977,7 +9022,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>506</integer> + <integer>508</integer> </dict> <key>NSNextResponder</key> <dict> @@ -8999,7 +9044,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -9009,19 +9054,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>478</integer> + <integer>480</integer> </dict> <dict> <key>CF$UID</key> - <integer>493</integer> + <integer>495</integer> </dict> <dict> <key>CF$UID</key> - <integer>497</integer> + <integer>499</integer> </dict> <dict> <key>CF$UID</key> - <integer>501</integer> + <integer>503</integer> </dict> </array> </dict> @@ -9029,7 +9074,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>477</integer> + <integer>479</integer> </dict> <key>NSCell</key> <dict> @@ -9061,7 +9106,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>476</integer> + <integer>478</integer> </dict> <key>NSAlternateContents</key> <dict> @@ -9157,12 +9202,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>472</integer> + <integer>474</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>471</integer> + <integer>473</integer> </dict> <key>NSKeyEquiv</key> <dict> @@ -9179,7 +9224,7 @@ <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>469</integer> + <integer>471</integer> </dict> <key>NSMnemonicLoc</key> <integer>2147483647</integer> @@ -9205,17 +9250,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>475</integer> + <integer>477</integer> </dict> <key>NSMenuItems</key> <dict> <key>CF$UID</key> - <integer>474</integer> + <integer>476</integer> </dict> <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>473</integer> + <integer>475</integer> </dict> </dict> <string>Item1</string> @@ -9223,35 +9268,46 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>470</integer> </dict> <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>468</integer> </dict> <key>NSResourceName</key> <dict> <key>CF$UID</key> - <integer>468</integer> + <integer>469</integer> </dict> </dict> + <string>NSImage</string> <string>NSMenuCheckmark</string> <dict> + <key>$classes</key> + <array> + <string>NSCustomResource</string> + <string>%NSCustomResource</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSCustomResource</string> + </dict> + <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>470</integer> </dict> <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>468</integer> </dict> <key>NSResourceName</key> <dict> <key>CF$UID</key> - <integer>470</integer> + <integer>472</integer> </dict> </dict> <string>NSMenuMixedState</string> @@ -9278,7 +9334,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> @@ -9328,19 +9384,19 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>477</integer> + <integer>479</integer> </dict> <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>480</integer> + <integer>482</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>479</integer> + <integer>481</integer> </dict> <key>NSNextResponder</key> <dict> @@ -9360,7 +9416,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>476</integer> + <integer>478</integer> </dict> <key>NSAlternateContents</key> <dict> @@ -9387,22 +9443,22 @@ <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>478</integer> + <integer>480</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>481</integer> + <integer>483</integer> </dict> <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>483</integer> + <integer>485</integer> </dict> <key>NSMenuItem</key> <dict> <key>CF$UID</key> - <integer>482</integer> + <integer>484</integer> </dict> <key>NSPeriodicDelay</key> <integer>400</integer> @@ -9431,12 +9487,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>472</integer> + <integer>474</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>484</integer> + <integer>486</integer> </dict> <key>NSKeyEquiv</key> <dict> @@ -9448,12 +9504,12 @@ <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>483</integer> + <integer>485</integer> </dict> <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>469</integer> + <integer>471</integer> </dict> <key>NSMnemonicLoc</key> <integer>2147483647</integer> @@ -9467,7 +9523,7 @@ <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>480</integer> + <integer>482</integer> </dict> <key>NSTitle</key> <dict> @@ -9479,17 +9535,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>475</integer> + <integer>477</integer> </dict> <key>NSMenuItems</key> <dict> <key>CF$UID</key> - <integer>486</integer> + <integer>488</integer> </dict> <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>485</integer> + <integer>487</integer> </dict> </dict> <string>_popUpItemAction:</string> @@ -9506,21 +9562,21 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>482</integer> + <integer>484</integer> </dict> <dict> <key>CF$UID</key> - <integer>487</integer> + <integer>489</integer> </dict> <dict> <key>CF$UID</key> - <integer>490</integer> + <integer>492</integer> </dict> </array> </dict> @@ -9528,12 +9584,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>472</integer> + <integer>474</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>489</integer> + <integer>491</integer> </dict> <key>NSKeyEquiv</key> <dict> @@ -9545,12 +9601,12 @@ <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>483</integer> + <integer>485</integer> </dict> <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>469</integer> + <integer>471</integer> </dict> <key>NSMnemonicLoc</key> <integer>2147483647</integer> @@ -9562,12 +9618,12 @@ <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>480</integer> + <integer>482</integer> </dict> <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>488</integer> + <integer>490</integer> </dict> </dict> <string>Item2</string> @@ -9576,12 +9632,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>472</integer> + <integer>474</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>492</integer> + <integer>494</integer> </dict> <key>NSKeyEquiv</key> <dict> @@ -9593,12 +9649,12 @@ <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>483</integer> + <integer>485</integer> </dict> <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>469</integer> + <integer>471</integer> </dict> <key>NSMnemonicLoc</key> <integer>2147483647</integer> @@ -9610,12 +9666,12 @@ <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>480</integer> + <integer>482</integer> </dict> <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>491</integer> + <integer>493</integer> </dict> </dict> <string>Item3</string> @@ -9629,14 +9685,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>495</integer> + <integer>497</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>494</integer> + <integer>496</integer> </dict> <key>NSNextResponder</key> <dict> @@ -9661,7 +9717,7 @@ <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellFlags</key> <integer>67239424</integer> @@ -9670,12 +9726,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>496</integer> + <integer>498</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>493</integer> + <integer>495</integer> </dict> <key>NSSupport</key> <dict> @@ -9699,14 +9755,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>499</integer> + <integer>501</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>498</integer> + <integer>500</integer> </dict> <key>NSNextResponder</key> <dict> @@ -9731,7 +9787,7 @@ <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>99</integer> </dict> <key>NSCellFlags</key> <integer>67239424</integer> @@ -9740,12 +9796,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>500</integer> + <integer>502</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>497</integer> + <integer>499</integer> </dict> <key>NSSupport</key> <dict> @@ -9769,14 +9825,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>503</integer> + <integer>505</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>502</integer> + <integer>504</integer> </dict> <key>NSNextResponder</key> <dict> @@ -9821,17 +9877,17 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>504</integer> + <integer>506</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>501</integer> + <integer>503</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>505</integer> + <integer>507</integer> </dict> <key>NSPeriodicDelay</key> <integer>200</integer> @@ -9876,17 +9932,17 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>510</integer> + <integer>512</integer> </dict> <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>511</integer> + <integer>513</integer> </dict> <key>NSTextColor</key> <dict> <key>CF$UID</key> - <integer>512</integer> + <integer>514</integer> </dict> </dict> <string>Joystick 2</string> @@ -9910,7 +9966,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>97</integer> </dict> <key>NSColorSpace</key> <integer>3</integer> @@ -9932,12 +9988,12 @@ <key>NSContentView</key> <dict> <key>CF$UID</key> - <integer>515</integer> + <integer>517</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>551</integer> + <integer>553</integer> </dict> <key>NSNextResponder</key> <dict> @@ -9947,12 +10003,12 @@ <key>NSOffsets</key> <dict> <key>CF$UID</key> - <integer>552</integer> + <integer>554</integer> </dict> <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>514</integer> + <integer>516</integer> </dict> <key>NSSuperview</key> <dict> @@ -9962,7 +10018,7 @@ <key>NSTitleCell</key> <dict> <key>CF$UID</key> - <integer>553</integer> + <integer>555</integer> </dict> <key>NSTitlePosition</key> <integer>2</integer> @@ -9973,13 +10029,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>515</integer> + <integer>517</integer> </dict> </array> </dict> @@ -9992,51 +10048,51 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>550</integer> + <integer>552</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>513</integer> + <integer>515</integer> </dict> <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>516</integer> + <integer>518</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>513</integer> + <integer>515</integer> </dict> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>517</integer> + <integer>519</integer> </dict> <dict> <key>CF$UID</key> - <integer>526</integer> + <integer>528</integer> </dict> <dict> <key>CF$UID</key> - <integer>539</integer> + <integer>541</integer> </dict> <dict> <key>CF$UID</key> - <integer>542</integer> + <integer>544</integer> </dict> <dict> <key>CF$UID</key> - <integer>546</integer> + <integer>548</integer> </dict> </array> </dict> @@ -10044,29 +10100,29 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>477</integer> + <integer>479</integer> </dict> <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>519</integer> + <integer>521</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>518</integer> + <integer>520</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>515</integer> + <integer>517</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>515</integer> + <integer>517</integer> </dict> <key>NSvFlags</key> <integer>256</integer> @@ -10076,7 +10132,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>476</integer> + <integer>478</integer> </dict> <key>NSAlternateContents</key> <dict> @@ -10103,22 +10159,22 @@ <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>517</integer> + <integer>519</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>520</integer> + <integer>522</integer> </dict> <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>522</integer> + <integer>524</integer> </dict> <key>NSMenuItem</key> <dict> <key>CF$UID</key> - <integer>521</integer> + <integer>523</integer> </dict> <key>NSPeriodicDelay</key> <integer>400</integer> @@ -10147,12 +10203,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>472</integer> + <integer>474</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>523</integer> + <integer>525</integer> </dict> <key>NSKeyEquiv</key> <dict> @@ -10164,12 +10220,12 @@ <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>522</integer> + <integer>524</integer> </dict> <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>469</integer> + <integer>471</integer> </dict> <key>NSMnemonicLoc</key> <integer>2147483647</integer> @@ -10183,7 +10239,7 @@ <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>519</integer> + <integer>521</integer> </dict> <key>NSTitle</key> <dict> @@ -10195,17 +10251,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>475</integer> + <integer>477</integer> </dict> <key>NSMenuItems</key> <dict> <key>CF$UID</key> - <integer>525</integer> + <integer>527</integer> </dict> <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>524</integer> + <integer>526</integer> </dict> </dict> <string>_popUpItemAction:</string> @@ -10222,13 +10278,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>521</integer> + <integer>523</integer> </dict> </array> </dict> @@ -10236,29 +10292,29 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>477</integer> + <integer>479</integer> </dict> <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>528</integer> + <integer>530</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>527</integer> + <integer>529</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>515</integer> + <integer>517</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>515</integer> + <integer>517</integer> </dict> <key>NSvFlags</key> <integer>256</integer> @@ -10268,7 +10324,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>476</integer> + <integer>478</integer> </dict> <key>NSAlternateContents</key> <dict> @@ -10295,22 +10351,22 @@ <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>526</integer> + <integer>528</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>529</integer> + <integer>531</integer> </dict> <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>531</integer> + <integer>533</integer> </dict> <key>NSMenuItem</key> <dict> <key>CF$UID</key> - <integer>530</integer> + <integer>532</integer> </dict> <key>NSPeriodicDelay</key> <integer>400</integer> @@ -10339,12 +10395,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>472</integer> + <integer>474</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>532</integer> + <integer>534</integer> </dict> <key>NSKeyEquiv</key> <dict> @@ -10356,12 +10412,12 @@ <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>531</integer> + <integer>533</integer> </dict> <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>469</integer> + <integer>471</integer> </dict> <key>NSMnemonicLoc</key> <integer>2147483647</integer> @@ -10375,7 +10431,7 @@ <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>528</integer> + <integer>530</integer> </dict> <key>NSTitle</key> <dict> @@ -10387,17 +10443,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>475</integer> + <integer>477</integer> </dict> <key>NSMenuItems</key> <dict> <key>CF$UID</key> - <integer>534</integer> + <integer>536</integer> </dict> <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>533</integer> + <integer>535</integer> </dict> </dict> <string>_popUpItemAction:</string> @@ -10414,21 +10470,21 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>81</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>530</integer> + <integer>532</integer> </dict> <dict> <key>CF$UID</key> - <integer>535</integer> + <integer>537</integer> </dict> <dict> <key>CF$UID</key> - <integer>537</integer> + <integer>539</integer> </dict> </array> </dict> @@ -10436,12 +10492,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>472</integer> + <integer>474</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>536</integer> + <integer>538</integer> </dict> <key>NSKeyEquiv</key> <dict> @@ -10453,12 +10509,12 @@ <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>531</integer> + <integer>533</integer> </dict> <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>469</integer> + <integer>471</integer> </dict> <key>NSMnemonicLoc</key> <integer>2147483647</integer> @@ -10470,12 +10526,12 @@ <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>528</integer> + <integer>530</integer> </dict> <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>488</integer> + <integer>490</integer> </dict> </dict> <string>_popUpItemAction:</string> @@ -10483,12 +10539,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>472</integer> + <integer>474</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>538</integer> + <integer>540</integer> </dict> <key>NSKeyEquiv</key> <dict> @@ -10500,12 +10556,12 @@ <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>531</integer> + <integer>533</integer> </dict> <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>469</integer> + <integer>471</integer> </dict> <key>NSMnemonicLoc</key> <integer>2147483647</integer> @@ -10517,12 +10573,12 @@ <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>528</integer> + <integer>530</integer> </dict> <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>491</integer> + <integer>493</integer> </dict> </dict> <string>_popUpItemAction:</string> @@ -10535,24 +10591,24 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>541</integer> + <integer>543</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>540</integer> + <integer>542</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>515</integer> + <integer>517</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>515</integer> + <integer>517</integer> </dict> <key>NSvFlags</key> <integer>256</integer> @@ -10567,7 +10623,7 @@ <k... [truncated message content] |
From: <fr...@us...> - 2007-01-02 13:11:36
|
Revision: 283 http://svn.sourceforge.net/fuse-for-macosx/?rev=283&view=rev Author: fredm Date: 2007-01-02 05:11:37 -0800 (Tue, 02 Jan 2007) Log Message: ----------- Grab mouse in fullscreen mode (and release when going back to windowed) Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-01-02 12:58:11 UTC (rev 282) +++ branches/fusegl/fuse/TODO 2007-01-02 13:11:37 UTC (rev 283) @@ -14,7 +14,7 @@ X Fix scalers X Add support for bilinear etc. OpenGL filters X Add option to snap window size to 1x, 2x, 3x -* Grab mouse in fullscreen mode +X Grab mouse in fullscreen mode * Use sheets rather than modal dialogs * Run emulation in seperate thread to avoid sound glitches when menus are selected or window is minimised Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-02 12:58:11 UTC (rev 282) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-02 13:11:37 UTC (rev 283) @@ -58,6 +58,7 @@ [windowedWindow makeKeyAndOrderFront: self]; [windowedWindow makeFirstResponder: self]; settings_current.full_screen = 0; + if( ui_mouse_grabbed ) ui_mouse_grabbed = ui_mouse_release( 0 ); } else { // settings_current.full_screen == 0 unsigned int windowStyle; NSRect contentRect; @@ -77,6 +78,7 @@ [fullscreenWindow setLevel: NSScreenSaverWindowLevel - 1]; [fullscreenWindow makeFirstResponder:self]; settings_current.full_screen = 1; + if( !ui_mouse_grabbed ) ui_mouse_grabbed = ui_mouse_grab( 0 ); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-02 12:58:10
|
Revision: 282 http://svn.sourceforge.net/fuse-for-macosx/?rev=282&view=rev Author: fredm Date: 2007-01-02 04:58:11 -0800 (Tue, 02 Jan 2007) Log Message: ----------- Add zoom for common screensizes and ratios. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-01-02 12:44:43 UTC (rev 281) +++ branches/fusegl/fuse/TODO 2007-01-02 12:58:11 UTC (rev 282) @@ -13,7 +13,7 @@ X Restore fullscreen support X Fix scalers X Add support for bilinear etc. OpenGL filters -* Add option to snap window size to 1x, 2x, 3x GL_NEAREST filter +X Add option to snap window size to 1x, 2x, 3x * Grab mouse in fullscreen mode * Use sheets rather than modal dialogs * Run emulation in seperate thread to avoid sound glitches when menus are Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2007-01-02 12:44:43 UTC (rev 281) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2007-01-02 12:58:11 UTC (rev 282) @@ -1,7 +1,7 @@ { IBClasses = ( { - ACTIONS = {fullscreen = id; }; + ACTIONS = {fullscreen = id; zoom = id; }; CLASS = DisplayOpenGLView; LANGUAGE = ObjC; SUPERCLASS = NSOpenGLView; Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-02 12:44:43 UTC (rev 281) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-02 12:58:11 UTC (rev 282) @@ -58,6 +58,7 @@ +(DisplayOpenGLView *) instance; -(IBAction) fullscreen:(id)sender; +-(IBAction) zoom:(id)sender; -(void) setViewPort:(NSRect)rect; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-02 12:44:43 UTC (rev 281) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-02 12:58:11 UTC (rev 282) @@ -81,6 +81,32 @@ } } +-(IBAction) zoom:(id)sender +{ + NSSize size; + + switch( [sender tag] ) { + case 1: /* 320x240 */ + size.width = 320; + size.height = 240; + break; + case 2: /* 640x480 */ + size.width = 640; + size.height = 480; + break; + case 3: /* 960x720 */ + size.width = 960; + size.height = 720; + break; + case 0: + default: /* Actual size */ + size.width = screenTex.image_width; + size.height = screenTex.image_height; + } + + [[self window] setContentSize:size]; +} + -(id) initWithFrame:(NSRect)frameRect { /* Init pixel format attribs */ @@ -226,8 +252,6 @@ glMatrixMode( GL_PROJECTION ); glLoadIdentity(); - gluOrtho2D( 0, rect.size.width, 0, rect.size.height ); - glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-02 12:44:46
|
Revision: 281 http://svn.sourceforge.net/fuse-for-macosx/?rev=281&view=rev Author: fredm Date: 2007-01-02 04:44:43 -0800 (Tue, 02 Jan 2007) Log Message: ----------- Don't need position variable any more. Modified Paths: -------------- branches/fusegl/fuse/ui/cocoa/cocoaui.m Modified: branches/fusegl/fuse/ui/cocoa/cocoaui.m =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoaui.m 2007-01-02 12:25:42 UTC (rev 280) +++ branches/fusegl/fuse/ui/cocoa/cocoaui.m 2007-01-02 12:44:43 UTC (rev 281) @@ -40,9 +40,6 @@ #include "tape.h" #include "ui/scaler/scaler.h" -/* Last position of the cursor before we hide it */ -static NSPoint position; - int ui_init( int *argc, char ***argv ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-02 12:25:50
|
Revision: 280 http://svn.sourceforge.net/fuse-for-macosx/?rev=280&view=rev Author: fredm Date: 2007-01-02 04:25:42 -0800 (Tue, 02 Jan 2007) Log Message: ----------- Add support for setting bilinear filtering in preferences, delete obsolete scalers. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/settings.dat Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-01-02 12:20:15 UTC (rev 279) +++ branches/fusegl/fuse/TODO 2007-01-02 12:25:42 UTC (rev 280) @@ -12,7 +12,7 @@ X Make it possible to constrain Speccy image to "correct" aspect ratio X Restore fullscreen support X Fix scalers -* Add support for bilinear etc. OpenGL filters +X Add support for bilinear etc. OpenGL filters * Add option to snap window size to 1x, 2x, 3x GL_NEAREST filter * Grab mouse in fullscreen mode * Use sheets rather than modal dialogs @@ -24,5 +24,6 @@ * Fix screen updating during fastloading * Put in latest hq[23]x filters (HQ2x_555 from ScummVM should do the trick) * Make border display optional +* Quit keyhandling when command key is pressed $Id: TODO,v 1.4 2004/03/02 13:38:08 pak21 Exp $ Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-02 12:20:15 UTC (rev 279) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-02 12:25:42 UTC (rev 280) @@ -142,6 +142,8 @@ [[NSNotificationCenter defaultCenter] removeObserver:self]; + int old_bilinear = settings_current.bilinear_filter; + /* Values in shared defaults have been updated, pass them onto Fuse */ read_config_file( &settings_current ); @@ -152,8 +154,9 @@ // B&W TV status may have changed display_refresh_all(); - if( ( current_scaler != scaler_get_type(settings_current.start_scaler_mode) ) - && !scaler_select_id(settings_current.start_scaler_mode) ) { + if( ( ( current_scaler != scaler_get_type(settings_current.start_scaler_mode) ) + && !scaler_select_id(settings_current.start_scaler_mode) ) || + old_bilinear != settings_current.bilinear_filter ) { uidisplay_hotswap_gfx_mode(); } Modified: branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2007-01-02 12:20:15 UTC (rev 279) +++ branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2007-01-02 12:25:42 UTC (rev 280) @@ -11,32 +11,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>1487</integer> + <integer>1502</integer> </dict> <key>NSAccessibilityConnectors</key> <dict> <key>CF$UID</key> - <integer>1484</integer> + <integer>1499</integer> </dict> <key>NSAccessibilityOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1485</integer> + <integer>1500</integer> </dict> <key>NSAccessibilityOidsValues</key> <dict> <key>CF$UID</key> - <integer>1486</integer> + <integer>1501</integer> </dict> <key>NSClassesKeys</key> <dict> <key>CF$UID</key> - <integer>1197</integer> + <integer>1217</integer> </dict> <key>NSClassesValues</key> <dict> <key>CF$UID</key> - <integer>1198</integer> + <integer>1218</integer> </dict> <key>NSConnections</key> <dict> @@ -56,34 +56,34 @@ <key>NSNamesKeys</key> <dict> <key>CF$UID</key> - <integer>1138</integer> + <integer>1158</integer> </dict> <key>NSNamesValues</key> <dict> <key>CF$UID</key> - <integer>1139</integer> + <integer>1159</integer> </dict> <key>NSNextOid</key> - <integer>991</integer> + <integer>1058</integer> <key>NSObjectsKeys</key> <dict> <key>CF$UID</key> - <integer>1131</integer> + <integer>1151</integer> </dict> <key>NSObjectsValues</key> <dict> <key>CF$UID</key> - <integer>1137</integer> + <integer>1157</integer> </dict> <key>NSOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1199</integer> + <integer>1219</integer> </dict> <key>NSOidsValues</key> <dict> <key>CF$UID</key> - <integer>1200</integer> + <integer>1220</integer> </dict> <key>NSRoot</key> <dict> @@ -142,7 +142,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>85</integer> </dict> <key>NS.objects</key> <array> @@ -160,118 +160,110 @@ </dict> <dict> <key>CF$UID</key> - <integer>805</integer> + <integer>806</integer> </dict> <dict> <key>CF$UID</key> - <integer>812</integer> + <integer>816</integer> </dict> <dict> <key>CF$UID</key> - <integer>813</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>817</integer> </dict> <dict> <key>CF$UID</key> - <integer>820</integer> + <integer>821</integer> </dict> <dict> <key>CF$UID</key> - <integer>823</integer> + <integer>824</integer> </dict> <dict> <key>CF$UID</key> - <integer>826</integer> + <integer>827</integer> </dict> <dict> <key>CF$UID</key> - <integer>829</integer> + <integer>830</integer> </dict> <dict> <key>CF$UID</key> - <integer>832</integer> + <integer>833</integer> </dict> <dict> <key>CF$UID</key> - <integer>835</integer> + <integer>836</integer> </dict> <dict> <key>CF$UID</key> - <integer>838</integer> + <integer>839</integer> </dict> <dict> <key>CF$UID</key> - <integer>841</integer> + <integer>842</integer> </dict> <dict> <key>CF$UID</key> - <integer>844</integer> + <integer>845</integer> </dict> <dict> <key>CF$UID</key> - <integer>847</integer> + <integer>848</integer> </dict> <dict> <key>CF$UID</key> - <integer>850</integer> + <integer>851</integer> </dict> <dict> <key>CF$UID</key> - <integer>853</integer> + <integer>854</integer> </dict> <dict> <key>CF$UID</key> - <integer>856</integer> + <integer>857</integer> </dict> <dict> <key>CF$UID</key> - <integer>859</integer> + <integer>860</integer> </dict> <dict> <key>CF$UID</key> - <integer>862</integer> + <integer>863</integer> </dict> <dict> <key>CF$UID</key> - <integer>865</integer> + <integer>866</integer> </dict> <dict> <key>CF$UID</key> - <integer>868</integer> + <integer>869</integer> </dict> <dict> <key>CF$UID</key> - <integer>871</integer> + <integer>872</integer> </dict> <dict> <key>CF$UID</key> - <integer>874</integer> + <integer>875</integer> </dict> <dict> <key>CF$UID</key> - <integer>877</integer> + <integer>878</integer> </dict> <dict> <key>CF$UID</key> - <integer>880</integer> + <integer>881</integer> </dict> <dict> <key>CF$UID</key> - <integer>888</integer> + <integer>884</integer> </dict> <dict> <key>CF$UID</key> - <integer>895</integer> + <integer>892</integer> </dict> <dict> <key>CF$UID</key> - <integer>897</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>899</integer> </dict> <dict> @@ -280,126 +272,122 @@ </dict> <dict> <key>CF$UID</key> - <integer>904</integer> + <integer>903</integer> </dict> <dict> <key>CF$UID</key> - <integer>906</integer> + <integer>905</integer> </dict> <dict> <key>CF$UID</key> - <integer>908</integer> + <integer>914</integer> </dict> <dict> <key>CF$UID</key> - <integer>910</integer> + <integer>917</integer> </dict> <dict> <key>CF$UID</key> - <integer>912</integer> + <integer>921</integer> </dict> <dict> <key>CF$UID</key> - <integer>914</integer> + <integer>937</integer> </dict> <dict> <key>CF$UID</key> - <integer>916</integer> + <integer>941</integer> </dict> <dict> <key>CF$UID</key> - <integer>918</integer> + <integer>945</integer> </dict> <dict> <key>CF$UID</key> - <integer>924</integer> + <integer>950</integer> </dict> <dict> <key>CF$UID</key> - <integer>927</integer> + <integer>953</integer> </dict> <dict> <key>CF$UID</key> - <integer>928</integer> + <integer>956</integer> </dict> <dict> <key>CF$UID</key> - <integer>930</integer> + <integer>959</integer> </dict> <dict> <key>CF$UID</key> - <integer>939</integer> + <integer>965</integer> </dict> <dict> <key>CF$UID</key> - <integer>942</integer> + <integer>968</integer> </dict> <dict> <key>CF$UID</key> - <integer>946</integer> + <integer>971</integer> </dict> <dict> <key>CF$UID</key> - <integer>962</integer> + <integer>975</integer> </dict> <dict> <key>CF$UID</key> - <integer>966</integer> + <integer>977</integer> </dict> <dict> <key>CF$UID</key> - <integer>970</integer> + <integer>979</integer> </dict> <dict> <key>CF$UID</key> - <integer>974</integer> + <integer>981</integer> </dict> <dict> <key>CF$UID</key> - <integer>977</integer> + <integer>983</integer> </dict> <dict> <key>CF$UID</key> - <integer>980</integer> + <integer>985</integer> </dict> <dict> <key>CF$UID</key> - <integer>983</integer> + <integer>986</integer> </dict> <dict> <key>CF$UID</key> - <integer>989</integer> + <integer>987</integer> </dict> <dict> <key>CF$UID</key> - <integer>992</integer> + <integer>988</integer> </dict> <dict> <key>CF$UID</key> - <integer>995</integer> + <integer>990</integer> </dict> <dict> <key>CF$UID</key> - <integer>999</integer> + <integer>993</integer> </dict> <dict> <key>CF$UID</key> - <integer>1001</integer> + <integer>996</integer> </dict> <dict> <key>CF$UID</key> - <integer>1003</integer> + <integer>999</integer> </dict> <dict> <key>CF$UID</key> - <integer>1005</integer> + <integer>1002</integer> </dict> <dict> <key>CF$UID</key> - <integer>1007</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>1009</integer> </dict> <dict> @@ -416,18 +404,22 @@ </dict> <dict> <key>CF$UID</key> - <integer>1014</integer> + <integer>1015</integer> </dict> <dict> <key>CF$UID</key> - <integer>1017</integer> + <integer>1016</integer> </dict> <dict> <key>CF$UID</key> - <integer>1020</integer> + <integer>1019</integer> </dict> <dict> <key>CF$UID</key> + <integer>1022</integer> + </dict> + <dict> + <key>CF$UID</key> <integer>1023</integer> </dict> <dict> @@ -436,31 +428,31 @@ </dict> <dict> <key>CF$UID</key> - <integer>1033</integer> + <integer>1031</integer> </dict> <dict> <key>CF$UID</key> - <integer>1034</integer> + <integer>1032</integer> </dict> <dict> <key>CF$UID</key> - <integer>1035</integer> + <integer>1033</integer> </dict> <dict> <key>CF$UID</key> - <integer>1036</integer> + <integer>1034</integer> </dict> <dict> <key>CF$UID</key> - <integer>1039</integer> + <integer>1037</integer> </dict> <dict> <key>CF$UID</key> - <integer>1040</integer> + <integer>1038</integer> </dict> <dict> <key>CF$UID</key> - <integer>1043</integer> + <integer>1041</integer> </dict> <dict> <key>CF$UID</key> @@ -468,59 +460,55 @@ </dict> <dict> <key>CF$UID</key> - <integer>1047</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>1050</integer> </dict> <dict> <key>CF$UID</key> - <integer>1055</integer> + <integer>1056</integer> </dict> <dict> <key>CF$UID</key> - <integer>1056</integer> + <integer>1061</integer> </dict> <dict> <key>CF$UID</key> - <integer>1057</integer> + <integer>1065</integer> </dict> <dict> <key>CF$UID</key> - <integer>1058</integer> + <integer>1069</integer> </dict> <dict> <key>CF$UID</key> - <integer>1061</integer> + <integer>1071</integer> </dict> <dict> <key>CF$UID</key> - <integer>1062</integer> + <integer>1072</integer> </dict> <dict> <key>CF$UID</key> - <integer>1065</integer> + <integer>1075</integer> </dict> <dict> <key>CF$UID</key> - <integer>1070</integer> + <integer>1078</integer> </dict> <dict> <key>CF$UID</key> - <integer>1074</integer> + <integer>1082</integer> </dict> <dict> <key>CF$UID</key> - <integer>1079</integer> + <integer>1084</integer> </dict> <dict> <key>CF$UID</key> - <integer>1084</integer> + <integer>1086</integer> </dict> <dict> <key>CF$UID</key> - <integer>1088</integer> + <integer>1089</integer> </dict> <dict> <key>CF$UID</key> @@ -532,15 +520,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>1095</integer> + <integer>1096</integer> </dict> <dict> <key>CF$UID</key> - <integer>1098</integer> + <integer>1099</integer> </dict> <dict> <key>CF$UID</key> - <integer>1101</integer> + <integer>1102</integer> </dict> <dict> <key>CF$UID</key> @@ -548,40 +536,48 @@ </dict> <dict> <key>CF$UID</key> - <integer>1107</integer> + <integer>1108</integer> </dict> <dict> <key>CF$UID</key> - <integer>1109</integer> + <integer>1112</integer> </dict> <dict> <key>CF$UID</key> - <integer>1112</integer> + <integer>1114</integer> </dict> <dict> <key>CF$UID</key> - <integer>1115</integer> + <integer>1116</integer> </dict> <dict> <key>CF$UID</key> - <integer>1117</integer> + <integer>1118</integer> </dict> <dict> <key>CF$UID</key> - <integer>1119</integer> + <integer>1120</integer> </dict> <dict> <key>CF$UID</key> - <integer>1122</integer> + <integer>1124</integer> </dict> <dict> <key>CF$UID</key> - <integer>1125</integer> + <integer>1131</integer> </dict> <dict> <key>CF$UID</key> - <integer>1128</integer> + <integer>1136</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>1141</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1146</integer> + </dict> </array> </dict> <dict> @@ -641,12 +637,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>114</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>308</integer> + <integer>220</integer> </dict> <key>NSNextResponder</key> <dict> @@ -656,7 +652,7 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>207</integer> + <integer>119</integer> </dict> </dict> <string>{{18, 103}, {105, 18}}</string> @@ -1076,7 +1072,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>804</integer> + <integer>805</integer> </dict> <key>NSSource</key> <dict> @@ -1088,22 +1084,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>803</integer> + <integer>804</integer> </dict> <key>NSMaxSize</key> <dict> <key>CF$UID</key> - <integer>802</integer> + <integer>803</integer> </dict> <key>NSMinSize</key> <dict> <key>CF$UID</key> - <integer>801</integer> + <integer>802</integer> </dict> <key>NSScreenRect</key> <dict> <key>CF$UID</key> - <integer>800</integer> + <integer>801</integer> </dict> <key>NSViewClass</key> <dict> @@ -1163,12 +1159,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>114</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>799</integer> + <integer>800</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1185,7 +1181,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>85</integer> </dict> <key>NS.objects</key> <array> @@ -1195,11 +1191,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>761</integer> + <integer>762</integer> </dict> <dict> <key>CF$UID</key> - <integer>794</integer> + <integer>795</integer> </dict> </array> </dict> @@ -1207,7 +1203,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>760</integer> + <integer>761</integer> </dict> <key>NSAllowTruncatedLabels</key> <true/> @@ -1221,7 +1217,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>203</integer> + <integer>115</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1231,7 +1227,7 @@ <key>NSSelectedTabViewItem</key> <dict> <key>CF$UID</key> - <integer>540</integer> + <integer>759</integer> </dict> <key>NSSubviews</key> <dict> @@ -1246,7 +1242,7 @@ <key>NSTabViewItems</key> <dict> <key>CF$UID</key> - <integer>204</integer> + <integer>116</integer> </dict> <key>NSTvFlags</key> <integer>4</integer> @@ -1255,7 +1251,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>85</integer> </dict> <key>NS.objects</key> <array> @@ -1269,12 +1265,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>114</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>202</integer> + <integer>113</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1296,7 +1292,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>85</integer> </dict> <key>NS.objects</key> <array> @@ -1306,493 +1302,219 @@ </dict> <dict> <key>CF$UID</key> - <integer>129</integer> + <integer>109</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>172</integer> - </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>128</integer> + <integer>108</integer> </dict> - <key>NSBorderType</key> - <integer>3</integer> - <key>NSBoxType</key> - <integer>0</integer> - <key>NSContentView</key> + <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>103</integer> </dict> - <key>NSFrame</key> + <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>119</integer> + <integer>107</integer> </dict> - <key>NSNextResponder</key> + <key>NSCellClass</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>88</integer> </dict> - <key>NSOffsets</key> + <key>NSCellSize</key> <dict> <key>CF$UID</key> - <integer>120</integer> + <integer>86</integer> </dict> - <key>NSSubviews</key> + <key>NSCells</key> <dict> <key>CF$UID</key> - <integer>53</integer> + <integer>54</integer> </dict> - <key>NSSuperview</key> + <key>NSEnabled</key> + <true/> + <key>NSFont</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>15</integer> </dict> - <key>NSTitleCell</key> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>121</integer> + <integer>53</integer> </dict> - <key>NSTitlePosition</key> - <integer>2</integer> - <key>NSTransparent</key> - <false/> - </dict> - <dict> - <key>$class</key> + <key>NSIntercellSpacing</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>87</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> + <key>NSMatrixFlags</key> + <integer>1143472128</integer> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>50</integer> </dict> - <key>NSFrame</key> + <key>NSNumCols</key> + <integer>2</integer> + <key>NSNumRows</key> + <integer>6</integer> + <key>NSProtoCell</key> <dict> <key>CF$UID</key> - <integer>117</integer> + <integer>89</integer> </dict> - <key>NSNextResponder</key> + <key>NSSelectedCell</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>61</integer> </dict> - <key>NSSubviews</key> - <dict> - <key>CF$UID</key> - <integer>55</integer> - </dict> + <key>NSSelectedRow</key> + <integer>1</integer> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>50</integer> </dict> + <key>NSvFlags</key> + <integer>256</integer> </dict> + <string>{{18, 162}, {288, 118}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>85</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>55</integer> </dict> <dict> <key>CF$UID</key> - <integer>79</integer> + <integer>59</integer> </dict> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>61</integer> </dict> <dict> <key>CF$UID</key> - <integer>108</integer> + <integer>63</integer> </dict> <dict> <key>CF$UID</key> - <integer>112</integer> + <integer>65</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>67</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>69</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>71</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>73</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>75</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>77</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>79</integer> + </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>78</integer> + <integer>22</integer> </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>58</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>57</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{144, 44}, {249, 26}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>77</integer> - </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>60</integer> + <integer>21</integer> </dict> <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>57</integer> </dict> - <key>NSAltersState</key> - <true/> - <key>NSArrowPosition</key> - <integer>1</integer> <key>NSButtonFlags</key> - <integer>109199615</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>0</integer> <key>NSCellFlags</key> - <integer>-2076049856</integer> + <integer>-2080244224</integer> <key>NSCellFlags2</key> - <integer>134218752</integer> - <key>NSControlView</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> <integer>56</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>61</integer> + <integer>52</integer> </dict> - <key>NSMenu</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>63</integer> + <integer>21</integer> </dict> - <key>NSMenuItem</key> - <dict> - <key>CF$UID</key> - <integer>62</integer> - </dict> <key>NSPeriodicDelay</key> - <integer>400</integer> + <integer>200</integer> <key>NSPeriodicInterval</key> - <integer>75</integer> - <key>NSPreferredEdge</key> - <integer>3</integer> + <integer>25</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSUsesItemFromMenu</key> - <true/> + <key>NSTag</key> + <integer>2</integer> </dict> + <string>Normal size</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>17</integer> + <integer>20</integer> </dict> - <key>NSName</key> + <key>NSImageName</key> <dict> <key>CF$UID</key> - <integer>16</integer> - </dict> - <key>NSSize</key> - <real>13</real> - <key>NSfFlags</key> - <integer>16</integer> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>45</integer> - </dict> - <key>NS.string</key> - <string></string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>45</integer> - </dict> - <key>NS.string</key> - <string></string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>72</integer> - </dict> - <key>NSAction</key> - <dict> - <key>CF$UID</key> - <integer>71</integer> - </dict> - <key>NSKeyEquiv</key> - <dict> - <key>CF$UID</key> - <integer>21</integer> - </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> - <dict> - <key>CF$UID</key> - <integer>63</integer> - </dict> - <key>NSMixedImage</key> - <dict> - <key>CF$UID</key> - <integer>69</integer> - </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <key>NSState</key> - <integer>1</integer> - <key>NSTarget</key> - <dict> - <key>CF$UID</key> <integer>58</integer> </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>64</integer> - </dict> </dict> + <string>NSRadioButton</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>22</integer> </dict> - <key>NSMenuItems</key> - <dict> - <key>CF$UID</key> - <integer>74</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>73</integer> - </dict> - </dict> - <string>Item1</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>68</integer> - </dict> - <key>NSClassName</key> - <dict> - <key>CF$UID</key> - <integer>66</integer> - </dict> - <key>NSResourceName</key> - <dict> - <key>CF$UID</key> - <integer>67</integer> - </dict> - </dict> - <string>NSImage</string> - <string>NSMenuCheckmark</string> - <dict> - <key>$classes</key> - <array> - <string>NSCustomResource</string> - <string>%NSCustomResource</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSCustomResource</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>68</integer> - </dict> - <key>NSClassName</key> - <dict> - <key>CF$UID</key> - <integer>66</integer> - </dict> - <key>NSResourceName</key> - <dict> - <key>CF$UID</key> - <integer>70</integer> - </dict> - </dict> - <string>NSMenuMixedState</string> - <string>_popUpItemAction:</string> - <dict> - <key>$classes</key> - <array> - <string>NSMenuItem</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSMenuItem</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>45</integer> - </dict> - <key>NS.string</key> - <string>OtherViews</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>62</integer> - </dict> - </array> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSMutableArray</string> - <string>NSArray</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSMutableArray</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSMenu</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSMenu</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSPopUpButtonCell</string> - <string>NSMenuItemCell</string> - <string>NSButtonCell</string> - <string>%NSButtonCell</string> - <string>NSActionCell</string> - <string>NSCell</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSPopUpButtonCell</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSPopUpButton</string> - <string>NSButton</string> - <string>NSControl</string> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSPopUpButton</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>78</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>81</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>80</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{144, 12}, {125, 26}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>77</integer> - </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> @@ -1801,540 +1523,96 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>57</integer> </dict> - <key>NSAltersState</key> - <true/> - <key>NSArrowPosition</key> - <integer>1</integer> <key>NSButtonFlags</key> - <integer>109199615</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>0</integer> <key>NSCellFlags</key> - <integer>-2076049856</integer> + <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>134218752</integer> - <key>NSControlView</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>79</integer> + <integer>60</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>52</integer> </dict> - <key>NSMenu</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>21</integer> </dict> - <key>NSMenuItem</key> - <dict> - <key>CF$UID</key> - <integer>83</integer> - </dict> <key>NSPeriodicDelay</key> <integer>400</integer> <key>NSPeriodicInterval</key> <integer>75</integer> - <key>NSPreferredEdge</key> - <integer>3</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSUsesItemFromMenu</key> - <true/> + <key>NSTag</key> + <integer>10</integer> </dict> + <string>TV 2x</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>22</integer> </dict> - <key>NS.string</key> - <string></string> - </dict> - <dict> - <key>$class</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>72</integer> - </dict> - <key>NSAction</key> - <dict> - <key>CF$UID</key> - <integer>85</integer> - </dict> - <key>NSKeyEquiv</key> - <dict> - <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>57</integer> </dict> - <key>NSMixedImage</key> - <dict> - <key>CF$UID</key> - <integer>69</integer> - </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <key>NSState</key> - <integer>1</integer> - <key>NSTarget</key> - <dict> - <key>CF$UID</key> - <integer>81</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>64</integer> - </dict> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>76</integer> - </dict> - <key>NSMenuItems</key> - <dict> - <key>CF$UID</key> - <integer>87</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>86</integer> - </dict> - </dict> - <string>_popUpItemAction:</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>45</integer> - </dict> - <key>NS.string</key> - <string>OtherViews</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>83</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>88</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>91</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>72</integer> - </dict> - <key>NSAction</key> - <dict> - <key>CF$UID</key> - <integer>90</integer> - </dict> - <key>NSKeyEquiv</key> - <dict> - <key>CF$UID</key> - <integer>21</integer> - </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> - <dict> - <key>CF$UID</key> - <integer>84</integer> - </dict> - <key>NSMixedImage</key> - <dict> - <key>CF$UID</key> - <integer>69</integer> - </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <key>NSTarget</key> - <dict> - <key>CF$UID</key> - <integer>81</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>89</integer> - </dict> - </dict> - <string>Item2</string> - <string>_popUpItemAction:</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>72</integer> - </dict> - <key>NSAction</key> - <dict> - <key>CF$UID</key> - <integer>93</integer> - </dict> - <key>NSKeyEquiv</key> - <dict> - <key>CF$UID</key> - <integer>21</integer> - </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> - <dict> - <key>CF$UID</key> - <integer>84</integer> - </dict> - <key>NSMixedImage</key> - <dict> - <key>CF$UID</key> - <integer>69</integer> - </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <key>NSTarget</key> - <dict> - <key>CF$UID</key> - <integer>81</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>92</integer> - </dict> - </dict> - <string>Item3</string> - <string>_popUpItemAction:</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>107</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>96</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>95</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{11, 50}, {114, 17}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>106</integer> - </dict> - <key>NSBackgroundColor</key> - <dict> - <key>CF$UID</key> - <integer>98</integer> - </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>4194304</integer> + <integer>0</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>62</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>52</integer> </dict> - <key>NSSupport</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>21</integer> </dict> - <key>NSTextColor</key> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - </dict> - <string>Real device: -</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>102</integer> - </dict> - <key>NSCatalogName</key> - <dict> - <key>CF$UID</key> - <integer>99</integer> - </dict> - <key>NSColor</key> - <dict> - <key>CF$UID</key> - <integer>101</integer> - </dict> - <key>NSColorName</key> - <dict> - <key>CF$UID</key> - <integer>100</integer> - </dict> - <key>NSColorSpace</key> - <integer>6</integer> - </dict> - <string>System</string> - <string>controlColor</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>102</integer> - </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> - MC42NjY2NjY2OQA= - </data> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSColor</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSColor</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>102</integer> - </dict> - <key>NSCatalogName</key> - <dict> - <key>CF$UID</key> - <integer>99</integer> - </dict> - <key>NSColor</key> - <dict> - <key>CF$UID</key> - <integer>105</integer> - </dict> - <key>NSColorName</key> - <dict> - <key>CF$UID</key> - <integer>104</integer> - </dict> - <key>NSColorSpace</key> - <integer>6</integer> - </dict> - <string>controlTextColor</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>102</integer> - </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> - MAA= - </data> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSTextFieldCell</string> - <string>NSActionCell</string> - <string>NSCell</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSTextFieldCell</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSTextField</string> - <string>%NSTextField</string> - <string>NSControl</string> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSTextField</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>107</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>110</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>109</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{11, 18}, {122, 17}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>106</integer> - </dict> - <key>NSBackgroundColor</key> - <dict> - <key>CF$UID</key> - <integer>98</integer> - </dict> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>4194304</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> - <integer>111</integer> - </dict> - <key>NSControlView</key> - <dict> - <key>CF$UID</key> - <integer>108</integer> - </dict> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSTextColor</key> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - </dict> - <string>Emulated joystick: -</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>23</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>114</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>113</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> <key>NSTag</key> - <integer>2</integer> - <key>NSvFlags</key> - <integer>256</integer> + <integer>5</integer> </dict> - <string>{{392, 40}, {76, 32}}</string> + <string>2xSaI</string> <dict> <key>$class</key> <dict> @@ -2349,77 +1627,64 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>57</integer> </dict> <key>NSButtonFlags</key> - <integer>-2038284033</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>134217728</integer> + <integer>0</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>115</integer> + <integer>64</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>112</integer> + <integer>52</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>116</integer> + <integer>21</integer> </dict> <key>NSPeriodicDelay</key> - <integer>200</integer> + <integer>400</integer> <key>NSPeriodicInterval</key> - <integer>25</integer> + <integer>75</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> <key>NSTag</key> - <integer>2</integer> + <integer>11</integer> </dict> - <string>Setup</string> + <string>Timex TV</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>22</integer> </dict> - <key>NS.string</key> - <string></string> - </dict> - <string>{{2, 2}, {477, 80}}</string> - <dict> - <key>$classes</key> - <array> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSView</string> - </dict> - <string>{{17, -4}, {481, 100}}</string> - <string>{0, 0}</string> - <dict> - <key>$class</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>106</integer> + <integer>21</integer> </dict> - <key>NSBackgroundColor</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>124</integer> + <integer>57</integer> </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> @@ -2427,257 +1692,37 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>122</integer> + <integer>66</integer> </dict> - <key>NSSupport</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>123</integer> + <integer>52</integer> </dict> - <key>NSTextColor</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>127</integer> + <integer>21</integer> </dict> - </dict> - <string>Joystick 2</string> - <dict> - <key>$class</key> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>17</integer> + <integer>15</integer> </dict> - <key>NSName</key> - <dict> - <key>CF$UID</key> - <integer>16</integer> - </dict> - <key>NSSize</key> - <real>13</real> - <key>NSfFlags</key> - <integer>1558</integer> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>102</integer> - </dict> - <key>NSCatalogName</key> - <dict> - <key>CF$UID</key> - <integer>99</integer> - </dict> - <key>NSColor</key> - <dict> - <key>CF$UID</key> - <integer>126</integer> - </dict> - <key>NSColorName</key> - <dict> - <key>CF$UID</key> - <integer>125</integer> - </dict> - <key>NSColorSpace</key> + <key>NSTag</key> <integer>6</integer> </dict> - <string>textBackgroundColor</string> + <string>Super 2xSaI</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>22</integer> </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> - MQA= - </data> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>102</integer> - </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> - MCAwLjgwMDAwMDAxAA== - </data> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSBox</string> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSBox</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>128</integer> - </dict> - <key>NSBorderType</key> - <integer>3</integer> - <key>NSBoxType</key> - <integer>0</integer> - <key>NSContentView</key> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>167</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSOffsets</key> - <dict> - <key>CF$UID</key> - <integer>168</integer> - </dict> - <key>NSSubviews</key> - <dict> - <key>CF$UID</key> - <integer>130</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSTitleCell</key> - <dict> - <key>CF$UID</key> - <integer>169</integer> - </dict> - <key>NSTitlePosition</key> - <integer>2</integer> - <key>NSTransparent</key> - <false/> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>118</integer> - </dict> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>166</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>129</integer> - </dict> - <key>NSSubviews</key> - <dict> - <key>CF$UID</key> - <integer>132</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>129</integer> - </dict> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>133</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>142</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>155</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>158</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>162</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>78</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>135</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>134</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{141, 44}, {249, 26}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>77</integer> - </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> @@ -2686,190 +1731,50 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>57</integer> </dict> - <key>NSAltersState</key> - <true/> - <key>NSArrowPosition</key> - <integer>1</integer> <key>NSButtonFlags</key> - <integer>109199615</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>0</integer> <key>NSCellFlags</key> - <integer>-2076049856</integer> + <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>134218752</integer> - <key>NSControlView</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>133</integer> + <integer>68</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>136</integer> + <integer>52</integer> </dict> - <key>NSMenu</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>138</integer> + <integer>21</integer> </dict> - <key>NSMenuItem</key> - <dict> - <key>CF$UID</key> - <integer>137</integer> - </dict> <key>NSPeriodicDelay</key> <integer>400</integer> <key>NSPeriodicInterval</key> <integer>75</integer> - <key>NSPreferredEdge</key> - <integer>3</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSUsesItemFromMenu</key> - <true/> + <key>NSTag</key> + <integer>12</integer> </dict> + <string>Dot Matrix</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>22</integer> </dict> - <key>NS.string</key> - <string></string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>72</integer> - </dict> - <key>NSAction</key> - <dict> - <key>CF$UID</key> - <integer>139</integer> - </dict> - <key>NSKeyEquiv</key> - <dict> - <key>CF$UID</key> - <integer>21</integer> - </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> - <dict> - <key>CF$UID</key> - <integer>138</integer> - </dict> - <key>NSMixedImage</key> - <dict> - <key>CF$UID</key> - <integer>69</integer> - </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <key>NSState</key> - <integer>1</integer> - <key>NSTarget</key> - <dict> - <key>CF$UID</key> - <integer>135</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>64</integer> - </dict> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>76</integer> - </dict> - <key>NSMenuItems</key> - <dict> - <key>CF$UID</key> - <integer>141</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>140</integer> - </dict> - </dict> - <string>_popUpItemAction:</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>45</integer> - </dict> - <key>NS.string</key> - <string>OtherViews</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>137</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>78</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>144</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>143</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{141, 12}, {125, 26}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>77</integer> - </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> @@ -2878,425 +1783,200 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>57</integer> </dict> - <key>NSAltersState</key> - <true/> - <key>NSArrowPosition</key> - <integer>1</integer> <key>NSButtonFlags</key> - <integer>109199615</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>0</integer> <key>NSCellFlags</key> - <integer>-2076049856</integer> + <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>134218752</integer> - <key>NSControlView</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>142</integer> + <integer>70</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>145</integer> + <integer>52</integer> </dict> - <key>NSMenu</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>147</integer> + <integer>21</integer> </dict> - <key>NSMenuItem</key> - <dict> - <key>CF$UID</key> - <integer>146</integer> - </dict> <key>NSPeriodicDelay</key> <integer>400</integer> <key>NSPeriodicInterval</key> <integer>75</integer> - <key>NSPreferredEdge</key> - <integer>3</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSUsesItemFromMenu</key> - <true/> + <key>NSTag</key> + <integer>7</integer> </dict> + <string>SuperEagle</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>22</integer> </dict> - <key>NS.string</key> - <string></string> - </dict> - <dict> - <key>$class</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>72</integer> - </dict> - <key>NSAction</key> - <dict> - <key>CF$UID</key> - <integer>148</integer> - </dict> - <key>NSKeyEquiv</key> - <dict> - <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>147</integer> + <integer>57</integer> </dict> - <key>NSMixedImage</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>69</integer> - </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <key>NSState</key> - <integer>1</integer> - <key>NSTarget</key> - <dict> - <key>CF$UID</key> - <integer>144</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>64</integer> - </dict> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>76</integer> - </dict> - <key>NSMenuItems</key> - <dict> - <key>CF$UID</key> - <integer>150</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>149</integer> - </dict> - </dict> - <string>_popUpItemAction:</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>45</integer> - </dict> - <key>NS.string</key> - <string>OtherViews</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>146</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>151</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>153</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> <integer>72</integer> </dict> - <key>NSAction</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>152</integer> + <integer>52</integer> </dict> - <key>NSKeyEquiv</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>147</integer> + <integer>15</integer> </dict> - <key>NSMixedImage</key> - <dict> - <key>CF$UID</key> - <integer>69</integer> - </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer... [truncated message content] |
From: <fr...@us...> - 2007-01-02 12:20:18
|
Revision: 279 http://svn.sourceforge.net/fuse-for-macosx/?rev=279&view=rev Author: fredm Date: 2007-01-02 04:20:15 -0800 (Tue, 02 Jan 2007) Log Message: ----------- Don't muck about with saving and resoring cursor position, just lock it in place while grabbed. Modified Paths: -------------- branches/fusegl/fuse/ui/cocoa/cocoaui.m Modified: branches/fusegl/fuse/ui/cocoa/cocoaui.m =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoaui.m 2007-01-02 10:11:45 UTC (rev 278) +++ branches/fusegl/fuse/ui/cocoa/cocoaui.m 2007-01-02 12:20:15 UTC (rev 279) @@ -74,7 +74,8 @@ { if( startup ) return 0; - position = [NSEvent mouseLocation]; + /* Lock the mouse pointer at its current position */ + CGAssociateMouseAndMouseCursorPosition(false); [NSCursor hide]; @@ -88,13 +89,8 @@ { [[FuseController singleton] setAcceptsMouseMovedEvents:NO]; - /* This seems to be the only API to put the cursor back where it was when - we hid it. The CGSetLocalEventsSuppressionInterval is a magic workaround - to prevent the cursor freezing for a couple of seconds following the - warp */ - CGPoint pos; pos.x = position.x; pos.y = position.y; - CGSetLocalEventsSuppressionInterval(0.0); - CGWarpMouseCursorPosition(pos); + /* Unlock the mouse pointer */ + CGAssociateMouseAndMouseCursorPosition(true); [NSCursor unhide]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-02 10:11:46
|
Revision: 278 http://svn.sourceforge.net/fuse-for-macosx/?rev=278&view=rev Author: fredm Date: 2007-01-02 02:11:45 -0800 (Tue, 02 Jan 2007) Log Message: ----------- Switch to using 16 bit textures. Re-enable hq[23]x scalers. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/ui/cocoa/cocoadisplay.c branches/fusegl/fuse/ui/scaler/scaler.c Removed Paths: ------------- branches/fusegl/fuse/fusepb/scaler/scalers32.cpp Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-01-01 12:33:46 UTC (rev 277) +++ branches/fusegl/fuse/TODO 2007-01-02 10:11:45 UTC (rev 278) @@ -11,15 +11,18 @@ X Add native mouse processing (removes SDL mouse input dependency from Fuse) X Make it possible to constrain Speccy image to "correct" aspect ratio X Restore fullscreen support -* Fix scalers +X Fix scalers * Add support for bilinear etc. OpenGL filters -* Add option to snap window size to 1x, 2x, 3x +* Add option to snap window size to 1x, 2x, 3x GL_NEAREST filter +* Grab mouse in fullscreen mode * Use sheets rather than modal dialogs * Run emulation in seperate thread to avoid sound glitches when menus are - selected + selected or window is minimised * Restore activity icons * Add native joystick processing (removes SDL joystick input dependency from Fuse) * Fix screen updating during fastloading +* Put in latest hq[23]x filters (HQ2x_555 from ScummVM should do the trick) +* Make border display optional $Id: TODO,v 1.4 2004/03/02 13:38:08 pak21 Exp $ Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-01 12:33:46 UTC (rev 277) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-02 10:11:45 UTC (rev 278) @@ -258,7 +258,11 @@ B650987109366CA2003AF1BF /* szx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650987009366CA2003AF1BF /* szx.icns */; }; B6825549091817F30014B5EE /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6825547091817F30014B5EE /* divide.c */; }; B682554A091817F30014B5EE /* divide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6825548091817F30014B5EE /* divide.h */; }; - B6A24DF80B490F2100AD5B9D /* scalers32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6A24DF70B490F2100AD5B9D /* scalers32.cpp */; }; + B6A24E330B49C67D00AD5B9D /* scalers16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6A24E320B49C67D00AD5B9D /* scalers16.cpp */; }; + B6A24E3B0B49C78700AD5B9D /* hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6A24E370B49C78700AD5B9D /* hq2x.cpp */; }; + B6A24E3C0B49C78700AD5B9D /* hq2x.h in Headers */ = {isa = PBXBuildFile; fileRef = B6A24E380B49C78700AD5B9D /* hq2x.h */; }; + B6A24E3D0B49C78700AD5B9D /* hq3x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6A24E390B49C78700AD5B9D /* hq3x.cpp */; }; + B6A24E3E0B49C78700AD5B9D /* hq3x.h in Headers */ = {isa = PBXBuildFile; fileRef = B6A24E3A0B49C78700AD5B9D /* hq3x.h */; }; B6A6F0960B3C108C000B88E9 /* coreaudiosound.c in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */; }; B6A6F0DA0B3D141B000B88E9 /* cocoaui.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0D90B3D141B000B88E9 /* cocoaui.m */; }; B6A6F0EE0B3D5F9E000B88E9 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */; }; @@ -450,11 +454,15 @@ B68CB2C503DD920300A804BA /* debugger.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = debugger.h; path = ../debugger/debugger.h; sourceTree = "<group>"; }; B68CB2C603DD920300A804BA /* disassemble.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = disassemble.c; path = ../debugger/disassemble.c; sourceTree = "<group>"; }; B68CB2CC03DD923C00A804BA /* memory.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = "<group>"; }; - B6A24DF70B490F2100AD5B9D /* scalers32.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = scalers32.cpp; path = scaler/scalers32.cpp; sourceTree = SOURCE_ROOT; }; + B6A24E320B49C67D00AD5B9D /* scalers16.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = scalers16.cpp; path = scaler/scalers16.cpp; sourceTree = SOURCE_ROOT; }; + B6A24E370B49C78700AD5B9D /* hq2x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq2x.cpp; path = scaler/hq2x.cpp; sourceTree = SOURCE_ROOT; }; + B6A24E380B49C78700AD5B9D /* hq2x.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = hq2x.h; path = scaler/hq2x.h; sourceTree = SOURCE_ROOT; }; + B6A24E390B49C78700AD5B9D /* hq3x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq3x.cpp; path = scaler/hq3x.cpp; sourceTree = SOURCE_ROOT; }; + B6A24E3A0B49C78700AD5B9D /* hq3x.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = hq3x.h; path = scaler/hq3x.h; sourceTree = SOURCE_ROOT; }; B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = coreaudiosound.c; path = sound/coreaudiosound.c; sourceTree = "<group>"; }; B6A6F0D90B3D141B000B88E9 /* cocoaui.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoaui.m; sourceTree = "<group>"; }; - B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = ../../../../../../../../System/Library/Frameworks/CoreAudio.framework; sourceTree = "<group>"; }; - B6A6F0F20B3D602F000B88E9 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = ../../../../../../../../System/Library/Frameworks/AudioUnit.framework; sourceTree = "<group>"; }; + B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; }; + B6A6F0F20B3D602F000B88E9 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = "<absolute>"; }; B6A6F10D0B3D6360000B88E9 /* cocoaerror.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoaerror.m; sourceTree = "<group>"; }; B6A6F11D0B3EA737000B88E9 /* cocoascreenshot.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cocoascreenshot.h; sourceTree = "<group>"; }; B6A6F11E0B3EA737000B88E9 /* cocoascreenshot.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoascreenshot.m; sourceTree = "<group>"; }; @@ -953,11 +961,15 @@ F541FB5C03B0B31601FF8235 /* scaler */ = { isa = PBXGroup; children = ( + B6A24E370B49C78700AD5B9D /* hq2x.cpp */, + B6A24E380B49C78700AD5B9D /* hq2x.h */, + B6A24E390B49C78700AD5B9D /* hq3x.cpp */, + B6A24E3A0B49C78700AD5B9D /* hq3x.h */, B6C86978065611B3003000A6 /* intern.h */, B63ABD8D042F175200A864FD /* scaler.c */, F541FB5E03B0B33401FF8235 /* scaler.h */, B60A6A3A042BEECE00D41533 /* scaler_internals.h */, - B6A24DF70B490F2100AD5B9D /* scalers32.cpp */, + B6A24E320B49C67D00AD5B9D /* scalers16.cpp */, ); path = scaler; sourceTree = "<group>"; @@ -1213,6 +1225,8 @@ B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */, B6A6F11F0B3EA737000B88E9 /* cocoascreenshot.h in Headers */, B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */, + B6A24E3C0B49C78700AD5B9D /* hq2x.h in Headers */, + B6A24E3E0B49C78700AD5B9D /* hq3x.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1447,7 +1461,9 @@ B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */, B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */, B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */, - B6A24DF80B490F2100AD5B9D /* scalers32.cpp in Sources */, + B6A24E330B49C67D00AD5B9D /* scalers16.cpp in Sources */, + B6A24E3B0B49C78700AD5B9D /* hq2x.cpp in Sources */, + B6A24E3D0B49C78700AD5B9D /* hq3x.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Deleted: branches/fusegl/fuse/fusepb/scaler/scalers32.cpp =================================================================== --- branches/fusegl/fuse/fusepb/scaler/scalers32.cpp 2007-01-01 12:33:46 UTC (rev 277) +++ branches/fusegl/fuse/fusepb/scaler/scalers32.cpp 2007-01-02 10:11:45 UTC (rev 278) @@ -1,28 +0,0 @@ -/* scalers.cpp: the actual graphics scalers - * Copyright (C) 2003 Fredrick Meunier, Philip Kendall - * - * $Id: scalers16.cpp,v 1.1 2004/05/17 14:42:14 fred Exp $ - * - * Originally taken from ScummVM - Scumm Interpreter - * Copyright (C) 2001 Ludvig Strigeus - * Copyright (C) 2001/2002 The ScummVM project - * - * 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. - * - */ - -#define SCALER_DATA_SIZE 4 - -#include "ui/scaler/scalers.cpp" Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 12:33:46 UTC (rev 277) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-02 10:11:45 UTC (rev 278) @@ -170,7 +170,7 @@ glBindTexture( GL_TEXTURE_RECTANGLE_EXT, 1 ); glTexSubImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, - screenTex.full_height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + screenTex.full_height, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, screenTex.pixels ); glBegin( GL_QUADS ); @@ -280,12 +280,12 @@ screenTex.image_height = newScreen->image_height; screenTex.image_xoffset = newScreen->image_xoffset; screenTex.image_yoffset = newScreen->image_yoffset; - screenTex.pixels = calloc( screenTex.full_width * screenTex.full_height, sizeof(uint32_t) ); + screenTex.pixels = calloc( screenTex.full_width * screenTex.full_height, sizeof(uint16_t) ); if( !screenTex.pixels ) { fprintf( stderr, "%s: couldn't create screenTex.pixels\n", fuse_progname ); return; } - screenTex.pitch = screenTex.full_width * sizeof(uint32_t); + screenTex.pitch = screenTex.full_width * sizeof(uint16_t); [[self openGLContext] makeCurrentContext]; [[self openGLContext] update]; @@ -312,7 +312,7 @@ glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.full_width, - screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, screenTex.pixels ); } screenTexInitialised = YES; Modified: branches/fusegl/fuse/ui/cocoa/cocoadisplay.c =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoadisplay.c 2007-01-01 12:33:46 UTC (rev 277) +++ branches/fusegl/fuse/ui/cocoa/cocoadisplay.c 2007-01-02 10:11:45 UTC (rev 278) @@ -59,30 +59,33 @@ /* Screen texture */ Cocoa_Texture* screen = NULL; +/* Screen texture in native size */ Cocoa_Texture unscaled_screen; + +/* Screen texture after scaling (only if a transforming scaler is in place) */ Cocoa_Texture scaled_screen; -static uint32_t colour_values[] = { -/* AARRGGBB */ - 0x00000000, - 0x000000c0, - 0x00c00000, - 0x00c000c0, - 0x0000c000, - 0x0000c0c0, - 0x00c0c000, - 0x00c0c0c0, - 0x00000000, - 0x000000ff, - 0x00ff0000, - 0x00ff00ff, - 0x0000ff00, - 0x0000ffff, - 0x00ffff00, - 0x00ffffff +/* Colours are in 1A 5R 5G 5B format */ +static uint16_t colour_values[] = { + 0x0000, + 0x0017, + 0x5c00, + 0x5c17, + 0x02e0, + 0x02f7, + 0x5ee0, + 0x5ef7, + 0x0000, + 0x001f, + 0x7c00, + 0x7c1f, + 0x03e0, + 0x03ff, + 0x7fe0, + 0x7fff }; -static uint32_t bw_values[16]; +static uint16_t bw_values[16]; static void init_scalers( void ) @@ -100,10 +103,8 @@ scaler_register( SCALER_ADVMAME2X ); scaler_register( SCALER_ADVMAME3X ); scaler_register( SCALER_DOTMATRIX ); -#if 0 scaler_register( SCALER_HQ2X ); scaler_register( SCALER_HQ3X ); -#endif } if( scaler_is_supported( current_scaler ) ) { @@ -111,10 +112,12 @@ } else { scaler_select_scaler( SCALER_NORMAL ); } + + scaler_select_bitformat( 555 ); } static int -cocoadisplay_allocate_screen( Cocoa_Texture* screen, int height, int width, +allocate_screen( Cocoa_Texture* screen, int height, int width, float scaling_factor ) { screen->image_width = image_width * display_current_size; @@ -126,17 +129,26 @@ screen->full_height = screen->image_height+3; screen->image_yoffset = 1; - screen->pixels = calloc( screen->full_width*screen->full_height, sizeof(uint32_t) ); + screen->pixels = calloc( screen->full_width*screen->full_height, sizeof(uint16_t) ); if( !screen->pixels ) { fprintf( stderr, "%s: couldn't create screen.pixels\n", fuse_progname ); return 1; } - screen->pitch = screen->full_width * sizeof(uint32_t); + screen->pitch = screen->full_width * sizeof(uint16_t); return 0; } +static void +free_screen( Cocoa_Texture* screen ) +{ + if( screen->pixels ) { + free( screen->pixels ); + screen->pixels=NULL; + } +} + static int cocoadisplay_load_gfx_mode( void ) { @@ -144,14 +156,14 @@ display_current_size = scaler_get_scaling_factor( current_scaler ); - error = cocoadisplay_allocate_screen( &unscaled_screen, image_height, image_width, 1.0f ); + error = allocate_screen( &unscaled_screen, image_height, image_width, 1.0f ); if( error ) return error; screen = &unscaled_screen; if( current_scaler != SCALER_NORMAL ) { - error = cocoadisplay_allocate_screen( &scaled_screen, image_height, - image_width, display_current_size ); + error = allocate_screen( &scaled_screen, image_height, image_width, + display_current_size ); if( error ) return error; screen = &scaled_screen; @@ -167,21 +179,21 @@ } static int -cocoadisplay_allocate_colours( int numColours, uint32_t *colour_values, - uint32_t *bw_values ) +cocoadisplay_allocate_colours( int numColours, uint16_t *colour_values, + uint16_t *bw_values ) { int i; uint8_t red, green, blue, grey; for( i = 0; i < numColours; i++ ) { - red = (colour_values[i] >> 16) & 0xff; - green = (colour_values[i] >> 8) & 0xff; - blue = colour_values[i] & 0xff; + red = (colour_values[i] >> 10) & 0x1f; + green = (colour_values[i] >> 5) & 0x1f; + blue = colour_values[i] & 0x1f; /* Addition of 0.5 is to avoid rounding errors */ grey = ( 0.299 * red + 0.587 * green + 0.114 * blue ) + 0.5; - bw_values[i] = (grey << 16) | (grey << 8) | grey; + bw_values[i] = (grey << 10) | (grey << 5) | grey; } return 0; @@ -191,11 +203,9 @@ uidisplay_init( int width, int height ) { int error; - error = cocoadisplay_allocate_colours( sizeof(colour_values) / sizeof(uint32_t), + error = cocoadisplay_allocate_colours( sizeof(colour_values) / sizeof(uint16_t), colour_values, bw_values ); - scaler_select_scaler( SCALER_NORMAL ); - image_width = width; image_height = height; @@ -217,11 +227,9 @@ { fuse_emulation_pause(); - /* Free the old surface */ - if( unscaled_screen.pixels ) { - free( unscaled_screen.pixels ); - unscaled_screen.pixels=NULL; - } + /* Free the old surfaces */ + free_screen( &unscaled_screen ); + free_screen( &scaled_screen ); /* Setup the new GFX mode */ cocoadisplay_load_gfx_mode(); @@ -233,25 +241,25 @@ void uidisplay_putpixel( int x, int y, int colour ) { - uint32_t *dest_base, *dest; - uint32_t *palette_values = settings_current.bw_tv ? bw_values : colour_values; + uint16_t *dest_base, *dest; + uint16_t *palette_values = settings_current.bw_tv ? bw_values : colour_values; - uint32_t palette_colour = palette_values[ colour ]; + uint16_t palette_colour = palette_values[ colour ]; if( machine_current->timex ) { x <<= 1; y <<= 1; - dest_base = dest = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + - (x+unscaled_screen.image_xoffset) * sizeof(uint32_t) + + dest_base = dest = (uint16_t*)( (uint8_t*)unscaled_screen.pixels + + (x+unscaled_screen.image_xoffset) * sizeof(uint16_t) + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); *(dest++) = palette_colour; *(dest++) = palette_colour; - dest = (uint32_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); + dest = (uint16_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); *(dest++) = palette_colour; *(dest++) = palette_colour; } else { - dest = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + - (x+unscaled_screen.image_xoffset) * sizeof(uint32_t) + + dest = (uint16_t*)( (uint8_t*)unscaled_screen.pixels + + (x+unscaled_screen.image_xoffset) * sizeof(uint16_t) + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); *dest = palette_colour; @@ -264,20 +272,20 @@ uidisplay_plot8( int x, int y, libspectrum_byte data, libspectrum_byte ink, libspectrum_byte paper ) { - uint32_t *dest; - uint32_t *palette_values = settings_current.bw_tv ? bw_values : colour_values; + uint16_t *dest; + uint16_t *palette_values = settings_current.bw_tv ? bw_values : colour_values; - uint32_t palette_ink = palette_values[ ink ]; - uint32_t palette_paper = palette_values[ paper ]; + uint16_t palette_ink = palette_values[ ink ]; + uint16_t palette_paper = palette_values[ paper ]; if( machine_current->timex ) { int i; - uint32_t *dest_base; + uint16_t *dest_base; x <<= 4; y <<= 1; - dest_base = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + - (x+unscaled_screen.image_xoffset) * sizeof(uint32_t) + + dest_base = (uint16_t*)( (uint8_t*)unscaled_screen.pixels + + (x+unscaled_screen.image_xoffset) * sizeof(uint16_t) + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); for( i=0; i<2; i++ ) { @@ -300,12 +308,12 @@ *(dest++) = ( data & 0x01 ) ? palette_ink : palette_paper; *dest = ( data & 0x01 ) ? palette_ink : palette_paper; - dest_base = (uint32_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); + dest_base = (uint16_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); } } else { x <<= 3; - dest = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + - (x+unscaled_screen.image_xoffset) * sizeof(uint32_t) + + dest = (uint16_t*)( (uint8_t*)unscaled_screen.pixels + + (x+unscaled_screen.image_xoffset) * sizeof(uint16_t) + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); *(dest++) = ( data & 0x80 ) ? palette_ink : palette_paper; @@ -325,15 +333,15 @@ uidisplay_plot16( int x, int y, libspectrum_word data, libspectrum_byte ink, libspectrum_byte paper ) { - uint32_t *dest_base, *dest; + uint16_t *dest_base, *dest; int i; - uint32_t *palette_values = settings_current.bw_tv ? bw_values : colour_values; - uint32_t palette_ink = palette_values[ ink ]; - uint32_t palette_paper = palette_values[ paper ]; + uint16_t *palette_values = settings_current.bw_tv ? bw_values : colour_values; + uint16_t palette_ink = palette_values[ ink ]; + uint16_t palette_paper = palette_values[ paper ]; x <<= 4; y <<= 1; - dest_base = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + (x+unscaled_screen.image_xoffset) * - sizeof(uint32_t) + (y+unscaled_screen.image_yoffset) * + dest_base = (uint16_t*)( (uint8_t*)unscaled_screen.pixels + (x+unscaled_screen.image_xoffset) * + sizeof(uint16_t) + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); for( i=0; i<2; i++ ) { @@ -356,7 +364,7 @@ *(dest++) = ( data & 0x0002 ) ? palette_ink : palette_paper; *dest = ( data & 0x0001 ) ? palette_ink : palette_paper; - dest_base = (uint32_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); + dest_base = (uint16_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); } } @@ -382,9 +390,9 @@ scaled_y = display_current_size * y; /* Create scaled image */ - scaler_proc32( unscaled_screen.pixels + ( y + 1 ) * unscaled_screen.pitch + sizeof(uint32_t) * ( x + 1 ), + scaler_proc16( unscaled_screen.pixels + ( y + 1 ) * unscaled_screen.pitch + sizeof(uint16_t) * ( x + 1 ), unscaled_screen.pitch, - scaled_screen.pixels + scaled_y * scaled_screen.pitch + sizeof(uint32_t) * scaled_x, + scaled_screen.pixels + scaled_y * scaled_screen.pitch + sizeof(uint16_t) * scaled_x, scaled_screen.pitch, width, height ); } @@ -395,15 +403,8 @@ DestroyTexture(); } - if( unscaled_screen.pixels ) { - free( unscaled_screen.pixels ); - unscaled_screen.pixels=NULL; - } + free_screen( &unscaled_screen ); + free_screen( &scaled_screen ); - if( scaled_screen.pixels ) { - free( scaled_screen.pixels ); - scaled_screen.pixels=NULL; - } - return 0; } Modified: branches/fusegl/fuse/ui/scaler/scaler.c =================================================================== --- branches/fusegl/fuse/ui/scaler/scaler.c 2007-01-01 12:33:46 UTC (rev 277) +++ branches/fusegl/fuse/ui/scaler/scaler.c 2007-01-02 10:11:45 UTC (rev 278) @@ -69,39 +69,37 @@ static struct scaler_info available_scalers[] = { { "Timex Half (smoothed)", "half", SCALER_FLAGS_NONE, SCALE_FACTOR_HALF, - NULL, scaler_Half_32, NULL }, + scaler_Half_16, NULL, NULL }, { "Timex Half (skipping)", "halfskip", SCALER_FLAGS_NONE, SCALE_FACTOR_HALF, - NULL, scaler_HalfSkip_32, NULL }, + scaler_HalfSkip_16, NULL, NULL }, { "Normal", "normal", SCALER_FLAGS_NONE, SCALE_FACTOR_ONE, - NULL, scaler_Normal1x_32, NULL }, + scaler_Normal1x_16, NULL, NULL }, { "Double size", "2x", SCALER_FLAGS_NONE, SCALE_FACTOR_TWO, - NULL, scaler_Normal2x_32, NULL }, + scaler_Normal2x_16, NULL, NULL }, { "Triple size", "3x", SCALER_FLAGS_NONE, SCALE_FACTOR_THREE, - NULL, scaler_Normal3x_32, NULL }, + scaler_Normal3x_16, NULL, NULL }, { "2xSaI", "2xsai", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - NULL, scaler_2xSaI_32, expand_sai }, + scaler_2xSaI_16, NULL, expand_sai }, { "Super 2xSaI", "super2xsai", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - NULL, scaler_Super2xSaI_32, expand_sai }, + scaler_Super2xSaI_16, NULL, expand_sai }, { "SuperEagle", "supereagle", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - NULL, scaler_SuperEagle_32, expand_sai }, + scaler_SuperEagle_16, NULL, expand_sai }, { "AdvMAME 2x", "advmame2x", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - NULL, scaler_AdvMame2x_32, expand_1 }, + scaler_AdvMame2x_16, NULL, expand_1 }, { "AdvMAME 3x", "advmame3x", SCALER_FLAGS_EXPAND, SCALE_FACTOR_THREE, - NULL, scaler_AdvMame3x_32, expand_1 }, + scaler_AdvMame3x_16, NULL, expand_1 }, { "TV 2x", "tv2x", SCALER_FLAGS_NONE, SCALE_FACTOR_TWO, - NULL, scaler_TV2x_32, NULL }, + scaler_TV2x_16, NULL, NULL }, { "Timex TV", "timextv", SCALER_FLAGS_NONE, SCALE_FACTOR_ONE, - NULL, scaler_TimexTV_32, NULL }, + scaler_TimexTV_16, NULL, NULL }, { "Dot Matrix", "dotmatrix", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - NULL, scaler_DotMatrix_32, expand_dotmatrix }, + scaler_DotMatrix_16, NULL, expand_dotmatrix }, { "Timex 1.5x", "timex15x", SCALER_FLAGS_NONE, SCALE_FACTOR_ONE_HALF, - NULL, scaler_Timex1_5x_32, NULL }, -#if 0 + scaler_Timex1_5x_16, NULL, NULL }, { "HQ 2x", "hq2x", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, scaler_HQ2x_16, NULL, expand_1 }, { "HQ 3x", "hq3x", SCALER_FLAGS_EXPAND, SCALE_FACTOR_THREE, scaler_HQ3x_16, NULL, expand_1 }, -#endif }; scaler_type current_scaler = SCALER_NUM; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-01 12:33:47
|
Revision: 277 http://svn.sourceforge.net/fuse-for-macosx/?rev=277&view=rev Author: fredm Date: 2007-01-01 04:33:46 -0800 (Mon, 01 Jan 2007) Log Message: ----------- Enable scalers other than hq[23]x. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/display.c branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/ui/cocoa/cocoadisplay.c branches/fusegl/fuse/ui/cocoa/cocoadisplay.h branches/fusegl/fuse/ui/scaler/scaler.c Added Paths: ----------- branches/fusegl/fuse/fusepb/scaler/scalers32.cpp Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-01-01 07:53:04 UTC (rev 276) +++ branches/fusegl/fuse/TODO 2007-01-01 12:33:46 UTC (rev 277) @@ -20,5 +20,6 @@ * Restore activity icons * Add native joystick processing (removes SDL joystick input dependency from Fuse) +* Fix screen updating during fastloading $Id: TODO,v 1.4 2004/03/02 13:38:08 pak21 Exp $ Modified: branches/fusegl/fuse/display.c =================================================================== --- branches/fusegl/fuse/display.c 2007-01-01 07:53:04 UTC (rev 276) +++ branches/fusegl/fuse/display.c 2007-01-01 12:33:46 UTC (rev 277) @@ -2,7 +2,7 @@ Copyright (c) 1999-2006 Philip Kendall, Thomas Harte, Witold Filipczyk and Fredrick Meunier - $Id: display.c,v 1.52 2006/07/31 13:33:27 fredm Exp $ + $Id: display.c,v 1.57 2006/09/17 00:56:18 fredm Exp $ 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 @@ -39,8 +39,6 @@ #include "screenshot.h" #include "settings.h" #include "spectrum.h" -#include "tape.h" -#include "timer.h" #include "ui/ui.h" #include "ui/uidisplay.h" #include "scld.h" @@ -144,8 +142,6 @@ static int border_changes_last = 0; static struct border_change_t *border_changes = NULL; -static timer_type last_frame_time; - struct border_change_t * alloc_change(void) { @@ -226,8 +222,6 @@ display_last_border = scld_last_dec.name.hires ? display_hires_border : display_lores_border; - error = timer_get_real_time( &last_frame_time ); if( error ) return error; - return 0; } @@ -733,7 +727,7 @@ display_get_attr( int x, int y, libspectrum_byte *ink, libspectrum_byte *paper ) { - display_parse_attr( display_get_attr_byte( x, y ), ink, paper ); + display_parse_attr( display_get_attr_byte( x, y ), ink, paper ); } void @@ -951,32 +945,14 @@ int display_frame( void ) { - timer_type current_time; - float difference; - int error; - - /* Copy all the critical region to display_image[] */ + /* Copy all the critical region to the display */ copy_critical_region( DISPLAY_WIDTH_COLS, DISPLAY_HEIGHT - 1 ); critical_region_x = critical_region_y = 0; - error = timer_get_real_time( ¤t_time ); if( error ) return error; - difference = timer_get_time_difference( ¤t_time, &last_frame_time ); + update_border(); + update_dirty_rects(); + update_ui_screen(); - /* don't bother updating the screen more than 25 times a second if we are - fastloading a tape, or 50 times a second if we are running at more than 100% - speed */ - if( ( !( settings_current.fastload && tape_is_playing() ) && - ( settings_current.emulation_speed == 100 || difference >= (1.0/50.0) ) ) || - ( settings_current.fastload && tape_is_playing() && - difference >= (1.0/25.0) ) ) { - - update_border(); - update_dirty_rects(); - update_ui_screen(); - last_frame_time = current_time; - - } - if( screenshot_movie_record == 1 ) { snprintf( screenshot_movie_name, SCREENSHOT_MOVIE_FILE_MAX, Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-01 07:53:04 UTC (rev 276) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-01 12:33:46 UTC (rev 277) @@ -78,8 +78,6 @@ B61F45E109121DF100C8096C /* machines.h in Headers */ = {isa = PBXBuildFile; fileRef = B6AD8FEC06221FD500C70D75 /* machines.h */; }; B61F45E209121DF100C8096C /* simpleide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6AD90560622B59200C70D75 /* simpleide.h */; }; B61F45E309121DF100C8096C /* if2.h in Headers */ = {isa = PBXBuildFile; fileRef = B621A11F062E92FB00F63DBC /* if2.h */; }; - B61F45E409121DF100C8096C /* hq2x.h in Headers */ = {isa = PBXBuildFile; fileRef = B6C8696A06561155003000A6 /* hq2x.h */; }; - B61F45E509121DF100C8096C /* hq3x.h in Headers */ = {isa = PBXBuildFile; fileRef = B6C8696B06561155003000A6 /* hq3x.h */; }; B61F45E609121DF100C8096C /* intern.h in Headers */ = {isa = PBXBuildFile; fileRef = B6C86978065611B3003000A6 /* intern.h */; }; B61F45E709121DF100C8096C /* zxatasp.h in Headers */ = {isa = PBXBuildFile; fileRef = B601847A065A586900B0BE59 /* zxatasp.h */; }; B61F45E809121DF100C8096C /* zxcf.h in Headers */ = {isa = PBXBuildFile; fileRef = B601847C065A586900B0BE59 /* zxcf.h */; }; @@ -208,9 +206,6 @@ B61F467009121DF100C8096C /* PokeFinderController.m in Sources */ = {isa = PBXBuildFile; fileRef = B62F3BCF059F5BF300A7009A /* PokeFinderController.m */; }; B61F467209121DF100C8096C /* MemoryBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D2989205B061CB00C2AA14 /* MemoryBrowserController.m */; }; B61F467309121DF100C8096C /* periph.c in Sources */ = {isa = PBXBuildFile; fileRef = B6C57E0005ECA05B0056F1D0 /* periph.c */; }; - B61F467509121DF100C8096C /* scalers16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C57E3F05ECC9260056F1D0 /* scalers16.cpp */; }; - B61F467609121DF100C8096C /* hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B65163AB05F4A11E001903BE /* hq2x.cpp */; }; - B61F467709121DF100C8096C /* hq3x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B61EF5B905FED7930081DF70 /* hq3x.cpp */; }; B61F467809121DF100C8096C /* fuse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CD0B9E06069F4A00847338 /* fuse.cpp */; }; B61F467909121DF100C8096C /* breakpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = B66050EC0606AAF500247454 /* breakpoint.c */; }; B61F467A09121DF100C8096C /* scorpion.c in Sources */ = {isa = PBXBuildFile; fileRef = B66050F80606AB0B00247454 /* scorpion.c */; }; @@ -263,6 +258,7 @@ B650987109366CA2003AF1BF /* szx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650987009366CA2003AF1BF /* szx.icns */; }; B6825549091817F30014B5EE /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6825547091817F30014B5EE /* divide.c */; }; B682554A091817F30014B5EE /* divide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6825548091817F30014B5EE /* divide.h */; }; + B6A24DF80B490F2100AD5B9D /* scalers32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6A24DF70B490F2100AD5B9D /* scalers32.cpp */; }; B6A6F0960B3C108C000B88E9 /* coreaudiosound.c in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */; }; B6A6F0DA0B3D141B000B88E9 /* cocoaui.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0D90B3D141B000B88E9 /* cocoaui.m */; }; B6A6F0EE0B3D5F9E000B88E9 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */; }; @@ -360,7 +356,6 @@ B615BFE50B4261E50082D535 /* HIDJoysticks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = HIDJoysticks.h; path = content_arrays/HIDJoysticks.h; sourceTree = "<group>"; }; B615BFE60B4261E50082D535 /* HIDJoysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = HIDJoysticks.m; path = content_arrays/HIDJoysticks.m; sourceTree = "<group>"; }; B619FC2E090D9BC200344F94 /* SavePanelAccessoryView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = SavePanelAccessoryView.nib; path = nibs/SavePanelAccessoryView.nib; sourceTree = "<group>"; }; - B61EF5B905FED7930081DF70 /* hq3x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq3x.cpp; path = scaler/hq3x.cpp; sourceTree = SOURCE_ROOT; }; B61F46A909121DF100C8096C /* Info-Fuse.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Fuse.plist"; sourceTree = "<group>"; }; B61F46AA09121DF200C8096C /* Fuse.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Fuse.app; sourceTree = BUILT_PRODUCTS_DIR; }; B6202BD105BD43D800A1EA8F /* libbz2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libbz2.framework; path = ../../bzip2/build/Deployment/libbz2.framework; sourceTree = SOURCE_ROOT; }; @@ -415,7 +410,6 @@ B650C40A0765988200DE7E81 /* tape_scorpion.szx */ = {isa = PBXFileReference; lastKnownFileType = file; name = tape_scorpion.szx; path = ../lib/compressed/tape_scorpion.szx; sourceTree = SOURCE_ROOT; }; B650F73E07E7CD3F00E4F3AF /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PreferencesController.h; path = controllers/PreferencesController.h; sourceTree = SOURCE_ROOT; }; B650F73F07E7CD3F00E4F3AF /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PreferencesController.m; path = controllers/PreferencesController.m; sourceTree = SOURCE_ROOT; }; - B65163AB05F4A11E001903BE /* hq2x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq2x.cpp; path = scaler/hq2x.cpp; sourceTree = SOURCE_ROOT; }; B65E4C600445DB7D00A864FD /* dck.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dck.c; path = ../dck.c; sourceTree = SOURCE_ROOT; }; B65E4C610445DB7D00A864FD /* dck.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dck.h; path = ../dck.h; sourceTree = SOURCE_ROOT; }; B66050EC0606AAF500247454 /* breakpoint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = breakpoint.c; path = ../debugger/breakpoint.c; sourceTree = SOURCE_ROOT; }; @@ -456,6 +450,7 @@ B68CB2C503DD920300A804BA /* debugger.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = debugger.h; path = ../debugger/debugger.h; sourceTree = "<group>"; }; B68CB2C603DD920300A804BA /* disassemble.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = disassemble.c; path = ../debugger/disassemble.c; sourceTree = "<group>"; }; B68CB2CC03DD923C00A804BA /* memory.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = "<group>"; }; + B6A24DF70B490F2100AD5B9D /* scalers32.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = scalers32.cpp; path = scaler/scalers32.cpp; sourceTree = SOURCE_ROOT; }; B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = coreaudiosound.c; path = sound/coreaudiosound.c; sourceTree = "<group>"; }; B6A6F0D90B3D141B000B88E9 /* cocoaui.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoaui.m; sourceTree = "<group>"; }; B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = ../../../../../../../../System/Library/Frameworks/CoreAudio.framework; sourceTree = "<group>"; }; @@ -485,12 +480,9 @@ B6C3479F044B091100E1BBA7 /* ts2068.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ts2068.png; path = resources/ts2068.png; sourceTree = SOURCE_ROOT; }; B6C57E0005ECA05B0056F1D0 /* periph.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = periph.c; path = ../periph.c; sourceTree = SOURCE_ROOT; }; B6C57E0105ECA05B0056F1D0 /* periph.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = periph.h; path = ../periph.h; sourceTree = SOURCE_ROOT; }; - B6C57E3F05ECC9260056F1D0 /* scalers16.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = scalers16.cpp; path = scaler/scalers16.cpp; sourceTree = SOURCE_ROOT; }; B6C691B704C20A42005EE041 /* joystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = joystick.c; path = ../joystick.c; sourceTree = SOURCE_ROOT; }; B6C740D90810BB0500AB170C /* Joysticks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Joysticks.h; path = content_arrays/Joysticks.h; sourceTree = SOURCE_ROOT; }; B6C740DA0810BB0500AB170C /* Joysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = Joysticks.m; path = content_arrays/Joysticks.m; sourceTree = SOURCE_ROOT; }; - B6C8696A06561155003000A6 /* hq2x.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = hq2x.h; path = scaler/hq2x.h; sourceTree = SOURCE_ROOT; }; - B6C8696B06561155003000A6 /* hq3x.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = hq3x.h; path = scaler/hq3x.h; sourceTree = SOURCE_ROOT; }; B6C86978065611B3003000A6 /* intern.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = intern.h; path = scaler/intern.h; sourceTree = SOURCE_ROOT; }; B6C8B723076D2B1A0007B7B5 /* if1.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = if1.c; path = ../if1.c; sourceTree = SOURCE_ROOT; }; B6C8B724076D2B1A0007B7B5 /* if1.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = if1.h; path = ../if1.h; sourceTree = SOURCE_ROOT; }; @@ -961,15 +953,11 @@ F541FB5C03B0B31601FF8235 /* scaler */ = { isa = PBXGroup; children = ( - B65163AB05F4A11E001903BE /* hq2x.cpp */, - B6C8696A06561155003000A6 /* hq2x.h */, - B61EF5B905FED7930081DF70 /* hq3x.cpp */, - B6C8696B06561155003000A6 /* hq3x.h */, B6C86978065611B3003000A6 /* intern.h */, B63ABD8D042F175200A864FD /* scaler.c */, F541FB5E03B0B33401FF8235 /* scaler.h */, B60A6A3A042BEECE00D41533 /* scaler_internals.h */, - B6C57E3F05ECC9260056F1D0 /* scalers16.cpp */, + B6A24DF70B490F2100AD5B9D /* scalers32.cpp */, ); path = scaler; sourceTree = "<group>"; @@ -1195,8 +1183,6 @@ B61F45E109121DF100C8096C /* machines.h in Headers */, B61F45E209121DF100C8096C /* simpleide.h in Headers */, B61F45E309121DF100C8096C /* if2.h in Headers */, - B61F45E409121DF100C8096C /* hq2x.h in Headers */, - B61F45E509121DF100C8096C /* hq3x.h in Headers */, B61F45E609121DF100C8096C /* intern.h in Headers */, B61F45E709121DF100C8096C /* zxatasp.h in Headers */, B61F45E809121DF100C8096C /* zxcf.h in Headers */, @@ -1419,9 +1405,6 @@ B61F467009121DF100C8096C /* PokeFinderController.m in Sources */, B61F467209121DF100C8096C /* MemoryBrowserController.m in Sources */, B61F467309121DF100C8096C /* periph.c in Sources */, - B61F467509121DF100C8096C /* scalers16.cpp in Sources */, - B61F467609121DF100C8096C /* hq2x.cpp in Sources */, - B61F467709121DF100C8096C /* hq3x.cpp in Sources */, B61F467809121DF100C8096C /* fuse.cpp in Sources */, B61F467909121DF100C8096C /* breakpoint.c in Sources */, B61F467A09121DF100C8096C /* scorpion.c in Sources */, @@ -1464,6 +1447,7 @@ B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */, B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */, B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */, + B6A24DF80B490F2100AD5B9D /* scalers32.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Copied: branches/fusegl/fuse/fusepb/scaler/scalers32.cpp (from rev 271, branches/fusegl/fuse/fusepb/scaler/scalers16.cpp) =================================================================== --- branches/fusegl/fuse/fusepb/scaler/scalers32.cpp (rev 0) +++ branches/fusegl/fuse/fusepb/scaler/scalers32.cpp 2007-01-01 12:33:46 UTC (rev 277) @@ -0,0 +1,28 @@ +/* scalers.cpp: the actual graphics scalers + * Copyright (C) 2003 Fredrick Meunier, Philip Kendall + * + * $Id: scalers16.cpp,v 1.1 2004/05/17 14:42:14 fred Exp $ + * + * Originally taken from ScummVM - Scumm Interpreter + * Copyright (C) 2001 Ludvig Strigeus + * Copyright (C) 2001/2002 The ScummVM project + * + * 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. + * + */ + +#define SCALER_DATA_SIZE 4 + +#include "ui/scaler/scalers.cpp" Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 07:53:04 UTC (rev 276) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 12:33:46 UTC (rev 277) @@ -113,8 +113,8 @@ timer = nil; /* Setup some basic OpenGL stuff */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); + glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE ); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glColor4f(0.0f, 0.0f, 0.0f, 0.0f); @@ -160,38 +160,35 @@ if( NO == screenTexInitialised ) return; /* Need to draw texture to screen here */ - memcpy(screenTex.pixels, screen.pixels, screenTex.pitch*screenTex.full_height); + memcpy( screenTex.pixels, screen->pixels, screenTex.pitch * screenTex.full_height ); [[self openGLContext] makeCurrentContext]; - glClear(GL_COLOR_BUFFER_BIT); + glClear( GL_COLOR_BUFFER_BIT ); /* Bind, update and draw new image */ - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1); + glBindTexture( GL_TEXTURE_RECTANGLE_EXT, 1 ); - glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, - screenTex.full_height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, - screenTex.pixels); + glTexSubImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, + screenTex.full_height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + screenTex.pixels ); - glBegin(GL_QUADS); + glBegin( GL_QUADS ); - glTexCoord2f((float)screenTex.image_width, (float)(screenTex.image_xoffset)); - glVertex2f(1.0f, 1.0f); + glTexCoord2f( (float)screenTex.image_width, (float)(screenTex.image_xoffset) ); + glVertex2f( 1.0f, 1.0f ); - glTexCoord2f((float)screenTex.image_width, (float)screenTex.image_height); - glVertex2f(1.0f, -1.0f); + glTexCoord2f( (float)screenTex.image_width, (float)screenTex.image_height ); + glVertex2f( 1.0f, -1.0f ); - glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_height); - glVertex2f(-1.0f, -1.0f); + glTexCoord2f( (float)screenTex.image_xoffset, (float)screenTex.image_height ); + glVertex2f( -1.0f, -1.0f ); - glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_yoffset); - glVertex2f(-1.0f, 1.0f); + glTexCoord2f( (float)screenTex.image_xoffset, (float)screenTex.image_yoffset ); + glVertex2f( -1.0f, 1.0f ); glEnd(); - /* FIXME: Probably still need to glFlush() in fullscreen mode */ - //glFlush(); - /* Swap buffer to screen */ [[self openGLContext] flushBuffer]; } @@ -201,14 +198,14 @@ { float bounds_ratio = rect.size.width/rect.size.height; - if( fabs(bounds_ratio - target_ratio) < 0.01f ) { - glViewport(0, 0, (int) rect.size.width, (int) rect.size.height); + if( fabs( bounds_ratio - target_ratio ) < 0.01f ) { + glViewport( 0, 0, (int) rect.size.width, (int) rect.size.height ); } else if( bounds_ratio > target_ratio ) { - int x_offset = (rect.size.width - (rect.size.height * target_ratio))/2.0f; - glViewport(x_offset, 0, (int)(rect.size.height*target_ratio), (int) rect.size.height); + int x_offset = ( rect.size.width - ( rect.size.height * target_ratio ) ) / 2.0f; + glViewport( x_offset, 0, (int)(rect.size.height*target_ratio), (int) rect.size.height ); } else { - int y_offset = (rect.size.height - (rect.size.width / target_ratio))/2.0f; - glViewport(0, y_offset, (int) rect.size.width, (int) (rect.size.width/target_ratio)); + int y_offset = ( rect.size.height - ( rect.size.width / target_ratio ) ) / 2.0f; + glViewport( 0, y_offset, (int) rect.size.width, (int) ( rect.size.width / target_ratio ) ); } } @@ -226,15 +223,15 @@ [self setViewPort:rect]; - glMatrixMode(GL_PROJECTION); + glMatrixMode( GL_PROJECTION ); glLoadIdentity(); - gluOrtho2D(0, rect.size.width, 0, rect.size.height); + gluOrtho2D( 0, rect.size.width, 0, rect.size.height ); - glMatrixMode(GL_MODELVIEW); + glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); - [self setNeedsDisplay:true]; + [self setNeedsDisplay:YES]; } /* scrolled, moved or resized */ @@ -251,13 +248,13 @@ [self setViewPort:rect]; - glMatrixMode(GL_PROJECTION); + glMatrixMode( GL_PROJECTION ); glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); + glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); - [self setNeedsDisplay:true]; + [self setNeedsDisplay:YES]; } -(void) destroyTexture @@ -283,7 +280,7 @@ screenTex.image_height = newScreen->image_height; screenTex.image_xoffset = newScreen->image_xoffset; screenTex.image_yoffset = newScreen->image_yoffset; - screenTex.pixels = calloc(screenTex.full_width*screenTex.full_height, sizeof(uint32_t)); + screenTex.pixels = calloc( screenTex.full_width * screenTex.full_height, sizeof(uint32_t) ); if( !screenTex.pixels ) { fprintf( stderr, "%s: couldn't create screenTex.pixels\n", fuse_progname ); return; @@ -296,22 +293,23 @@ /* FIXME: May want to have a double buffered texture later */ for(i = 0; i < 1; i++) { - glDisable(GL_TEXTURE_2D); - glEnable(GL_TEXTURE_RECTANGLE_EXT); - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, i+1); + glDisable( GL_TEXTURE_2D ); + glEnable( GL_TEXTURE_RECTANGLE_EXT ); + glBindTexture( GL_TEXTURE_RECTANGLE_EXT, i+1 ); - glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, - screenTex.full_width*screenTex.pitch, - screenTex.pixels ); + glTextureRangeAPPLE( GL_TEXTURE_RECTANGLE_EXT, + screenTex.full_width * screenTex.pitch, + screenTex.pixels ); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, - GL_STORAGE_CACHED_APPLE); - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE ); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, + GL_STORAGE_CACHED_APPLE ); + glPixelStorei( GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE ); + /* FIXME: Want GL_NEAREST for exact pixel ratios, GL_LINEAR otherwise */ + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); + glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 ); glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.full_width, screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, Modified: branches/fusegl/fuse/ui/cocoa/cocoadisplay.c =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoadisplay.c 2007-01-01 07:53:04 UTC (rev 276) +++ branches/fusegl/fuse/ui/cocoa/cocoadisplay.c 2007-01-01 12:33:46 UTC (rev 277) @@ -50,12 +50,18 @@ #include "ui/uidisplay.h" #include "utils.h" +/* The current size of the display (in units of DISPLAY_SCREEN_*) */ +static float display_current_size = 1.0f; + static int image_width; static int image_height; /* Screen texture */ -Cocoa_Texture screen; +Cocoa_Texture* screen = NULL; +Cocoa_Texture unscaled_screen; +Cocoa_Texture scaled_screen; + static uint32_t colour_values[] = { /* AARRGGBB */ 0x00000000, @@ -94,8 +100,10 @@ scaler_register( SCALER_ADVMAME2X ); scaler_register( SCALER_ADVMAME3X ); scaler_register( SCALER_DOTMATRIX ); +#if 0 scaler_register( SCALER_HQ2X ); scaler_register( SCALER_HQ3X ); +#endif } if( scaler_is_supported( current_scaler ) ) { @@ -106,27 +114,51 @@ } static int -cocoadisplay_load_gfx_mode( void ) +cocoadisplay_allocate_screen( Cocoa_Texture* screen, int height, int width, + float scaling_factor ) { - screen.image_width = image_width; - screen.image_height = image_height; + screen->image_width = image_width * display_current_size; + screen->image_height = image_height * display_current_size; /* Need some extra bytes around when using 2xSaI */ - screen.full_width = image_width+3; - screen.image_xoffset = 1; - screen.full_height = image_height+3; - screen.image_yoffset = 1; + screen->full_width = screen->image_width+3; + screen->image_xoffset = 1; + screen->full_height = screen->image_height+3; + screen->image_yoffset = 1; - screen.pixels = calloc(screen.full_width*screen.full_height, sizeof(uint32_t)); - if( !screen.pixels ) { + screen->pixels = calloc( screen->full_width*screen->full_height, sizeof(uint32_t) ); + if( !screen->pixels ) { fprintf( stderr, "%s: couldn't create screen.pixels\n", fuse_progname ); return 1; } - screen.pitch = screen.full_width * sizeof(uint32_t); + screen->pitch = screen->full_width * sizeof(uint32_t); + return 0; +} + +static int +cocoadisplay_load_gfx_mode( void ) +{ + int error; + + display_current_size = scaler_get_scaling_factor( current_scaler ); + + error = cocoadisplay_allocate_screen( &unscaled_screen, image_height, image_width, 1.0f ); + if( error ) return error; + + screen = &unscaled_screen; + + if( current_scaler != SCALER_NORMAL ) { + error = cocoadisplay_allocate_screen( &scaled_screen, image_height, + image_width, display_current_size ); + if( error ) return error; + + screen = &scaled_screen; + } + /* Create OpenGL textures for the image in DisplayOpenGLView */ - CreateTexture(&screen); + CreateTexture( screen ); /* Redraw the entire screen... */ display_refresh_all(); @@ -159,7 +191,7 @@ uidisplay_init( int width, int height ) { int error; - error = cocoadisplay_allocate_colours( sizeof(colour_values)/sizeof(uint32_t), + error = cocoadisplay_allocate_colours( sizeof(colour_values) / sizeof(uint32_t), colour_values, bw_values ); scaler_select_scaler( SCALER_NORMAL ); @@ -169,6 +201,9 @@ init_scalers(); + if ( scaler_select_scaler( current_scaler ) ) + scaler_select_scaler( SCALER_NORMAL ); + cocoadisplay_load_gfx_mode(); /* We can now output error messages to our output device */ @@ -183,9 +218,9 @@ fuse_emulation_pause(); /* Free the old surface */ - if( screen.pixels ) { - free( screen.pixels ); - screen.pixels=NULL; + if( unscaled_screen.pixels ) { + free( unscaled_screen.pixels ); + unscaled_screen.pixels=NULL; } /* Setup the new GFX mode */ @@ -205,19 +240,19 @@ if( machine_current->timex ) { x <<= 1; y <<= 1; - dest_base = dest = (uint32_t*)( (uint8_t*)screen.pixels + - (x+screen.image_xoffset) * sizeof(uint32_t) + - (y+screen.image_yoffset) * screen.pitch); + dest_base = dest = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + + (x+unscaled_screen.image_xoffset) * sizeof(uint32_t) + + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); *(dest++) = palette_colour; *(dest++) = palette_colour; - dest = (uint32_t*)( (uint8_t*)dest_base + screen.pitch ); + dest = (uint32_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); *(dest++) = palette_colour; *(dest++) = palette_colour; } else { - dest = (uint32_t*)( (uint8_t*)screen.pixels + - (x+screen.image_xoffset) * sizeof(uint32_t) + - (y+screen.image_yoffset) * screen.pitch ); + dest = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + + (x+unscaled_screen.image_xoffset) * sizeof(uint32_t) + + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); *dest = palette_colour; } @@ -241,9 +276,9 @@ x <<= 4; y <<= 1; - dest_base = (uint32_t*)( (uint8_t*)screen.pixels + - (x+screen.image_xoffset) * sizeof(uint32_t) + - (y+screen.image_yoffset) * screen.pitch ); + dest_base = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + + (x+unscaled_screen.image_xoffset) * sizeof(uint32_t) + + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); for( i=0; i<2; i++ ) { dest = dest_base; @@ -265,13 +300,13 @@ *(dest++) = ( data & 0x01 ) ? palette_ink : palette_paper; *dest = ( data & 0x01 ) ? palette_ink : palette_paper; - dest_base = (uint32_t*)( (uint8_t*)dest_base + screen.pitch ); + dest_base = (uint32_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); } } else { x <<= 3; - dest = (uint32_t*)( (uint8_t*)screen.pixels + - (x+screen.image_xoffset) * sizeof(uint32_t) + - (y+screen.image_yoffset) * screen.pitch ); + dest = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + + (x+unscaled_screen.image_xoffset) * sizeof(uint32_t) + + (y+unscaled_screen.image_yoffset) * unscaled_screen.pitch ); *(dest++) = ( data & 0x80 ) ? palette_ink : palette_paper; *(dest++) = ( data & 0x40 ) ? palette_ink : palette_paper; @@ -297,9 +332,9 @@ uint32_t palette_paper = palette_values[ paper ]; x <<= 4; y <<= 1; - dest_base = (uint32_t*)( (uint8_t*)screen.pixels + (x+screen.image_xoffset) * - sizeof(uint32_t) + (y+screen.image_yoffset) * - screen.pitch ); + dest_base = (uint32_t*)( (uint8_t*)unscaled_screen.pixels + (x+unscaled_screen.image_xoffset) * + sizeof(uint32_t) + (y+unscaled_screen.image_yoffset) * + unscaled_screen.pitch ); for( i=0; i<2; i++ ) { dest = dest_base; @@ -321,32 +356,54 @@ *(dest++) = ( data & 0x0002 ) ? palette_ink : palette_paper; *dest = ( data & 0x0001 ) ? palette_ink : palette_paper; - dest_base = (uint32_t*)( (uint8_t*)dest_base + screen.pitch ); + dest_base = (uint32_t*)( (uint8_t*)dest_base + unscaled_screen.pitch ); } } void uidisplay_frame_end( void ) { - /* Send data to DisplayOpenGLView somehow? */ - /* Could set some sort of flag to tell DisplayOpenGLView there is a new - image to draw */ + /* Data is read by the DisplayOpenGLView at the end of a frame */ } void uidisplay_area( int x, int y, int width, int height ) { - /* Do nothing - will send whole framebuffer over at frame end ATM */ + int scaled_x, scaled_y; + + if( current_scaler == SCALER_NORMAL ) return; + + /* Extend the dirty region by 1 pixel for scalers that "smear" the screen, + e.g. 2xSAI */ + if( scaler_flags & SCALER_FLAGS_EXPAND ) + scaler_expander( &x, &y, &width, &height, image_width, image_height ); + + scaled_x = display_current_size * x; + scaled_y = display_current_size * y; + + /* Create scaled image */ + scaler_proc32( unscaled_screen.pixels + ( y + 1 ) * unscaled_screen.pitch + sizeof(uint32_t) * ( x + 1 ), + unscaled_screen.pitch, + scaled_screen.pixels + scaled_y * scaled_screen.pitch + sizeof(uint32_t) * scaled_x, + scaled_screen.pitch, width, height ); } int uidisplay_end( void ) { - if( screen.pixels ) { - free( screen.pixels ); - screen.pixels=NULL; + if( screen && screen->pixels ) { DestroyTexture(); } + if( unscaled_screen.pixels ) { + free( unscaled_screen.pixels ); + unscaled_screen.pixels=NULL; + } + + if( scaled_screen.pixels ) { + free( scaled_screen.pixels ); + scaled_screen.pixels=NULL; + } + return 0; } Modified: branches/fusegl/fuse/ui/cocoa/cocoadisplay.h =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoadisplay.h 2007-01-01 07:53:04 UTC (rev 276) +++ branches/fusegl/fuse/ui/cocoa/cocoadisplay.h 2007-01-01 12:33:46 UTC (rev 277) @@ -41,7 +41,7 @@ } Cocoa_Texture; /* Screen texture */ -extern Cocoa_Texture screen; +extern Cocoa_Texture* screen; extern ui_statusbar_state cocoa_disk_state, cocoa_mdr_state, cocoa_tape_state; Modified: branches/fusegl/fuse/ui/scaler/scaler.c =================================================================== --- branches/fusegl/fuse/ui/scaler/scaler.c 2007-01-01 07:53:04 UTC (rev 276) +++ branches/fusegl/fuse/ui/scaler/scaler.c 2007-01-01 12:33:46 UTC (rev 277) @@ -69,37 +69,39 @@ static struct scaler_info available_scalers[] = { { "Timex Half (smoothed)", "half", SCALER_FLAGS_NONE, SCALE_FACTOR_HALF, - scaler_Half_16, NULL, NULL }, + NULL, scaler_Half_32, NULL }, { "Timex Half (skipping)", "halfskip", SCALER_FLAGS_NONE, SCALE_FACTOR_HALF, - scaler_HalfSkip_16, NULL, NULL }, + NULL, scaler_HalfSkip_32, NULL }, { "Normal", "normal", SCALER_FLAGS_NONE, SCALE_FACTOR_ONE, - scaler_Normal1x_16, NULL, NULL }, + NULL, scaler_Normal1x_32, NULL }, { "Double size", "2x", SCALER_FLAGS_NONE, SCALE_FACTOR_TWO, - scaler_Normal2x_16, NULL, NULL }, + NULL, scaler_Normal2x_32, NULL }, { "Triple size", "3x", SCALER_FLAGS_NONE, SCALE_FACTOR_THREE, - scaler_Normal3x_16, NULL, NULL }, + NULL, scaler_Normal3x_32, NULL }, { "2xSaI", "2xsai", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - scaler_2xSaI_16, NULL, expand_sai }, + NULL, scaler_2xSaI_32, expand_sai }, { "Super 2xSaI", "super2xsai", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - scaler_Super2xSaI_16, NULL, expand_sai }, + NULL, scaler_Super2xSaI_32, expand_sai }, { "SuperEagle", "supereagle", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - scaler_SuperEagle_16, NULL, expand_sai }, + NULL, scaler_SuperEagle_32, expand_sai }, { "AdvMAME 2x", "advmame2x", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - scaler_AdvMame2x_16, NULL, expand_1 }, + NULL, scaler_AdvMame2x_32, expand_1 }, { "AdvMAME 3x", "advmame3x", SCALER_FLAGS_EXPAND, SCALE_FACTOR_THREE, - scaler_AdvMame3x_16, NULL, expand_1 }, + NULL, scaler_AdvMame3x_32, expand_1 }, { "TV 2x", "tv2x", SCALER_FLAGS_NONE, SCALE_FACTOR_TWO, - scaler_TV2x_16, NULL, NULL }, + NULL, scaler_TV2x_32, NULL }, { "Timex TV", "timextv", SCALER_FLAGS_NONE, SCALE_FACTOR_ONE, - scaler_TimexTV_16, NULL, NULL }, + NULL, scaler_TimexTV_32, NULL }, { "Dot Matrix", "dotmatrix", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, - scaler_DotMatrix_16, NULL, expand_dotmatrix }, + NULL, scaler_DotMatrix_32, expand_dotmatrix }, { "Timex 1.5x", "timex15x", SCALER_FLAGS_NONE, SCALE_FACTOR_ONE_HALF, - scaler_Timex1_5x_16, NULL, NULL }, + NULL, scaler_Timex1_5x_32, NULL }, +#if 0 { "HQ 2x", "hq2x", SCALER_FLAGS_EXPAND, SCALE_FACTOR_TWO, scaler_HQ2x_16, NULL, expand_1 }, { "HQ 3x", "hq3x", SCALER_FLAGS_EXPAND, SCALE_FACTOR_THREE, scaler_HQ3x_16, NULL, expand_1 }, +#endif }; scaler_type current_scaler = SCALER_NUM; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-01 07:53:05
|
Revision: 276 http://svn.sourceforge.net/fuse-for-macosx/?rev=276&view=rev Author: fredm Date: 2006-12-31 23:53:04 -0800 (Sun, 31 Dec 2006) Log Message: ----------- Make minimised appication have an screen image. Modified Paths: -------------- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 07:24:18 UTC (rev 275) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 07:53:04 UTC (rev 276) @@ -519,4 +519,49 @@ return YES; } +- (BOOL)isFlipped +{ + return YES; +} + +- (void)copyGLToBackingStore +{ + [[self openGLContext] makeCurrentContext]; + + NSSize size = [self bounds].size; + + void *buffer = malloc(size.width * size.height * 4); + + glReadPixels( 0, + 0, + size.width, + size.height, + GL_RGBA, + GL_UNSIGNED_BYTE, + buffer ); + + [self lockFocus]; + + NSDrawBitmap( [self bounds], + size.width, + size.height, + 8, + 4, + 32, + size.width * 4, + NO, + NO, + NSDeviceRGBColorSpace, + (unsigned char const **)&buffer ); + + [self unlockFocus]; + + free(buffer); +} + +-(void) windowWillMiniaturize:(NSNotification *)aNotification +{ + [self copyGLToBackingStore]; +} + @end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-01 07:24:18
|
Revision: 275 http://svn.sourceforge.net/fuse-for-macosx/?rev=275&view=rev Author: fredm Date: 2006-12-31 23:24:18 -0800 (Sun, 31 Dec 2006) Log Message: ----------- Move transformer intantiation back to PreferencesController. Modified Paths: -------------- branches/fusegl/fuse/fusepb/controllers/PreferencesController.h branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.h 2007-01-01 07:15:54 UTC (rev 274) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.h 2007-01-01 07:24:18 UTC (rev 275) @@ -40,7 +40,8 @@ NSMutableArray *machineRoms; } -- (void)awakeFromNib; ++ (void)initialize; + - (void)windowDidLoad; - (void)windowDidMove:(NSNotification *)aNotification; - (void)showWindow:(id)sender; Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-01 07:15:54 UTC (rev 274) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-01 07:24:18 UTC (rev 275) @@ -36,6 +36,11 @@ #import "Joysticks.h" #import "HIDJoysticks.h" +#import "ScalerNameToIdTransformer.h" +#import "MachineScalerIsEnabled.h" +#import "MachineNameToIdTransformer.h" +#import "VolumeSliderToPrefTransformer.h" + #include "fuse.h" #include "joystick.h" #include "printer.h" @@ -51,8 +56,42 @@ @implementation PreferencesController -- (void)awakeFromNib ++(void) initialize { + ScalerNameToIdTransformer *sNToITransformer; + MachineScalerIsEnabled *machineScalerIsEnabled; + MachineNameToIdTransformer *mToITransformer; + VolumeSliderToPrefTransformer *vsToPTransformer; + + sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:sNToITransformer + forName:@"ScalerNameToIdTransformer"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:1] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsEnabled"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:0] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsDisabled"]; + + mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:mToITransformer + forName:@"MachineNameToIdTransformer"]; + + vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:vsToPTransformer + forName:@"VolumeSliderToPrefTransformer"]; + } - (void)windowDidLoad Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-01 07:15:54 UTC (rev 274) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-01 07:24:18 UTC (rev 275) @@ -24,10 +24,6 @@ #import <Cocoa/Cocoa.h> -#include <OpenGL/gl.h> -#include <OpenGL/glext.h> -#include <OpenGL/glu.h> - #include <libspectrum.h> #include "input.h" @@ -60,7 +56,6 @@ float target_ratio; } +(DisplayOpenGLView *) instance; -+(void) initialize; -(IBAction) fullscreen:(id)sender; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 07:15:54 UTC (rev 274) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 07:24:18 UTC (rev 275) @@ -23,11 +23,11 @@ */ #import "DisplayOpenGLView.h" -#import "ScalerNameToIdTransformer.h" -#import "MachineScalerIsEnabled.h" -#import "MachineNameToIdTransformer.h" -#import "VolumeSliderToPrefTransformer.h" +#include <OpenGL/gl.h> +#include <OpenGL/glext.h> +#include <OpenGL/glu.h> + #include "event.h" #include "fuse.h" #include "fusepb/main.h" @@ -50,44 +50,6 @@ return instance; } -+(void) initialize -{ - ScalerNameToIdTransformer *sNToITransformer; - MachineScalerIsEnabled *machineScalerIsEnabled; - MachineNameToIdTransformer *mToITransformer; - VolumeSliderToPrefTransformer *vsToPTransformer; - - sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:sNToITransformer - forName:@"ScalerNameToIdTransformer"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:1] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsEnabled"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:0] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsDisabled"]; - - mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:mToITransformer - forName:@"MachineNameToIdTransformer"]; - - vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:vsToPTransformer - forName:@"VolumeSliderToPrefTransformer"]; - -} - -(IBAction) fullscreen:(id)sender { if( settings_current.full_screen == 1 ) { // we need to go back to non-full screen This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-01 07:15:53
|
Revision: 274 http://svn.sourceforge.net/fuse-for-macosx/?rev=274&view=rev Author: fredm Date: 2006-12-31 23:15:54 -0800 (Sun, 31 Dec 2006) Log Message: ----------- Don't enable sound until we've set the machine so we know the frame rate. Modified Paths: -------------- branches/fusegl/fuse/fuse.cpp Modified: branches/fusegl/fuse/fuse.cpp =================================================================== --- branches/fusegl/fuse/fuse.cpp 2007-01-01 07:13:02 UTC (rev 273) +++ branches/fusegl/fuse/fuse.cpp 2007-01-01 07:15:54 UTC (rev 274) @@ -240,16 +240,6 @@ z80_init(); - fuse_sound_in_use = 0; - if( settings_current.sound && settings_current.emulation_speed == 100 ) - sound_init( settings_current.sound_device ); - - if( sound_enabled ) { - fuse_sound_in_use = 1; - } else { - settings_current.sound = 0; - } - if( timer_init() ) return 1; error = timer_estimate_reset(); if( error ) return error; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-01 07:13:02
|
Revision: 273 http://svn.sourceforge.net/fuse-for-macosx/?rev=273&view=rev Author: fredm Date: 2006-12-31 23:13:02 -0800 (Sun, 31 Dec 2006) Log Message: ----------- Restore fullscreen support. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-01-01 06:54:20 UTC (rev 272) +++ branches/fusegl/fuse/TODO 2007-01-01 07:13:02 UTC (rev 273) @@ -10,12 +10,15 @@ X Fix menus, preferences etc. X Add native mouse processing (removes SDL mouse input dependency from Fuse) X Make it possible to constrain Speccy image to "correct" aspect ratio -* Add native joystick processing (removes SDL joystick input dependency from - Fuse) -* Restore fullscreen support +X Restore fullscreen support * Fix scalers +* Add support for bilinear etc. OpenGL filters +* Add option to snap window size to 1x, 2x, 3x * Use sheets rather than modal dialogs * Run emulation in seperate thread to avoid sound glitches when menus are selected +* Restore activity icons +* Add native joystick processing (removes SDL joystick input dependency from + Fuse) $Id: TODO,v 1.4 2004/03/02 13:38:08 pak21 Exp $ Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2007-01-01 06:54:20 UTC (rev 272) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2007-01-01 07:13:02 UTC (rev 273) @@ -1,6 +1,11 @@ { IBClasses = ( - {CLASS = DisplayOpenGLView; LANGUAGE = ObjC; SUPERCLASS = NSOpenGLView; }, + { + ACTIONS = {fullscreen = id; }; + CLASS = DisplayOpenGLView; + LANGUAGE = ObjC; + SUPERCLASS = NSOpenGLView; + }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-01 06:54:20 UTC (rev 272) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-01 07:13:02 UTC (rev 273) @@ -53,10 +53,19 @@ input_key unicode_keysym; CFAbsoluteTime time; + + NSWindow *fullscreenWindow; + NSWindow *windowedWindow; + + float target_ratio; } +(DisplayOpenGLView *) instance; +(void) initialize; +-(IBAction) fullscreen:(id)sender; + +-(void) setViewPort:(NSRect)rect; + -(void) createTexture:(Cocoa_Texture*)newScreen; -(void) destroyTexture; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 06:54:20 UTC (rev 272) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 07:13:02 UTC (rev 273) @@ -37,11 +37,9 @@ extern keysyms_map_t unicode_keysyms_map[]; -#include <CoreAudio/AudioHardware.h> #include "sound/sfifo.h" extern sfifo_t sound_fifo; -extern AudioStreamBasicDescription deviceFormat; @implementation DisplayOpenGLView @@ -90,12 +88,43 @@ } +-(IBAction) fullscreen:(id)sender +{ + if( settings_current.full_screen == 1 ) { // we need to go back to non-full screen + [fullscreenWindow close]; + [windowedWindow setContentView: self]; + [windowedWindow makeKeyAndOrderFront: self]; + [windowedWindow makeFirstResponder: self]; + settings_current.full_screen = 0; + } else { // settings_current.full_screen == 0 + unsigned int windowStyle; + NSRect contentRect; + + windowedWindow = [self window]; + windowStyle = NSBorderlessWindowMask; + contentRect = [[NSScreen mainScreen] frame]; + fullscreenWindow = [[NSWindow alloc] initWithContentRect:contentRect + styleMask: windowStyle + backing:NSBackingStoreBuffered + defer: NO]; + if( fullscreenWindow != nil ) { + [fullscreenWindow setTitle: @"Fuse"]; + [fullscreenWindow setReleasedWhenClosed: YES]; + [fullscreenWindow setContentView: self]; + [fullscreenWindow makeKeyAndOrderFront:self ]; + [fullscreenWindow setLevel: NSScreenSaverWindowLevel - 1]; + [fullscreenWindow makeFirstResponder:self]; + settings_current.full_screen = 1; + } + } +} + -(id) initWithFrame:(NSRect)frameRect { /* Init pixel format attribs */ NSOpenGLPixelFormatAttribute attrs[] = { + NSOpenGLPFANoRecovery, NSOpenGLPFAAccelerated, - NSOpenGLPFANoRecovery, NSOpenGLPFADoubleBuffer, 0 }; @@ -115,6 +144,8 @@ instance = self; } + [pixFmt release]; + [[self openGLContext] makeCurrentContext]; timer = nil; @@ -122,8 +153,8 @@ /* Setup some basic OpenGL stuff */ glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glClearColor(1.0f, 1.0f, 1.0f, 1.0f); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glColor4f(0.0f, 0.0f, 0.0f, 0.0f); screenTexInitialised = NO; @@ -135,6 +166,8 @@ cocoakeyboard_symbol_shift_pressed = 0; unicode_keysym = INPUT_KEY_NONE; + target_ratio = 4.0f/3.0f; + return self; } @@ -169,6 +202,8 @@ [[self openGLContext] makeCurrentContext]; + glClear(GL_COLOR_BUFFER_BIT); + /* Bind, update and draw new image */ glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1); @@ -199,6 +234,22 @@ [[self openGLContext] flushBuffer]; } +/* want to keep image in the original aspect ratio in the face of window resizing */ +-(void) setViewPort:(NSRect)rect +{ + float bounds_ratio = rect.size.width/rect.size.height; + + if( fabs(bounds_ratio - target_ratio) < 0.01f ) { + glViewport(0, 0, (int) rect.size.width, (int) rect.size.height); + } else if( bounds_ratio > target_ratio ) { + int x_offset = (rect.size.width - (rect.size.height * target_ratio))/2.0f; + glViewport(x_offset, 0, (int)(rect.size.height*target_ratio), (int) rect.size.height); + } else { + int y_offset = (rect.size.height - (rect.size.width / target_ratio))/2.0f; + glViewport(0, y_offset, (int) rect.size.width, (int) (rect.size.width/target_ratio)); + } +} + /* moved or resized */ -(void) update { @@ -211,11 +262,13 @@ rect = [self bounds]; - glViewport(0, 0, (int) rect.size.width, (int) rect.size.height); + [self setViewPort:rect]; glMatrixMode(GL_PROJECTION); glLoadIdentity(); + gluOrtho2D(0, rect.size.width, 0, rect.size.height); + glMatrixMode(GL_MODELVIEW); glLoadIdentity(); @@ -234,7 +287,7 @@ rect = [self bounds]; - glViewport(0, 0, (int) rect.size.width, (int) rect.size.height); + [self setViewPort:rect]; glMatrixMode(GL_PROJECTION); glLoadIdentity(); @@ -470,6 +523,17 @@ -(void) keyDown:(NSEvent *)theEvent { + if( settings_current.full_screen ) { + unichar c = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]; + switch (c) { + // [Esc] exits fullScreen mode. + case 27: + [self fullscreen:nil]; + return; + break; + } + } + [self keyChange:theEvent type:INPUT_EVENT_KEYPRESS]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-01 06:54:22
|
Revision: 272 http://svn.sourceforge.net/fuse-for-macosx/?rev=272&view=rev Author: fredm Date: 2006-12-31 22:54:20 -0800 (Sun, 31 Dec 2006) Log Message: ----------- Rollback refactoring for second take on fullscreen mode. Modified Paths: -------------- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/FuseMenus.m branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/controllers/PreferencesController.h branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Removed Paths: ------------- branches/fusegl/fuse/fusepb/views/DisplayController.h branches/fusegl/fuse/fusepb/views/DisplayController.m branches/fusegl/fuse/fusepb/views/DisplayScene.h branches/fusegl/fuse/fusepb/views/DisplayScene.m Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-01 06:54:20 UTC (rev 272) @@ -9,10 +9,6 @@ /* Begin PBXBuildFile section */ B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */ = {isa = PBXBuildFile; fileRef = B615BFE50B4261E50082D535 /* HIDJoysticks.h */; }; B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */ = {isa = PBXBuildFile; fileRef = B615BFE60B4261E50082D535 /* HIDJoysticks.m */; }; - B615C0130B45159B0082D535 /* DisplayController.h in Headers */ = {isa = PBXBuildFile; fileRef = B615C0110B45159B0082D535 /* DisplayController.h */; }; - B615C0140B45159B0082D535 /* DisplayController.m in Sources */ = {isa = PBXBuildFile; fileRef = B615C0120B45159B0082D535 /* DisplayController.m */; }; - B615C02B0B454A7F0082D535 /* DisplayScene.h in Headers */ = {isa = PBXBuildFile; fileRef = B615C0290B454A7E0082D535 /* DisplayScene.h */; }; - B615C02C0B454A7F0082D535 /* DisplayScene.m in Sources */ = {isa = PBXBuildFile; fileRef = B615C02A0B454A7F0082D535 /* DisplayScene.m */; }; B61F459309121DF100C8096C /* Fuse Help in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F905ED05CDA24300C2F10D /* Fuse Help */; }; B61F459409121DF100C8096C /* disk_plus3.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F2076596C700DE7E81 /* disk_plus3.szx */; }; B61F459509121DF100C8096C /* tape_16.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F4076596FD00DE7E81 /* tape_16.szx */; }; @@ -363,10 +359,6 @@ B611196806A1FBB6006D2711 /* JoystickConfiguration.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = JoystickConfiguration.nib; path = nibs/JoystickConfiguration.nib; sourceTree = "<group>"; }; B615BFE50B4261E50082D535 /* HIDJoysticks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = HIDJoysticks.h; path = content_arrays/HIDJoysticks.h; sourceTree = "<group>"; }; B615BFE60B4261E50082D535 /* HIDJoysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = HIDJoysticks.m; path = content_arrays/HIDJoysticks.m; sourceTree = "<group>"; }; - B615C0110B45159B0082D535 /* DisplayController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DisplayController.h; sourceTree = "<group>"; }; - B615C0120B45159B0082D535 /* DisplayController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DisplayController.m; sourceTree = "<group>"; }; - B615C0290B454A7E0082D535 /* DisplayScene.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DisplayScene.h; sourceTree = "<group>"; }; - B615C02A0B454A7F0082D535 /* DisplayScene.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DisplayScene.m; sourceTree = "<group>"; }; B619FC2E090D9BC200344F94 /* SavePanelAccessoryView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = SavePanelAccessoryView.nib; path = nibs/SavePanelAccessoryView.nib; sourceTree = "<group>"; }; B61EF5B905FED7930081DF70 /* hq3x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq3x.cpp; path = scaler/hq3x.cpp; sourceTree = SOURCE_ROOT; }; B61F46A909121DF100C8096C /* Info-Fuse.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Fuse.plist"; sourceTree = "<group>"; }; @@ -927,10 +919,6 @@ B6CE7FCF0B28FBEC00EB65B3 /* Views */ = { isa = PBXGroup; children = ( - B615C0290B454A7E0082D535 /* DisplayScene.h */, - B615C02A0B454A7F0082D535 /* DisplayScene.m */, - B615C0110B45159B0082D535 /* DisplayController.h */, - B615C0120B45159B0082D535 /* DisplayController.m */, B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */, B6CE7FCC0B28FBD600EB65B3 /* DisplayOpenGLView.m */, ); @@ -1239,8 +1227,6 @@ B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */, B6A6F11F0B3EA737000B88E9 /* cocoascreenshot.h in Headers */, B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */, - B615C0130B45159B0082D535 /* DisplayController.h in Headers */, - B615C02B0B454A7F0082D535 /* DisplayScene.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1478,8 +1464,6 @@ B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */, B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */, B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */, - B615C0140B45159B0082D535 /* DisplayController.m in Sources */, - B615C02C0B454A7F0082D535 /* DisplayScene.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/FuseMenus.m =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/FuseMenus.m 2007-01-01 06:54:20 UTC (rev 272) @@ -27,8 +27,7 @@ */ -#import "DisplayController.h" -#import "DisplayScene.h" +#import "DisplayOpenGLView.h" #import "FuseController.h" #import "FuseMenus.h" @@ -49,17 +48,17 @@ void CreateTexture(Cocoa_Texture* new_screen) { - [[DisplayScene singleton] createTexture:new_screen]; + [[DisplayOpenGLView instance] createTexture:new_screen]; } void DestroyTexture(void) { - [[DisplayScene singleton] destroyTexture]; + [[DisplayOpenGLView instance] destroyTexture]; } void SetEmulationHz( float hz ) { - [[DisplayController singleton] setEmulationHz:hz]; + [[DisplayOpenGLView instance] setEmulationHz:hz]; } void Hide(void) Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-01-01 06:54:20 UTC (rev 272) @@ -71,8 +71,6 @@ } + (FuseController *)singleton; --(void) awakeFromNib; - - (IBAction)cocoa_break:(id)sender; - (IBAction)disk_eject_a:(id)sender; - (IBAction)disk_eject_b:(id)sender; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-01-01 06:54:20 UTC (rev 272) @@ -45,7 +45,6 @@ #include "divide.h" #include "event.h" #include "fuse.h" -#include "fusepb/main.h" #include "if1.h" #include "if2.h" #include "libspectrum.h" @@ -218,14 +217,6 @@ return singleton; } --(void) awakeFromNib -{ - /* FIXME: Don't really like the argc, argv stuff being here... */ - if( fuse_init( ac, av ) ) { - fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); - } -} - - (IBAction)disk_eject_a:(id)sender { cocoaui_disk_eject( SPECPLUS3_DRIVE_A, 0 ); Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.h 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.h 2007-01-01 06:54:20 UTC (rev 272) @@ -40,7 +40,6 @@ NSMutableArray *machineRoms; } -+ (void)initialize; - (void)awakeFromNib; - (void)windowDidLoad; - (void)windowDidMove:(NSNotification *)aNotification; Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-01 06:54:20 UTC (rev 272) @@ -28,17 +28,13 @@ #include <string.h> -#import "PreferencesController.h" - -#import "CAMachines.h" #import "FuseController.h" -#import "HIDJoysticks.h" +#import "DisplayOpenGLView.h" #import "JoystickConfigurationController.h" +#import "PreferencesController.h" +#import "CAMachines.h" #import "Joysticks.h" -#import "MachineNameToIdTransformer.h" -#import "MachineScalerIsEnabled.h" -#import "ScalerNameToIdTransformer.h" -#import "VolumeSliderToPrefTransformer.h" +#import "HIDJoysticks.h" #include "fuse.h" #include "joystick.h" @@ -55,44 +51,6 @@ @implementation PreferencesController -+(void) initialize -{ - ScalerNameToIdTransformer *sNToITransformer; - MachineScalerIsEnabled *machineScalerIsEnabled; - MachineNameToIdTransformer *mToITransformer; - VolumeSliderToPrefTransformer *vsToPTransformer; - - sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:sNToITransformer - forName:@"ScalerNameToIdTransformer"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:1] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsEnabled"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:0] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsDisabled"]; - - mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:mToITransformer - forName:@"MachineNameToIdTransformer"]; - - vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:vsToPTransformer - forName:@"VolumeSliderToPrefTransformer"]; - -} - - (void)awakeFromNib { } @@ -164,6 +122,10 @@ [machineRoms release]; fuse_emulation_unpause(); + + /* If we've enabled sound we want to put some data in the buffers before + too long to avoid glitches */ + if( sound_enabled ) [[DisplayOpenGLView instance] updateEmulationForTimeDelta:0]; } - (IBAction)chooseFile:(id)sender Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2007-01-01 06:54:20 UTC (rev 272) @@ -1,17 +1,6 @@ { IBClasses = ( - { - CLASS = DisplayController; - LANGUAGE = ObjC; - OUTLETS = {openGLView = DisplayOpenGLView; }; - SUPERCLASS = NSResponder; - }, - { - CLASS = DisplayOpenGLView; - LANGUAGE = ObjC; - OUTLETS = {controller = NSResponder; }; - SUPERCLASS = NSOpenGLView; - }, + {CLASS = DisplayOpenGLView; LANGUAGE = ObjC; SUPERCLASS = NSOpenGLView; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Deleted: branches/fusegl/fuse/fusepb/views/DisplayController.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayController.h 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/views/DisplayController.h 2007-01-01 06:54:20 UTC (rev 272) @@ -1,72 +0,0 @@ -/* DisplayController.h: Implementation for the DisplayController class - Copyright (c) 2006 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... - Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia - -*/ - -#import <Cocoa/Cocoa.h> - -#include <libspectrum.h> - -#include "input.h" - -@class DisplayOpenGLView; - -@interface DisplayController : NSResponder -{ - /* Model */ - NSTimer* timer; - CFAbsoluteTime time; - - /* Views */ - IBOutlet DisplayOpenGLView *openGLView; - - GHashTable *unicode_keysyms_hash; - - BOOL optDown; - BOOL ctrlDown; - BOOL shiftDown; - - int cocoakeyboard_caps_shift_pressed; - int cocoakeyboard_symbol_shift_pressed; - input_key unicode_keysym; -} -+(DisplayController *) singleton; - --(void) mouseMoved:(NSEvent *)theEvent; --(void) mouseDown:(NSEvent *)theEvent; --(void) mouseUp:(NSEvent *)theEvent; --(void) rightMouseDown:(NSEvent *)theEvent; --(void) rightMouseUp:(NSEvent *)theEvent; --(void) otherMouseDown:(NSEvent *)theEvent; --(void) otherMouseUp:(NSEvent *)theEvent; - --(void) initKeyboard; --(void) flagsChanged:(NSEvent *)theEvent; --(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash; --(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type; --(void) keyDown:(NSEvent *)theEvent; --(void) keyUp:(NSEvent *)theEvent; - --(void) emulationTimerFired:(NSTimer *)timer; --(void) setEmulationHz:(float)hz; - -@end Deleted: branches/fusegl/fuse/fusepb/views/DisplayController.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayController.m 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/views/DisplayController.m 2007-01-01 06:54:20 UTC (rev 272) @@ -1,237 +0,0 @@ -/* DisplayController.m: Implementation for the DisplayController class - Copyright (c) 2006 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... - Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia - -*/ - -#import "DisplayController.h" -#import "DisplayOpenGLView.h" -#import "DisplayScene.h" - -#include "event.h" -#include "keyboard.h" -#include "ui/ui.h" - -extern keysyms_map_t unicode_keysyms_map[]; - -@implementation DisplayController - -static DisplayController *singleton = nil; - -+ (DisplayController *)singleton -{ - return singleton ? singleton : [[self alloc] init]; -} - --(id) init -{ - if ( singleton ) { - [self dealloc]; - } else { - self = [super init]; - singleton = self; - - optDown = NO; - ctrlDown = NO; - shiftDown = NO; - - cocoakeyboard_caps_shift_pressed = 0; - cocoakeyboard_symbol_shift_pressed = 0; - unicode_keysym = INPUT_KEY_NONE; - - [self initKeyboard]; - - timer = nil; - - time = CFAbsoluteTimeGetCurrent(); /* set emulation time start time */ - } - - return singleton; -} - --(void) mouseMoved:(NSEvent *)theEvent -{ - if( ui_mouse_grabbed ) { - int dx = [theEvent deltaX]; - int dy = [theEvent deltaY]; - - if( dx < -128 ) dx = -128; - else if( dx > 128 ) dx = 128; - - if( dy < -128 ) dy = -128; - else if( dy > 128 ) dy = 128; - - ui_mouse_motion( dx, dy ); - } -} - --(void) mouseDown:(NSEvent *)theEvent -{ - ui_mouse_button( 1, 1 ); -} - --(void) mouseUp:(NSEvent *)theEvent -{ - ui_mouse_button( 1, 0 ); -} - --(void) rightMouseDown:(NSEvent *)theEvent -{ - ui_mouse_button( 3, 1 ); -} - --(void) rightMouseUp:(NSEvent *)theEvent -{ - ui_mouse_button( 3, 0 ); -} - --(void) otherMouseDown:(NSEvent *)theEvent -{ - ui_mouse_button( 2, 1 ); -} - --(void) otherMouseUp:(NSEvent *)theEvent -{ - ui_mouse_button( 2, 0 ); -} - --(void) initKeyboard -{ - keysyms_map_t *ptr3; - - unicode_keysyms_hash = g_hash_table_new( g_int_hash, g_int_equal ); - - for( ptr3 = (keysyms_map_t *)unicode_keysyms_map; ptr3->ui; ptr3++ ) - g_hash_table_insert( unicode_keysyms_hash, &( ptr3->ui ), - &( ptr3->fuse ) ); -} - --(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new -{ - if( old != new ) { - input_event_t fuse_event; - fuse_event.types.key.spectrum_key = theType; - if( new == YES ) - fuse_event.type = INPUT_EVENT_KEYPRESS; - else - fuse_event.type = INPUT_EVENT_KEYRELEASE; - input_event( &fuse_event ); - } -} - --(void) flagsChanged:(NSEvent *)theEvent -{ - int flags = [theEvent modifierFlags]; - BOOL optDownNew = (flags & NSAlternateKeyMask) ? YES : NO; - BOOL ctrlDownNew = (flags & NSControlKeyMask) ? YES : NO; - BOOL shiftDownNew = ( flags & NSShiftKeyMask ) ? YES : NO; - - [self modifierChange:INPUT_KEY_Alt_L oldState:optDown newState:optDownNew]; - [self modifierChange:INPUT_KEY_Control_L oldState:ctrlDown newState:ctrlDownNew]; - [self modifierChange:INPUT_KEY_Shift_L oldState:shiftDown newState:shiftDownNew]; - - optDown = optDownNew; - ctrlDown = ctrlDownNew; - shiftDown = shiftDownNew; -} - --(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash -{ - const input_key *ptr; - - ptr = g_hash_table_lookup( hash, &ui_keysym ); - - return ptr ? *ptr : INPUT_KEY_NONE; -} - --(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type -{ - unsigned short keyCode = [theEvent keyCode]; - NSString *characters = [theEvent charactersIgnoringModifiers]; - if ([characters length]) { - input_key fuse_keysym; - input_event_t fuse_event; - - fuse_keysym = keysyms_remap( keyCode ); - if( fuse_keysym == INPUT_KEY_NONE ) { - fuse_keysym = [self otherKeysymsRemap:[characters characterAtIndex:0] - inHash:unicode_keysyms_hash]; - if( fuse_keysym != INPUT_KEY_NONE ) { - unicode_keysym = fuse_keysym; - /* record current values of caps and symbol shift. We will temoprarily - * override these for the duration of the unicoded simulated keypresses - */ - if( ( cocoakeyboard_caps_shift_pressed = keyboard_state( KEYBOARD_Caps ) ) ) - { - keyboard_release( KEYBOARD_Caps ); - } - if( ( cocoakeyboard_symbol_shift_pressed = - keyboard_state( KEYBOARD_Symbol ) ) ) { - keyboard_release( KEYBOARD_Symbol ); - } - } - } - - fuse_event.type = type; - if( unicode_keysym == INPUT_KEY_NONE ) - fuse_event.types.key.native_key = fuse_keysym; - else - fuse_event.types.key.native_key = unicode_keysym; - fuse_event.types.key.spectrum_key = fuse_keysym; - - input_event( &fuse_event ); - } -} - --(void) keyDown:(NSEvent *)theEvent -{ - [self keyChange:theEvent type:INPUT_EVENT_KEYPRESS]; -} - --(void) keyUp:(NSEvent *)theEvent -{ - [self keyChange:theEvent type:INPUT_EVENT_KEYRELEASE]; -} - --(void) emulationTimerFired:(NSTimer *)timer -{ - CFTimeInterval nowTime = CFAbsoluteTimeGetCurrent(); - CFTimeInterval deltaTime = nowTime - time; - if (deltaTime <= 1.0) { /* skip pauses */ - DisplayScene *scene = [openGLView scene]; - [scene updateEmulationForTimeDelta:deltaTime]; - } - time = nowTime; - - [openGLView setNeedsDisplay:YES]; -} - --(void) setEmulationHz:(float)hz -{ - [timer invalidate]; - [timer release]; - - timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) - target:self selector:@selector(emulationTimerFired:) - userInfo:self repeats:true] retain]; -} - -@end Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-01 06:54:20 UTC (rev 272) @@ -24,20 +24,45 @@ #import <Cocoa/Cocoa.h> -@class DisplayScene; +#include <OpenGL/gl.h> +#include <OpenGL/glext.h> +#include <OpenGL/glu.h> +#include <libspectrum.h> + +#include "input.h" +#include "ui/cocoa/cocoadisplay.h" + @interface DisplayOpenGLView : NSOpenGLView { - /* Model */ - DisplayScene *scene; + NSTimer* timer; - /* Controller */ - IBOutlet NSResponder *controller; + /* Need texture size and dimensions and two backing textures */ + Cocoa_Texture screenTex; /* Screen texture */ + + BOOL screenTexInitialised; + + GHashTable *unicode_keysyms_hash; + + BOOL optDown; + BOOL ctrlDown; + BOOL shiftDown; + + int cocoakeyboard_caps_shift_pressed; + int cocoakeyboard_symbol_shift_pressed; + input_key unicode_keysym; + + CFAbsoluteTime time; } -- (void)dealloc; ++(DisplayOpenGLView *) instance; ++(void) initialize; -- (DisplayScene *)scene; +-(void) createTexture:(Cocoa_Texture*)newScreen; +-(void) destroyTexture; +-(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; +-(void) setEmulationHz:(float)hz; + -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; @@ -49,7 +74,11 @@ -(void) otherMouseDown:(NSEvent *)theEvent; -(void) otherMouseUp:(NSEvent *)theEvent; +-(void) initKeyboard; +-(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new; -(void) flagsChanged:(NSEvent *)theEvent; +-(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash; +-(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type; -(void) keyDown:(NSEvent *)theEvent; -(void) keyUp:(NSEvent *)theEvent; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-01 06:54:20 UTC (rev 272) @@ -23,11 +23,73 @@ */ #import "DisplayOpenGLView.h" +#import "ScalerNameToIdTransformer.h" +#import "MachineScalerIsEnabled.h" +#import "MachineNameToIdTransformer.h" +#import "VolumeSliderToPrefTransformer.h" -#import "DisplayScene.h" +#include "event.h" +#include "fuse.h" +#include "fusepb/main.h" +#include "keyboard.h" +#include "settings.h" +#include "sound.h" +extern keysyms_map_t unicode_keysyms_map[]; + +#include <CoreAudio/AudioHardware.h> +#include "sound/sfifo.h" + +extern sfifo_t sound_fifo; +extern AudioStreamBasicDescription deviceFormat; + @implementation DisplayOpenGLView +static DisplayOpenGLView *instance = nil; + ++(DisplayOpenGLView *) instance +{ + return instance; +} + ++(void) initialize +{ + ScalerNameToIdTransformer *sNToITransformer; + MachineScalerIsEnabled *machineScalerIsEnabled; + MachineNameToIdTransformer *mToITransformer; + VolumeSliderToPrefTransformer *vsToPTransformer; + + sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:sNToITransformer + forName:@"ScalerNameToIdTransformer"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:1] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsEnabled"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:0] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsDisabled"]; + + mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:mToITransformer + forName:@"MachineNameToIdTransformer"]; + + vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:vsToPTransformer + forName:@"VolumeSliderToPrefTransformer"]; + +} + -(id) initWithFrame:(NSRect)frameRect { /* Init pixel format attribs */ @@ -45,106 +107,375 @@ exit(1); } + if ( instance ) { + [self dealloc]; + self = instance; + } else { self = [super initWithFrame:frameRect pixelFormat:pixFmt]; - if (self) { - scene = [DisplayScene singleton]; - } + instance = self; + } [[self openGLContext] makeCurrentContext]; - return self; -} + timer = nil; -- (void)dealloc -{ - [super dealloc]; -} + /* Setup some basic OpenGL stuff */ + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); -- (DisplayScene *)scene -{ - return scene; + screenTexInitialised = NO; + + optDown = NO; + ctrlDown = NO; + shiftDown = NO; + + cocoakeyboard_caps_shift_pressed = 0; + cocoakeyboard_symbol_shift_pressed = 0; + unicode_keysym = INPUT_KEY_NONE; + + return self; } -(void) awakeFromNib { /* keep the window in the standard aspect ratio if the user resizes */ [[self window] setContentAspectRatio:NSMakeSize(4.0,3.0)]; + + /* FIXME: Don't really like the argc, argv stuff being here... */ + if( fuse_init( ac, av ) ) { + fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); + } + + [self initKeyboard]; + + time = CFAbsoluteTimeGetCurrent(); /* set emulation time start time */ } -(void) drawRect:(NSRect)aRect { - /* Delegate to our scene object for rendering. */ - [scene render]; + CFTimeInterval nowTime = CFAbsoluteTimeGetCurrent(); + CFTimeInterval deltaTime = nowTime - time; + if (deltaTime <= 1.0) { /* skip pauses */ + [self updateEmulationForTimeDelta:deltaTime]; + } + time = nowTime; + if( NO == screenTexInitialised ) return; + + /* Need to draw texture to screen here */ + memcpy(screenTex.pixels, screen.pixels, screenTex.pitch*screenTex.full_height); + + [[self openGLContext] makeCurrentContext]; + + /* Bind, update and draw new image */ + glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1); + + glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, + screenTex.full_height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + screenTex.pixels); + + glBegin(GL_QUADS); + + glTexCoord2f((float)screenTex.image_width, (float)(screenTex.image_xoffset)); + glVertex2f(1.0f, 1.0f); + + glTexCoord2f((float)screenTex.image_width, (float)screenTex.image_height); + glVertex2f(1.0f, -1.0f); + + glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_height); + glVertex2f(-1.0f, -1.0f); + + glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_yoffset); + glVertex2f(-1.0f, 1.0f); + + glEnd(); + + /* FIXME: Probably still need to glFlush() in fullscreen mode */ + //glFlush(); + /* Swap buffer to screen */ [[self openGLContext] flushBuffer]; } +/* moved or resized */ +-(void) update +{ + NSRect rect; + + [super update]; + + [[self openGLContext] makeCurrentContext]; + [[self openGLContext] update]; + + rect = [self bounds]; + + glViewport(0, 0, (int) rect.size.width, (int) rect.size.height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + [self setNeedsDisplay:true]; +} + /* scrolled, moved or resized */ -(void) reshape { - /* Delegate to our scene object to update for a change in the view size. */ - [scene setViewportRect:[self bounds]]; + NSRect rect; + + [super reshape]; + + [[self openGLContext] makeCurrentContext]; + [[self openGLContext] update]; + + rect = [self bounds]; + + glViewport(0, 0, (int) rect.size.width, (int) rect.size.height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + [self setNeedsDisplay:true]; } +-(void) destroyTexture +{ + GLuint i; + + if( screenTexInitialised == NO) return; + /* FIXME: May want to have a double buffered texture later */ + for(i = 0; i < 1; i++) { + GLint dt = i+1; + glDeleteTextures(1, &dt); + } + screenTexInitialised = NO; +} + +-(void) createTexture:(Cocoa_Texture*)newScreen; +{ + GLint i; + + screenTex.full_width = newScreen->full_width; + screenTex.full_height = newScreen->full_height; + screenTex.image_width = newScreen->image_width; + screenTex.image_height = newScreen->image_height; + screenTex.image_xoffset = newScreen->image_xoffset; + screenTex.image_yoffset = newScreen->image_yoffset; + screenTex.pixels = calloc(screenTex.full_width*screenTex.full_height, sizeof(uint32_t)); + if( !screenTex.pixels ) { + fprintf( stderr, "%s: couldn't create screenTex.pixels\n", fuse_progname ); + return; + } + screenTex.pitch = screenTex.full_width * sizeof(uint32_t); + + [[self openGLContext] makeCurrentContext]; + [[self openGLContext] update]; + + /* FIXME: May want to have a double buffered texture later */ + for(i = 0; i < 1; i++) + { + glDisable(GL_TEXTURE_2D); + glEnable(GL_TEXTURE_RECTANGLE_EXT); + glBindTexture(GL_TEXTURE_RECTANGLE_EXT, i+1); + + glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, + screenTex.full_width*screenTex.pitch, + screenTex.pixels ); + + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, + GL_STORAGE_CACHED_APPLE); + glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE ); + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + + glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.full_width, + screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + screenTex.pixels ); + } + screenTexInitialised = YES; +} + +/* given a delta time in seconds, update overall emulation state */ +-(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime +{ + if( sound_enabled ) { + /* emulate until fifo is full */ + while( sfifo_space( &sound_fifo ) >= (sound_stereo+1) * 2 * sound_framesiz ) { + event_do_frame(); + } + } else { + float speed = ( settings_current.emulation_speed < 1 ? + 100.0 : + settings_current.emulation_speed ) / 100.0; + libspectrum_dword time_tstates = deltaTime * + machine_current->timings.processor_speed * + speed + 0.5; + event_do_timer( time_tstates ); + } +} + +-(void) setEmulationHz:(float)hz +{ + [timer invalidate]; + [timer release]; + + timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) + target:self selector:@selector(drawRect:) + userInfo:self repeats:true] retain]; +} + -(void) mouseMoved:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller mouseMoved:theEvent]; + if( ui_mouse_grabbed ) { + int dx = [theEvent deltaX]; + int dy = [theEvent deltaY]; + + if( dx < -128 ) dx = -128; + else if( dx > 128 ) dx = 128; + + if( dy < -128 ) dy = -128; + else if( dy > 128 ) dy = 128; + + ui_mouse_motion( dx, dy ); + } } -(void) mouseDown:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller mouseDown:theEvent]; + ui_mouse_button( 1, 1 ); } -(void) mouseUp:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller mouseUp:theEvent]; + ui_mouse_button( 1, 0 ); } -(void) rightMouseDown:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller rightMouseDown:theEvent]; + ui_mouse_button( 3, 1 ); } -(void) rightMouseUp:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller rightMouseUp:theEvent]; + ui_mouse_button( 3, 0 ); } -(void) otherMouseDown:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller otherMouseDown:theEvent]; + ui_mouse_button( 2, 1 ); } -(void) otherMouseUp:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller otherMouseUp:theEvent]; + ui_mouse_button( 2, 0 ); } +-(void) initKeyboard +{ + keysyms_map_t *ptr3; + + unicode_keysyms_hash = g_hash_table_new( g_int_hash, g_int_equal ); + + for( ptr3 = (keysyms_map_t *)unicode_keysyms_map; ptr3->ui; ptr3++ ) + g_hash_table_insert( unicode_keysyms_hash, &( ptr3->ui ), + &( ptr3->fuse ) ); +} + +-(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new +{ + if( old != new ) { + input_event_t fuse_event; + fuse_event.types.key.spectrum_key = theType; + if( new == YES ) + fuse_event.type = INPUT_EVENT_KEYPRESS; + else + fuse_event.type = INPUT_EVENT_KEYRELEASE; + input_event( &fuse_event ); + } +} + -(void) flagsChanged:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller flagsChanged:theEvent]; + int flags = [theEvent modifierFlags]; + BOOL optDownNew = (flags & NSAlternateKeyMask) ? YES : NO; + BOOL ctrlDownNew = (flags & NSControlKeyMask) ? YES : NO; + BOOL shiftDownNew = ( flags & NSShiftKeyMask ) ? YES : NO; + + [self modifierChange:INPUT_KEY_Alt_L oldState:optDown newState:optDownNew]; + [self modifierChange:INPUT_KEY_Control_L oldState:ctrlDown newState:ctrlDownNew]; + [self modifierChange:INPUT_KEY_Shift_L oldState:shiftDown newState:shiftDownNew]; + + optDown = optDownNew; + ctrlDown = ctrlDownNew; + shiftDown = shiftDownNew; } +-(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash +{ + const input_key *ptr; + + ptr = g_hash_table_lookup( hash, &ui_keysym ); + + return ptr ? *ptr : INPUT_KEY_NONE; +} + +-(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type +{ + unsigned short keyCode = [theEvent keyCode]; + NSString *characters = [theEvent charactersIgnoringModifiers]; + if ([characters length]) { + input_key fuse_keysym; + input_event_t fuse_event; + + fuse_keysym = keysyms_remap( keyCode ); + if( fuse_keysym == INPUT_KEY_NONE ) { + fuse_keysym = [self otherKeysymsRemap:[characters characterAtIndex:0] + inHash:unicode_keysyms_hash]; + if( fuse_keysym != INPUT_KEY_NONE ) { + unicode_keysym = fuse_keysym; + /* record current values of caps and symbol shift. We will temoprarily + * override these for the duration of the unicoded simulated keypresses + */ + if( ( cocoakeyboard_caps_shift_pressed = keyboard_state( KEYBOARD_Caps ) ) ) + { + keyboard_release( KEYBOARD_Caps ); + } + if( ( cocoakeyboard_symbol_shift_pressed = + keyboard_state( KEYBOARD_Symbol ) ) ) { + keyboard_release( KEYBOARD_Symbol ); + } + } + } + + fuse_event.type = type; + if( unicode_keysym == INPUT_KEY_NONE ) + fuse_event.types.key.native_key = fuse_keysym; + else + fuse_event.types.key.native_key = unicode_keysym; + fuse_event.types.key.spectrum_key = fuse_keysym; + + input_event( &fuse_event ); + } +} + -(void) keyDown:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller keyDown:theEvent]; + [self keyChange:theEvent type:INPUT_EVENT_KEYPRESS]; } -(void) keyUp:(NSEvent *)theEvent { - /* Delegate to our controller object. */ - [controller keyUp:theEvent]; + [self keyChange:theEvent type:INPUT_EVENT_KEYRELEASE]; } -(BOOL) acceptsFirstResponder Deleted: branches/fusegl/fuse/fusepb/views/DisplayScene.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayScene.h 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/views/DisplayScene.h 2007-01-01 06:54:20 UTC (rev 272) @@ -1,46 +0,0 @@ -/* DisplayScene.h: Implementation for the DisplayScene class - Copyright (c) 2006 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... - Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia - -*/ - -#import <Cocoa/Cocoa.h> - -#include "ui/cocoa/cocoadisplay.h" - -@interface DisplayScene : NSObject -{ - /* Need texture size and dimensions and two backing textures */ - Cocoa_Texture screenTex; /* Screen texture */ - - BOOL screenTexInitialised; -} -+(DisplayScene *) singleton; - --(void) setViewportRect:(NSRect)bounds; --(void) render; - --(void) createTexture:(Cocoa_Texture*)newScreen; --(void) destroyTexture; - --(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; - -@end Deleted: branches/fusegl/fuse/fusepb/views/DisplayScene.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayScene.m 2006-12-29 15:18:45 UTC (rev 271) +++ branches/fusegl/fuse/fusepb/views/DisplayScene.m 2007-01-01 06:54:20 UTC (rev 272) @@ -1,196 +0,0 @@ -/* DisplayScene.m: Implementation for the DisplayScene class - Copyright (c) 2006 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... - Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia - -*/ - -#import "DisplayScene.h" - -#include <OpenGL/gl.h> -#include <OpenGL/glext.h> -#include <OpenGL/glu.h> - -#include "event.h" -#include "fuse.h" -#include "settings.h" -#include "sound.h" -#include "sound/sfifo.h" - -extern sfifo_t sound_fifo; - -@implementation DisplayScene - -static DisplayScene *singleton = nil; - -+ (DisplayScene *)singleton -{ - return singleton ? singleton : [[self alloc] init]; -} - -- (id)init -{ - if ( singleton ) { - [self dealloc]; - } else { - [super init]; - singleton = self; - } - - return singleton; -} - -- (void)dealloc -{ - [self destroyTexture]; - singleton = nil; - [super dealloc]; -} - --(void) setViewportRect:(NSRect)bounds -{ - glViewport(0, 0, (int) bounds.size.width, (int) bounds.size.height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - --(void) render -{ - if( NO == screenTexInitialised ) return; - - /* Need to draw texture to screen here */ - memcpy(screenTex.pixels, screen.pixels, screenTex.pitch*screenTex.full_height); - - /* Setup some basic OpenGL stuff */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glClearColor(1.0f, 1.0f, 1.0f, 1.0f); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - /* Bind, update and draw new image */ - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1); - - glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, - screenTex.full_height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, - screenTex.pixels); - - glBegin(GL_QUADS); - - glTexCoord2f((float)screenTex.image_width, (float)(screenTex.image_xoffset)); - glVertex2f(1.0f, 1.0f); - - glTexCoord2f((float)screenTex.image_width, (float)screenTex.image_height); - glVertex2f(1.0f, -1.0f); - - glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_height); - glVertex2f(-1.0f, -1.0f); - - glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_yoffset); - glVertex2f(-1.0f, 1.0f); - - glEnd(); - - // Flush out any unfinished rendering before swapping. - //glFinish(); -} - --(void) destroyTexture -{ - GLuint i; - - if( screenTexInitialised == NO) return; - /* FIXME: May want to have a double buffered texture later */ - for(i = 0; i < 1; i++) { - GLint dt = i+1; - glDeleteTextures(1, &dt); - free( screenTex.pixels ); - screenTex.pixels = NULL; - } - screenTexInitialised = NO; -} - --(void) createTexture:(Cocoa_Texture*)newScreen; -{ - GLint i; - - screenTex.full_width = newScreen->full_width; - screenTex.full_height = newScreen->full_height; - screenTex.image_width = newScreen->image_width; - screenTex.image_height = newScreen->image_height; - screenTex.image_xoffset = newScreen->image_xoffset; - screenTex.image_yoffset = newScreen->image_yoffset; - screenTex.pixels = calloc(screenTex.full_width*screenTex.full_height, sizeof(uint32_t)); - if( !screenTex.pixels ) { - fprintf( stderr, "%s: couldn't create screenTex.pixels\n", fuse_progname ); - return; - } - screenTex.pitch = screenTex.full_width * sizeof(uint32_t); - - /* FIXME: May want to have a double buffered texture later */ - for(i = 0; i < 1; i++) - { - glDisable(GL_TEXTURE_2D); - glEnable(GL_TEXTURE_RECTANGLE_EXT); - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, i+1); - - glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, - screenTex.full_width*screenTex.pitch, - screenTex.pixels ); - - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, - GL_STORAGE_CACHED_APPLE); - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE ); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - - glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.full_width, - screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, - screenTex.pixels ); - } - screenTexInitialised = YES; -} - -/* given a delta time in seconds, update overall emulation state */ --(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime -{ - if( sound_enabled ) { - /* emulate until fifo is full */ - while( sfifo_space( &sound_fifo ) >= (sound_stereo+1) * 2 * sound_framesiz ) { - event_do_frame(); - } - } else { - float speed = ( settings_current.emulation_speed < 1 ? - 100.0 : - settings_current.emulation_speed ) / 100.0; - libspectrum_dword time_tstates = deltaTime * - machine_current->timings.processor_speed * - speed + 0.5; - event_do_timer( time_tstates ); - } -} - -@end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-29 15:18:47
|
Revision: 271 http://svn.sourceforge.net/fuse-for-macosx/?rev=271&view=rev Author: fredm Date: 2006-12-29 07:18:45 -0800 (Fri, 29 Dec 2006) Log Message: ----------- Move emulation timer to DisplayController class. Modified Paths: -------------- branches/fusegl/fuse/fusepb/FuseMenus.m branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayController.h branches/fusegl/fuse/fusepb/views/DisplayController.m branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/fusepb/views/DisplayScene.h branches/fusegl/fuse/fusepb/views/DisplayScene.m Modified: branches/fusegl/fuse/fusepb/FuseMenus.m =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-29 13:50:18 UTC (rev 270) +++ branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-29 15:18:45 UTC (rev 271) @@ -27,7 +27,7 @@ */ -#import "DisplayOpenGLView.h" +#import "DisplayController.h" #import "DisplayScene.h" #import "FuseController.h" #import "FuseMenus.h" @@ -49,17 +49,17 @@ void CreateTexture(Cocoa_Texture* new_screen) { - [[[DisplayOpenGLView instance] scene] createTexture:new_screen]; + [[DisplayScene singleton] createTexture:new_screen]; } void DestroyTexture(void) { - [[[DisplayOpenGLView instance] scene] destroyTexture]; + [[DisplayScene singleton] destroyTexture]; } void SetEmulationHz( float hz ) { - [[DisplayOpenGLView instance] setEmulationHz:hz]; + [[DisplayController singleton] setEmulationHz:hz]; } void Hide(void) Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2006-12-29 13:50:18 UTC (rev 270) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2006-12-29 15:18:45 UTC (rev 271) @@ -1,7 +1,12 @@ { IBClasses = ( - {CLASS = DisplayController; LANGUAGE = ObjC; SUPERCLASS = NSResponder; }, { + CLASS = DisplayController; + LANGUAGE = ObjC; + OUTLETS = {openGLView = DisplayOpenGLView; }; + SUPERCLASS = NSResponder; + }, + { CLASS = DisplayOpenGLView; LANGUAGE = ObjC; OUTLETS = {controller = NSResponder; }; Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: branches/fusegl/fuse/fusepb/views/DisplayController.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayController.h 2006-12-29 13:50:18 UTC (rev 270) +++ branches/fusegl/fuse/fusepb/views/DisplayController.h 2006-12-29 15:18:45 UTC (rev 271) @@ -28,8 +28,17 @@ #include "input.h" +@class DisplayOpenGLView; + @interface DisplayController : NSResponder { + /* Model */ + NSTimer* timer; + CFAbsoluteTime time; + + /* Views */ + IBOutlet DisplayOpenGLView *openGLView; + GHashTable *unicode_keysyms_hash; BOOL optDown; @@ -40,7 +49,7 @@ int cocoakeyboard_symbol_shift_pressed; input_key unicode_keysym; } --(void) awakeFromNib; ++(DisplayController *) singleton; -(void) mouseMoved:(NSEvent *)theEvent; -(void) mouseDown:(NSEvent *)theEvent; @@ -57,4 +66,7 @@ -(void) keyDown:(NSEvent *)theEvent; -(void) keyUp:(NSEvent *)theEvent; +-(void) emulationTimerFired:(NSTimer *)timer; +-(void) setEmulationHz:(float)hz; + @end Modified: branches/fusegl/fuse/fusepb/views/DisplayController.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayController.m 2006-12-29 13:50:18 UTC (rev 270) +++ branches/fusegl/fuse/fusepb/views/DisplayController.m 2006-12-29 15:18:45 UTC (rev 271) @@ -23,6 +23,8 @@ */ #import "DisplayController.h" +#import "DisplayOpenGLView.h" +#import "DisplayScene.h" #include "event.h" #include "keyboard.h" @@ -32,17 +34,37 @@ @implementation DisplayController --(void) awakeFromNib +static DisplayController *singleton = nil; + ++ (DisplayController *)singleton { - optDown = NO; - ctrlDown = NO; - shiftDown = NO; + return singleton ? singleton : [[self alloc] init]; +} - cocoakeyboard_caps_shift_pressed = 0; - cocoakeyboard_symbol_shift_pressed = 0; - unicode_keysym = INPUT_KEY_NONE; +-(id) init +{ + if ( singleton ) { + [self dealloc]; + } else { + self = [super init]; + singleton = self; - [self initKeyboard]; + optDown = NO; + ctrlDown = NO; + shiftDown = NO; + + cocoakeyboard_caps_shift_pressed = 0; + cocoakeyboard_symbol_shift_pressed = 0; + unicode_keysym = INPUT_KEY_NONE; + + [self initKeyboard]; + + timer = nil; + + time = CFAbsoluteTimeGetCurrent(); /* set emulation time start time */ + } + + return singleton; } -(void) mouseMoved:(NSEvent *)theEvent @@ -189,4 +211,27 @@ [self keyChange:theEvent type:INPUT_EVENT_KEYRELEASE]; } +-(void) emulationTimerFired:(NSTimer *)timer +{ + CFTimeInterval nowTime = CFAbsoluteTimeGetCurrent(); + CFTimeInterval deltaTime = nowTime - time; + if (deltaTime <= 1.0) { /* skip pauses */ + DisplayScene *scene = [openGLView scene]; + [scene updateEmulationForTimeDelta:deltaTime]; + } + time = nowTime; + + [openGLView setNeedsDisplay:YES]; +} + +-(void) setEmulationHz:(float)hz +{ + [timer invalidate]; + [timer release]; + + timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) + target:self selector:@selector(emulationTimerFired:) + userInfo:self repeats:true] retain]; +} + @end Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-29 13:50:18 UTC (rev 270) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-29 15:18:45 UTC (rev 271) @@ -28,24 +28,16 @@ @interface DisplayOpenGLView : NSOpenGLView { - NSTimer* timer; - CFAbsoluteTime time; - /* Model */ DisplayScene *scene; /* Controller */ IBOutlet NSResponder *controller; } -+(DisplayOpenGLView *) instance; - - (void)dealloc; - (DisplayScene *)scene; --(void) emulationTimerFired:(NSTimer *)timer; --(void) setEmulationHz:(float)hz; - -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-29 13:50:18 UTC (rev 270) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-29 15:18:45 UTC (rev 271) @@ -28,13 +28,6 @@ @implementation DisplayOpenGLView -static DisplayOpenGLView *instance = nil; - -+(DisplayOpenGLView *) instance -{ - return instance; -} - -(id) initWithFrame:(NSRect)frameRect { /* Init pixel format attribs */ @@ -52,27 +45,18 @@ exit(1); } - if ( instance ) { - [self dealloc]; - self = instance; - } else { self = [super initWithFrame:frameRect pixelFormat:pixFmt]; if (self) { - scene = [[DisplayScene alloc] init]; + scene = [DisplayScene singleton]; } - instance = self; - } [[self openGLContext] makeCurrentContext]; - timer = nil; - return self; } - (void)dealloc { - [scene release]; [super dealloc]; } @@ -85,22 +69,8 @@ { /* keep the window in the standard aspect ratio if the user resizes */ [[self window] setContentAspectRatio:NSMakeSize(4.0,3.0)]; - - time = CFAbsoluteTimeGetCurrent(); /* set emulation time start time */ } --(void) emulationTimerFired:(NSTimer *)timer -{ - CFTimeInterval nowTime = CFAbsoluteTimeGetCurrent(); - CFTimeInterval deltaTime = nowTime - time; - if (deltaTime <= 1.0) { /* skip pauses */ - [scene updateEmulationForTimeDelta:deltaTime]; - } - time = nowTime; - - [self setNeedsDisplay:YES]; -} - -(void) drawRect:(NSRect)aRect { /* Delegate to our scene object for rendering. */ @@ -117,16 +87,6 @@ [scene setViewportRect:[self bounds]]; } --(void) setEmulationHz:(float)hz -{ - [timer invalidate]; - [timer release]; - - timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) - target:self selector:@selector(emulationTimerFired:) - userInfo:self repeats:true] retain]; -} - -(void) mouseMoved:(NSEvent *)theEvent { /* Delegate to our controller object. */ Modified: branches/fusegl/fuse/fusepb/views/DisplayScene.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayScene.h 2006-12-29 13:50:18 UTC (rev 270) +++ branches/fusegl/fuse/fusepb/views/DisplayScene.h 2006-12-29 15:18:45 UTC (rev 271) @@ -33,6 +33,8 @@ BOOL screenTexInitialised; } ++(DisplayScene *) singleton; + -(void) setViewportRect:(NSRect)bounds; -(void) render; Modified: branches/fusegl/fuse/fusepb/views/DisplayScene.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayScene.m 2006-12-29 13:50:18 UTC (rev 270) +++ branches/fusegl/fuse/fusepb/views/DisplayScene.m 2006-12-29 15:18:45 UTC (rev 271) @@ -38,9 +38,29 @@ @implementation DisplayScene +static DisplayScene *singleton = nil; + ++ (DisplayScene *)singleton +{ + return singleton ? singleton : [[self alloc] init]; +} + +- (id)init +{ + if ( singleton ) { + [self dealloc]; + } else { + [super init]; + singleton = self; + } + + return singleton; +} + - (void)dealloc { [self destroyTexture]; + singleton = nil; [super dealloc]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-29 13:50:19
|
Revision: 270 http://svn.sourceforge.net/fuse-for-macosx/?rev=270&view=rev Author: fredm Date: 2006-12-29 05:50:18 -0800 (Fri, 29 Dec 2006) Log Message: ----------- Refactor drawing to DisplayScene object. Modified Paths: -------------- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/FuseMenus.m branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Added Paths: ----------- branches/fusegl/fuse/fusepb/views/DisplayScene.h branches/fusegl/fuse/fusepb/views/DisplayScene.m Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-29 12:29:57 UTC (rev 269) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-29 13:50:18 UTC (rev 270) @@ -11,6 +11,8 @@ B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */ = {isa = PBXBuildFile; fileRef = B615BFE60B4261E50082D535 /* HIDJoysticks.m */; }; B615C0130B45159B0082D535 /* DisplayController.h in Headers */ = {isa = PBXBuildFile; fileRef = B615C0110B45159B0082D535 /* DisplayController.h */; }; B615C0140B45159B0082D535 /* DisplayController.m in Sources */ = {isa = PBXBuildFile; fileRef = B615C0120B45159B0082D535 /* DisplayController.m */; }; + B615C02B0B454A7F0082D535 /* DisplayScene.h in Headers */ = {isa = PBXBuildFile; fileRef = B615C0290B454A7E0082D535 /* DisplayScene.h */; }; + B615C02C0B454A7F0082D535 /* DisplayScene.m in Sources */ = {isa = PBXBuildFile; fileRef = B615C02A0B454A7F0082D535 /* DisplayScene.m */; }; B61F459309121DF100C8096C /* Fuse Help in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F905ED05CDA24300C2F10D /* Fuse Help */; }; B61F459409121DF100C8096C /* disk_plus3.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F2076596C700DE7E81 /* disk_plus3.szx */; }; B61F459509121DF100C8096C /* tape_16.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F4076596FD00DE7E81 /* tape_16.szx */; }; @@ -363,6 +365,8 @@ B615BFE60B4261E50082D535 /* HIDJoysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = HIDJoysticks.m; path = content_arrays/HIDJoysticks.m; sourceTree = "<group>"; }; B615C0110B45159B0082D535 /* DisplayController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DisplayController.h; sourceTree = "<group>"; }; B615C0120B45159B0082D535 /* DisplayController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DisplayController.m; sourceTree = "<group>"; }; + B615C0290B454A7E0082D535 /* DisplayScene.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DisplayScene.h; sourceTree = "<group>"; }; + B615C02A0B454A7F0082D535 /* DisplayScene.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DisplayScene.m; sourceTree = "<group>"; }; B619FC2E090D9BC200344F94 /* SavePanelAccessoryView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = SavePanelAccessoryView.nib; path = nibs/SavePanelAccessoryView.nib; sourceTree = "<group>"; }; B61EF5B905FED7930081DF70 /* hq3x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq3x.cpp; path = scaler/hq3x.cpp; sourceTree = SOURCE_ROOT; }; B61F46A909121DF100C8096C /* Info-Fuse.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Fuse.plist"; sourceTree = "<group>"; }; @@ -923,6 +927,8 @@ B6CE7FCF0B28FBEC00EB65B3 /* Views */ = { isa = PBXGroup; children = ( + B615C0290B454A7E0082D535 /* DisplayScene.h */, + B615C02A0B454A7F0082D535 /* DisplayScene.m */, B615C0110B45159B0082D535 /* DisplayController.h */, B615C0120B45159B0082D535 /* DisplayController.m */, B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */, @@ -1234,6 +1240,7 @@ B6A6F11F0B3EA737000B88E9 /* cocoascreenshot.h in Headers */, B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */, B615C0130B45159B0082D535 /* DisplayController.h in Headers */, + B615C02B0B454A7F0082D535 /* DisplayScene.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1472,6 +1479,7 @@ B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */, B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */, B615C0140B45159B0082D535 /* DisplayController.m in Sources */, + B615C02C0B454A7F0082D535 /* DisplayScene.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/FuseMenus.m =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-29 12:29:57 UTC (rev 269) +++ branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-29 13:50:18 UTC (rev 270) @@ -28,6 +28,7 @@ */ #import "DisplayOpenGLView.h" +#import "DisplayScene.h" #import "FuseController.h" #import "FuseMenus.h" @@ -48,12 +49,12 @@ void CreateTexture(Cocoa_Texture* new_screen) { - [[DisplayOpenGLView instance] createTexture:new_screen]; + [[[DisplayOpenGLView instance] scene] createTexture:new_screen]; } void DestroyTexture(void) { - [[DisplayOpenGLView instance] destroyTexture]; + [[[DisplayOpenGLView instance] scene] destroyTexture]; } void SetEmulationHz( float hz ) Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-29 12:29:57 UTC (rev 269) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-29 13:50:18 UTC (rev 270) @@ -24,35 +24,26 @@ #import <Cocoa/Cocoa.h> -#include <OpenGL/gl.h> -#include <OpenGL/glext.h> -#include <OpenGL/glu.h> +@class DisplayScene; -#include <libspectrum.h> - -#include "input.h" -#include "ui/cocoa/cocoadisplay.h" - @interface DisplayOpenGLView : NSOpenGLView { NSTimer* timer; - - /* Need texture size and dimensions and two backing textures */ - Cocoa_Texture screenTex; /* Screen texture */ - - BOOL screenTexInitialised; - CFAbsoluteTime time; + /* Model */ + DisplayScene *scene; + /* Controller */ IBOutlet NSResponder *controller; } +(DisplayOpenGLView *) instance; --(void) createTexture:(Cocoa_Texture*)newScreen; --(void) destroyTexture; +- (void)dealloc; --(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; +- (DisplayScene *)scene; + +-(void) emulationTimerFired:(NSTimer *)timer; -(void) setEmulationHz:(float)hz; -(id) initWithFrame:(NSRect)frameRect; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-29 12:29:57 UTC (rev 269) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-29 13:50:18 UTC (rev 270) @@ -24,16 +24,8 @@ #import "DisplayOpenGLView.h" -#include "event.h" -#include "fuse.h" -#include "settings.h" -#include "sound.h" +#import "DisplayScene.h" -#include <CoreAudio/AudioHardware.h> -#include "sound/sfifo.h" - -extern sfifo_t sound_fifo; - @implementation DisplayOpenGLView static DisplayOpenGLView *instance = nil; @@ -65,6 +57,9 @@ self = instance; } else { self = [super initWithFrame:frameRect pixelFormat:pixFmt]; + if (self) { + scene = [[DisplayScene alloc] init]; + } instance = self; } @@ -72,15 +67,18 @@ timer = nil; - /* Setup some basic OpenGL stuff */ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glClearColor(1.0f, 1.0f, 1.0f, 1.0f); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + return self; +} - screenTexInitialised = NO; +- (void)dealloc +{ + [scene release]; + [super dealloc]; +} - return self; +- (DisplayScene *)scene +{ + return scene; } -(void) awakeFromNib @@ -91,184 +89,41 @@ time = CFAbsoluteTimeGetCurrent(); /* set emulation time start time */ } --(void) drawRect:(NSRect)aRect +-(void) emulationTimerFired:(NSTimer *)timer { CFTimeInterval nowTime = CFAbsoluteTimeGetCurrent(); CFTimeInterval deltaTime = nowTime - time; if (deltaTime <= 1.0) { /* skip pauses */ - [self updateEmulationForTimeDelta:deltaTime]; + [scene updateEmulationForTimeDelta:deltaTime]; } time = nowTime; - if( NO == screenTexInitialised ) return; + [self setNeedsDisplay:YES]; +} - /* Need to draw texture to screen here */ - memcpy(screenTex.pixels, screen.pixels, screenTex.pitch*screenTex.full_height); +-(void) drawRect:(NSRect)aRect +{ + /* Delegate to our scene object for rendering. */ + [scene render]; - [[self openGLContext] makeCurrentContext]; - - /* Bind, update and draw new image */ - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1); - - glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, - screenTex.full_height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, - screenTex.pixels); - - glBegin(GL_QUADS); - - glTexCoord2f((float)screenTex.image_width, (float)(screenTex.image_xoffset)); - glVertex2f(1.0f, 1.0f); - - glTexCoord2f((float)screenTex.image_width, (float)screenTex.image_height); - glVertex2f(1.0f, -1.0f); - - glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_height); - glVertex2f(-1.0f, -1.0f); - - glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_yoffset); - glVertex2f(-1.0f, 1.0f); - - glEnd(); - - /* FIXME: Probably still need to glFlush() in fullscreen mode */ - //glFlush(); - /* Swap buffer to screen */ [[self openGLContext] flushBuffer]; } -/* moved or resized */ --(void) update -{ - NSRect rect; - - [super update]; - - [[self openGLContext] makeCurrentContext]; - [[self openGLContext] update]; - - rect = [self bounds]; - - glViewport(0, 0, (int) rect.size.width, (int) rect.size.height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - [self setNeedsDisplay:true]; -} - /* scrolled, moved or resized */ -(void) reshape { - NSRect rect; - - [super reshape]; - - [[self openGLContext] makeCurrentContext]; - [[self openGLContext] update]; - - rect = [self bounds]; - - glViewport(0, 0, (int) rect.size.width, (int) rect.size.height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - [self setNeedsDisplay:true]; + /* Delegate to our scene object to update for a change in the view size. */ + [scene setViewportRect:[self bounds]]; } --(void) destroyTexture -{ - GLuint i; - - if( screenTexInitialised == NO) return; - /* FIXME: May want to have a double buffered texture later */ - for(i = 0; i < 1; i++) { - GLint dt = i+1; - glDeleteTextures(1, &dt); - } - screenTexInitialised = NO; -} - --(void) createTexture:(Cocoa_Texture*)newScreen; -{ - GLint i; - - screenTex.full_width = newScreen->full_width; - screenTex.full_height = newScreen->full_height; - screenTex.image_width = newScreen->image_width; - screenTex.image_height = newScreen->image_height; - screenTex.image_xoffset = newScreen->image_xoffset; - screenTex.image_yoffset = newScreen->image_yoffset; - screenTex.pixels = calloc(screenTex.full_width*screenTex.full_height, sizeof(uint32_t)); - if( !screenTex.pixels ) { - fprintf( stderr, "%s: couldn't create screenTex.pixels\n", fuse_progname ); - return; - } - screenTex.pitch = screenTex.full_width * sizeof(uint32_t); - - [[self openGLContext] makeCurrentContext]; - [[self openGLContext] update]; - - /* FIXME: May want to have a double buffered texture later */ - for(i = 0; i < 1; i++) - { - glDisable(GL_TEXTURE_2D); - glEnable(GL_TEXTURE_RECTANGLE_EXT); - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, i+1); - - glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, - screenTex.full_width*screenTex.pitch, - screenTex.pixels ); - - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, - GL_STORAGE_CACHED_APPLE); - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE ); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - - glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.full_width, - screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, - screenTex.pixels ); - } - screenTexInitialised = YES; -} - -/* given a delta time in seconds, update overall emulation state */ --(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime -{ - if( sound_enabled ) { - /* emulate until fifo is full */ - while( sfifo_space( &sound_fifo ) >= (sound_stereo+1) * 2 * sound_framesiz ) { - event_do_frame(); - } - } else { - float speed = ( settings_current.emulation_speed < 1 ? - 100.0 : - settings_current.emulation_speed ) / 100.0; - libspectrum_dword time_tstates = deltaTime * - machine_current->timings.processor_speed * - speed + 0.5; - event_do_timer( time_tstates ); - } -} - -(void) setEmulationHz:(float)hz { [timer invalidate]; [timer release]; timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) - target:self selector:@selector(drawRect:) + target:self selector:@selector(emulationTimerFired:) userInfo:self repeats:true] retain]; } Copied: branches/fusegl/fuse/fusepb/views/DisplayScene.h (from rev 269, branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h) =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayScene.h (rev 0) +++ branches/fusegl/fuse/fusepb/views/DisplayScene.h 2006-12-29 13:50:18 UTC (rev 270) @@ -0,0 +1,44 @@ +/* DisplayScene.h: Implementation for the DisplayScene class + Copyright (c) 2006 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... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#import <Cocoa/Cocoa.h> + +#include "ui/cocoa/cocoadisplay.h" + +@interface DisplayScene : NSObject +{ + /* Need texture size and dimensions and two backing textures */ + Cocoa_Texture screenTex; /* Screen texture */ + + BOOL screenTexInitialised; +} +-(void) setViewportRect:(NSRect)bounds; +-(void) render; + +-(void) createTexture:(Cocoa_Texture*)newScreen; +-(void) destroyTexture; + +-(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; + +@end Copied: branches/fusegl/fuse/fusepb/views/DisplayScene.m (from rev 269, branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m) =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayScene.m (rev 0) +++ branches/fusegl/fuse/fusepb/views/DisplayScene.m 2006-12-29 13:50:18 UTC (rev 270) @@ -0,0 +1,176 @@ +/* DisplayScene.m: Implementation for the DisplayScene class + Copyright (c) 2006 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... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#import "DisplayScene.h" + +#include <OpenGL/gl.h> +#include <OpenGL/glext.h> +#include <OpenGL/glu.h> + +#include "event.h" +#include "fuse.h" +#include "settings.h" +#include "sound.h" +#include "sound/sfifo.h" + +extern sfifo_t sound_fifo; + +@implementation DisplayScene + +- (void)dealloc +{ + [self destroyTexture]; + [super dealloc]; +} + +-(void) setViewportRect:(NSRect)bounds +{ + glViewport(0, 0, (int) bounds.size.width, (int) bounds.size.height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +} + +-(void) render +{ + if( NO == screenTexInitialised ) return; + + /* Need to draw texture to screen here */ + memcpy(screenTex.pixels, screen.pixels, screenTex.pitch*screenTex.full_height); + + /* Setup some basic OpenGL stuff */ + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + /* Bind, update and draw new image */ + glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1); + + glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, + screenTex.full_height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + screenTex.pixels); + + glBegin(GL_QUADS); + + glTexCoord2f((float)screenTex.image_width, (float)(screenTex.image_xoffset)); + glVertex2f(1.0f, 1.0f); + + glTexCoord2f((float)screenTex.image_width, (float)screenTex.image_height); + glVertex2f(1.0f, -1.0f); + + glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_height); + glVertex2f(-1.0f, -1.0f); + + glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_yoffset); + glVertex2f(-1.0f, 1.0f); + + glEnd(); + + // Flush out any unfinished rendering before swapping. + //glFinish(); +} + +-(void) destroyTexture +{ + GLuint i; + + if( screenTexInitialised == NO) return; + /* FIXME: May want to have a double buffered texture later */ + for(i = 0; i < 1; i++) { + GLint dt = i+1; + glDeleteTextures(1, &dt); + free( screenTex.pixels ); + screenTex.pixels = NULL; + } + screenTexInitialised = NO; +} + +-(void) createTexture:(Cocoa_Texture*)newScreen; +{ + GLint i; + + screenTex.full_width = newScreen->full_width; + screenTex.full_height = newScreen->full_height; + screenTex.image_width = newScreen->image_width; + screenTex.image_height = newScreen->image_height; + screenTex.image_xoffset = newScreen->image_xoffset; + screenTex.image_yoffset = newScreen->image_yoffset; + screenTex.pixels = calloc(screenTex.full_width*screenTex.full_height, sizeof(uint32_t)); + if( !screenTex.pixels ) { + fprintf( stderr, "%s: couldn't create screenTex.pixels\n", fuse_progname ); + return; + } + screenTex.pitch = screenTex.full_width * sizeof(uint32_t); + + /* FIXME: May want to have a double buffered texture later */ + for(i = 0; i < 1; i++) + { + glDisable(GL_TEXTURE_2D); + glEnable(GL_TEXTURE_RECTANGLE_EXT); + glBindTexture(GL_TEXTURE_RECTANGLE_EXT, i+1); + + glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, + screenTex.full_width*screenTex.pitch, + screenTex.pixels ); + + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, + GL_STORAGE_CACHED_APPLE); + glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE ); + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + + glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.full_width, + screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + screenTex.pixels ); + } + screenTexInitialised = YES; +} + +/* given a delta time in seconds, update overall emulation state */ +-(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime +{ + if( sound_enabled ) { + /* emulate until fifo is full */ + while( sfifo_space( &sound_fifo ) >= (sound_stereo+1) * 2 * sound_framesiz ) { + event_do_frame(); + } + } else { + float speed = ( settings_current.emulation_speed < 1 ? + 100.0 : + settings_current.emulation_speed ) / 100.0; + libspectrum_dword time_tstates = deltaTime * + machine_current->timings.processor_speed * + speed + 0.5; + event_do_timer( time_tstates ); + } +} + +@end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-29 12:30:00
|
Revision: 269 http://svn.sourceforge.net/fuse-for-macosx/?rev=269&view=rev Author: fredm Date: 2006-12-29 04:29:57 -0800 (Fri, 29 Dec 2006) Log Message: ----------- Some refactoring around the DisplayOpenGLView class. Modified Paths: -------------- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/controllers/PreferencesController.h branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Added Paths: ----------- branches/fusegl/fuse/fusepb/views/DisplayController.h branches/fusegl/fuse/fusepb/views/DisplayController.m Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-27 12:55:52 UTC (rev 268) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-29 12:29:57 UTC (rev 269) @@ -9,6 +9,8 @@ /* Begin PBXBuildFile section */ B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */ = {isa = PBXBuildFile; fileRef = B615BFE50B4261E50082D535 /* HIDJoysticks.h */; }; B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */ = {isa = PBXBuildFile; fileRef = B615BFE60B4261E50082D535 /* HIDJoysticks.m */; }; + B615C0130B45159B0082D535 /* DisplayController.h in Headers */ = {isa = PBXBuildFile; fileRef = B615C0110B45159B0082D535 /* DisplayController.h */; }; + B615C0140B45159B0082D535 /* DisplayController.m in Sources */ = {isa = PBXBuildFile; fileRef = B615C0120B45159B0082D535 /* DisplayController.m */; }; B61F459309121DF100C8096C /* Fuse Help in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F905ED05CDA24300C2F10D /* Fuse Help */; }; B61F459409121DF100C8096C /* disk_plus3.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F2076596C700DE7E81 /* disk_plus3.szx */; }; B61F459509121DF100C8096C /* tape_16.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F4076596FD00DE7E81 /* tape_16.szx */; }; @@ -359,6 +361,8 @@ B611196806A1FBB6006D2711 /* JoystickConfiguration.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = JoystickConfiguration.nib; path = nibs/JoystickConfiguration.nib; sourceTree = "<group>"; }; B615BFE50B4261E50082D535 /* HIDJoysticks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = HIDJoysticks.h; path = content_arrays/HIDJoysticks.h; sourceTree = "<group>"; }; B615BFE60B4261E50082D535 /* HIDJoysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = HIDJoysticks.m; path = content_arrays/HIDJoysticks.m; sourceTree = "<group>"; }; + B615C0110B45159B0082D535 /* DisplayController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DisplayController.h; sourceTree = "<group>"; }; + B615C0120B45159B0082D535 /* DisplayController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DisplayController.m; sourceTree = "<group>"; }; B619FC2E090D9BC200344F94 /* SavePanelAccessoryView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = SavePanelAccessoryView.nib; path = nibs/SavePanelAccessoryView.nib; sourceTree = "<group>"; }; B61EF5B905FED7930081DF70 /* hq3x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq3x.cpp; path = scaler/hq3x.cpp; sourceTree = SOURCE_ROOT; }; B61F46A909121DF100C8096C /* Info-Fuse.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Fuse.plist"; sourceTree = "<group>"; }; @@ -919,6 +923,8 @@ B6CE7FCF0B28FBEC00EB65B3 /* Views */ = { isa = PBXGroup; children = ( + B615C0110B45159B0082D535 /* DisplayController.h */, + B615C0120B45159B0082D535 /* DisplayController.m */, B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */, B6CE7FCC0B28FBD600EB65B3 /* DisplayOpenGLView.m */, ); @@ -1227,6 +1233,7 @@ B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */, B6A6F11F0B3EA737000B88E9 /* cocoascreenshot.h in Headers */, B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */, + B615C0130B45159B0082D535 /* DisplayController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1464,6 +1471,7 @@ B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */, B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */, B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */, + B615C0140B45159B0082D535 /* DisplayController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-27 12:55:52 UTC (rev 268) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-29 12:29:57 UTC (rev 269) @@ -71,6 +71,8 @@ } + (FuseController *)singleton; +-(void) awakeFromNib; + - (IBAction)cocoa_break:(id)sender; - (IBAction)disk_eject_a:(id)sender; - (IBAction)disk_eject_b:(id)sender; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-27 12:55:52 UTC (rev 268) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-29 12:29:57 UTC (rev 269) @@ -45,6 +45,7 @@ #include "divide.h" #include "event.h" #include "fuse.h" +#include "fusepb/main.h" #include "if1.h" #include "if2.h" #include "libspectrum.h" @@ -217,6 +218,14 @@ return singleton; } +-(void) awakeFromNib +{ + /* FIXME: Don't really like the argc, argv stuff being here... */ + if( fuse_init( ac, av ) ) { + fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); + } +} + - (IBAction)disk_eject_a:(id)sender { cocoaui_disk_eject( SPECPLUS3_DRIVE_A, 0 ); Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.h 2006-12-27 12:55:52 UTC (rev 268) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.h 2006-12-29 12:29:57 UTC (rev 269) @@ -40,6 +40,7 @@ NSMutableArray *machineRoms; } ++ (void)initialize; - (void)awakeFromNib; - (void)windowDidLoad; - (void)windowDidMove:(NSNotification *)aNotification; Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-27 12:55:52 UTC (rev 268) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-29 12:29:57 UTC (rev 269) @@ -28,13 +28,17 @@ #include <string.h> +#import "PreferencesController.h" + +#import "CAMachines.h" #import "FuseController.h" -#import "DisplayOpenGLView.h" +#import "HIDJoysticks.h" #import "JoystickConfigurationController.h" -#import "PreferencesController.h" -#import "CAMachines.h" #import "Joysticks.h" -#import "HIDJoysticks.h" +#import "MachineNameToIdTransformer.h" +#import "MachineScalerIsEnabled.h" +#import "ScalerNameToIdTransformer.h" +#import "VolumeSliderToPrefTransformer.h" #include "fuse.h" #include "joystick.h" @@ -51,6 +55,44 @@ @implementation PreferencesController ++(void) initialize +{ + ScalerNameToIdTransformer *sNToITransformer; + MachineScalerIsEnabled *machineScalerIsEnabled; + MachineNameToIdTransformer *mToITransformer; + VolumeSliderToPrefTransformer *vsToPTransformer; + + sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:sNToITransformer + forName:@"ScalerNameToIdTransformer"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:1] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsEnabled"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:0] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsDisabled"]; + + mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:mToITransformer + forName:@"MachineNameToIdTransformer"]; + + vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:vsToPTransformer + forName:@"VolumeSliderToPrefTransformer"]; + +} + - (void)awakeFromNib { } @@ -122,10 +164,6 @@ [machineRoms release]; fuse_emulation_unpause(); - - /* If we've enabled sound we want to put some data in the buffers before - too long to avoid glitches */ - if( sound_enabled ) [[DisplayOpenGLView instance] updateEmulationForTimeDelta:0]; } - (IBAction)chooseFile:(id)sender Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2006-12-27 12:55:52 UTC (rev 268) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2006-12-29 12:29:57 UTC (rev 269) @@ -1,6 +1,12 @@ { IBClasses = ( - {CLASS = DisplayOpenGLView; LANGUAGE = ObjC; SUPERCLASS = NSOpenGLView; }, + {CLASS = DisplayController; LANGUAGE = ObjC; SUPERCLASS = NSResponder; }, + { + CLASS = DisplayOpenGLView; + LANGUAGE = ObjC; + OUTLETS = {controller = NSResponder; }; + SUPERCLASS = NSOpenGLView; + }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Copied: branches/fusegl/fuse/fusepb/views/DisplayController.h (from rev 268, branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h) =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayController.h (rev 0) +++ branches/fusegl/fuse/fusepb/views/DisplayController.h 2006-12-29 12:29:57 UTC (rev 269) @@ -0,0 +1,60 @@ +/* DisplayController.h: Implementation for the DisplayController class + Copyright (c) 2006 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... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#import <Cocoa/Cocoa.h> + +#include <libspectrum.h> + +#include "input.h" + +@interface DisplayController : NSResponder +{ + GHashTable *unicode_keysyms_hash; + + BOOL optDown; + BOOL ctrlDown; + BOOL shiftDown; + + int cocoakeyboard_caps_shift_pressed; + int cocoakeyboard_symbol_shift_pressed; + input_key unicode_keysym; +} +-(void) awakeFromNib; + +-(void) mouseMoved:(NSEvent *)theEvent; +-(void) mouseDown:(NSEvent *)theEvent; +-(void) mouseUp:(NSEvent *)theEvent; +-(void) rightMouseDown:(NSEvent *)theEvent; +-(void) rightMouseUp:(NSEvent *)theEvent; +-(void) otherMouseDown:(NSEvent *)theEvent; +-(void) otherMouseUp:(NSEvent *)theEvent; + +-(void) initKeyboard; +-(void) flagsChanged:(NSEvent *)theEvent; +-(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash; +-(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type; +-(void) keyDown:(NSEvent *)theEvent; +-(void) keyUp:(NSEvent *)theEvent; + +@end Copied: branches/fusegl/fuse/fusepb/views/DisplayController.m (from rev 268, branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m) =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayController.m (rev 0) +++ branches/fusegl/fuse/fusepb/views/DisplayController.m 2006-12-29 12:29:57 UTC (rev 269) @@ -0,0 +1,192 @@ +/* DisplayController.m: Implementation for the DisplayController class + Copyright (c) 2006 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... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#import "DisplayController.h" + +#include "event.h" +#include "keyboard.h" +#include "ui/ui.h" + +extern keysyms_map_t unicode_keysyms_map[]; + +@implementation DisplayController + +-(void) awakeFromNib +{ + optDown = NO; + ctrlDown = NO; + shiftDown = NO; + + cocoakeyboard_caps_shift_pressed = 0; + cocoakeyboard_symbol_shift_pressed = 0; + unicode_keysym = INPUT_KEY_NONE; + + [self initKeyboard]; +} + +-(void) mouseMoved:(NSEvent *)theEvent +{ + if( ui_mouse_grabbed ) { + int dx = [theEvent deltaX]; + int dy = [theEvent deltaY]; + + if( dx < -128 ) dx = -128; + else if( dx > 128 ) dx = 128; + + if( dy < -128 ) dy = -128; + else if( dy > 128 ) dy = 128; + + ui_mouse_motion( dx, dy ); + } +} + +-(void) mouseDown:(NSEvent *)theEvent +{ + ui_mouse_button( 1, 1 ); +} + +-(void) mouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 1, 0 ); +} + +-(void) rightMouseDown:(NSEvent *)theEvent +{ + ui_mouse_button( 3, 1 ); +} + +-(void) rightMouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 3, 0 ); +} + +-(void) otherMouseDown:(NSEvent *)theEvent +{ + ui_mouse_button( 2, 1 ); +} + +-(void) otherMouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 2, 0 ); +} + +-(void) initKeyboard +{ + keysyms_map_t *ptr3; + + unicode_keysyms_hash = g_hash_table_new( g_int_hash, g_int_equal ); + + for( ptr3 = (keysyms_map_t *)unicode_keysyms_map; ptr3->ui; ptr3++ ) + g_hash_table_insert( unicode_keysyms_hash, &( ptr3->ui ), + &( ptr3->fuse ) ); +} + +-(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new +{ + if( old != new ) { + input_event_t fuse_event; + fuse_event.types.key.spectrum_key = theType; + if( new == YES ) + fuse_event.type = INPUT_EVENT_KEYPRESS; + else + fuse_event.type = INPUT_EVENT_KEYRELEASE; + input_event( &fuse_event ); + } +} + +-(void) flagsChanged:(NSEvent *)theEvent +{ + int flags = [theEvent modifierFlags]; + BOOL optDownNew = (flags & NSAlternateKeyMask) ? YES : NO; + BOOL ctrlDownNew = (flags & NSControlKeyMask) ? YES : NO; + BOOL shiftDownNew = ( flags & NSShiftKeyMask ) ? YES : NO; + + [self modifierChange:INPUT_KEY_Alt_L oldState:optDown newState:optDownNew]; + [self modifierChange:INPUT_KEY_Control_L oldState:ctrlDown newState:ctrlDownNew]; + [self modifierChange:INPUT_KEY_Shift_L oldState:shiftDown newState:shiftDownNew]; + + optDown = optDownNew; + ctrlDown = ctrlDownNew; + shiftDown = shiftDownNew; +} + +-(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash +{ + const input_key *ptr; + + ptr = g_hash_table_lookup( hash, &ui_keysym ); + + return ptr ? *ptr : INPUT_KEY_NONE; +} + +-(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type +{ + unsigned short keyCode = [theEvent keyCode]; + NSString *characters = [theEvent charactersIgnoringModifiers]; + if ([characters length]) { + input_key fuse_keysym; + input_event_t fuse_event; + + fuse_keysym = keysyms_remap( keyCode ); + if( fuse_keysym == INPUT_KEY_NONE ) { + fuse_keysym = [self otherKeysymsRemap:[characters characterAtIndex:0] + inHash:unicode_keysyms_hash]; + if( fuse_keysym != INPUT_KEY_NONE ) { + unicode_keysym = fuse_keysym; + /* record current values of caps and symbol shift. We will temoprarily + * override these for the duration of the unicoded simulated keypresses + */ + if( ( cocoakeyboard_caps_shift_pressed = keyboard_state( KEYBOARD_Caps ) ) ) + { + keyboard_release( KEYBOARD_Caps ); + } + if( ( cocoakeyboard_symbol_shift_pressed = + keyboard_state( KEYBOARD_Symbol ) ) ) { + keyboard_release( KEYBOARD_Symbol ); + } + } + } + + fuse_event.type = type; + if( unicode_keysym == INPUT_KEY_NONE ) + fuse_event.types.key.native_key = fuse_keysym; + else + fuse_event.types.key.native_key = unicode_keysym; + fuse_event.types.key.spectrum_key = fuse_keysym; + + input_event( &fuse_event ); + } +} + +-(void) keyDown:(NSEvent *)theEvent +{ + [self keyChange:theEvent type:INPUT_EVENT_KEYPRESS]; +} + +-(void) keyUp:(NSEvent *)theEvent +{ + [self keyChange:theEvent type:INPUT_EVENT_KEYRELEASE]; +} + +@end Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-27 12:55:52 UTC (rev 268) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-29 12:29:57 UTC (rev 269) @@ -42,20 +42,12 @@ BOOL screenTexInitialised; - GHashTable *unicode_keysyms_hash; - - BOOL optDown; - BOOL ctrlDown; - BOOL shiftDown; - - int cocoakeyboard_caps_shift_pressed; - int cocoakeyboard_symbol_shift_pressed; - input_key unicode_keysym; - CFAbsoluteTime time; + + /* Controller */ + IBOutlet NSResponder *controller; } +(DisplayOpenGLView *) instance; -+(void) initialize; -(void) createTexture:(Cocoa_Texture*)newScreen; -(void) destroyTexture; @@ -74,11 +66,7 @@ -(void) otherMouseDown:(NSEvent *)theEvent; -(void) otherMouseUp:(NSEvent *)theEvent; --(void) initKeyboard; --(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new; -(void) flagsChanged:(NSEvent *)theEvent; --(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash; --(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type; -(void) keyDown:(NSEvent *)theEvent; -(void) keyUp:(NSEvent *)theEvent; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-27 12:55:52 UTC (rev 268) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-29 12:29:57 UTC (rev 269) @@ -23,25 +23,16 @@ */ #import "DisplayOpenGLView.h" -#import "ScalerNameToIdTransformer.h" -#import "MachineScalerIsEnabled.h" -#import "MachineNameToIdTransformer.h" -#import "VolumeSliderToPrefTransformer.h" #include "event.h" #include "fuse.h" -#include "fusepb/main.h" -#include "keyboard.h" #include "settings.h" #include "sound.h" -extern keysyms_map_t unicode_keysyms_map[]; - #include <CoreAudio/AudioHardware.h> #include "sound/sfifo.h" extern sfifo_t sound_fifo; -extern AudioStreamBasicDescription deviceFormat; @implementation DisplayOpenGLView @@ -52,44 +43,6 @@ return instance; } -+(void) initialize -{ - ScalerNameToIdTransformer *sNToITransformer; - MachineScalerIsEnabled *machineScalerIsEnabled; - MachineNameToIdTransformer *mToITransformer; - VolumeSliderToPrefTransformer *vsToPTransformer; - - sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:sNToITransformer - forName:@"ScalerNameToIdTransformer"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:1] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsEnabled"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:0] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsDisabled"]; - - mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:mToITransformer - forName:@"MachineNameToIdTransformer"]; - - vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:vsToPTransformer - forName:@"VolumeSliderToPrefTransformer"]; - -} - -(id) initWithFrame:(NSRect)frameRect { /* Init pixel format attribs */ @@ -127,14 +80,6 @@ screenTexInitialised = NO; - optDown = NO; - ctrlDown = NO; - shiftDown = NO; - - cocoakeyboard_caps_shift_pressed = 0; - cocoakeyboard_symbol_shift_pressed = 0; - unicode_keysym = INPUT_KEY_NONE; - return self; } @@ -143,13 +88,6 @@ /* keep the window in the standard aspect ratio if the user resizes */ [[self window] setContentAspectRatio:NSMakeSize(4.0,3.0)]; - /* FIXME: Don't really like the argc, argv stuff being here... */ - if( fuse_init( ac, av ) ) { - fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); - } - - [self initKeyboard]; - time = CFAbsoluteTimeGetCurrent(); /* set emulation time start time */ } @@ -336,146 +274,62 @@ -(void) mouseMoved:(NSEvent *)theEvent { - if( ui_mouse_grabbed ) { - int dx = [theEvent deltaX]; - int dy = [theEvent deltaY]; - - if( dx < -128 ) dx = -128; - else if( dx > 128 ) dx = 128; - - if( dy < -128 ) dy = -128; - else if( dy > 128 ) dy = 128; - - ui_mouse_motion( dx, dy ); - } + /* Delegate to our controller object. */ + [controller mouseMoved:theEvent]; } -(void) mouseDown:(NSEvent *)theEvent { - ui_mouse_button( 1, 1 ); + /* Delegate to our controller object. */ + [controller mouseDown:theEvent]; } -(void) mouseUp:(NSEvent *)theEvent { - ui_mouse_button( 1, 0 ); + /* Delegate to our controller object. */ + [controller mouseUp:theEvent]; } -(void) rightMouseDown:(NSEvent *)theEvent { - ui_mouse_button( 3, 1 ); + /* Delegate to our controller object. */ + [controller rightMouseDown:theEvent]; } -(void) rightMouseUp:(NSEvent *)theEvent { - ui_mouse_button( 3, 0 ); + /* Delegate to our controller object. */ + [controller rightMouseUp:theEvent]; } -(void) otherMouseDown:(NSEvent *)theEvent { - ui_mouse_button( 2, 1 ); + /* Delegate to our controller object. */ + [controller otherMouseDown:theEvent]; } -(void) otherMouseUp:(NSEvent *)theEvent { - ui_mouse_button( 2, 0 ); + /* Delegate to our controller object. */ + [controller otherMouseUp:theEvent]; } --(void) initKeyboard -{ - keysyms_map_t *ptr3; - - unicode_keysyms_hash = g_hash_table_new( g_int_hash, g_int_equal ); - - for( ptr3 = (keysyms_map_t *)unicode_keysyms_map; ptr3->ui; ptr3++ ) - g_hash_table_insert( unicode_keysyms_hash, &( ptr3->ui ), - &( ptr3->fuse ) ); -} - --(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new -{ - if( old != new ) { - input_event_t fuse_event; - fuse_event.types.key.spectrum_key = theType; - if( new == YES ) - fuse_event.type = INPUT_EVENT_KEYPRESS; - else - fuse_event.type = INPUT_EVENT_KEYRELEASE; - input_event( &fuse_event ); - } -} - -(void) flagsChanged:(NSEvent *)theEvent { - int flags = [theEvent modifierFlags]; - BOOL optDownNew = (flags & NSAlternateKeyMask) ? YES : NO; - BOOL ctrlDownNew = (flags & NSControlKeyMask) ? YES : NO; - BOOL shiftDownNew = ( flags & NSShiftKeyMask ) ? YES : NO; - - [self modifierChange:INPUT_KEY_Alt_L oldState:optDown newState:optDownNew]; - [self modifierChange:INPUT_KEY_Control_L oldState:ctrlDown newState:ctrlDownNew]; - [self modifierChange:INPUT_KEY_Shift_L oldState:shiftDown newState:shiftDownNew]; - - optDown = optDownNew; - ctrlDown = ctrlDownNew; - shiftDown = shiftDownNew; + /* Delegate to our controller object. */ + [controller flagsChanged:theEvent]; } --(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash -{ - const input_key *ptr; - - ptr = g_hash_table_lookup( hash, &ui_keysym ); - - return ptr ? *ptr : INPUT_KEY_NONE; -} - --(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type -{ - unsigned short keyCode = [theEvent keyCode]; - NSString *characters = [theEvent charactersIgnoringModifiers]; - if ([characters length]) { - input_key fuse_keysym; - input_event_t fuse_event; - - fuse_keysym = keysyms_remap( keyCode ); - if( fuse_keysym == INPUT_KEY_NONE ) { - fuse_keysym = [self otherKeysymsRemap:[characters characterAtIndex:0] - inHash:unicode_keysyms_hash]; - if( fuse_keysym != INPUT_KEY_NONE ) { - unicode_keysym = fuse_keysym; - /* record current values of caps and symbol shift. We will temoprarily - * override these for the duration of the unicoded simulated keypresses - */ - if( ( cocoakeyboard_caps_shift_pressed = keyboard_state( KEYBOARD_Caps ) ) ) - { - keyboard_release( KEYBOARD_Caps ); - } - if( ( cocoakeyboard_symbol_shift_pressed = - keyboard_state( KEYBOARD_Symbol ) ) ) { - keyboard_release( KEYBOARD_Symbol ); - } - } - } - - fuse_event.type = type; - if( unicode_keysym == INPUT_KEY_NONE ) - fuse_event.types.key.native_key = fuse_keysym; - else - fuse_event.types.key.native_key = unicode_keysym; - fuse_event.types.key.spectrum_key = fuse_keysym; - - input_event( &fuse_event ); - } -} - -(void) keyDown:(NSEvent *)theEvent { - [self keyChange:theEvent type:INPUT_EVENT_KEYPRESS]; + /* Delegate to our controller object. */ + [controller keyDown:theEvent]; } -(void) keyUp:(NSEvent *)theEvent { - [self keyChange:theEvent type:INPUT_EVENT_KEYRELEASE]; + /* Delegate to our controller object. */ + [controller keyUp:theEvent]; } -(BOOL) acceptsFirstResponder This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-27 12:55:55
|
Revision: 268 http://svn.sourceforge.net/fuse-for-macosx/?rev=268&view=rev Author: fredm Date: 2006-12-27 04:55:52 -0800 (Wed, 27 Dec 2006) Log Message: ----------- Wait to start rendering sound until we have accumulated some data in the sound fifo. Modified Paths: -------------- branches/fusegl/fuse/sound/coreaudiosound.c Modified: branches/fusegl/fuse/sound/coreaudiosound.c =================================================================== --- branches/fusegl/fuse/sound/coreaudiosound.c 2006-12-27 12:14:20 UTC (rev 267) +++ branches/fusegl/fuse/sound/coreaudiosound.c 2006-12-27 12:55:52 UTC (rev 268) @@ -54,6 +54,9 @@ */ static AudioUnit gOutputUnit; +/* Records sound writer status information */ +static int audio_output_started; + int sound_lowlevel_init( const char *dev, int *freqptr, int *stereoptr ) { @@ -176,14 +179,8 @@ return 1; } - /* Start the rendering - The DefaultOutputUnit will do any format conversions to the format of the - default device */ - err = AudioOutputUnitStart( gOutputUnit ); - if( err ) { - ui_error( UI_ERROR_ERROR, "AudioOutputUnitStart=%ld", err ); - return 1; - } + /* wait to run sound until we have some sound to play */ + audio_output_started = 0; return 0; } @@ -193,7 +190,8 @@ { OSStatus err; - verify_noerr( AudioOutputUnitStop( gOutputUnit ) ); + if( audio_output_started ) + verify_noerr( AudioOutputUnitStop( gOutputUnit ) ); err = AudioUnitUninitialize( gOutputUnit ); if( err ) { @@ -229,6 +227,19 @@ ui_error( UI_ERROR_ERROR, "Couldn't write sound fifo: %s", strerror( i ) ); } + + if( !audio_output_started ) { + /* Start the rendering + The DefaultOutputUnit will do any format conversions to the format of the + default device */ + OSStatus err = AudioOutputUnitStart( gOutputUnit ); + if( err ) { + ui_error( UI_ERROR_ERROR, "AudioOutputUnitStart=%ld", err ); + return; + } + + audio_output_started = 1; + } } /* This is the audio processing callback. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-27 12:14:21
|
Revision: 267 http://svn.sourceforge.net/fuse-for-macosx/?rev=267&view=rev Author: fredm Date: 2006-12-27 04:14:20 -0800 (Wed, 27 Dec 2006) Log Message: ----------- Remove references to SDL joysticks, the HID looks nasty though :/ Modified Paths: -------------- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/nibs/Preferences.nib/info.nib branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib Added Paths: ----------- branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.h branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.m Removed Paths: ------------- branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.h branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-26 12:43:45 UTC (rev 266) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-27 12:14:20 UTC (rev 267) @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */ = {isa = PBXBuildFile; fileRef = B615BFE50B4261E50082D535 /* HIDJoysticks.h */; }; + B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */ = {isa = PBXBuildFile; fileRef = B615BFE60B4261E50082D535 /* HIDJoysticks.m */; }; B61F459309121DF100C8096C /* Fuse Help in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F905ED05CDA24300C2F10D /* Fuse Help */; }; B61F459409121DF100C8096C /* disk_plus3.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F2076596C700DE7E81 /* disk_plus3.szx */; }; B61F459509121DF100C8096C /* tape_16.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F4076596FD00DE7E81 /* tape_16.szx */; }; @@ -94,7 +96,6 @@ B61F45F309121DF100C8096C /* MachineNameToIdTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = B67F3CC307EE0A130045339F /* MachineNameToIdTransformer.h */; }; B61F45F409121DF100C8096C /* CAMachines.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CC82FF0800E408006EFFB9 /* CAMachines.h */; }; B61F45F509121DF100C8096C /* Joysticks.h in Headers */ = {isa = PBXBuildFile; fileRef = B6C740D90810BB0500AB170C /* Joysticks.h */; }; - B61F45F609121DF100C8096C /* SDLJoysticks.h in Headers */ = {isa = PBXBuildFile; fileRef = B6C741110810C4A500AB170C /* SDLJoysticks.h */; }; B61F45F709121DF100C8096C /* VolumeSliderToPrefTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = B66D6C9608115FC200FAE6F3 /* VolumeSliderToPrefTransformer.h */; }; B61F45F809121DF100C8096C /* ScalerNameToIdTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = B67F3C1407ED1C9D0045339F /* ScalerNameToIdTransformer.h */; }; B61F45F909121DF100C8096C /* profile.h in Headers */ = {isa = PBXBuildFile; fileRef = B6E811F1084B5117008CF718 /* profile.h */; }; @@ -234,7 +235,6 @@ B61F468E09121DF100C8096C /* MachineNameToIdTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = B67F3CC407EE0A130045339F /* MachineNameToIdTransformer.m */; }; B61F468F09121DF100C8096C /* CAMachines.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CC83000800E408006EFFB9 /* CAMachines.m */; }; B61F469009121DF100C8096C /* Joysticks.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C740DA0810BB0500AB170C /* Joysticks.m */; }; - B61F469109121DF100C8096C /* SDLJoysticks.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C741120810C4A500AB170C /* SDLJoysticks.m */; }; B61F469209121DF100C8096C /* VolumeSliderToPrefTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = B66D6C9708115FC200FAE6F3 /* VolumeSliderToPrefTransformer.m */; }; B61F469309121DF100C8096C /* profile.c in Sources */ = {isa = PBXBuildFile; fileRef = B6E811F0084B5117008CF718 /* profile.c */; }; B61F469409121DF100C8096C /* ide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6E811F4084B5148008CF718 /* ide.c */; }; @@ -357,6 +357,8 @@ B611190206A1FA12006D2711 /* JoystickConfigurationController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JoystickConfigurationController.h; path = controllers/JoystickConfigurationController.h; sourceTree = SOURCE_ROOT; }; B611190306A1FA12006D2711 /* JoystickConfigurationController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = JoystickConfigurationController.m; path = controllers/JoystickConfigurationController.m; sourceTree = SOURCE_ROOT; }; B611196806A1FBB6006D2711 /* JoystickConfiguration.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = JoystickConfiguration.nib; path = nibs/JoystickConfiguration.nib; sourceTree = "<group>"; }; + B615BFE50B4261E50082D535 /* HIDJoysticks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = HIDJoysticks.h; path = content_arrays/HIDJoysticks.h; sourceTree = "<group>"; }; + B615BFE60B4261E50082D535 /* HIDJoysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = HIDJoysticks.m; path = content_arrays/HIDJoysticks.m; sourceTree = "<group>"; }; B619FC2E090D9BC200344F94 /* SavePanelAccessoryView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = SavePanelAccessoryView.nib; path = nibs/SavePanelAccessoryView.nib; sourceTree = "<group>"; }; B61EF5B905FED7930081DF70 /* hq3x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq3x.cpp; path = scaler/hq3x.cpp; sourceTree = SOURCE_ROOT; }; B61F46A909121DF100C8096C /* Info-Fuse.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Fuse.plist"; sourceTree = "<group>"; }; @@ -487,8 +489,6 @@ B6C691B704C20A42005EE041 /* joystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = joystick.c; path = ../joystick.c; sourceTree = SOURCE_ROOT; }; B6C740D90810BB0500AB170C /* Joysticks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Joysticks.h; path = content_arrays/Joysticks.h; sourceTree = SOURCE_ROOT; }; B6C740DA0810BB0500AB170C /* Joysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = Joysticks.m; path = content_arrays/Joysticks.m; sourceTree = SOURCE_ROOT; }; - B6C741110810C4A500AB170C /* SDLJoysticks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SDLJoysticks.h; path = content_arrays/SDLJoysticks.h; sourceTree = SOURCE_ROOT; }; - B6C741120810C4A500AB170C /* SDLJoysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = SDLJoysticks.m; path = content_arrays/SDLJoysticks.m; sourceTree = SOURCE_ROOT; }; B6C8696A06561155003000A6 /* hq2x.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = hq2x.h; path = scaler/hq2x.h; sourceTree = SOURCE_ROOT; }; B6C8696B06561155003000A6 /* hq3x.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = hq3x.h; path = scaler/hq3x.h; sourceTree = SOURCE_ROOT; }; B6C86978065611B3003000A6 /* intern.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = intern.h; path = scaler/intern.h; sourceTree = SOURCE_ROOT; }; @@ -950,10 +950,10 @@ children = ( B6CC82FF0800E408006EFFB9 /* CAMachines.h */, B6CC83000800E408006EFFB9 /* CAMachines.m */, + B615BFE50B4261E50082D535 /* HIDJoysticks.h */, + B615BFE60B4261E50082D535 /* HIDJoysticks.m */, B6C740D90810BB0500AB170C /* Joysticks.h */, B6C740DA0810BB0500AB170C /* Joysticks.m */, - B6C741110810C4A500AB170C /* SDLJoysticks.h */, - B6C741120810C4A500AB170C /* SDLJoysticks.m */, ); name = "Content Arrays"; sourceTree = "<group>"; @@ -1213,7 +1213,6 @@ B61F45F309121DF100C8096C /* MachineNameToIdTransformer.h in Headers */, B61F45F409121DF100C8096C /* CAMachines.h in Headers */, B61F45F509121DF100C8096C /* Joysticks.h in Headers */, - B61F45F609121DF100C8096C /* SDLJoysticks.h in Headers */, B61F45F709121DF100C8096C /* VolumeSliderToPrefTransformer.h in Headers */, B61F45F809121DF100C8096C /* ScalerNameToIdTransformer.h in Headers */, B61F45F909121DF100C8096C /* profile.h in Headers */, @@ -1227,6 +1226,7 @@ B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */, B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */, B6A6F11F0B3EA737000B88E9 /* cocoascreenshot.h in Headers */, + B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1446,7 +1446,6 @@ B61F468E09121DF100C8096C /* MachineNameToIdTransformer.m in Sources */, B61F468F09121DF100C8096C /* CAMachines.m in Sources */, B61F469009121DF100C8096C /* Joysticks.m in Sources */, - B61F469109121DF100C8096C /* SDLJoysticks.m in Sources */, B61F469209121DF100C8096C /* VolumeSliderToPrefTransformer.m in Sources */, B61F469309121DF100C8096C /* profile.c in Sources */, B61F469409121DF100C8096C /* ide.c in Sources */, @@ -1464,6 +1463,7 @@ B6A6F0DA0B3D141B000B88E9 /* cocoaui.m in Sources */, B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */, B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */, + B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Copied: branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.h (from rev 265, branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.h) =================================================================== --- branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.h (rev 0) +++ branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.h 2006-12-27 12:14:20 UTC (rev 267) @@ -0,0 +1,46 @@ +/* HIDJoysticks.h: Object encapsulating SDL joysticks + Copyright (c) 2005 Fredrick Meunier + + $Id: HIDJoysticks.h,v 1.1 2005/04/18 02:55:20 fred Exp $ + + 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: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +#import <Cocoa/Cocoa.h> + +@interface HIDJoystick : NSObject <NSCoding> +{ + NSString *name; + int type; +} + ++ (NSArray *)allJoysticks; ++ (id)joystickWithName:(NSString *)aTitle andType:(int)aValue; ++ (HIDJoystick *)joystickForName:(NSString *)theName; ++ (HIDJoystick *)joystickForType:(int)theType; +- (int)joystickType; +- (void)setJoystickType:(int)aValue; +- (NSString *)joystickName; +- (void)setJoystickName:(NSString *)aName; + +- (id)copyWithZone:(NSZone *)zone; +- (id)valueForUndefinedKey:(NSString *)key; +@end Copied: branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.m (from rev 265, branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m) =================================================================== --- branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.m (rev 0) +++ branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.m 2006-12-27 12:14:20 UTC (rev 267) @@ -0,0 +1,170 @@ +/* HIDJoysticks.m: Object encapsulating Mac OS X HID joysticks + Copyright (c) 2005 Fredrick Meunier + + $Id: HIDJoysticks.m,v 1.1 2005/04/18 02:55:20 fred Exp $ + + 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: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +#import "HIDJoysticks.h" + +#include <libspectrum.h> + +#include "joystick.h" + +@implementation HIDJoystick + +// Predefined global list of joysticks ++ (NSArray *)allJoysticks +{ + static NSMutableArray *joysticks; + if (!joysticks) { + size_t i; + + joysticks = [NSMutableArray arrayWithCapacity:joysticks_supported+1]; + + [joysticks addObject:[HIDJoystick joystickWithName:@"None" andType:0]]; +#if 0 + if( joysticks_supported > 0 ){ + for( i=0; i<joysticks_supported; i++ ) { + [joysticks addObject: + [HIDJoystick joystickWithName:[NSString stringWithUTF8String: + HID_JoystickName(i)] + andType:i+1] + ]; + } + } +#endif + } + return joysticks; +} + +// Retrieve joystick with given name from 'allHIDJoysticks' +// (see NSCoding methods). ++ (HIDJoystick *)joystickForName:(NSString *)theName +{ + NSEnumerator *joystickEnumerator = [[HIDJoystick allJoysticks] objectEnumerator]; + HIDJoystick *joystick; + while ((joystick = [joystickEnumerator nextObject])) { + if ([[joystick joystickName] isEqual:theName]) { + return joystick; + } + } + return nil; +} + +// Retrieve joystick with given type from 'allJoysticks' +// (see NSCoding methods). ++ (HIDJoystick *)joystickForType:(int)theType +{ + NSEnumerator *joystickEnumerator = [[HIDJoystick allJoysticks] objectEnumerator]; + HIDJoystick *joystick; + while ((joystick = [joystickEnumerator nextObject])) { + if (theType == [joystick joystickType]) { + return joystick; + } + } + return nil; +} + + +// Convenience constructor ++ (id)joystickWithName:(NSString *)aName andType:(int)aValue +{ + id newJoystick = [[[self alloc] init] autorelease]; + [newJoystick setJoystickName:aName]; + [newJoystick setJoystickType:aValue]; + + return newJoystick; +} + +/* + NSCoding methods + To encode, simply save 'type'; on decode, replace self with + the existing instance from 'allJoysticks' with the same type + */ +- (void)encodeWithCoder:(NSCoder *)encoder +{ + if ( [encoder allowsKeyedCoding] ) { + [encoder encodeInt: type forKey:@"priority"]; + } else { + [encoder encodeValueOfObjCType:@encode(int) at:&type]; + } +} + +- (id)initWithCoder:(NSCoder *)decoder +{ + int theType = 0; + if ( [decoder allowsKeyedCoding] ) { + theType = [decoder decodeIntForKey:@"type"]; + } else { + [decoder decodeValueOfObjCType:@encode(int) at:&type]; + } + [self autorelease]; + // returning "static" object from init method -- ensure retain count maintained + return [[HIDJoystick joystickForType:theType] retain]; +} + + +// Accessors +- (NSString *)joystickName +{ + return name; +} + +- (void)setJoystickName:(NSString *)aName +{ + if (name != aName) { + [name release]; + name = [aName copy]; + } + return; +} + +- (int)joystickType +{ + return type; +} + +- (void)setJoystickType:(int)aValue +{ + type = aValue; +} + +- (void)dealloc +{ + [self setJoystickName:nil]; + [super dealloc]; +} + +- (id)copyWithZone:(NSZone *)zone +{ + [self retain]; + return self; +} + +- (id)valueForUndefinedKey:(NSString *)key +{ +fprintf(stderr,"Undefined key:'%s'\n",[key UTF8String]); +return nil; +} + +@end Deleted: branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.h =================================================================== --- branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.h 2006-12-26 12:43:45 UTC (rev 266) +++ branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.h 2006-12-27 12:14:20 UTC (rev 267) @@ -1,46 +0,0 @@ -/* SDLJoysticks.h: Object encapsulating SDL joysticks - Copyright (c) 2005 Fredrick Meunier - - $Id: SDLJoysticks.h,v 1.1 2005/04/18 02:55:20 fred Exp $ - - 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: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -#import <Cocoa/Cocoa.h> - -@interface SDLJoystick : NSObject <NSCoding> -{ - NSString *name; - int type; -} - -+ (NSArray *)allJoysticks; -+ (id)joystickWithName:(NSString *)aTitle andType:(int)aValue; -+ (SDLJoystick *)joystickForName:(NSString *)theName; -+ (SDLJoystick *)joystickForType:(int)theType; -- (int)joystickType; -- (void)setJoystickType:(int)aValue; -- (NSString *)joystickName; -- (void)setJoystickName:(NSString *)aName; - -- (id)copyWithZone:(NSZone *)zone; -- (id)valueForUndefinedKey:(NSString *)key; -@end Deleted: branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m =================================================================== --- branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m 2006-12-26 12:43:45 UTC (rev 266) +++ branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m 2006-12-27 12:14:20 UTC (rev 267) @@ -1,172 +0,0 @@ -/* SDLJoysticks.m: Object encapsulating libspectrum joysticks - Copyright (c) 2005 Fredrick Meunier - - $Id: SDLJoysticks.m,v 1.1 2005/04/18 02:55:20 fred Exp $ - - 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: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -//#include <SDL.h> - -#import "SDLJoysticks.h" - -#include <libspectrum.h> - -#include "joystick.h" - -@implementation SDLJoystick - -// Predefined global list of joysticks -+ (NSArray *)allJoysticks -{ - static NSMutableArray *joysticks; - if (!joysticks) { - size_t i; - - joysticks = [NSMutableArray arrayWithCapacity:joysticks_supported+1]; - - [joysticks addObject:[SDLJoystick joystickWithName:@"None" andType:0]]; -#if 0 - if( joysticks_supported > 0 ){ - for( i=0; i<joysticks_supported; i++ ) { - [joysticks addObject: - [SDLJoystick joystickWithName:[NSString stringWithUTF8String: - SDL_JoystickName(i)] - andType:i+1] - ]; - } - } -#endif - } - return joysticks; -} - -// Retrieve joystick with given name from 'allSDLJoysticks' -// (see NSCoding methods). -+ (SDLJoystick *)joystickForName:(NSString *)theName -{ - NSEnumerator *joystickEnumerator = [[SDLJoystick allJoysticks] objectEnumerator]; - SDLJoystick *joystick; - while ((joystick = [joystickEnumerator nextObject])) { - if ([[joystick joystickName] isEqual:theName]) { - return joystick; - } - } - return nil; -} - -// Retrieve joystick with given type from 'allJoysticks' -// (see NSCoding methods). -+ (SDLJoystick *)joystickForType:(int)theType -{ - NSEnumerator *joystickEnumerator = [[SDLJoystick allJoysticks] objectEnumerator]; - SDLJoystick *joystick; - while ((joystick = [joystickEnumerator nextObject])) { - if (theType == [joystick joystickType]) { - return joystick; - } - } - return nil; -} - - -// Convenience constructor -+ (id)joystickWithName:(NSString *)aName andType:(int)aValue -{ - id newJoystick = [[[self alloc] init] autorelease]; - [newJoystick setJoystickName:aName]; - [newJoystick setJoystickType:aValue]; - - return newJoystick; -} - -/* - NSCoding methods - To encode, simply save 'type'; on decode, replace self with - the existing instance from 'allJoysticks' with the same type - */ -- (void)encodeWithCoder:(NSCoder *)encoder -{ - if ( [encoder allowsKeyedCoding] ) { - [encoder encodeInt: type forKey:@"priority"]; - } else { - [encoder encodeValueOfObjCType:@encode(int) at:&type]; - } -} - -- (id)initWithCoder:(NSCoder *)decoder -{ - int theType = 0; - if ( [decoder allowsKeyedCoding] ) { - theType = [decoder decodeIntForKey:@"type"]; - } else { - [decoder decodeValueOfObjCType:@encode(int) at:&type]; - } - [self autorelease]; - // returning "static" object from init method -- ensure retain count maintained - return [[SDLJoystick joystickForType:theType] retain]; -} - - -// Accessors -- (NSString *)joystickName -{ - return name; -} - -- (void)setJoystickName:(NSString *)aName -{ - if (name != aName) { - [name release]; - name = [aName copy]; - } - return; -} - -- (int)joystickType -{ - return type; -} - -- (void)setJoystickType:(int)aValue -{ - type = aValue; -} - -- (void)dealloc -{ - [self setJoystickName:nil]; - [super dealloc]; -} - -- (id)copyWithZone:(NSZone *)zone -{ - [self retain]; - return self; -} - -- (id)valueForUndefinedKey:(NSString *)key -{ -fprintf(stderr,"Undefined key:'%s'\n",[key UTF8String]); -return nil; -} - -@end Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-26 12:43:45 UTC (rev 266) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-27 12:14:20 UTC (rev 267) @@ -34,7 +34,7 @@ #import "PreferencesController.h" #import "CAMachines.h" #import "Joysticks.h" -#import "SDLJoysticks.h" +#import "HIDJoysticks.h" #include "fuse.h" #include "joystick.h" @@ -186,7 +186,7 @@ - (NSArray *)sdlJoysticks { - return [SDLJoystick allJoysticks]; + return [HIDJoystick allJoysticks]; } - (IBAction)chooseROMFile:(id)sender Modified: branches/fusegl/fuse/fusepb/nibs/Preferences.nib/info.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/Preferences.nib/info.nib 2006-12-26 12:43:45 UTC (rev 266) +++ branches/fusegl/fuse/fusepb/nibs/Preferences.nib/info.nib 2006-12-27 12:14:20 UTC (rev 267) @@ -3,7 +3,7 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>112 18 356 240 0 0 1440 878 </string> + <string>100 79 356 240 0 0 1440 878 </string> <key>IBFramework Version</key> <string>446.1</string> <key>IBGroupedObjects</key> @@ -25,7 +25,7 @@ <integer>5</integer> </array> <key>IBSystem Version</key> - <string>8J2135</string> + <string>8L2127</string> <key>IBUsesTextArchiving</key> <true/> </dict> Modified: branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2006-12-26 12:43:45 UTC (rev 266) +++ branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2006-12-27 12:14:20 UTC (rev 267) @@ -142,7 +142,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> @@ -641,12 +641,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>197</integer> + <integer>118</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>323</integer> + <integer>308</integer> </dict> <key>NSNextResponder</key> <dict> @@ -656,7 +656,7 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>253</integer> + <integer>207</integer> </dict> </dict> <string>{{18, 103}, {105, 18}}</string> @@ -1163,7 +1163,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>197</integer> + <integer>118</integer> </dict> <key>NSFrame</key> <dict> @@ -1185,7 +1185,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> @@ -1221,7 +1221,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>249</integer> + <integer>203</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1231,7 +1231,7 @@ <key>NSSelectedTabViewItem</key> <dict> <key>CF$UID</key> - <integer>363</integer> + <integer>540</integer> </dict> <key>NSSubviews</key> <dict> @@ -1246,7 +1246,7 @@ <key>NSTabViewItems</key> <dict> <key>CF$UID</key> - <integer>250</integer> + <integer>204</integer> </dict> <key>NSTvFlags</key> <integer>4</integer> @@ -1255,7 +1255,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> @@ -1269,12 +1269,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>197</integer> + <integer>118</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>248</integer> + <integer>202</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1296,7 +1296,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> @@ -1306,109 +1306,140 @@ </dict> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>129</integer> </dict> <dict> <key>CF$UID</key> - <integer>60</integer> + <integer>172</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>64</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>208</integer> - </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>23</integer> + <integer>128</integer> </dict> - <key>NSCell</key> + <key>NSBorderType</key> + <integer>3</integer> + <key>NSBoxType</key> + <integer>0</integer> + <key>NSContentView</key> <dict> <key>CF$UID</key> <integer>54</integer> </dict> - <key>NSEnabled</key> - <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>53</integer> + <integer>119</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> <integer>50</integer> </dict> + <key>NSOffsets</key> + <dict> + <key>CF$UID</key> + <integer>120</integer> + </dict> + <key>NSSubviews</key> + <dict> + <key>CF$UID</key> + <integer>53</integer> + </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> <integer>50</integer> </dict> - <key>NSvFlags</key> - <integer>256</integer> + <key>NSTitleCell</key> + <dict> + <key>CF$UID</key> + <integer>121</integer> + </dict> + <key>NSTitlePosition</key> + <integer>2</integer> + <key>NSTransparent</key> + <false/> </dict> - <string>{{378, 263}, {198, 18}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>75</integer> </dict> - <key>NSAlternateContents</key> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>118</integer> </dict> - <key>NSAlternateImage</key> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>18</integer> + <integer>117</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>2</integer> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>52</integer> </dict> - <key>NSControlView</key> + <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>55</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>52</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>200</integer> - <key>NSPeriodicInterval</key> - <integer>25</integer> - <key>NSSupport</key> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>75</integer> </dict> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>56</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>79</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>94</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>108</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>112</integer> + </dict> + </array> </dict> - <string>Kempston joystick interface</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>23</integer> + <integer>78</integer> </dict> <key>NSCell</key> <dict> @@ -1425,46 +1456,45 @@ <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>54</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>54</integer> </dict> <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{378, 219}, {138, 18}}</string> + <string>{{144, 44}, {249, 26}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>77</integer> </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>60</integer> </dict> <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>18</integer> + <integer>59</integer> </dict> + <key>NSAltersState</key> + <true/> + <key>NSArrowPosition</key> + <integer>1</integer> <key>NSButtonFlags</key> - <integer>1211912703</integer> + <integer>109199615</integer> <key>NSButtonFlags2</key> - <integer>2</integer> + <integer>1</integer> <key>NSCellFlags</key> - <integer>67239424</integer> + <integer>-2076049856</integer> <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> - <integer>59</integer> - </dict> + <integer>134218752</integer> <key>NSControlView</key> <dict> <key>CF$UID</key> @@ -1473,1424 +1503,1180 @@ <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>61</integer> </dict> + <key>NSMenu</key> + <dict> + <key>CF$UID</key> + <integer>63</integer> + </dict> + <key>NSMenuItem</key> + <dict> + <key>CF$UID</key> + <integer>62</integer> + </dict> <key>NSPeriodicDelay</key> - <integer>200</integer> + <integer>400</integer> <key>NSPeriodicInterval</key> - <integer>25</integer> + <integer>75</integer> + <key>NSPreferredEdge</key> + <integer>3</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> + <key>NSUsesItemFromMenu</key> + <true/> </dict> - <string>Interface II</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>23</integer> + <integer>17</integer> </dict> - <key>NSCell</key> + <key>NSName</key> <dict> <key>CF$UID</key> - <integer>62</integer> + <integer>16</integer> </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> + <key>NSSize</key> + <real>13</real> + <key>NSfFlags</key> + <integer>16</integer> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>61</integer> + <integer>45</integer> </dict> - <key>NSNextResponder</key> + <key>NS.string</key> + <string></string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>45</integer> </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> + <key>NS.string</key> + <string></string> </dict> - <string>{{378, 241}, {187, 18}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>72</integer> </dict> - <key>NSAlternateContents</key> + <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>71</integer> </dict> - <key>NSAlternateImage</key> + <key>NSKeyEquiv</key> <dict> <key>CF$UID</key> - <integer>18</integer> + <integer>21</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>2</integer> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> <dict> <key>CF$UID</key> <integer>63</integer> </dict> - <key>NSControlView</key> + <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>60</integer> + <integer>69</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>65</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>200</integer> - <key>NSPeriodicInterval</key> - <integer>25</integer> - <key>NSSupport</key> + <key>NSState</key> + <integer>1</integer> + <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>58</integer> </dict> + <key>NSTitle</key> + <dict> + <key>CF$UID</key> + <integer>64</integer> + </dict> </dict> - <string>Kempston mouse</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>207</integer> + <integer>76</integer> </dict> - <key>NSBorderType</key> - <integer>3</integer> - <key>NSBoxType</key> - <integer>0</integer> - <key>NSContentView</key> + <key>NSMenuItems</key> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>74</integer> </dict> - <key>NSFrame</key> + <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>198</integer> + <integer>73</integer> </dict> - <key>NSNextResponder</key> + </dict> + <string>Item1</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>68</integer> </dict> - <key>NSOffsets</key> + <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>199</integer> + <integer>66</integer> </dict> - <key>NSSubviews</key> + <key>NSResourceName</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>67</integer> </dict> - <key>NSSuperview</key> + </dict> + <string>NSImage</string> + <string>NSMenuCheckmark</string> + <dict> + <key>$classes</key> + <array> + <string>NSCustomResource</string> + <string>%NSCustomResource</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSCustomResource</string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>68</integer> </dict> - <key>NSTitleCell</key> + <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>66</integer> </dict> - <key>NSTitlePosition</key> - <integer>2</integer> - <key>NSTransparent</key> - <false/> + <key>NSResourceName</key> + <dict> + <key>CF$UID</key> + <integer>70</integer> + </dict> </dict> + <string>NSMenuMixedState</string> + <string>_popUpItemAction:</string> <dict> + <key>$classes</key> + <array> + <string>NSMenuItem</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMenuItem</string> + </dict> + <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>45</integer> </dict> + <key>NS.string</key> + <string>OtherViews</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>75</integer> + </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>62</integer> </dict> </array> </dict> <dict> + <key>$classes</key> + <array> + <string>NSMutableArray</string> + <string>NSArray</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMutableArray</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSMenu</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMenu</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSPopUpButtonCell</string> + <string>NSMenuItemCell</string> + <string>NSButtonCell</string> + <string>%NSButtonCell</string> + <string>NSActionCell</string> + <string>NSCell</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSPopUpButtonCell</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSPopUpButton</string> + <string>NSButton</string> + <string>NSControl</string> + <string>NSView</string> + <string>NSResponder</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSPopUpButton</string> + </dict> + <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>197</integer> + <integer>78</integer> </dict> - <key>NSFrame</key> + <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>196</integer> + <integer>81</integer> </dict> - <key>NSNextResponder</key> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>64</integer> + <integer>80</integer> </dict> - <key>NSSubviews</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>54</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>64</integer> + <integer>54</integer> </dict> + <key>NSvFlags</key> + <integer>256</integer> </dict> + <string>{{144, 12}, {125, 26}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>77</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>68</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>128</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>132</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>136</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>140</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>144</integer> - </dict> - </array> + <key>NSAlternateContents</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSAlternateImage</key> + <dict> + <key>CF$UID</key> + <integer>59</integer> + </dict> + <key>NSAltersState</key> + <true/> + <key>NSArrowPosition</key> + <integer>1</integer> + <key>NSButtonFlags</key> + <integer>109199615</integer> + <key>NSButtonFlags2</key> + <integer>1</integer> + <key>NSCellFlags</key> + <integer>-2076049856</integer> + <key>NSCellFlags2</key> + <integer>134218752</integer> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>79</integer> + </dict> + <key>NSKeyEquivalent</key> + <dict> + <key>CF$UID</key> + <integer>82</integer> + </dict> + <key>NSMenu</key> + <dict> + <key>CF$UID</key> + <integer>84</integer> + </dict> + <key>NSMenuItem</key> + <dict> + <key>CF$UID</key> + <integer>83</integer> + </dict> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSPreferredEdge</key> + <integer>3</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + <key>NSUsesItemFromMenu</key> + <true/> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>127</integer> + <integer>45</integer> </dict> - <key>NSBackgroundColor</key> + <key>NS.string</key> + <string></string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>122</integer> + <integer>72</integer> </dict> - <key>NSCellBackgroundColor</key> + <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>126</integer> + <integer>85</integer> </dict> - <key>NSCellClass</key> + <key>NSKeyEquiv</key> <dict> <key>CF$UID</key> - <integer>119</integer> + <integer>21</integer> </dict> - <key>NSCellSize</key> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>117</integer> + <integer>84</integer> </dict> - <key>NSCells</key> + <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>70</integer> + <integer>69</integer> </dict> - <key>NSEnabled</key> - <true/> - <key>NSFont</key> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>65</integer> </dict> - <key>NSFrame</key> + <key>NSState</key> + <integer>1</integer> + <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>81</integer> </dict> - <key>NSIntercellSpacing</key> + <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>64</integer> </dict> - <key>NSMatrixFlags</key> - <integer>1076363264</integer> - <key>NSNextResponder</key> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>76</integer> </dict> - <key>NSNumCols</key> - <integer>1</integer> - <key>NSNumRows</key> - <integer>6</integer> - <key>NSProtoCell</key> + <key>NSMenuItems</key> <dict> <key>CF$UID</key> - <integer>120</integer> + <integer>87</integer> </dict> - <key>NSSelectedCell</key> + <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>86</integer> </dict> - <key>NSSuperview</key> + </dict> + <string>_popUpItemAction:</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>45</integer> </dict> - <key>NSvFlags</key> - <integer>256</integer> + <key>NS.string</key> + <string>OtherViews</string> </dict> - <string>{{18, 9}, {138, 118}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>83</integer> </dict> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>88</integer> </dict> <dict> <key>CF$UID</key> - <integer>78</integer> + <integer>91</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>93</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>101</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>109</integer> - </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>72</integer> </dict> - <key>NSAlternateContents</key> + <key>NSAction</key> <dict> <key>CF$UID</key> + <integer>90</integer> + </dict> + <key>NSKeyEquiv</key> + <dict> + <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSAlternateImage</key> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>84</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>2</integer> - <key>NSCellFlags</key> - <integer>-2080244224</integer> - <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>69</integer> </dict> - <key>NSControlView</key> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>65</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>81</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>200</integer> - <key>NSPeriodicInterval</key> - <integer>25</integer> - <key>NSSupport</key> + <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>89</integer> </dict> </dict> - <string>None</string> + <string>Item2</string> + <string>_popUpItemAction:</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>20</integer> + <integer>72</integer> </dict> - <key>NSImageName</key> + <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>74</integer> + <integer>93</integer> </dict> - </dict> - <string>NSRadioButton</string> - <dict> - <key>$class</key> + <key>NSKeyEquiv</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>21</integer> </dict> - <key>NSAlternateContents</key> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>84</integer> </dict> - <key>NSAlternateImage</key> + <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>69</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>0</integer> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>65</integer> </dict> - <key>NSControlView</key> + <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>81</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>92</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>200</integer> - <key>NSPeriodicInterval</key> - <integer>25</integer> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>15</integer> - </dict> - <key>NSTag</key> - <integer>1</integer> </dict> - <string>Interface I</string> + <string>Item3</string> + <string>_popUpItemAction:</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>107</integer> </dict> - <key>NS.string</key> - <string></string> + <key>NSCell</key> + <dict> + <key>CF$UID</key> + <integer>96</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>95</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> </dict> + <string>{{11, 50}, {114, 17}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>106</integer> </dict> - <key>NSAlternateImage</key> + <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>98</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>0</integer> + <integer>4194304</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>79</integer> + <integer>97</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>94</integer> </dict> - <key>NSNormalImage</key> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>80</integer> + <integer>15</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>400</integer> - <key>NSPeriodicInterval</key> - <integer>75</integer> - <key>NSSupport</key> + <key>NSTextColor</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>103</integer> </dict> - <key>NSTag</key> - <integer>2</integer> </dict> - <string>Simple 8-bit IDE</string> + <string>Real device: +</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>102</integer> </dict> - <key>NSColor</key> + <key>NSCatalogName</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>99</integer> </dict> - <key>NSImageFlags</key> - <integer>549453824</integer> - <key>NSReps</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>101</integer> </dict> - <key>NSSize</key> + <key>NSColorName</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>100</integer> </dict> + <key>NSColorSpace</key> + <integer>6</integer> </dict> - <string>{18, 18}</string> + <string>System</string> + <string>controlColor</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>102</integer> </dict> - <key>NS.objects</key> + <key>NSColorSpace</key> + <integer>3</integer> + <key>NSWhite</key> + <data> + MC42NjY2NjY2OQA= + </data> + </dict> + <dict> + <key>$classes</key> <array> - <dict> - <key>CF$UID</key> - <integer>83</integer> - </dict> + <string>NSColor</string> + <string>NSObject</string> </array> + <key>$classname</key> + <string>NSColor</string> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>88</integer> + <integer>102</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>84</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>85</integer> - </dict> - </array> - </dict> - <integer>0</integer> - <dict> - <key>$class</key> + <key>NSCatalogName</key> <dict> <key>CF$UID</key> - <integer>87</integer> + <integer>99</integer> </dict> - <key>NSTIFFRepresentation</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>105</integer> </dict> + <key>NSColorName</key> + <dict> + <key>CF$UID</key> + <integer>104</integer> + </dict> + <key>NSColorSpace</key> + <integer>6</integer> </dict> - <data> - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA - AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA - AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ - 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// - ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 - /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG - AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z - 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 - eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O - /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ - 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA - AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn - 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl - /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns - AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 - +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u - LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw - /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ - ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA - AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// - ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA - ZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMA - AACzAAAAnwAAAHcAAABDAAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAuAAAAJAAAABcAAAAKAAAA - AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - DQEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAAB - AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA - AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS - AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQAB - </data> + <string>controlTextColor</string> <dict> - <key>$classes</key> - <array> - <string>NSBitmapImageRep</string> - <string>NSImageRep</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSBitmapImageRep</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSArray</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSArray</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSMutableArray</string> - <string>NSArray</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSMutableArray</string> - </dict> - <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>91</integer> + <integer>102</integer> </dict> <key>NSColorSpace</key> <integer>3</integer> <key>NSWhite</key> <data> - MCAwAA== + MAA= </data> </dict> <dict> <key>$classes</key> <array> - <string>NSColor</string> + <string>NSTextFieldCell</string> + <string>NSActionCell</string> + <string>NSCell</string> <string>NSObject</string> </array> <key>$classname</key> - <string>NSColor</string> + <string>NSTextFieldCell</string> </dict> <dict> <key>$classes</key> <array> - <string>NSImage</string> - <string>%NSImage</string> + <string>NSTextField</string> + <string>%NSTextField</string> + <string>NSControl</string> + <string>NSView</string> + <string>NSResponder</string> <string>NSObject</string> </array> <key>$classname</key> - <string>NSImage</string> + <string>NSTextField</string> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>107</integer> </dict> - <key>NSAlternateImage</key> + <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>110</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>0</integer> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>109</integer> </dict> - <key>NSControlView</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>54</integer> </dict> - <key>NSNormalImage</key> + <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>54</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>400</integer> - <key>NSPeriodicInterval</key> - <integer>75</integer> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>15</integer> - </dict> - <key>NSTag</key> - <integer>3</integer> + <key>NSvFlags</key> + <integer>256</integer> </dict> - <string>ZXATASP interface</string> + <string>{{11, 18}, {122, 17}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>106</integer> </dict> - <key>NSColor</key> + <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>98</integer> </dict> - <key>NSImageFlags</key> - <integer>549453824</integer> - <key>NSReps</key> - <dict> - <key>CF$UID</key> - <integer>97</integer> - </dict> - <key>NSSize</key> - <dict> - <key>CF$UID</key> - <integer>96</integer> - </dict> - </dict> - <string>{18, 18}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>89</integer> - </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>98</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>88</integer> - </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>84</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>99</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>87</integer> - </dict> - <key>NSTIFFRepresentation</key> - <dict> - <key>CF$UID</key> - <integer>100</integer> - </dict> - </dict> - <data> - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA - AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAADwRE... [truncated message content] |
From: <fr...@us...> - 2006-12-26 12:43:48
|
Revision: 266 http://svn.sourceforge.net/fuse-for-macosx/?rev=266&view=rev Author: fredm Date: 2006-12-26 04:43:45 -0800 (Tue, 26 Dec 2006) Log Message: ----------- Remove SDL references. Modified Paths: -------------- branches/fusegl/README Modified: branches/fusegl/README =================================================================== --- branches/fusegl/README 2006-12-26 06:31:11 UTC (rev 265) +++ branches/fusegl/README 2006-12-26 12:43:45 UTC (rev 266) @@ -1,8 +1,7 @@ FUSE for Mac OS X Source Distribution This is the source distribution of the Mac OS X version of Fuse. Full source is -included for fuse and libspectrum, you will also need to download SDL (at least -version 1.2.5, from <http://www.libsdl.org>). +included for fuse and libspectrum. Your Mac is expected to be running OS X 10.4 with the Xcode development environment. @@ -10,7 +9,6 @@ The directory structure is expected to be: fuse/ FuseImporter - SDL.framework fuse lib765 bzip2 @@ -18,8 +16,7 @@ libspectrum Full build instructions: -Uncompress the source package, cd into the directory created, and put the -SDL.framework in place. Then: +Uncompress the source package, and cd into the directory created. Then: cd bzip2 xcodebuild -configuration Deployment This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-26 06:31:13
|
Revision: 265 http://svn.sourceforge.net/fuse-for-macosx/?rev=265&view=rev Author: fredm Date: 2006-12-25 22:31:11 -0800 (Mon, 25 Dec 2006) Log Message: ----------- * Restore mouse support * Enforce standard aspect ratio when window is resized Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/main.mm branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/ui/cocoa/cocoaui.h branches/fusegl/fuse/ui/cocoa/cocoaui.m Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/TODO 2006-12-26 06:31:11 UTC (rev 265) @@ -7,11 +7,15 @@ X Add native keyboard processing (removes SDL keyboard input dependency from Fuse) X Add native CoreAudio sound processing (removes SDL sound dependency from Fuse) -* Fix menus, preferences etc. -* Fix scalers +X Fix menus, preferences etc. +X Add native mouse processing (removes SDL mouse input dependency from Fuse) +X Make it possible to constrain Speccy image to "correct" aspect ratio * Add native joystick processing (removes SDL joystick input dependency from Fuse) -* Add native mouse processing (removes SDL mouse input dependency from Fuse) * Restore fullscreen support +* Fix scalers +* Use sheets rather than modal dialogs +* Run emulation in seperate thread to avoid sound glitches when menus are + selected $Id: TODO,v 1.4 2004/03/02 13:38:08 pak21 Exp $ Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-26 06:31:11 UTC (rev 265) @@ -161,4 +161,6 @@ - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename; +- (void)setAcceptsMouseMovedEvents:(BOOL)flag; + @end Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-26 06:31:11 UTC (rev 265) @@ -1406,6 +1406,11 @@ return YES; } +- (void)setAcceptsMouseMovedEvents:(BOOL)flag +{ + [window setAcceptsMouseMovedEvents:flag]; +} + @end static char* Modified: branches/fusegl/fuse/fusepb/main.mm =================================================================== --- branches/fusegl/fuse/fusepb/main.mm 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/fusepb/main.mm 2006-12-26 06:31:11 UTC (rev 265) @@ -45,14 +45,6 @@ int error = settings_defaults( &settings_current ); if( error ) return error; -#if 0 - // FIXME: Do all the stuff that SDLMain.mm used - // to do command line wise, drag-n-drop etc. here? - if( fuse_init( argc, argv ) ) { - fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); - return 1; - } -#endif /* This is passed if we are launched by double-clicking */ if ( argc >= 2 && strncmp( argv[1], "-psn", 4 ) == 0 ) { Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib 2006-12-26 06:31:11 UTC (rev 265) @@ -13,8 +13,8 @@ <string>446.1</string> <key>IBOpenObjects</key> <array> + <integer>877</integer> <integer>29</integer> - <integer>877</integer> </array> <key>IBSystem Version</key> <string>8L2127</string> Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-26 06:31:11 UTC (rev 265) @@ -66,6 +66,14 @@ -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; +-(void) mouseMoved:(NSEvent *)theEvent; +-(void) mouseDown:(NSEvent *)theEvent; +-(void) mouseUp:(NSEvent *)theEvent; +-(void) rightMouseDown:(NSEvent *)theEvent; +-(void) rightMouseUp:(NSEvent *)theEvent; +-(void) otherMouseDown:(NSEvent *)theEvent; +-(void) otherMouseUp:(NSEvent *)theEvent; + -(void) initKeyboard; -(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new; -(void) flagsChanged:(NSEvent *)theEvent; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-26 06:31:11 UTC (rev 265) @@ -140,9 +140,9 @@ -(void) awakeFromNib { - /* FIXME: Do all the stuff that SDLMain.mm used - * to do command line wise, drag-n-drop etc. here? - */ + /* keep the window in the standard aspect ratio if the user resizes */ + [[self window] setContentAspectRatio:NSMakeSize(4.0,3.0)]; + /* FIXME: Don't really like the argc, argv stuff being here... */ if( fuse_init( ac, av ) ) { fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); @@ -334,14 +334,52 @@ userInfo:self repeats:true] retain]; } --(void) mouseDragged:(NSEvent *)theEvent +-(void) mouseMoved:(NSEvent *)theEvent { + if( ui_mouse_grabbed ) { + int dx = [theEvent deltaX]; + int dy = [theEvent deltaY]; + + if( dx < -128 ) dx = -128; + else if( dx > 128 ) dx = 128; + + if( dy < -128 ) dy = -128; + else if( dy > 128 ) dy = 128; + + ui_mouse_motion( dx, dy ); + } } -(void) mouseDown:(NSEvent *)theEvent { + ui_mouse_button( 1, 1 ); } +-(void) mouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 1, 0 ); +} + +-(void) rightMouseDown:(NSEvent *)theEvent +{ + ui_mouse_button( 3, 1 ); +} + +-(void) rightMouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 3, 0 ); +} + +-(void) otherMouseDown:(NSEvent *)theEvent +{ + ui_mouse_button( 2, 1 ); +} + +-(void) otherMouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 2, 0 ); +} + -(void) initKeyboard { keysyms_map_t *ptr3; @@ -420,6 +458,10 @@ } fuse_event.type = type; + if( unicode_keysym == INPUT_KEY_NONE ) + fuse_event.types.key.native_key = fuse_keysym; + else + fuse_event.types.key.native_key = unicode_keysym; fuse_event.types.key.spectrum_key = fuse_keysym; input_event( &fuse_event ); Modified: branches/fusegl/fuse/ui/cocoa/cocoaui.h =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoaui.h 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/ui/cocoa/cocoaui.h 2006-12-26 06:31:11 UTC (rev 265) @@ -24,5 +24,4 @@ */ -void cocoaui_quit( void ); int cocoaui_confirm( const char *message ); Modified: branches/fusegl/fuse/ui/cocoa/cocoaui.m =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoaui.m 2006-12-25 04:27:24 UTC (rev 264) +++ branches/fusegl/fuse/ui/cocoa/cocoaui.m 2006-12-26 06:31:11 UTC (rev 265) @@ -40,10 +40,13 @@ #include "tape.h" #include "ui/scaler/scaler.h" +/* Last position of the cursor before we hide it */ +static NSPoint position; + int ui_init( int *argc, char ***argv ) { - int error; + ui_mouse_present = 1; return 0; } @@ -57,8 +60,6 @@ int ui_end( void ) { - int error; - return 0; } @@ -71,12 +72,32 @@ int ui_mouse_grab( int startup ) { - return 0; + if( startup ) return 0; + + position = [NSEvent mouseLocation]; + + [NSCursor hide]; + + [[FuseController singleton] setAcceptsMouseMovedEvents:YES]; + + return 1; } int -ui_mouse_release( int suspend ) +ui_mouse_release( int suspend GCC_UNUSED ) { + [[FuseController singleton] setAcceptsMouseMovedEvents:NO]; + + /* This seems to be the only API to put the cursor back where it was when + we hid it. The CGSetLocalEventsSuppressionInterval is a magic workaround + to prevent the cursor freezing for a couple of seconds following the + warp */ + CGPoint pos; pos.x = position.x; pos.y = position.y; + CGSetLocalEventsSuppressionInterval(0.0); + CGWarpMouseCursorPosition(pos); + + [NSCursor unhide]; + return 0; } @@ -85,10 +106,6 @@ ui_widgets_reset( void ) { pokefinder_clear(); + return 0; } - -void -cocoaui_quit( void ) -{ -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-25 04:27:23
|
Revision: 264 http://svn.sourceforge.net/fuse-for-macosx/?rev=264&view=rev Author: fredm Date: 2006-12-24 20:27:24 -0800 (Sun, 24 Dec 2006) Log Message: ----------- Restore support for drag-n-drop and double clicking files to start Fuse. Modified Paths: -------------- branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-25 01:32:17 UTC (rev 263) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-25 04:27:24 UTC (rev 264) @@ -159,5 +159,6 @@ - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication; - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; +- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename; @end Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-25 01:32:17 UTC (rev 263) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-25 04:27:24 UTC (rev 264) @@ -1324,6 +1324,88 @@ return NSTerminateCancel; } +- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename +{ + utils_file file; libspectrum_id_t type; + libspectrum_class_t lsclass; + char fsrep[PATH_MAX+1]; + + [filename getFileSystemRepresentation:fsrep maxLength:PATH_MAX]; + + if ( display_ui_initialised ) { + [self addRecentSnapshot:fsrep]; + [self openFile:fsrep]; + } else { + if( utils_read_file( fsrep, &file ) ) fuse_abort(); + + if( libspectrum_identify_file( &type, fsrep, file.buffer, file.length ) ) { + utils_close_file( &file ); + fuse_abort(); + } + + if( libspectrum_identify_class( &lsclass, type ) ) fuse_abort(); + + switch( lsclass ) { + + case LIBSPECTRUM_CLASS_UNKNOWN: + fprintf( stderr, "%s: couldn't identify `%s'\n", fuse_progname, fsrep ); + case LIBSPECTRUM_CLASS_SCREENSHOT: + utils_close_file( &file ); + return NO; + + case LIBSPECTRUM_CLASS_RECORDING: + settings_current.playback_file = strdup( fsrep ); + break; + + case LIBSPECTRUM_CLASS_SNAPSHOT: + settings_current.snapshot = strdup( fsrep ); + break; + + case LIBSPECTRUM_CLASS_TAPE: + settings_current.tape_file = strdup( fsrep ); + break; + + case LIBSPECTRUM_CLASS_DISK_PLUS3: + settings_current.plus3disk_file = strdup( fsrep ); + break; + + case LIBSPECTRUM_CLASS_DISK_TRDOS: + settings_current.trdosdisk_file = strdup( fsrep ); + break; + + case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: + settings_current.dck_file = strdup( fsrep ); + break; + + case LIBSPECTRUM_CLASS_CARTRIDGE_IF2: + settings_current.if2_file = strdup( fsrep ); + break; + + case LIBSPECTRUM_CLASS_HARDDISK: + if( settings_current.zxcf_active ) { + settings_current.zxcf_pri_file = strdup( fsrep ); + } else if( settings_current.zxatasp_active ) { + settings_current.zxatasp_master_file = strdup( fsrep ); + } else if( settings_current.simpleide_active ) { + settings_current.simpleide_master_file = strdup( fsrep ); + } else { + /* No IDE interface active, so activate the ZXCF */ + settings_current.zxcf_active = 1; + settings_current.zxcf_pri_file = strdup( fsrep ); + } + break; + + default: + fprintf( stderr, "%s: loadFile: unknown class %d!\n", + fuse_progname, type ); + } + + if( utils_close_file( &file ) ) fuse_abort(); + } + + return YES; +} + @end static char* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-25 01:32:18
|
Revision: 263 http://svn.sourceforge.net/fuse-for-macosx/?rev=263&view=rev Author: fredm Date: 2006-12-24 17:32:17 -0800 (Sun, 24 Dec 2006) Log Message: ----------- * Prevent error on opening Fuse from Finder * Make Fuse exit when application window is closed * Restore exit confirmation dialogs Modified Paths: -------------- branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/main.mm branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib Removed Paths: ------------- branches/fusegl/fuse/fusepb/sdlui.h Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-24 13:35:50 UTC (rev 262) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-25 01:32:17 UTC (rev 263) @@ -70,6 +70,7 @@ TapeBrowserController *tapeBrowserController; } + (FuseController *)singleton; + - (IBAction)cocoa_break:(id)sender; - (IBAction)disk_eject_a:(id)sender; - (IBAction)disk_eject_b:(id)sender; @@ -156,4 +157,7 @@ - (void)setTapePlayMenu:(ui_statusbar_state)state; +- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication; +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; + @end Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-24 13:35:50 UTC (rev 262) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-25 01:32:17 UTC (rev 263) @@ -70,9 +70,10 @@ #include "zxatasp.h" #include "zxcf.h" -static char* aquaui_openpanel_get_filename( NSString *title, NSArray *fileTypes ); -static char* aquaui_savepanel_get_filename( NSString *title, NSArray *fileTypes ); -static void aquaui_disk_eject( specplus3_drive_number drive, int which ); +static char* cocoaui_openpanel_get_filename( NSString *title, NSArray *fileTypes ); +static char* cocoaui_savepanel_get_filename( NSString *title, NSArray *fileTypes ); +static void cocoaui_disk_eject( specplus3_drive_number drive, int which ); +static int cocoaui_confirm( const char *message ); static int dockEject = 0; static int if2Eject = 0; @@ -218,22 +219,22 @@ - (IBAction)disk_eject_a:(id)sender { - aquaui_disk_eject( SPECPLUS3_DRIVE_A, 0 ); + cocoaui_disk_eject( SPECPLUS3_DRIVE_A, 0 ); } - (IBAction)disk_eject_write_a:(id)sender { - aquaui_disk_eject( SPECPLUS3_DRIVE_A, 1 ); + cocoaui_disk_eject( SPECPLUS3_DRIVE_A, 1 ); } - (IBAction)disk_eject_b:(id)sender { - aquaui_disk_eject( SPECPLUS3_DRIVE_B, 0 ); + cocoaui_disk_eject( SPECPLUS3_DRIVE_B, 0 ); } - (IBAction)disk_eject_write_b:(id)sender { - aquaui_disk_eject( SPECPLUS3_DRIVE_B, 1 ); + cocoaui_disk_eject( SPECPLUS3_DRIVE_B, 1 ); } - (IBAction)disk_open_a:(id)sender @@ -253,7 +254,7 @@ fuse_emulation_pause(); - filename = aquaui_openpanel_get_filename( @"Insert Timex dock cartridge", dckFileTypes ); + filename = cocoaui_openpanel_get_filename( @"Insert Timex dock cartridge", dckFileTypes ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -284,7 +285,7 @@ fuse_emulation_pause(); - filename = aquaui_openpanel_get_filename( @"Insert Interface II cartridge", romFileTypes ); + filename = cocoaui_openpanel_get_filename( @"Insert Interface II cartridge", romFileTypes ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -315,7 +316,7 @@ fuse_emulation_pause(); - filename = aquaui_openpanel_get_filename( @"Insert hard disk file", ideFileTypes ); + filename = cocoaui_openpanel_get_filename( @"Insert hard disk file", ideFileTypes ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -380,7 +381,7 @@ fuse_emulation_pause(); - filename = aquaui_openpanel_get_filename( @"Insert microdrive disk file", mdrFileTypes ); + filename = cocoaui_openpanel_get_filename( @"Insert microdrive disk file", mdrFileTypes ); if( !filename ) { fuse_emulation_unpause(); return; } if1_mdr_insert( filename, [sender tag] - 30 ); @@ -400,7 +401,7 @@ fuse_emulation_pause(); - filename = aquaui_savepanel_get_filename( @"Write Microdrive Cartridge As", [NSArray arrayWithObjects:@"mdr", nil] ); + filename = cocoaui_savepanel_get_filename( @"Write Microdrive Cartridge As", [NSArray arrayWithObjects:@"mdr", nil] ); if( !filename ) { fuse_emulation_unpause(); return; } if1_mdr_sync( filename, [sender tag] - 30 ); @@ -420,7 +421,7 @@ fuse_emulation_pause(); - filename = aquaui_savepanel_get_filename( @"Write Microdrive Cartridge As", [NSArray arrayWithObjects:@"mdr", nil] ); + filename = cocoaui_savepanel_get_filename( @"Write Microdrive Cartridge As", [NSArray arrayWithObjects:@"mdr", nil] ); if( !filename ) { fuse_emulation_unpause(); return; } if1_mdr_eject( filename, [sender tag] - 30 ); @@ -445,7 +446,7 @@ fuse_emulation_pause(); - filename = aquaui_openpanel_get_filename( @"Open Spectrum File", allFileTypes ); + filename = cocoaui_openpanel_get_filename( @"Open Spectrum File", allFileTypes ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -487,7 +488,7 @@ fuse_emulation_pause(); - recording = aquaui_openpanel_get_filename( @"Start Replay", rzxFileTypes ); + recording = cocoaui_openpanel_get_filename( @"Start Replay", rzxFileTypes ); if( !recording ) { fuse_emulation_unpause(); return; } @@ -553,7 +554,7 @@ fuse_emulation_pause(); - recording = aquaui_savepanel_get_filename( @"Start Recording", [NSArray arrayWithObjects:@"rzx", nil] ); + recording = cocoaui_savepanel_get_filename( @"Start Recording", [NSArray arrayWithObjects:@"rzx", nil] ); if( !recording ) { fuse_emulation_unpause(); return; } rzx_start_recording( recording, 1 ); @@ -573,10 +574,10 @@ fuse_emulation_pause(); - snap = aquaui_openpanel_get_filename( @"Load Snapshot", snapFileTypes ); + snap = cocoaui_openpanel_get_filename( @"Load Snapshot", snapFileTypes ); if( !snap ) { fuse_emulation_unpause(); return; } - recording = aquaui_savepanel_get_filename( @"Start Recording", [NSArray arrayWithObjects:@"rzx", nil] ); + recording = cocoaui_savepanel_get_filename( @"Start Recording", [NSArray arrayWithObjects:@"rzx", nil] ); if( !recording ) { free( snap ); fuse_emulation_unpause(); return; } if( snapshot_read( snap ) ) { @@ -610,7 +611,7 @@ fuse_emulation_pause(); - psgfile = aquaui_savepanel_get_filename( @"Start AY Sound Recording", [NSArray arrayWithObjects:@"psg", nil] ); + psgfile = cocoaui_savepanel_get_filename( @"Start AY Sound Recording", [NSArray arrayWithObjects:@"psg", nil] ); if( !psgfile ) { fuse_emulation_unpause(); return; } psg_start_recording( psgfile ); @@ -638,7 +639,7 @@ fuse_emulation_pause(); - filename = aquaui_savepanel_get_filename( @"Save Snapshot As", [NSArray arrayWithObjects:@"szx", @"z80", @"sna", nil] ); + filename = cocoaui_savepanel_get_filename( @"Save Snapshot As", [NSArray arrayWithObjects:@"szx", @"z80", @"sna", nil] ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -660,7 +661,7 @@ fuse_emulation_pause(); - filename = aquaui_openpanel_get_filename( @"Open SCR Screenshot", scrFileType ); + filename = cocoaui_openpanel_get_filename( @"Open SCR Screenshot", scrFileType ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -686,7 +687,7 @@ fuse_emulation_pause(); - filename = aquaui_savepanel_get_filename( @"Save Profile Data As", [NSArray arrayWithObjects:@"profile", nil] ); + filename = cocoaui_savepanel_get_filename( @"Save Profile Data As", [NSArray arrayWithObjects:@"profile", nil] ); if( !filename ) { fuse_emulation_unpause(); return; } profile_finish( filename ); @@ -702,7 +703,7 @@ fuse_emulation_pause(); - filename = aquaui_savepanel_get_filename( @"Save Screenshot As", [NSArray arrayWithObjects:@"scr", nil] ); + filename = cocoaui_savepanel_get_filename( @"Save Screenshot As", [NSArray arrayWithObjects:@"scr", nil] ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -724,7 +725,7 @@ fuse_emulation_pause(); - filename = aquaui_savepanel_get_filename( @"Export Screenshot", [NSArray arrayWithObjects:@"png", @"tiff", @"bmp", @"jpg", @"gif", nil] ); + filename = cocoaui_savepanel_get_filename( @"Export Screenshot", [NSArray arrayWithObjects:@"png", @"tiff", @"bmp", @"jpg", @"gif", nil] ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -770,7 +771,7 @@ fuse_emulation_pause(); - filename = aquaui_openpanel_get_filename( @"Open Tape", tapeFileTypes ); + filename = cocoaui_openpanel_get_filename( @"Open Tape", tapeFileTypes ); if( !filename ) { fuse_emulation_unpause(); return; } @@ -1283,7 +1284,7 @@ fileTypes = trdosFileTypes; } - filename = aquaui_openpanel_get_filename( + filename = cocoaui_openpanel_get_filename( ( drive == SPECPLUS3_DRIVE_A ? @"Insert disk into drive A:" : @"Insert disk into drive B:" ), fileTypes ); @@ -1308,10 +1309,25 @@ [tapePlay setTitle:state == UI_STATUSBAR_STATE_ACTIVE ? @"Pause" : @"Play"]; } +- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication +{ + return YES; +} + +- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender +{ + if( cocoaui_confirm( "Exit Fuse?" ) ) { + int error = tape_close(); if( error ) return NSTerminateCancel; + + return NSTerminateNow; + } + return NSTerminateCancel; +} + @end static char* -aquaui_openpanel_get_filename( NSString *title, NSArray *fileTypes ) +cocoaui_openpanel_get_filename( NSString *title, NSArray *fileTypes ) { char buffer[PATH_MAX+1]; char *filename = NULL; @@ -1332,7 +1348,7 @@ } static char* -aquaui_savepanel_get_filename( NSString *title, NSArray *fileTypes ) +cocoaui_savepanel_get_filename( NSString *title, NSArray *fileTypes ) { char buffer[PATH_MAX+1]; char *filename = NULL; @@ -1363,7 +1379,7 @@ } static void -aquaui_disk_eject( specplus3_drive_number drive, int write ) +cocoaui_disk_eject( specplus3_drive_number drive, int write ) { if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 ) { specplus3_disk_eject( drive, write ); @@ -1378,7 +1394,7 @@ char *filename; int error; - filename = aquaui_openpanel_get_filename( @"Load Snapshot", snapFileTypes ); + filename = cocoaui_openpanel_get_filename( @"Load Snapshot", snapFileTypes ); if( !filename ) return -1; @@ -1562,7 +1578,7 @@ fuse_emulation_pause(); - filename = aquaui_savepanel_get_filename( @"Write Tape As", [NSArray arrayWithObjects:@"tzx", @"tap", nil] ); + filename = cocoaui_savepanel_get_filename( @"Write Tape As", [NSArray arrayWithObjects:@"tzx", @"tap", nil] ); if( !filename ) { fuse_emulation_unpause(); return 1; } @@ -1592,7 +1608,7 @@ fuse_emulation_pause(); NSString *title = [NSString stringWithFormat:@"Write +3 Disk %c: As", drive]; - filename = aquaui_savepanel_get_filename( title, [NSArray arrayWithObjects:@"dsk", nil] ); + filename = cocoaui_savepanel_get_filename( title, [NSArray arrayWithObjects:@"dsk", nil] ); if( !filename ) { fuse_emulation_unpause(); return 1; } @@ -1623,7 +1639,7 @@ fuse_emulation_pause(); NSString *title = [NSString stringWithFormat:@"Write TR-DOS Disk %c: As", drive]; - filename = aquaui_savepanel_get_filename( title, [NSArray arrayWithObjects:@"trd", nil] ); + filename = cocoaui_savepanel_get_filename( title, [NSArray arrayWithObjects:@"trd", nil] ); if( !filename ) { fuse_emulation_unpause(); return 1; } @@ -1756,8 +1772,8 @@ return confirm; } -int -sdlui_confirm( const char *message ) +static int +cocoaui_confirm( const char *message ) { int confirm = 0; int result; Modified: branches/fusegl/fuse/fusepb/main.mm =================================================================== --- branches/fusegl/fuse/fusepb/main.mm 2006-12-24 13:35:50 UTC (rev 262) +++ branches/fusegl/fuse/fusepb/main.mm 2006-12-25 01:32:17 UTC (rev 263) @@ -26,6 +26,8 @@ #import <Cocoa/Cocoa.h> +#include <stdlib.h> + extern "C" { #include "fuse.h" #include "main.h" @@ -37,7 +39,7 @@ int main(int argc, char *argv[]) { - int retval; + int retval, i; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -51,12 +53,21 @@ return 1; } #endif + + /* This is passed if we are launched by double-clicking */ + if ( argc >= 2 && strncmp( argv[1], "-psn", 4 ) == 0 ) { + ac = 1; + } else { + ac = argc; + } + av = (char**) malloc( sizeof(*av) * (ac+1) ); + for( i = 0; i < ac; i++ ) + av[i] = argv[i]; + av[i] = NULL; + if( settings_current.show_help || settings_current.show_version ) return 0; - ac = argc; - av = argv; - retval = NSApplicationMain( argc, const_cast<const char**>(argv) ); fuse_end(); Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Deleted: branches/fusegl/fuse/fusepb/sdlui.h =================================================================== --- branches/fusegl/fuse/fusepb/sdlui.h 2006-12-24 13:35:50 UTC (rev 262) +++ branches/fusegl/fuse/fusepb/sdlui.h 2006-12-25 01:32:17 UTC (rev 263) @@ -1,33 +0,0 @@ -/* sdlui.h: Routines for dealing with the SDL UI - Copyright (c) 2004 Fredrick Meunier - - $Id: sdlui.h,v 1.2 2004/08/24 09:30:51 fred Exp $ - - 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: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -#ifndef FUSE_SDLUI_H -#define FUSE_SDLUI_H - -void sdlui_quit( void ); -int sdlui_confirm( const char *message ); - -#endif /* #ifndef FUSE_SDLUI_H */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |