From a31ade72cec423985f08d27a2ca2a9c86661dc9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1ximo=20Casta=C3=B1eda?= Date: Fri, 1 Mar 2024 22:10:09 +0100 Subject: [PATCH] BFont: remove default values from ambiguous method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Noticed by Joachim Mairböck after I hastily merged change 7402. Also add named variation instance selection for fonts loaded from memory areas like there already is for files. Change-Id: I76de22181dc39559956c25987165be2f8a8c4a37 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7493 Tested-by: Commit checker robot Reviewed-by: Jérôme Duval --- headers/os/interface/Font.h | 2 +- src/kits/interface/Font.cpp | 5 +++-- src/servers/app/ServerApp.cpp | 6 ++++-- src/servers/app/font/AppFontManager.cpp | 6 +++--- src/servers/app/font/AppFontManager.h | 3 ++- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/headers/os/interface/Font.h b/headers/os/interface/Font.h index 5aa2bbd8b8..a6a9e4651f 100644 --- a/headers/os/interface/Font.h +++ b/headers/os/interface/Font.h @@ -287,7 +287,7 @@ public: status_t LoadFont(const area_id fontAreaID, size_t size = 0, size_t offset = 0); status_t LoadFont(const area_id fontAreaID, - size_t size = 0, size_t offset = 0, uint16 index = 0); + size_t size, size_t offset, uint16 index, uint16 instance); status_t UnloadFont(); private: diff --git a/src/kits/interface/Font.cpp b/src/kits/interface/Font.cpp index ac279ec127..6155373ffb 100644 --- a/src/kits/interface/Font.cpp +++ b/src/kits/interface/Font.cpp @@ -1489,12 +1489,12 @@ BFont::LoadFont(const char* path, uint16 index, uint16 instance) status_t BFont::LoadFont(const area_id fontAreaID, size_t size, size_t offset) { - return LoadFont(fontAreaID, size, offset, 0); + return LoadFont(fontAreaID, size, offset, 0, 0); } status_t -BFont::LoadFont(const area_id fontAreaID, size_t size, size_t offset, uint16 index) +BFont::LoadFont(const area_id fontAreaID, size_t size, size_t offset, uint16 index, uint16 instance) { BPrivate::AppServerLink link; @@ -1504,6 +1504,7 @@ BFont::LoadFont(const area_id fontAreaID, size_t size, size_t offset, uint16 ind link.Attach(size); link.Attach(offset); link.Attach(index); + link.Attach(instance); status_t status = B_ERROR; if (link.FlushWithReply(status) != B_OK || status != B_OK) { diff --git a/src/servers/app/ServerApp.cpp b/src/servers/app/ServerApp.cpp index b3a1ae0ecb..91fe01f243 100644 --- a/src/servers/app/ServerApp.cpp +++ b/src/servers/app/ServerApp.cpp @@ -1638,6 +1638,7 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) // 2) size_t - size of memory area for font // 3) size_t - offset to start of font memory // 4) uint16 - index in font buffer + // 5) uint16 - instance // Returns: // 1) uint16 - family ID of added font @@ -1656,12 +1657,13 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) area_info fontAreaInfo; char* area_addr; size_t size, offset; - uint16 index; + uint16 index, instance; link.Read(&fontAreaID); link.Read(&size); link.Read(&offset); link.Read(&index); + link.Read(&instance); fontAreaCloneID = clone_area("user font", (void **)&area_addr, B_ANY_ADDRESS, @@ -1710,7 +1712,7 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) uint16 familyID, styleID; - status = fAppFontManager->AddUserFontFromMemory(fontData, size, index, + status = fAppFontManager->AddUserFontFromMemory(fontData, size, index, instance, familyID, styleID); if (status != B_OK) { diff --git a/src/servers/app/font/AppFontManager.cpp b/src/servers/app/font/AppFontManager.cpp index a61b1a91c5..ac6b1cd088 100644 --- a/src/servers/app/font/AppFontManager.cpp +++ b/src/servers/app/font/AppFontManager.cpp @@ -79,7 +79,7 @@ AppFontManager::AddUserFontFromFile(const char* path, uint16 index, uint16 insta */ status_t AppFontManager::AddUserFontFromMemory(const FT_Byte* fontAddress, size_t size, uint16 index, - uint16& familyID, uint16& styleID) + uint16 instance, uint16& familyID, uint16& styleID) { ASSERT(IsLocked()); @@ -87,8 +87,8 @@ AppFontManager::AddUserFontFromMemory(const FT_Byte* fontAddress, size_t size, u status_t status; FT_Face face; - FT_Error error = FT_New_Memory_Face(gFreeTypeLibrary, fontAddress, size, index, - &face); + FT_Error error = FT_New_Memory_Face(gFreeTypeLibrary, fontAddress, size, + index | (instance << 16), &face); if (error != 0) return B_ERROR; diff --git a/src/servers/app/font/AppFontManager.h b/src/servers/app/font/AppFontManager.h index af7a464158..ceaf8ef16b 100644 --- a/src/servers/app/font/AppFontManager.h +++ b/src/servers/app/font/AppFontManager.h @@ -40,7 +40,8 @@ public: status_t AddUserFontFromFile(const char* path, uint16 index, uint16 instance, uint16& familyID, uint16& styleID); status_t AddUserFontFromMemory(const FT_Byte* fontAddress, size_t size, - uint16 index, uint16& familyID, uint16& styleID); + uint16 index, uint16 instance, + uint16& familyID, uint16& styleID); status_t RemoveUserFont(uint16 familyID, uint16 styleID); private: