int QNanoFont::getID(NVGcontext* nvg) { if (m_fontPropertiesChanged) { nvgFontSize(nvg, m_size); nvgFontBlur(nvg, m_blur); nvgTextLetterSpacing(nvg, m_spacing); nvgTextLineHeight(nvg, m_lineHeight); } if (m_filename.isEmpty()) { // No font file set, so loading the default font setFontId(QNanoFont::DEFAULT_FONT_NORMAL); } m_id = nvgFindFont(nvg,m_filename.toUtf8().constData()); if (m_id == -1) { // Font is not yet in cache, so load and add it QFile file(m_filename); if (!file.open(QFile::ReadOnly)) { qWarning() << "Could not open font file: " << m_filename; } else { qint64 length = file.bytesAvailable(); char * data = static_cast<char*>(malloc(length)); file.read(data,length); m_id = nvgCreateFontMem(nvg, m_filename.toUtf8().constData(), reinterpret_cast<unsigned char*>(data), length, 1); file.close(); } } return m_id; }
QNanoFont::QNanoFont(FontId fontId) : m_parentPainter(nullptr) , m_id(0) , m_fontData(nullptr) // Note: These should be matching to nanovg nvgReset state , m_size(16.0f) , m_blur(0.0f) , m_spacing(0.0f) , m_lineHeight(1.0f) , m_fontPropertiesChanged(false) { setFontId(fontId); }
void ISynth::noRTHelper() { for (;;) { char c; int n = read(readFd, &c, 1); if (n != 1) { perror("ISynth::read ipc failed\n"); continue; } int id = getFontId(); if (id != -1) { #ifdef FS_DEBUG fprintf(stderr, "ISynth: unload old font\n"); #endif fluid_synth_sfunload(synth(), (unsigned)id, true); } const char* fontname = getFont(); int rv = fluid_synth_sfload(synth(), fontname, true); if (rv == -1) { fprintf(stderr, "ISynth: sfload %s failed\n", fluid_synth_error(synth())); } else { setFontId(rv); // Inform the gui. p4.0.27 Tim int slen = strlen(fontname); int n = slen + 2; unsigned char d[n]; d[0] = FS_SEND_SOUNDFONT_NAME; if(slen != 0) memcpy(d + 1, fontname, slen); d[1 + slen] = 0; MusECore::MidiPlayEvent ev(0,0, MusECore::ME_SYSEX, d, n); gui->writeEvent(ev); #ifdef FS_DEBUG fprintf(stderr, "ISynth: sfont %s loaded as %d\n ", getFont(), rv); #endif } fluid_synth_set_gain(synth(), 1.0); //? _busy = false; } }
TextField::TextField(ILubyte fontId) { init(); setFontId(fontId); }