[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24081] trunk/blender: Cocoa / Mac:

Damien Plisson damien.plisson at yahoo.fr
Mon Oct 26 09:43:24 CET 2009


Revision: 24081
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24081
Author:   damien78
Date:     2009-10-26 09:43:24 +0100 (Mon, 26 Oct 2009)

Log Message:
-----------
Cocoa / Mac:
- use Cocoa function to convert keys character value to isoLatin-1 encoding instead of the translation table. Works better with international keyboards

- enable stereo GL option

- fix source/creator CMake file to remove unneeded folders in the app bundle (the __MACOSX stuff). (Thx jensverwiebe)

Modified Paths:
--------------
    trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
    trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm
    trunk/blender/source/creator/CMakeLists.txt

Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm	2009-10-26 03:35:37 UTC (rev 24080)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm	2009-10-26 08:43:24 UTC (rev 24081)
@@ -372,134 +372,7 @@
 	return GHOST_kKeyUnknown;
 }
 
-/* MacOSX returns a Roman charset with kEventParamKeyMacCharCodes
- * as defined here: http://developer.apple.com/documentation/mac/Text/Text-516.html
- * I am not sure how international this works...
- * For cross-platform convention, we'll use the Latin ascii set instead.
- * As defined at: http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html
- * 
- */
-static unsigned char convertRomanToLatin(unsigned char ascii)
-{
 
-	if(ascii<128) return ascii;
-	
-	switch(ascii) {
-	case 128:	return 142;
-	case 129:	return 143;
-	case 130:	return 128;
-	case 131:	return 201;
-	case 132:	return 209;
-	case 133:	return 214;
-	case 134:	return 220;
-	case 135:	return 225;
-	case 136:	return 224;
-	case 137:	return 226;
-	case 138:	return 228;
-	case 139:	return 227;
-	case 140:	return 229;
-	case 141:	return 231;
-	case 142:	return 233;
-	case 143:	return 232;
-	case 144:	return 234;
-	case 145:	return 235;
-	case 146:	return 237;
-	case 147:	return 236;
-	case 148:	return 238;
-	case 149:	return 239;
-	case 150:	return 241;
-	case 151:	return 243;
-	case 152:	return 242;
-	case 153:	return 244;
-	case 154:	return 246;
-	case 155:	return 245;
-	case 156:	return 250;
-	case 157:	return 249;
-	case 158:	return 251;
-	case 159:	return 252;
-	case 160:	return 0;
-	case 161:	return 176;
-	case 162:	return 162;
-	case 163:	return 163;
-	case 164:	return 167;
-	case 165:	return 183;
-	case 166:	return 182;
-	case 167:	return 223;
-	case 168:	return 174;
-	case 169:	return 169;
-	case 170:	return 174;
-	case 171:	return 180;
-	case 172:	return 168;
-	case 173:	return 0;
-	case 174:	return 198;
-	case 175:	return 216;
-	case 176:	return 0;
-	case 177:	return 177;
-	case 178:	return 0;
-	case 179:	return 0;
-	case 180:	return 165;
-	case 181:	return 181;
-	case 182:	return 0;
-	case 183:	return 0;
-	case 184:	return 215;
-	case 185:	return 0;
-	case 186:	return 0;
-	case 187:	return 170;
-	case 188:	return 186;
-	case 189:	return 0;
-	case 190:	return 230;
-	case 191:	return 248;
-	case 192:	return 191;
-	case 193:	return 161;
-	case 194:	return 172;
-	case 195:	return 0;
-	case 196:	return 0;
-	case 197:	return 0;
-	case 198:	return 0;
-	case 199:	return 171;
-	case 200:	return 187;
-	case 201:	return 201;
-	case 202:	return 0;
-	case 203:	return 192;
-	case 204:	return 195;
-	case 205:	return 213;
-	case 206:	return 0;
-	case 207:	return 0;
-	case 208:	return 0;
-	case 209:	return 0;
-	case 210:	return 0;
-	
-	case 214:	return 247;
-
-	case 229:	return 194;
-	case 230:	return 202;
-	case 231:	return 193;
-	case 232:	return 203;
-	case 233:	return 200;
-	case 234:	return 205;
-	case 235:	return 206;
-	case 236:	return 207;
-	case 237:	return 204;
-	case 238:	return 211;
-	case 239:	return 212;
-	case 240:	return 0;
-	case 241:	return 210;
-	case 242:	return 218;
-	case 243:	return 219;
-	case 244:	return 217;
-	case 245:	return 0;
-	case 246:	return 0;
-	case 247:	return 0;
-	case 248:	return 0;
-	case 249:	return 0;
-	case 250:	return 0;
-
-	
-		default: return 0;
-	}
-
-}
-
 #define FIRSTFILEBUFLG 512
 static bool g_hasFirstFile = false;
 static char g_firstFileBuf[512];
@@ -1255,8 +1128,10 @@
 	GHOST_IWindow* window = m_windowManager->getActiveWindow();
 	unsigned int modifiers;
 	NSString *characters;
+	NSData *convertedCharacters;
 	GHOST_TKey keyCode;
 	unsigned char ascii;
+	NSString* charsIgnoringModifiers;
 
 	/* Can happen, very rarely - seems to only be when command-H makes
 	 * the window go away and we still get an HKey up. 
@@ -1269,17 +1144,26 @@
 	switch ([event type]) {
 		case NSKeyDown:
 		case NSKeyUp:
-			characters = [event characters];
-			if ([characters length]) { //Check for dead keys
+			charsIgnoringModifiers = [event charactersIgnoringModifiers];
+			if ([charsIgnoringModifiers length]>0)
 				keyCode = convertKey([event keyCode],
-									 [[event charactersIgnoringModifiers] characterAtIndex:0]);
-				ascii= convertRomanToLatin((char)[characters characterAtIndex:0]);
-			} else {
+									 [charsIgnoringModifiers characterAtIndex:0]);
+			else
 				keyCode = convertKey([event keyCode],0);
-				ascii= 0;
+
+				
+			characters = [event characters];
+			if ([characters length]>0) { //Check for dead keys
+				//Convert characters to iso latin 1 encoding
+				convertedCharacters = [characters dataUsingEncoding:NSISOLatin1StringEncoding];
+				if ([convertedCharacters length]>0)
+					ascii =((char*)[convertedCharacters bytes])[0];
+				else
+					ascii = 0; //Character not available in iso latin 1 encoding
 			}
+			else
+				ascii= 0;
 			
-			
 			if ((keyCode == GHOST_kKeyQ) && (m_modifierMask & NSCommandKeyMask))
 				break; //Cmd-Q is directly handled by Cocoa
 

Modified: trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm	2009-10-26 03:35:37 UTC (rev 24080)
+++ trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm	2009-10-26 08:43:24 UTC (rev 24081)
@@ -43,16 +43,6 @@
 #include "GHOST_Debug.h"
 
 
-// Pixel Format Attributes for the windowed NSOpenGLContext
-static NSOpenGLPixelFormatAttribute pixelFormatAttrsWindow[] =
-{
-	NSOpenGLPFADoubleBuffer,
-	NSOpenGLPFAAccelerated,
-	//NSOpenGLPFAAllowOfflineRenderers,   // Removed to allow 10.4 builds, and 2 GPUs rendering is not used anyway
-	NSOpenGLPFADepthSize, (NSOpenGLPixelFormatAttribute) 32,
-	(NSOpenGLPixelFormatAttribute) 0
-};
-
 #pragma mark Cocoa window delegate object
 /* live resize ugly patch
 extern "C" {
@@ -191,9 +181,12 @@
 	GHOST_TDrawingContextType type,
 	const bool stereoVisual
 ) :
-	GHOST_Window(title, left, top, width, height, state, GHOST_kDrawingContextTypeNone),
+	GHOST_Window(title, left, top, width, height, state, type,stereoVisual),
 	m_customCursor(0)
 {
+	NSOpenGLPixelFormatAttribute pixelFormatAttrsWindow[40];
+	int i;
+	
 	m_systemCocoa = systemCocoa;
 	m_fullScreen = false;
 	
@@ -224,7 +217,21 @@
 	
 	setTitle(title);
 	
-			
+	
+	// Pixel Format Attributes for the windowed NSOpenGLContext
+	i=0;
+	pixelFormatAttrsWindow[i++] = NSOpenGLPFADoubleBuffer;
+	pixelFormatAttrsWindow[i++] = NSOpenGLPFAAccelerated;
+	//pixelFormatAttrsWindow[i++] = NSOpenGLPFAAllowOfflineRenderers,;   // Removed to allow 10.4 builds, and 2 GPUs rendering is not used anyway
+	
+	pixelFormatAttrsWindow[i++] = NSOpenGLPFADepthSize;
+	pixelFormatAttrsWindow[i++] = (NSOpenGLPixelFormatAttribute) 32;
+	
+	if (stereoVisual) pixelFormatAttrsWindow[i++] = NSOpenGLPFAStereo;
+	
+	pixelFormatAttrsWindow[i] = (NSOpenGLPixelFormatAttribute) 0;
+	
+
 	//Creates the OpenGL View inside the window
 	NSOpenGLPixelFormat *pixelFormat =
 	[[NSOpenGLPixelFormat alloc] initWithAttributes:pixelFormatAttrsWindow];

Modified: trunk/blender/source/creator/CMakeLists.txt
===================================================================
--- trunk/blender/source/creator/CMakeLists.txt	2009-10-26 03:35:37 UTC (rev 24080)
+++ trunk/blender/source/creator/CMakeLists.txt	2009-10-26 08:43:24 UTC (rev 24081)
@@ -173,7 +173,6 @@
 		ADD_CUSTOM_COMMAND(
 			TARGET blender POST_BUILD MAIN_DEPENDENCY blender
 			COMMAND find ${TARGETDIR} -name .svn -prune -exec rm -rf {} "\;"
-			COMMAND find ${TARGETDIR} -name __MACOSX -prune -exec rm -rf {} "\;"
 		)
     
     
@@ -244,6 +243,7 @@
 			TARGET blender POST_BUILD MAIN_DEPENDENCY blender    
 			COMMAND find ${TARGETDIR}/blender.app -name .DS_Store -prune -exec rm -rf {} "\;"
 			COMMAND find ${TARGETDIR}/blender.app -name .svn -prune -exec rm -rf {} "\;"
+            		COMMAND find ${TARGETDIR}/blender.app -name __MACOSX -prune -exec rm -rf {} "\;"
 		)
 	ENDIF(APPLE)
 





More information about the Bf-blender-cvs mailing list