view test/testiconv.c @ 5079:8c88cae7911e SDL-1.2

Michael Bicha to Sam I came across further issues with SDL 1.2.14 on win32 in combination with touch screens. When you touched the screen older SDLs reported SDL_MOUSEMOTION to the touch position SDL_MOUSEBUTTONDOWN at the touch position 1.2.14 reports SDL_MOUSEBUTTONDOWN at the last mouse position before the touch and then a SDL_MOUSEMOTION to the touch position I found that to fix it in the file SDL_sysevents.c i had to put back the following lines from 1.2.12 to get it working correctly again: if ( mouse_relative ) { /* RJR: March 28, 2000 report internal mouse position if in relative mode */ x = 0; y = 0; } else { x = (Sint16)LOWORD(lParam); y = (Sint16)HIWORD(lParam); #ifdef _WIN32_WCE if (SDL_VideoSurface) GapiTransform(this->hidden->userOrientation, this->hidden->hiresFix, &x, &y); #endif } posted = SDL_PrivateMouseButton( state, button, x, y); where there was only posted = SDL_PrivateMouseButton( state, button, 0, 0); in 1.2.14 (appx. line 484) please feel free to put that change into any SDL lib you like in any way you like and thanks for your great work !
author Sam Lantinga <slouken@libsdl.org>
date Sun, 23 Jan 2011 21:02:02 -0800
parents 6a4f3a32c2e6
children
line wrap: on
line source


#include <stdio.h>

#include "SDL.h"

static size_t widelen(char *data)
{
	size_t len = 0;
	Uint32 *p = (Uint32 *)data;
	while(*p++) {
		++len;
	}
	return len;
}

int main(int argc, char *argv[])
{
	const char * formats[] = {
		"UTF8",
		"UTF-8",
		"UTF16BE",
		"UTF-16BE",
		"UTF16LE",
		"UTF-16LE",
		"UTF32BE",
		"UTF-32BE",
		"UTF32LE",
		"UTF-32LE",
		"UCS4",
		"UCS-4",
	};
	char buffer[BUFSIZ];
	char *ucs4;
	char *test[2];
	int i, index = 0;
	FILE *file;
	int errors = 0;

	if ( !argv[1] ) {
		argv[1] = "utf8.txt";
	}
	file = fopen(argv[1], "rb");
	if ( !file ) {
		fprintf(stderr, "Unable to open %s\n", argv[1]);
		return (1);
	}

	while ( fgets(buffer, sizeof(buffer), file) ) {
		/* Convert to UCS-4 */
		size_t len;
		ucs4 = SDL_iconv_string("UCS-4", "UTF-8", buffer, SDL_strlen(buffer)+1);
		len = (widelen(ucs4)+1)*4;
		for ( i = 0; i < SDL_arraysize(formats); ++i ) {
			test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
			test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len);
			if ( !test[1] || SDL_memcmp(test[1], ucs4, len) != 0 ) {
				fprintf(stderr, "FAIL: %s\n", formats[i]);
				++errors;
			}
			if ( test[0] ) {
				SDL_free(test[0]);
			}
			if ( test[1] ) {
				SDL_free(test[1]);
			}
		}
		test[0] = SDL_iconv_string("UTF-8", "UCS-4", ucs4, len);
		SDL_free(ucs4);
		fputs(test[0], stdout);
		SDL_free(test[0]);
	}
	return (errors ? errors + 1 : 0);
}