diff --git a/md2teach.xcodeproj/project.pbxproj b/md2teach.xcodeproj/project.pbxproj index 4c42463..7f3fb1a 100644 --- a/md2teach.xcodeproj/project.pbxproj +++ b/md2teach.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ 9D65330D2626246700105D50 /* md4c.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D65330C2626246700105D50 /* md4c.c */; }; 9D8125DD2634A584002F05F5 /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D8125DC2634A584002F05F5 /* io.c */; }; 9D8125E42634AC4A002F05F5 /* translate.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D8125E32634AC4A002F05F5 /* translate.c */; }; + 9D8125F32634B4D4002F05F5 /* style.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D8125F22634B4D4002F05F5 /* style.c */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -56,6 +57,8 @@ 9D8125DC2634A584002F05F5 /* io.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = io.c; sourceTree = ""; }; 9D8125E22634AC4A002F05F5 /* translate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = translate.h; sourceTree = ""; }; 9D8125E32634AC4A002F05F5 /* translate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = translate.c; sourceTree = ""; }; + 9D8125F12634B4D4002F05F5 /* style.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = style.h; sourceTree = ""; }; + 9D8125F22634B4D4002F05F5 /* style.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = style.c; sourceTree = ""; }; 9DDFC7B026269D23006D6E71 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 9DDFC7B126269D3F006D6E71 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 9DDFC7B42627E081006D6E71 /* test.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = test.md; sourceTree = ""; }; @@ -106,6 +109,8 @@ 9D8125DC2634A584002F05F5 /* io.c */, 9D8125E22634AC4A002F05F5 /* translate.h */, 9D8125E32634AC4A002F05F5 /* translate.c */, + 9D8125F12634B4D4002F05F5 /* style.h */, + 9D8125F22634B4D4002F05F5 /* style.c */, 9D65330C2626246700105D50 /* md4c.c */, 9D65330B2626246700105D50 /* md4c.h */, 9D6532EE2626240800105D50 /* Makefile */, @@ -239,6 +244,7 @@ 9D8125E42634AC4A002F05F5 /* translate.c in Sources */, 9D6532EF2626240800105D50 /* Makefile in Sources */, 9D8125DD2634A584002F05F5 /* io.c in Sources */, + 9D8125F32634B4D4002F05F5 /* style.c in Sources */, 9D6532ED2626240800105D50 /* main.c in Sources */, 9D65330D2626246700105D50 /* md4c.c in Sources */, ); diff --git a/md2teach/main.c b/md2teach/main.c index cc1b66d..358d036 100644 --- a/md2teach/main.c +++ b/md2teach/main.c @@ -7,19 +7,14 @@ * */ - #include -#include #include #include -#include -#include - #include "io.h" #include "main.h" #include "translate.h" -#include "md4c.h" + // GS_TODO - How big does the stack need to be? In looking over the code, // I don't see massive stack frames due to large globals (other than the @@ -35,65 +30,6 @@ // Leaving the stack very big for now at 32K. #pragma stacksize 32768 -// Defines - -#define NUM_HEADER_SIZES 6 - -// This is plain, emphasized, strong or strong+empasized -#define NUM_TEXT_FORMATS 4 - -#define NUM_HEADER_STYLES (NUM_HEADER_SIZES * NUM_TEXT_FORMATS) -#define NUM_CODE_STYLES 1 -#define NUM_TEXT_STYLES NUM_TEXT_FORMATS -#define NUM_QUOTE_STYLES NUM_TEXT_FORMATS - -#define TOTAL_STYLES (NUM_HEADER_STYLES + NUM_CODE_STYLES + NUM_TEXT_STYLES + NUM_QUOTE_STYLES) - -// Typedefs - -typedef struct tWindowPos -{ - int16_t height; - int16_t width; - int16_t top; - int16_t left; - int32_t version; -} tWindowPos; - -// I wish I could use the structure definition from textedit.h but TERuler contains optional -// fields in the definition and Teach isn't expecting them it seems (array of theTabs). So, -// I need my own struct which omits them. -typedef struct tRuler -{ - int16_t leftMargin; - int16_t leftIndent; - int16_t rightMargin; - int16_t just; - int16_t extraLS; - int16_t flags; - int32_t userData; - int16_t tabType; - int16_t tabTerminator; -} tRuler; - -typedef struct tFormatHeader -{ - int16_t version; - int32_t rulerSize; - tRuler ruler; - int32_t styleListLength; - TEStyle styleList[TOTAL_STYLES]; - LongWord numberOfStyles; -} tFormatHeader; - -typedef struct tFormat -{ - tFormatHeader header; - StyleItem styleItems[1]; -} tFormat; - -//typedef struct tStyle - // Globals @@ -101,35 +37,9 @@ void * lowestStackSeen; char * commandName; int debugEnabled = 0; -tWindowPos windowPos = { - 0xad, // height - 0x27c, // width - 0x1a, // top - 0x02, // left - 0x0 // version -}; - -// For the 6 header sizes, we are going with: -// 1 -> Helvetica 36 -// 2 -> Helvetica 30 -// 3 -> Helvetica 27 -// 4 -> Helvetica 24 -// 5 -> Helvetica 20 -// 6 -> Helvetica 18 -uint8_t headerFontSizes[NUM_HEADER_SIZES] = { - 36, - 30, - 27, - 24, - 20, - 18 -}; - -tFormat * formatPtr = NULL; // Implementation - static void printUsage(void) { fprintf(stderr, "USAGE: %s [ -d ] inputfile outputfile\n", commandName); diff --git a/md2teach/style.c b/md2teach/style.c new file mode 100644 index 0000000..c0af662 --- /dev/null +++ b/md2teach/style.c @@ -0,0 +1,88 @@ +/* + * style.c + * md2teach + * + * Created by Jeremy Rand on 2021-04-24. + * + */ + +#include + +#include + +#include "style.h" + + +// Typedefs + +typedef struct tWindowPos +{ + int16_t height; + int16_t width; + int16_t top; + int16_t left; + int32_t version; +} tWindowPos; + +// I wish I could use the structure definition from textedit.h but TERuler contains optional +// fields in the definition and Teach isn't expecting them it seems (array of theTabs). So, +// I need my own struct which omits them. +typedef struct tRuler +{ + int16_t leftMargin; + int16_t leftIndent; + int16_t rightMargin; + int16_t just; + int16_t extraLS; + int16_t flags; + int32_t userData; + int16_t tabType; + int16_t tabTerminator; +} tRuler; + +typedef struct tFormatHeader +{ + int16_t version; + int32_t rulerSize; + tRuler ruler; + int32_t styleListLength; + TEStyle styleList[TOTAL_STYLES]; + LongWord numberOfStyles; +} tFormatHeader; + +typedef struct tFormat +{ + tFormatHeader header; + StyleItem styleItems[1]; +} tFormat; + +//typedef struct tStyle + + +// Globals + +static tWindowPos windowPos = { + 0xad, // height + 0x27c, // width + 0x1a, // top + 0x02, // left + 0x0 // version +}; + +// For the 6 header sizes, we are going with: +// 1 -> Helvetica 36 +// 2 -> Helvetica 30 +// 3 -> Helvetica 27 +// 4 -> Helvetica 24 +// 5 -> Helvetica 20 +// 6 -> Helvetica 18 +static uint8_t headerFontSizes[NUM_HEADER_SIZES] = { + 36, + 30, + 27, + 24, + 20, + 18 +}; + +static tFormat * formatPtr = NULL; diff --git a/md2teach/style.h b/md2teach/style.h new file mode 100644 index 0000000..4119765 --- /dev/null +++ b/md2teach/style.h @@ -0,0 +1,27 @@ +/* + * style.h + * md2teach + * + * Created by Jeremy Rand on 2021-04-24. + * + */ + +#ifndef _GUARD_PROJECTmd2teach_FILEstyle_ +#define _GUARD_PROJECTmd2teach_FILEstyle_ + +// Defines + +#define NUM_HEADER_SIZES 6 + +// This is plain, emphasized, strong or strong+empasized +#define NUM_TEXT_FORMATS 4 + +#define NUM_HEADER_STYLES (NUM_HEADER_SIZES * NUM_TEXT_FORMATS) +#define NUM_CODE_STYLES 1 +#define NUM_TEXT_STYLES NUM_TEXT_FORMATS +#define NUM_QUOTE_STYLES NUM_TEXT_FORMATS + +#define TOTAL_STYLES (NUM_HEADER_STYLES + NUM_CODE_STYLES + NUM_TEXT_STYLES + NUM_QUOTE_STYLES) + + +#endif /* define _GUARD_PROJECTmd2teach_FILEstyle_ */