WiiBuilder 1.9.0

La version 1.9.0 de WiiBuilder est maintenant disponible. Cette nouvelle version permet l’utilisation de tous les points de code disponibles dans Unicode.

WiiBuilder 1.9.0
WiiBuilder 1.9.0

Au départ, je croyais qu’il suffisait seulement d’ajouter deux caractères supplémentaires dans la zone d’entrée de texte comme je l’avais déjà fait dans la version 1.8.1. Je me suis trompé, ce fut pas mal plus compliqué.

Le problème, c’est que dans C++Builder, wchar_t est sur deux octets. Ce qui veut dire que sa valeur maximale est de 65535. La plupart des points de code des émojis se trouvent en haut de cette valeur. Il fallait donc que je trouve comment encoder ces points de code en UTF-16. Heureusement, la page Wikipedia de UTF-16 explique comment faire. Puisque je suis un peu paresseux, j’ai finalement pris une partie du code sur ce site web. Voici ce que ça donne dans une fonction C++Builder.

String __fastcall CodePointToString(uint32_t ACodePoint)
{
    static const uint32_t LEAD_OFFSET = 0xD800 - (0x10000 >> 10);

    String Result;

    if(ACodePoint > 0xFFFF)
    {
        wchar_t wc[3];
        wc[0] = LEAD_OFFSET + (ACodePoint >> 10);
        wc[1] = 0xDC00 + (ACodePoint & 0x3FF);
        wc[2] = L'\0';

        Result = String(wc);
    }
    else
    {
        Result = wchar_t(ACodePoint);
    }

    return Result;
}