[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