コード例 #1
0
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QFile fMap(":/Map/map.txt");
    fMap.open(QIODevice::ReadOnly);
    QTextStream in(&fMap);
    QString sMap = in.readAll();
    MapModel mapModel;
    QList<MapObject*> objects;
    objects << new MapObject(MapObject::PlayerType, 23, 14);
    for (int i = 0; i < 31; ++i)
    {
        for (int j = 0; j < 28; ++j)
        {
            int type = sMap.split('\n').at(i).split('\t').at(j).toInt();
            objects << new MapObject((MapObject::ObjectTypes)type, i, j);
        }
    }
    for (int i = 0; i < objects.count(); ++i)
    {
        mapModel.addMapObject(objects.at(i));
    }
    QQmlApplicationEngine engine;
    engine.rootContext()->setContextProperty("mapModel", &mapModel);
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}
コード例 #2
0
/**
 * Implements {@link Transliterator#handleTransliterate}.
 */
void CaseMapTransliterator::handleTransliterate(Replaceable& text,
                                 UTransPosition& offsets, 
                                 UBool isIncremental) const
{
    if (offsets.start >= offsets.limit) {
        return;
    }

    UCaseContext csc;
    uprv_memset(&csc, 0, sizeof(csc));
    csc.p = &text;
    csc.start = offsets.contextStart;
    csc.limit = offsets.contextLimit;

    UnicodeString tmp;
    const UChar *s;
    UChar32 c;
    int32_t textPos, delta, result, locCache=0;

    for(textPos=offsets.start; textPos<offsets.limit;) {
        csc.cpStart=textPos;
        c=text.char32At(textPos);
        csc.cpLimit=textPos+=U16_LENGTH(c);

        result=fMap(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, "", &locCache);

        if(csc.b1 && isIncremental) {
            // fMap() tried to look beyond the context limit
            // wait for more input
            offsets.start=csc.cpStart;
            return;
        }

        if(result>=0) {
            // replace the current code point with its full case mapping result
            // see UCASE_MAX_STRING_LENGTH
            if(result<=UCASE_MAX_STRING_LENGTH) {
                // string s[result]
                tmp.setTo(FALSE, s, result);
                delta=result-U16_LENGTH(c);
            } else {
                // single code point
                tmp.setTo(result);
                delta=tmp.length()-U16_LENGTH(c);
            }
            text.handleReplaceBetween(csc.cpStart, textPos, tmp);
            if(delta!=0) {
                textPos+=delta;
                csc.limit=offsets.contextLimit+=delta;
                offsets.limit+=delta;
            }
        }
    }
    offsets.start=textPos;
}