Mercurial > sdl-ios-xcode
view test/testiconv.c @ 3496:78fc8ea578b2
Joe 2009-11-23 21:31:10 PST
If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions
367 * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN
uses
368 * the first three \c dir parameters. The cardinal directions would
be:
369 * - North: 0,-1, 0
370 * - East: -1, 0, 0
371 * - South: 0, 1, 0
372 * - West: 1, 0, 0
typedef struct SDL_HapticDirection
{
Uint8 type; /**< The type of encoding. */
Uint16 dir[3]; /**< The encoded direction. */
} SDL_HapticDirection;
An unsigned int can't store negative values and I don't see an alternate way to
encode them in the docs or source. The best I have been able to come up with is
using a negative magnitude for the effect but this will only get me 2 of the 4
quadrants in the plane for 2d effects. I looked at the win32 and linux
implementations and I believe is is safe to use signed ints in the direction
struct. I am unfamiliar with the darwin haptics API so I don't know if it is
safe.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 27 Nov 2009 19:29:27 +0000 |
parents | e906da4414a3 |
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); }