Sha256: a8df6a6db7104ee07c9b44f01338a3842704a8c86a2e7e5367a2f4987cf8aae7

Contents?: true

Size: 1.88 KB

Versions: 3

Compression:

Stored size: 1.88 KB

Contents

// -*- c++ -*-
#include "defs.h"


#import <Cocoa/Cocoa.h>


namespace Reflex
{


	static const char*
	get_chars (NSEvent* e)
	{
		NSString* chars = [e characters];//charactersIgnoringModifiers];
		return [chars UTF8String];
	}

	static uint
	get_current_point_type ()
	{
		NSUInteger buttons = [NSEvent pressedMouseButtons];
		uint ret = 0;
		if (buttons &  (1 << 0)) ret |= POINT_MOUSE_LEFT;
		if (buttons &  (1 << 1)) ret |= POINT_MOUSE_RIGHT;
		if (buttons >= (1 << 2)) ret |= POINT_MOUSE_MIDDLE;
		return ret;
	}

	static uint
	get_point_type (NSEvent* e)
	{
		switch ([e type])
		{
			case NSLeftMouseDown:
			case NSLeftMouseUp:
			case NSLeftMouseDragged:
				return POINT_MOUSE_LEFT;

			case NSRightMouseDown:
			case NSRightMouseUp:
			case NSRightMouseDragged:
				return POINT_MOUSE_RIGHT;

			case NSMouseMoved:
				return get_current_point_type();
		}
		return 0;
	}

	static uint
	get_modifiers (NSEvent* e)
	{
		NSUInteger flags = [e modifierFlags];
		return
			(flags & NSAlphaShiftKeyMask) ? MOD_CAPS     : 0 |
			(flags & NSShiftKeyMask)      ? MOD_SHIFT    : 0 |
			(flags & NSControlKeyMask)    ? MOD_CONTROL  : 0 |
			(flags & NSAlternateKeyMask)  ? MOD_ALT      : 0 |
			(flags & NSCommandKeyMask)    ? MOD_COMMAND  : 0 |
			(flags & NSNumericPadKeyMask) ? MOD_NUMPAD   : 0 |
			(flags & NSHelpKeyMask)       ? MOD_HELP     : 0 |
			(flags & NSFunctionKeyMask)   ? MOD_FUNCTION : 0;
	}


	CocoaKey::CocoaKey (NSEvent* e)
	:	Key(get_chars(e), [e keyCode], get_modifiers(e), [e isARepeat] ? 1 : 0)
	{
	}


	CocoaPoints::CocoaPoints (NSEvent* e, NSView* view)
	:	Points(
			get_point_type(e), (coord) 0, (coord) 0,
			get_modifiers(e), (uint) [e clickCount],
			[e type] == NSLeftMouseDragged || [e type] == NSRightMouseDragged)
	{
		NSPoint p = [e locationInWindow];
		NSRect b = [view bounds];
		if (view) p = [view convertPoint: p fromView: nil];
		x = p.x;
		y = b.size.height - p.y;
	}


};// Reflex

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
reflexion-0.1.6 src/cocoa/defs.mm
reflexion-0.1.5 src/cocoa/defs.mm
reflexion-0.1.4 src/cocoa/defs.mm