From b9866ce98ab6844380a3c54d179c01591bd2e4aa Mon Sep 17 00:00:00 2001 From: Jari Karppinen Date: Thu, 9 May 2019 15:18:23 +0300 Subject: Assume project fonts are in a subdirectory relative to project or presentation Task-number: QT3DS-3353 Change-Id: Iee9719c00b0da9d6e28b0baade9fd26b35f88d79 Reviewed-by: Mahmoud Badri Reviewed-by: Miikka Heikkinen --- src/Authoring/Studio/Render/StudioRenderer.cpp | 6 ++++-- src/Runtime/Source/engine/Qt3DSRenderRuntimeBinding.cpp | 6 ++++-- src/Runtime/Source/runtime/Qt3DSApplication.cpp | 7 +++++-- src/Runtime/Source/runtimerender/Qt3DSDistanceFieldRenderer.cpp | 1 - src/Runtime/Source/runtimerender/Qt3DSQtTextRenderer.cpp | 7 +++---- 5 files changed, 16 insertions(+), 11 deletions(-) (limited to 'src') 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()); -- cgit v1.2.3