summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-04-13 18:41:33 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-04-13 18:41:33 +0200
commit44dff975612602772f3470edad646f2ded3ef0b4 (patch)
tree4194ed4521ec4efc35f2d148752027fc518ec715
parentf59970eaf733118db543c7c37c49d32ca53e60aa (diff)
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 <amlal.elmahrouss@icloud.com>
-rw-r--r--Public/Developer/SystemLib/Sources/File.c2
-rw-r--r--Public/Developer/SystemLib/Sources/TrueType.c39
l---------Public/Root1
3 files changed, 41 insertions, 1 deletions
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 <Headers/Defines.h>
+#include <Headers/TrueType.h>
+#include <Headers/File.h>
+#include <Headers/Heap.h>
+
+#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