void TestText::testDropUnicodeAfterSMUFLwhenCursorSetToSymbol() { Text* text = new Text(score); text->initSubStyle(SubStyle::DYNAMICS); text->setPlainText(QString("")); text->layout(); text->startEdit(editData); Symbol* symbolSMUFL = new Symbol(score); // create a new element, as Measure::drop() will eventually delete it symbolSMUFL->setSym(SymId::noteheadWhole); EditData dropSMUFL; dropSMUFL.dropElement = symbolSMUFL; text->drop(dropSMUFL); // the bug happened when cursor is in symbol mode CharFormat* cf = text->cursor()->format(); cf->setType(CharFormatType::SYMBOL); EditData dropFSymbol; FSymbol* fsymbol = new FSymbol(score); fsymbol->setCode(0x0001D10E); // unicode hex code for '𝄎' dropFSymbol.dropElement = fsymbol; text->drop(dropFSymbol); text->endEdit(editData); QCOMPARE(text->xmlText(), QString("<sym>noteheadWhole</sym>𝄎")); }
void TextPalette::populateUnicode() { int row = lwu->currentItem()->data(Qt::UserRole).toInt(); QPoint p = rangeInfo[row]; pUnicode->clear(); for (int code = p.x(); code <= p.y(); ++code) { FSymbol* fs = new FSymbol(gscore); fs->setCode(code); fs->setFont(_font); pUnicode->append(fs, QString("0x%1").arg(code, 5, 16, QLatin1Char('0'))); } }
void TextPalette::populateCommon() { pCommon->clear(); Symbol* s = new Symbol(gscore); s->setSym(SymId::gClef, gscore->scoreFont()); pCommon->append(s, Sym::id2userName(SymId::gClef)); FSymbol* fs = new FSymbol(gscore); fs->setCode(int('A')); fs->setFont(_font); pCommon->append(fs, "A"); }
void TestText::testDropSupplementaryUnicodeWhenNotInEditMode() { Text* text = new Text(score); text->initSubStyle(SubStyle::DYNAMICS); text->setPlainText(QString("")); text->layout(); EditData dropFSymbol; FSymbol* fsymbol = new FSymbol(score); fsymbol->setCode(0x0001D10E); // Supplementary Unicode code for '𝄎' dropFSymbol.dropElement = fsymbol; text->drop(dropFSymbol); QCOMPARE(text->xmlText(), QString("𝄎")); }
void TextPalette::populateCommon() { pCommon->clear(); for (auto id : commonScoreSymbols) { Symbol* s = new Symbol(gscore); s->setSym(id, gscore->scoreFont()); pCommon->append(s, Sym::id2userName(id)); } for (auto id : commonTextSymbols) { FSymbol* fs = new FSymbol(gscore); fs->setCode(id); fs->setFont(_font); pCommon->append(fs, QString(id)); } }
void TextPalette::populateAll() { int page = codePage->value(); codePage->setMaximum(255); QFontMetrics fm(_font); pAll->clear(); for (int row = 0; row < 16; ++row) { for (int col = 0; col < 16; ++col) { int code = row * 16 + col + page * 256; FSymbol* fs = new FSymbol(gscore); fs->setCode(code); fs->setFont(_font); pAll->append(fs, QString("0x%1").arg(code, 5, 16, QLatin1Char('0'))); } } }
void ChordStyleEditor::setChordList(ChordList* cl) { harmonyList->clear(); foreach (const ChordDescription& d, *cl) { QTreeWidgetItem* item = new QTreeWidgetItem; item->setData(0, Qt::UserRole, QVariant::fromValue<void*>((void*)&d)); item->setText(0, QString("%1").arg(d.id)); if (!d.names.isEmpty()) item->setText(1, QString("%1").arg(d.names.front())); harmonyList->addTopLevelItem(item); } delete chordList; chordList = new ChordList(*cl); canvas->setChordDescription(0, 0); paletteTab->clear(); foreach(const ChordFont& f, chordList->fonts) { // create symbol palette Palette* p = new Palette(); PaletteScrollArea* accPalette = new PaletteScrollArea(p); QSizePolicy policy1(QSizePolicy::Expanding, QSizePolicy::Expanding); accPalette->setSizePolicy(policy1); accPalette->setRestrictHeight(false); p->setGrid(50, 50); paletteTab->addTab(accPalette, f.family); QFont qf(f.family); qf.setStyleStrategy(QFont::NoFontMerging); int size = lrint(20.0 * DPI / PPI); qf.setPixelSize(size); QFontMetricsF fi(qf); for (int i = 0; i < 255; ++i) { if (fi.inFont(QChar(i))) { FSymbol* s = new FSymbol(gscore); s->setFont(qf); s->setCode(i); p->append(s, "??"); } } } raise(); }