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(); }
/** * 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; }