/* * Copyright (c) 2012 Jonathan Schleifer <js@webkeks.org> * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from the * use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1.) The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2.) Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * 3.) This notice may not be removed or altered from any source distribution. */ #include <allegro5/allegro.h> #import <ObjFW/ObjFW.h> #import "OGKEvent.h" #import "OGKDisplay.h" @protocol OGKEventQueueDelegate <OFObject> @optional - (void)displayWasClosed: (OGKCloseEvent*)event; // FIXME: Those need to get the OGKDisplay passed! - (void)keyWasPressed: (OGKKeyPressEvent*)event; - (void)keyWasReleased: (OGKKeyReleaseEvent*)event; - (void)mouseWasMoved: (OGKMouseMovedEvent*)event; - (void)mouseButtonWasPressed: (OGKMouseButtonPressedEvent*)event; - (void)mouseButtonWasReleased: (OGKMouseButtonReleasedEvent*)event; @end @interface OGKEventQueue: OFObject { ALLEGRO_EVENT_QUEUE *eventQueue; /* FIXME: Make this weak once there is support in ObjFW for it */ __unsafe_unretained id <OGKEventQueueDelegate> delegate; } @property (unsafe_unretained) id <OGKEventQueueDelegate> delegate; - (void)handleNextEvent; - (void)registerDisplay: (OGKDisplay*)display; - (void)unregisterDisplay: (OGKDisplay*)display; - (void)registerKeyboard; - (void)unregisterKeyboard; - (void)registerMouse; - (void)unregisterMouse; @end