diff options
Diffstat (limited to 'Public/Developer')
| -rw-r--r-- | Public/Developer/SystemLib/Sources/File.c | 2 | ||||
| -rw-r--r-- | Public/Developer/SystemLib/Sources/TrueType.c | 39 |
2 files changed, 40 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. |
