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)
 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to