[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27542] branches/render25: Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r27521 :27541

Brecht Van Lommel brecht at blender.org
Tue Mar 16 18:15:21 CET 2010


Revision: 27542
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27542
Author:   blendix
Date:     2010-03-16 18:15:21 +0100 (Tue, 16 Mar 2010)

Log Message:
-----------
Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r27521:27541

Modified Paths:
--------------
    branches/render25/intern/ghost/intern/GHOST_SystemCocoa.mm
    branches/render25/release/scripts/modules/bpy/utils.py
    branches/render25/release/scripts/op/screen_play_rendered_anim.py
    branches/render25/release/scripts/ui/properties_object_constraint.py
    branches/render25/release/scripts/ui/properties_scene.py
    branches/render25/source/blender/blenkernel/BKE_animsys.h
    branches/render25/source/blender/blenkernel/intern/anim_sys.c
    branches/render25/source/blender/blenkernel/intern/constraint.c
    branches/render25/source/blender/blenkernel/intern/image.c
    branches/render25/source/blender/blenlib/BLI_threads.h
    branches/render25/source/blender/blenlib/intern/threads.c
    branches/render25/source/blender/editors/animation/anim_intern.h
    branches/render25/source/blender/editors/animation/keyframing.c
    branches/render25/source/blender/editors/animation/keyingsets.c
    branches/render25/source/blender/editors/armature/editarmature.c
    branches/render25/source/blender/editors/armature/poseUtils.c
    branches/render25/source/blender/editors/armature/poselib.c
    branches/render25/source/blender/editors/armature/poseobject.c
    branches/render25/source/blender/editors/include/ED_keyframing.h
    branches/render25/source/blender/editors/object/object_transform.c
    branches/render25/source/blender/editors/render/render_shading.c
    branches/render25/source/blender/editors/screen/screen_ops.c
    branches/render25/source/blender/editors/space_file/file_draw.c
    branches/render25/source/blender/editors/space_file/filelist.c
    branches/render25/source/blender/editors/space_file/filesel.c
    branches/render25/source/blender/editors/space_file/space_file.c
    branches/render25/source/blender/editors/space_image/space_image.c
    branches/render25/source/blender/editors/space_node/drawnode.c
    branches/render25/source/blender/editors/space_view3d/view3d_view.c
    branches/render25/source/blender/editors/transform/transform_conversions.c
    branches/render25/source/blender/makesdna/DNA_anim_types.h
    branches/render25/source/blender/makesdna/DNA_constraint_types.h
    branches/render25/source/blender/makesdna/DNA_space_types.h
    branches/render25/source/blender/makesrna/RNA_access.h
    branches/render25/source/blender/makesrna/intern/rna_animation.c
    branches/render25/source/blender/makesrna/intern/rna_animation_api.c
    branches/render25/source/blender/makesrna/intern/rna_constraint.c
    branches/render25/source/blender/makesrna/intern/rna_nodetree.c
    branches/render25/source/blender/makesrna/intern/rna_nodetree_types.h
    branches/render25/source/blender/makesrna/intern/rna_space.c
    branches/render25/source/blender/nodes/intern/CMP_nodes/CMP_composite.c
    branches/render25/source/blender/nodes/intern/CMP_nodes/CMP_diffMatte.c
    branches/render25/source/blender/nodes/intern/CMP_nodes/CMP_rotate.c
    branches/render25/source/blender/nodes/intern/CMP_nodes/CMP_viewer.c
    branches/render25/source/blender/python/intern/bpy_driver.c
    branches/render25/source/blender/render/intern/source/pipeline.c
    branches/render25/source/blender/render/intern/source/result.c
    branches/render25/source/blender/windowmanager/intern/wm_init_exit.c
    branches/render25/source/gameengine/Converter/KX_BlenderSceneConverter.cpp

Added Paths:
-----------
    branches/render25/release/scripts/keyingsets/
    branches/render25/release/scripts/keyingsets/keyingsets_builtins.py
    branches/render25/release/scripts/keyingsets/keyingsets_utils.py

Removed Paths:
-------------
    branches/render25/release/scripts/keyingsets/keyingsets_builtins.py
    branches/render25/release/scripts/keyingsets/keyingsets_utils.py

Modified: branches/render25/intern/ghost/intern/GHOST_SystemCocoa.mm
===================================================================
--- branches/render25/intern/ghost/intern/GHOST_SystemCocoa.mm	2010-03-16 16:58:45 UTC (rev 27541)
+++ branches/render25/intern/ghost/intern/GHOST_SystemCocoa.mm	2010-03-16 17:15:21 UTC (rev 27542)
@@ -29,6 +29,9 @@
 
 #import <Cocoa/Cocoa.h>
 
+/*For the currently not ported to Cocoa keyboard layout functions (64bit & 10.6 compatible)*/
+#include <Carbon/Carbon.h>
+
 #include <sys/time.h>
 #include <sys/types.h>
 #include <sys/sysctl.h>
@@ -53,9 +56,8 @@
 #include "AssertMacros.h"
 
 #pragma mark KeyMap, mouse converters
-
-
-/* Keycodes from Carbon include file */
+#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
+/* Keycodes not defined in Tiger */
 /*  
  *  Summary:
  *    Virtual keycodes
@@ -203,8 +205,8 @@
 	kVK_JIS_Eisu                  = 0x66,
 	kVK_JIS_Kana                  = 0x68
 };
+#endif
 
-
 static GHOST_TButtonMask convertButton(int button)
 {
 	switch (button) {
@@ -230,7 +232,7 @@
  * @param recvChar the character ignoring modifiers (except for shift)
  * @return Ghost key code
  */
-static GHOST_TKey convertKey(int rawCode, unichar recvChar) 
+static GHOST_TKey convertKey(int rawCode, unichar recvChar, UInt16 keyAction) 
 {	
 	
 	//printf("\nrecvchar %c 0x%x",recvChar,recvChar);
@@ -350,26 +352,68 @@
 			return GHOST_kKeyUnknown;
 			
 		default:
-			/*Then detect on character value for "remappable" keys in int'l keyboards*/
+			/* alphanumerical or punctuation key that is remappable in int'l keyboards */
 			if ((recvChar >= 'A') && (recvChar <= 'Z')) {
 				return (GHOST_TKey) (recvChar - 'A' + GHOST_kKeyA);
 			} else if ((recvChar >= 'a') && (recvChar <= 'z')) {
 				return (GHOST_TKey) (recvChar - 'a' + GHOST_kKeyA);
-			} else
-			switch (recvChar) {
-				case '-': 	return GHOST_kKeyMinus;
-				case '=': 	return GHOST_kKeyEqual;
-				case ',': 	return GHOST_kKeyComma;
-				case '.': 	return GHOST_kKeyPeriod;
-				case '/': 	return GHOST_kKeySlash;
-				case ';': 	return GHOST_kKeySemicolon;
-				case '\'': 	return GHOST_kKeyQuote;
-				case '\\': 	return GHOST_kKeyBackslash;
-				case '[': 	return GHOST_kKeyLeftBracket;
-				case ']': 	return GHOST_kKeyRightBracket;
-				case '`': 	return GHOST_kKeyAccentGrave;
-				default:
-					return GHOST_kKeyUnknown;
+			} else {
+#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
+				KeyboardLayoutRef keyLayout;
+				UCKeyboardLayout *uchrData;
+				
+				KLGetCurrentKeyboardLayout(&keyLayout);
+				KLGetKeyboardLayoutProperty(keyLayout, kKLuchrData, (const void **)
+											&uchrData);
+				/*get actual character value of the "remappable" keys in int'l keyboards,
+				 if keyboard layout is not correctly reported (e.g. some non Apple keyboards in Tiger),
+				 then fallback on using the received charactersIgnoringModifiers */
+				if (uchrData)
+				{
+					UInt32 deadKeyState=0;
+					UniCharCount actualStrLength=0;
+					
+					UCKeyTranslate(uchrData, rawCode, keyAction, 0,
+								   LMGetKbdType(), kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 1, &actualStrLength, &recvChar);
+					
+				}				
+#else
+				/* Leopard and Snow Leopard 64bit compatible API*/
+				CFDataRef uchrHandle; /*the keyboard layout*/
+				TISInputSourceRef kbdTISHandle;
+				
+				kbdTISHandle = TISCopyCurrentKeyboardLayoutInputSource();
+				uchrHandle = (CFDataRef)TISGetInputSourceProperty(kbdTISHandle,kTISPropertyUnicodeKeyLayoutData);
+				CFRelease(kbdTISHandle);
+				
+				/*get actual character value of the "remappable" keys in int'l keyboards,
+				 if keyboard layout is not correctly reported (e.g. some non Apple keyboards in Tiger),
+				 then fallback on using the received charactersIgnoringModifiers */
+				if (uchrHandle)
+				{
+					UInt32 deadKeyState=0;
+					UniCharCount actualStrLength=0;
+					
+					UCKeyTranslate((UCKeyboardLayout*)CFDataGetBytePtr(uchrHandle), rawCode, keyAction, 0,
+								   LMGetKbdType(), kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 1, &actualStrLength, &recvChar);
+					
+				}
+#endif
+				switch (recvChar) {
+					case '-': 	return GHOST_kKeyMinus;
+					case '=': 	return GHOST_kKeyEqual;
+					case ',': 	return GHOST_kKeyComma;
+					case '.': 	return GHOST_kKeyPeriod;
+					case '/': 	return GHOST_kKeySlash;
+					case ';': 	return GHOST_kKeySemicolon;
+					case '\'': 	return GHOST_kKeyQuote;
+					case '\\': 	return GHOST_kKeyBackslash;
+					case '[': 	return GHOST_kKeyLeftBracket;
+					case ']': 	return GHOST_kKeyRightBracket;
+					case '`': 	return GHOST_kKeyAccentGrave;
+					default:
+						return GHOST_kKeyUnknown;
+				}
 			}
 	}
 	return GHOST_kKeyUnknown;
@@ -1573,9 +1617,11 @@
 			charsIgnoringModifiers = [event charactersIgnoringModifiers];
 			if ([charsIgnoringModifiers length]>0)
 				keyCode = convertKey([event keyCode],
-									 [charsIgnoringModifiers characterAtIndex:0]);
+									 [charsIgnoringModifiers characterAtIndex:0],
+									 [event type] == NSKeyDown?kUCKeyActionDown:kUCKeyActionUp);
 			else
-				keyCode = convertKey([event keyCode],0);
+				keyCode = convertKey([event keyCode],0,
+									 [event type] == NSKeyDown?kUCKeyActionDown:kUCKeyActionUp);
 
 				
 			characters = [event characters];
@@ -1595,9 +1641,10 @@
 
 			if ([event type] == NSKeyDown) {
 				pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyDown, window, keyCode, ascii) );
-				//printf("\nKey pressed keyCode=%u ascii=%i %c",keyCode,ascii,ascii);
+				//printf("\nKey down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii);
 			} else {
 				pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, ascii) );
+				//printf("\nKey up rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii);
 			}
 			break;
 	

Copied: branches/render25/release/scripts/keyingsets (from rev 27541, trunk/blender/release/scripts/keyingsets)

Deleted: branches/render25/release/scripts/keyingsets/keyingsets_builtins.py
===================================================================
--- trunk/blender/release/scripts/keyingsets/keyingsets_builtins.py	2010-03-16 16:58:45 UTC (rev 27541)
+++ branches/render25/release/scripts/keyingsets/keyingsets_builtins.py	2010-03-16 17:15:21 UTC (rev 27542)
@@ -1,236 +0,0 @@
-# Built-In Keying Sets
-# None of these Keying Sets should be removed, as these
-# are needed by various parts of Blender in order for them
-# to work correctly.
-
-import bpy
-from keyingsets_utils import *
-
-###############################
-# Built-In KeyingSets
-
-# Location
-class BUILTIN_KSI_Location(bpy.types.KeyingSetInfo):
-	bl_idname = "Location"
-	bl_builtin = True
-	
-	# poll - use predefined callback for selected bones/objects
-	poll = RKS_POLL_selected_items
-	
-	# iterator - use callback for selected bones/objects
-	iterator = RKS_ITER_selected_item
-	
-	# generator - use callback for location 
-	generate = RKS_GEN_location
-	
-# Rotation
-class BUILTIN_KSI_Rotation(bpy.types.KeyingSetInfo):
-	bl_idname = "Rotation"
-	bl_builtin = True
-	
-	# poll - use predefined callback for selected bones/objects
-	poll = RKS_POLL_selected_items
-	
-	# iterator - use callback for selected bones/objects
-	iterator = RKS_ITER_selected_item
-	
-	# generator - use callback for location 
-	generate = RKS_GEN_rotation
-	
-# Scale
-class BUILTIN_KSI_Scaling(bpy.types.KeyingSetInfo):
-	bl_idname = "Scaling"
-	bl_builtin = True
-	
-	# poll - use predefined callback for selected bones/objects
-	poll = RKS_POLL_selected_items
-	
-	# iterator - use callback for selected bones/objects
-	iterator = RKS_ITER_selected_item
-	
-	# generator - use callback for location 
-	generate = RKS_GEN_scaling
-
-# ------------
-	
-# LocRot
-class BUILTIN_KSI_LocRot(bpy.types.KeyingSetInfo):
-	bl_idname = "LocRot"
-	bl_builtin = True
-	
-	# poll - use predefined callback for selected bones/objects
-	poll = RKS_POLL_selected_items
-	
-	# iterator - use callback for selected bones/objects
-	iterator = RKS_ITER_selected_item
-	
-	# generator - use callback for location 
-	def generate(self, context, ks, data):
-		# location
-		RKS_GEN_location(self, context, ks, data)
-		# rotation
-		RKS_GEN_rotation(self, context, ks, data)
-
-# LocScale
-class BUILTIN_KSI_LocScale(bpy.types.KeyingSetInfo):
-	bl_idname = "LocScale"
-	bl_builtin = True
-	
-	# poll - use predefined callback for selected bones/objects
-	poll = RKS_POLL_selected_items
-	
-	# iterator - use callback for selected bones/objects
-	iterator = RKS_ITER_selected_item
-	
-	# generator - use callback for location 
-	def generate(self, context, ks, data):
-		# location
-		RKS_GEN_location(self, context, ks, data)
-		# scale
-		RKS_GEN_scaling(self, context, ks, data)
-
-# LocRotScale
-class BUILTIN_KSI_LocRotScale(bpy.types.KeyingSetInfo):
-	bl_idname = "LocRotScale"
-	bl_builtin = True
-	
-	# poll - use predefined callback for selected bones/objects
-	poll = RKS_POLL_selected_items
-	
-	# iterator - use callback for selected bones/objects
-	iterator = RKS_ITER_selected_item
-	
-	# generator - use callback for location 
-	def generate(self, context, ks, data):
-		# location
-		RKS_GEN_location(self, context, ks, data)
-		# rotation
-		RKS_GEN_rotation(self, context, ks, data)
-		# scale
-		RKS_GEN_scaling(self, context, ks, data)
-
-# RotScale
-class BUILTIN_KSI_RotScale(bpy.types.KeyingSetInfo):
-	bl_idname = "RotScale"
-	bl_builtin = True
-	
-	# poll - use predefined callback for selected bones/objects
-	poll = RKS_POLL_selected_items
-	
-	# iterator - use callback for selected bones/objects
-	iterator = RKS_ITER_selected_item
-	
-	# generator - use callback for location 
-	def generate(self, context, ks, data):
-		# rotation
-		RKS_GEN_rotation(self, context, ks, data)
-		# scaling
-		RKS_GEN_scaling(self, context, ks, data)
-		
-# ------------
-
-# Location
-class BUILTIN_KSI_VisualLoc(bpy.types.KeyingSetInfo):
-	bl_idname = "Visual Location"
-	bl_builtin = True
-	
-	insertkey_visual = True
-	
-	# poll - use predefined callback for selected bones/objects
-	poll = RKS_POLL_selected_items
-	
-	# iterator - use callback for selected bones/objects
-	iterator = RKS_ITER_selected_item
-	
-	# generator - use callback for location 
-	generate = RKS_GEN_location
-	
-# Rotation

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list