Merge pull request #44 from richi/master

Show and hide onscreen keyboard
This commit is contained in:
Micha Mettke 2016-01-20 13:49:57 +01:00
commit 14a38dde61
3 changed files with 60 additions and 22 deletions

View File

@ -21,6 +21,8 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "zahnrad.h"
#define SIMULATE_TOUCH 0 #define SIMULATE_TOUCH 0
#if (TARGET_OS_IPHONE && (!TARGET_OS_TV)) || SIMULATE_TOUCH #if (TARGET_OS_IPHONE && (!TARGET_OS_TV)) || SIMULATE_TOUCH
@ -57,12 +59,6 @@
@end @end
struct zr_context;
struct zr_buffer;
struct zr_allocator;
struct zr_user_font;
@interface ZahnradBackend (Adapter) @interface ZahnradBackend (Adapter)
@ -75,3 +71,11 @@ struct zr_user_font;
@end @end
void zr_backend_show_keyboard(zr_hash hash, struct zr_rect bounds, struct zr_buffer* text);
void zr_backend_hide_keyboard(void);
int zr_touch_edit_string(struct zr_context *ctx, zr_flags flags, char *text, zr_size *len, zr_size max, zr_filter filter, zr_hash unique_id);

View File

@ -19,6 +19,8 @@
3. This notice may not be removed or altered from any source distribution. 3. This notice may not be removed or altered from any source distribution.
*/ */
#import "ZahnradBackend.h"
#define MAX_VERTEX_MEMORY (512 * 1024) #define MAX_VERTEX_MEMORY (512 * 1024)
#define MAX_ELEMENT_MEMORY (128 * 1024) #define MAX_ELEMENT_MEMORY (128 * 1024)
@ -28,24 +30,18 @@
// #else does provide a generic version to start // #else does provide a generic version to start
// your own project. // your own project.
#if 1 #if 1
#if TARGET_OS_IPHONE
#define zr_edit_string(_ct, _fl, _bu, _le, _ma, _fi) zr_touch_edit_string(_ct, _fl, _bu, _le, _ma, _fi, (zr_hash)__COUNTER__)
#endif
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <math.h>
#include "zahnrad.h"
#include "../demo.c" #include "../demo.c"
#undef MAX
#undef MIN
#import "ZahnradBackend.h"
@implementation ZahnradBackend (Adapter) @implementation ZahnradBackend (Adapter)
@ -79,7 +75,6 @@ static struct demo gui;
#import "ZahnradBackend.h" #import "ZahnradBackend.h"
#import "zahnrad.h"
@implementation ZahnradBackend (Adapter) @implementation ZahnradBackend (Adapter)
@ -700,6 +695,9 @@ static void mem_free(zr_handle unused, void* ptr)
@end @end
#undef zr_edit_string
#if TARGET_OS_IPHONE #if TARGET_OS_IPHONE
@ -726,10 +724,34 @@ void zr_backend_hide_keyboard(void)
} }
int zr_touch_edit_string(struct zr_context *ctx, zr_flags flags, char *text, zr_size *len, zr_size max, zr_filter filter, zr_hash unique_id)
{
zr_flags state;
struct zr_rect bounds;
zr_layout_peek(&bounds, ctx);
state = zr_edit_string(ctx, flags, text, len, max, filter);
if (state & ZR_EDIT_ACTIVATED)
{
struct zr_buffer buffer;
zr_buffer_init_fixed(&buffer, text, max);
buffer.allocated = *len;
zr_backend_show_keyboard((zr_hash)unique_id, bounds, &buffer);
}
else if (state & ZR_EDIT_DEACTIVATED)
{
zr_backend_hide_keyboard();
}
return state;
}
#else #else
void zr_backend_show_keyboard(zr_hash zrHash, struct zr_rect zrBounds) void zr_backend_show_keyboard(zr_hash zrHash, struct zr_rect zrBounds, struct zr_buffer* zrText)
{ {
} }
@ -739,6 +761,12 @@ void zr_backend_hide_keyboard(void)
} }
int zr_touch_edit_string(struct zr_context *ctx, zr_flags flags, char *text, zr_size *len, zr_size max, zr_filter filter, zr_hash unique_id)
{
return zr_edit_string(ctx, flags, text, len, max, filter);
}
#endif #endif

View File

@ -1,8 +1,14 @@
#include "limits.h" #include "limits.h"
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b)) #define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
#ifndef MAX
#define MAX(a,b) ((a) < (b) ? (b) : (a)) #define MAX(a,b) ((a) < (b) ? (b) : (a))
#endif
#ifndef CLAMP
#define CLAMP(i,v,x) (MAX(MIN(v,x), i)) #define CLAMP(i,v,x) (MAX(MIN(v,x), i))
#endif
#define LEN(a) (sizeof(a)/sizeof(a)[0]) #define LEN(a) (sizeof(a)/sizeof(a)[0])
#define UNUSED(a) ((void)(a)) #define UNUSED(a) ((void)(a))