summaryrefslogtreecommitdiff
path: root/apps/windoze/swdisprtf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'apps/windoze/swdisprtf.cpp')
-rw-r--r--apps/windoze/swdisprtf.cpp187
1 files changed, 187 insertions, 0 deletions
diff --git a/apps/windoze/swdisprtf.cpp b/apps/windoze/swdisprtf.cpp
new file mode 100644
index 0000000..84593c6
--- /dev/null
+++ b/apps/windoze/swdisprtf.cpp
@@ -0,0 +1,187 @@
+//---------------------------------------------------------------------------
+#include <vcl\vcl.h>
+#pragma hdrstop
+
+#include "swdisprtf.h"
+//---------------------------------------------------------------------------
+static inline SWDispRTF *ValidCtrCheck()
+{
+ return new SWDispRTF(NULL);
+}
+//---------------------------------------------------------------------------
+__fastcall SWDispRTF::SWDispRTF(TComponent* Owner)
+#ifndef USEOLDRTF
+ : TRxRichEdit(Owner)
+#else
+ : TRichEdit(Owner)
+#endif
+{
+ char buf[4096];
+
+ RTFHeader = defRTFHeader;
+ RTFHeadMargin = defRTFHeadMargin;
+ sprintf(buf, defRTFTrailer, 24);
+ RTFTrailer = buf;
+
+ sprintf(buf, defRTFChapterMarkPre, 30);
+ RTFChapterMarkPre = buf;
+ sprintf(buf, defRTFChapterMarkPost, 10);
+ RTFChapterMarkPost = buf;
+
+ sprintf(buf, defRTFVerseMarkPre, 20);
+ RTFVerseMarkPre = buf;
+ RTFVerseMarkPost = defRTFVerseMarkPost;
+
+ sprintf(buf, defRTFVersePre, 24);
+ RTFVersePre = buf;
+ RTFVersePost = defRTFVersePost;
+
+ RTFStream = new TMemoryStream();
+
+ ExpandNewLine = true;
+}
+
+__fastcall SWDispRTF::~SWDispRTF()
+{
+ if (RTFStream)
+ delete RTFStream;
+}
+
+
+void __fastcall SWDispRTF::Loaded(void)
+{
+#ifndef USEOLDRTF
+ TRxRichEdit::Loaded();
+#else
+ TRichEdit::Loaded();
+#endif
+/*
+ if (RTFHeader == "")
+ RTFHeader = defRTFHeader;
+ if (RTFTrailer == "")
+ RTFTrailer = defRTFTrailer;
+
+ if (RTFChapterMarkPre == "")
+ RTFChapterMarkPre = defRTFChapterMarkPre;
+ if (RTFChapterMarkPost == "")
+ RTFChapterMarkPost = defRTFChapterMarkPost;
+
+ if (RTFVerseMarkPre == "")
+ RTFVerseMarkPre = defRTFVerseMarkPre;
+ if (RTFVerseMarkPost == "")
+ RTFVerseMarkPost = defRTFVerseMarkPost;
+
+ if (RTFVersePre == "")
+ RTFVersePre = defRTFVersePre;
+ if (RTFVersePost == "")
+ RTFVersePost = defRTFVersePost;
+*/
+}
+
+
+int __fastcall SWDispRTF::GetMySelStart()
+{
+ CHARRANGE cr;
+
+ SendMessage(Handle, EM_EXGETSEL, 0, (long)&cr);
+ return cr.cpMin;
+}
+
+
+void __fastcall SWDispRTF::SetMySelStart(int iselstart)
+{
+ CHARRANGE cr;
+
+ cr.cpMin = iselstart;
+ cr.cpMax = iselstart;
+ SendMessage(Handle, EM_EXSETSEL, 0, (long)&cr);
+}
+
+
+char SWDispRTF::Display(SWModule &Module)
+{
+ System::AnsiString newtext, tmptext;
+
+ newtext = RTFHeader;
+ newtext = newtext + RTFHeadMargin;
+ Module.Error(); // clear error;
+ newtext = newtext + "\\pard \\nowidctlpar \\cf7\\f0 ";
+ (const char *)Module; // force key to snap to entry before pulling out the text of the key
+ newtext = newtext + RTFVerseMarkPre + Module.KeyText() + RTFVerseMarkPost;
+ tmptext = "";
+/*
+ for (char *loop = (char *)Module; *loop; loop++) {
+ if ((*loop == '\n') && (ExpandNewLine))
+ tmptext += "\\par ";
+ else tmptext += *loop;
+ }
+*/
+ tmptext = (const char *)Module;
+
+ newtext = newtext + RTFVersePre + " " + tmptext + RTFVersePost;
+ newtext = newtext + RTFTrailer;
+ RTFStream->Clear();
+ RTFStream->WriteBuffer(newtext.c_str(), newtext.Length());
+ RTFStream->Position = 0;
+ Lines->LoadFromStream(RTFStream);
+ return 0;
+}
+
+/*
+void SWDispRTF::SetModule(SWText *imodule)
+{
+ FModule = imodule;
+}
+
+
+SWText *SWDispRTF::GetModule()
+{
+ return FModule;
+}
+*/
+
+
+int __fastcall SWDispRTF::getFontSize() {
+ return fontSize;
+}
+
+
+void __fastcall SWDispRTF::setFontSize(int iFontSize) {
+ fontSize = iFontSize;
+ recalcHeaders();
+}
+
+
+void SWDispRTF::recalcHeaders() {
+
+ char buf[4096];
+
+ sprintf(buf, defRTFTrailer, 24 + FontSize);
+ RTFTrailer = buf;
+
+ sprintf(buf, defRTFChapterMarkPre, 30 + FontSize);
+ RTFChapterMarkPre = buf;
+ sprintf(buf, defRTFChapterMarkPost, 10 + FontSize);
+ RTFChapterMarkPost = buf;
+
+ sprintf(buf, defRTFVerseMarkPre, 20 + FontSize);
+ RTFVerseMarkPre = buf;
+
+ sprintf(buf, defRTFVersePre, 24 + FontSize);
+ RTFVersePre = buf;
+ fontSize = 0; // (+/-)
+}
+
+
+//---------------------------------------------------------------------------
+namespace Swdisprtf
+{
+ void __fastcall Register()
+ {
+ TComponentClass classes[1] = {__classid(SWDispRTF)};
+ RegisterComponents("SWORD", classes, 0);
+ }
+}
+//---------------------------------------------------------------------------
+
+