From 44dff975612602772f3470edad646f2ded3ef0b4 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 13 Apr 2024 18:41:33 +0200 Subject: SystemLib: Adding TrueType support for SystemLib as part of the specs. Public: Add symlink to root as part of the install specs. Signed-off-by: Amlal El Mahrouss --- Public/Developer/SystemLib/Sources/File.c | 2 +- Public/Developer/SystemLib/Sources/TrueType.c | 39 +++++++++++++++++++++++++++ Public/Root | 1 + 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 Public/Developer/SystemLib/Sources/TrueType.c create mode 120000 Public/Root diff --git a/Public/Developer/SystemLib/Sources/File.c b/Public/Developer/SystemLib/Sources/File.c index 1432e7e0..ca23d9f7 100644 --- a/Public/Developer/SystemLib/Sources/File.c +++ b/Public/Developer/SystemLib/Sources/File.c @@ -35,4 +35,4 @@ CA_EXTERN_C VoidType FsCloseFile(FSRef refFs) { kSharedApplication->Invoke(kSharedApplication, refFs, kFlushFile); kSharedApplication->Invoke(kSharedApplication, kCallCloseFile, refFs); -} \ No newline at end of file +} diff --git a/Public/Developer/SystemLib/Sources/TrueType.c b/Public/Developer/SystemLib/Sources/TrueType.c new file mode 100644 index 00000000..d23ce4f9 --- /dev/null +++ b/Public/Developer/SystemLib/Sources/TrueType.c @@ -0,0 +1,39 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include +#include +#include + +#define kTTFFork "fon " /* TrueType */ + +/// @brief TrueType container reader +typedef struct TTFReader { + FSForkRef fFork; + FSRef fFile; + PtrVoidType fBlob; // cached blob + SizeType fBlobSize; // cached blob size + VoidType(*__fReadBytes)(SizeType count); + VoidType(*__fSkipBytes)(SizeType count); +} TTFReader; + +/// @brief Grab a TTF reader reference. +/// @param fs filesystem reference. +/// @return TTFReader* the new TTFReader type. +CA_STATIC TTFReader* GrabTTFReader(FSRef fs) { + FSForkRef forkRef = FsGetFork(fs, kTTFFork); + + if (forkRef = kInvalidRef) return NullPtr; + + TTFReader* reader = RtTlsAllocate(sizeof(TTFReader), kStandardAllocation); + + reader->fFile = fs; + reader->fFork = forkRef; + + return reader; +} +/// EOF. diff --git a/Public/Root b/Public/Root new file mode 120000 index 00000000..418b1c64 --- /dev/null +++ b/Public/Root @@ -0,0 +1 @@ +../Private/Root \ No newline at end of file -- cgit v1.2.3