diff options
author | Jari Karppinen <jari.karppinen@qt.io> | 2019-05-09 15:18:23 +0300 |
---|---|---|
committer | Jari Karppinen <jari.karppinen@qt.io> | 2019-05-14 12:07:01 +0000 |
commit | b9866ce98ab6844380a3c54d179c01591bd2e4aa (patch) | |
tree | 984df0c1280280b4804ae395cb0a08da27005bf9 /src | |
parent | c46b03d90eedc1f13c178dd69e019fd2b6de9994 (diff) |
Assume project fonts are in a subdirectory relative to project or presentation
Task-number: QT3DS-3353
Change-Id: Iee9719c00b0da9d6e28b0baade9fd26b35f88d79
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src')
5 files changed, 16 insertions, 11 deletions
diff --git a/src/Authoring/Studio/Render/StudioRenderer.cpp b/src/Authoring/Studio/Render/StudioRenderer.cpp index dde2d64c..f6361a69 100644 --- a/src/Authoring/Studio/Render/StudioRenderer.cpp +++ b/src/Authoring/Studio/Render/StudioRenderer.cpp @@ -725,16 +725,18 @@ struct SRendererImpl : public IStudioRenderer, Q3DStudio::CString thePath( Q3DStudio::CString::fromQString( StudioUtils::resourcePath() + QStringLiteral("/Font"))); + // For QT3DS-3353 assume project fonts are in a subdirectory relative to project. + QString projectFontPath = projectPath + QStringLiteral("/fonts"); m_Context->GetTextRenderer()->AddSystemFontDirectory( m_Context->GetStringTable().RegisterStr(thePath.c_str())); m_Context->GetTextRenderer()->AddProjectFontDirectory( - m_Context->GetStringTable().RegisterStr(projectPath.toLatin1().data())); + m_Context->GetStringTable().RegisterStr(projectFontPath.toLatin1().data())); if (m_Context->getDistanceFieldRenderer()) { m_Context->getDistanceFieldRenderer()->AddSystemFontDirectory( m_Context->GetStringTable().RegisterStr(thePath.c_str())); m_Context->getDistanceFieldRenderer()->AddProjectFontDirectory( m_Context->GetStringTable().RegisterStr( - projectPath.toLatin1().data())); + projectFontPath.toLatin1().data())); } } } diff --git a/src/Runtime/Source/engine/Qt3DSRenderRuntimeBinding.cpp b/src/Runtime/Source/engine/Qt3DSRenderRuntimeBinding.cpp index f737ec4a..1ffb7141 100644 --- a/src/Runtime/Source/engine/Qt3DSRenderRuntimeBinding.cpp +++ b/src/Runtime/Source/engine/Qt3DSRenderRuntimeBinding.cpp @@ -896,13 +896,15 @@ struct Qt3DSRenderSceneManager : public Q3DStudio::ISceneManager, inPresentation.SetScene(&inScene); if (m_ProjectInitialized == false) { m_ProjectInitialized = true; + // For QT3DS-3353 assume project fonts are in a subdirectory relative to presentation. + QString projectFontDir = inPresentation.getProjectPath() + QStringLiteral("/fonts"); if (m_Context->m_Context->GetTextRenderer()) { m_Context->m_Context->GetTextRenderer()->AddProjectFontDirectory( - inScene.m_Presentation->m_PresentationDirectory); + projectFontDir.toUtf8().data()); } if (m_Context->m_Context->getDistanceFieldRenderer()) { m_Context->m_Context->getDistanceFieldRenderer()->AddProjectFontDirectory( - inScene.m_Presentation->m_PresentationDirectory); + projectFontDir.toUtf8().data()); } eastl::string theBinaryPath(inPresentation.GetFilePath().toLatin1().constData()); qt3ds::foundation::CFileTools::AppendDirectoryInPathToFile(theBinaryPath, "binary"); diff --git a/src/Runtime/Source/runtime/Qt3DSApplication.cpp b/src/Runtime/Source/runtime/Qt3DSApplication.cpp index 07ca8e4c..dc7be311 100644 --- a/src/Runtime/Source/runtime/Qt3DSApplication.cpp +++ b/src/Runtime/Source/runtime/Qt3DSApplication.cpp @@ -1300,16 +1300,19 @@ struct SApp : public IApplication m_CoreFactory->AddSearchPath(relativeProjectDir.c_str()); } + // For QT3DS-3353 assume project fonts are in a subdirectory relative to project. + eastl::string projectFontDirectory = projectDirectory + "/fonts"; + NVFoundationBase &fnd(m_CoreFactory->GetFoundation()); if (m_CoreFactory->GetRenderContextCore().getDistanceFieldRenderer()) { m_CoreFactory->GetRenderContextCore().getDistanceFieldRenderer() - ->AddProjectFontDirectory(projectDirectory.c_str()); + ->AddProjectFontDirectory(projectFontDirectory.c_str()); } if (m_CoreFactory->GetRenderContextCore().GetTextRendererCore()) { m_CoreFactory->GetRenderContextCore().GetTextRendererCore()->AddProjectFontDirectory( - projectDirectory.c_str()); + projectFontDirectory.c_str()); m_CoreFactory->GetRenderContextCore().GetTextRendererCore()->BeginPreloadFonts( m_CoreFactory->GetRenderContextCore().GetThreadPool(), m_CoreFactory->GetRenderContextCore().GetPerfTimer()); diff --git a/src/Runtime/Source/runtimerender/Qt3DSDistanceFieldRenderer.cpp b/src/Runtime/Source/runtimerender/Qt3DSDistanceFieldRenderer.cpp index 731d6929..21a090a8 100644 --- a/src/Runtime/Source/runtimerender/Qt3DSDistanceFieldRenderer.cpp +++ b/src/Runtime/Source/runtimerender/Qt3DSDistanceFieldRenderer.cpp @@ -71,7 +71,6 @@ void Q3DSDistanceFieldRenderer::AddSystemFontDirectory(const char8_t *dir) void Q3DSDistanceFieldRenderer::AddProjectFontDirectory(const char8_t *dir) { QString projectDir(dir); - projectDir += QLatin1String("/fonts"); m_projectDirs += projectDir; m_fontDatabase.registerFonts({ projectDir }); } diff --git a/src/Runtime/Source/runtimerender/Qt3DSQtTextRenderer.cpp b/src/Runtime/Source/runtimerender/Qt3DSQtTextRenderer.cpp index 17539e4a..4de7f9be 100644 --- a/src/Runtime/Source/runtimerender/Qt3DSQtTextRenderer.cpp +++ b/src/Runtime/Source/runtimerender/Qt3DSQtTextRenderer.cpp @@ -199,11 +199,10 @@ struct Qt3DSQtTextRenderer : public ITextRenderer QString localDir = CFileTools::NormalizePathForQtUsage(stringToQString(*theIter)); QDir dir(localDir); if (!dir.exists()) { - qCCritical(INTERNAL_ERROR) << "Adding font directory:" << localDir; + qWarning("Attempted to register invalid font directory: %s", + qPrintable(localDir)); continue; } - if (fontInfos) - dir.cd(QStringLiteral("fonts")); QStringList entryList = dir.entryList(m_nameFilters); for (QString entry : entryList) { entry = dir.absoluteFilePath(entry); @@ -222,7 +221,7 @@ struct Qt3DSQtTextRenderer : public ITextRenderer fontFamily = families.at(0); FontInfo fi(entry, fontName, fontFamily, fontId); // Detect font style and weight using a dummy QRawFont - QRawFont rawFont(rawData, 1.0); + QRawFont rawFont(rawData, 16); if (rawFont.isValid()) { if (rawFont.style() != QFont::StyleOblique) { fi.font.setStyle(rawFont.style()); |