Hello all,
A patch implementing a Rot13 decoder off the Export form is attached. I
find this very useful for decoding the 'hints' from a plucked geocache page
off www.geocaching.com. I think it a fairly unobtrusive addition, but If
it is too special-purpose I could wrap some ifdefs around it and implement
a configure option upon request.
The patch is against the recent plucker_src-1.8.tar.bz2 source.
Potential caveat:
I am not clear on how this will interact with unicode text (see the inline
comment for my musings). AFAICT, the Char type looked like it was at least
guaranteed to be 8 bit/character, but I don't know how to tell if it is
ascii, UTF-8, or some other 8-bit map for with Rot13 doesn't apply.
Can someone who understands this better summarize how this might be handled
in a unicode friendly manner?
-- Brad
--
Brad Sawatzky <[EMAIL PROTECTED]>
University of Virginia Physics Department
Ph: (434) 924-6580 Fax: (434) 924-7909
diff -ubBr plucker-1.8_orig/viewer/hardcopyform.c plucker-1.8_1/viewer/hardcopyform.c
--- plucker-1.8_orig/viewer/hardcopyform.c 2004-05-08 05:04:54.000000000 -0400
+++ plucker-1.8_1/viewer/hardcopyform.c 2004-06-02 20:33:58.000000000 -0400
@@ -161,6 +161,59 @@
break;
}
+ case frmHardcopyRot13:
+ {
+ /* FIXME: This pretty much assumes single-byte ascii text -- this
+ * assumption is, in general, false(?) Since the conversion is
+ * done in place and the string is always terminated with a NULL,
+ * this will just generate gobbledygook on real multi-byte unicode
+ * (rather than stomp over the stack).
+ * Maybe. I hope. Should really fix this.
+ *
+ * All of the 'extra' work here is a hegde against my ignorance of what
+ * the palmos might do to the field behind my back... See warning in
+ * palmos docs describing FldGetTextHandle() which directs me to follow
+ * this procedure.
+ */
+ FieldType *field;
+ MemHandle textH;
+ Char* word;
+ UInt16 scrollPos, textHeight, fieldHeight, maxValue;
+ UInt16 fieldScrPos;
+
+ field = GetObjectPtr( frmHardcopyField );
+ fieldScrPos = FldGetScrollPosition(field);
+
+ /* manipulate the text */
+ textH = FldGetTextHandle(field);
+ FldSetTextHandle (field, NULL);
+ word = MemHandleLock(textH);
+ while( *word != NULL) {
+ if( *word >= 'a' && *word <= 'z')
+ *word = 'a' + (*word - 'a' + 13) % 26;
+ else
+ if( *word >= 'A' && *word <= 'Z')
+ *word = 'A' + (*word - 'A' + 13) % 26;
+ word++;
+ }
+ MemHandleUnlock( textH );
+ FldSetTextHandle (field, textH);
+
+ FldSetScrollPosition(field, fieldScrPos);
+ FldGetScrollValues(field, &scrollPos, &textHeight, &fieldHeight);
+ FldDrawField(field);
+ if (textHeight > fieldHeight)
+ maxValue = textHeight - fieldHeight;
+ else if (scrollPos)
+ maxValue = scrollPos;
+ else
+ maxValue = 0;
+ SclSetScrollBar (GetObjectPtr( frmHardcopyScrollBar ),
+ scrollPos, 0, maxValue, fieldHeight-1);
+
+ handled = true;
+ break;
+ }
default:
handled = true;
break;
diff -ubBr plucker-1.8_orig/viewer/langs/ca.rcp plucker-1.8_1/viewer/langs/ca.rcp
--- plucker-1.8_orig/viewer/langs/ca.rcp 2004-03-07 00:29:07.000000000 -0500
+++ plucker-1.8_1/viewer/langs/ca.rcp 2004-06-02 21:03:20.000000000 -0400
@@ -737,6 +737,7 @@
"$$HARDCOPY: TITLE" = "Exportar a Memo"
"$$HARDCOPY: CANCEL" = "Cancel�lar"
"$$HARDCOPY: EXPORT" = "Exportar"
+"$$HARDCOPY: ROT13" = "Rot13"
/*** EXPORT LINK TO MEMO ***/
diff -ubBr plucker-1.8_orig/viewer/langs/cs.rcp plucker-1.8_1/viewer/langs/cs.rcp
--- plucker-1.8_orig/viewer/langs/cs.rcp 2004-03-07 00:29:07.000000000 -0500
+++ plucker-1.8_1/viewer/langs/cs.rcp 2004-06-02 21:03:20.000000000 -0400
@@ -761,6 +761,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/****************************************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/da.rcp plucker-1.8_1/viewer/langs/da.rcp
--- plucker-1.8_orig/viewer/langs/da.rcp 2004-03-07 00:29:08.000000000 -0500
+++ plucker-1.8_1/viewer/langs/da.rcp 2004-06-02 21:03:20.000000000 -0400
@@ -729,6 +729,7 @@
"$$HARDCOPY: TITLE" = "Eksport�r til memo"
"$$HARDCOPY: CANCEL" = "Annull�r"
"$$HARDCOPY: EXPORT" = "Eksport�r"
+"$$HARDCOPY: ROT13" = "Rot13"
/*** EXPORT LINK TO MEMO ***/
diff -ubBr plucker-1.8_orig/viewer/langs/de.rcp plucker-1.8_1/viewer/langs/de.rcp
--- plucker-1.8_orig/viewer/langs/de.rcp 2004-03-07 00:29:08.000000000 -0500
+++ plucker-1.8_1/viewer/langs/de.rcp 2004-06-02 21:03:20.000000000 -0400
@@ -780,6 +780,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/****************************************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/en.rcp plucker-1.8_1/viewer/langs/en.rcp
--- plucker-1.8_orig/viewer/langs/en.rcp 2004-03-07 00:29:08.000000000 -0500
+++ plucker-1.8_1/viewer/langs/en.rcp 2004-06-02 21:03:20.000000000 -0400
@@ -726,6 +726,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/*** EXPORT LINK TO MEMO ***/
diff -ubBr plucker-1.8_orig/viewer/langs/es.rcp plucker-1.8_1/viewer/langs/es.rcp
--- plucker-1.8_orig/viewer/langs/es.rcp 2004-03-07 00:29:08.000000000 -0500
+++ plucker-1.8_1/viewer/langs/es.rcp 2004-06-02 21:03:20.000000000 -0400
@@ -782,6 +782,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/****************************************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/fo.rcp plucker-1.8_1/viewer/langs/fo.rcp
--- plucker-1.8_orig/viewer/langs/fo.rcp 2004-03-07 00:29:08.000000000 -0500
+++ plucker-1.8_1/viewer/langs/fo.rcp 2004-06-02 21:03:20.000000000 -0400
@@ -795,6 +795,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/****************************************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/fr.rcp plucker-1.8_1/viewer/langs/fr.rcp
--- plucker-1.8_orig/viewer/langs/fr.rcp 2004-05-08 05:04:54.000000000 -0400
+++ plucker-1.8_1/viewer/langs/fr.rcp 2004-06-02 21:03:20.000000000 -0400
@@ -778,6 +778,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/****************************************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/it.rcp plucker-1.8_1/viewer/langs/it.rcp
--- plucker-1.8_orig/viewer/langs/it.rcp 2004-03-07 00:29:08.000000000 -0500
+++ plucker-1.8_1/viewer/langs/it.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -774,6 +774,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/****************************************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/ja.rcp plucker-1.8_1/viewer/langs/ja.rcp
--- plucker-1.8_orig/viewer/langs/ja.rcp 2004-03-07 00:29:08.000000000 -0500
+++ plucker-1.8_1/viewer/langs/ja.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -798,6 +798,7 @@
/********************************************************/
"$$HARDCOPY: TITLE" = "Export to Memopad"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/********************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/no.rcp plucker-1.8_1/viewer/langs/no.rcp
--- plucker-1.8_orig/viewer/langs/no.rcp 2004-03-07 00:29:09.000000000 -0500
+++ plucker-1.8_1/viewer/langs/no.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -748,6 +748,7 @@
"$$HARDCOPY: TITLE" = "Eksporter til Memo"
"$$HARDCOPY: CANCEL" = "Avbryt"
"$$HARDCOPY: EXPORT" = "Eksporter"
+"$$HARDCOPY: ROT13" = "Rot13"
/*** EXPORT LINK TO MEMO ***/
diff -ubBr plucker-1.8_orig/viewer/langs/pl.rcp plucker-1.8_1/viewer/langs/pl.rcp
--- plucker-1.8_orig/viewer/langs/pl.rcp 2004-03-07 00:29:09.000000000 -0500
+++ plucker-1.8_1/viewer/langs/pl.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -752,6 +752,7 @@
"$$HARDCOPY: TITLE" = "Eksportuj do Memo"
"$$HARDCOPY: CANCEL" = "Anuluj"
"$$HARDCOPY: EXPORT" = "Eksportuj"
+"$$HARDCOPY: ROT13" = "Rot13"
/*** EXPORT LINK TO MEMO ***/
diff -ubBr plucker-1.8_orig/viewer/langs/ru.rcp plucker-1.8_1/viewer/langs/ru.rcp
--- plucker-1.8_orig/viewer/langs/ru.rcp 2004-03-07 00:29:09.000000000 -0500
+++ plucker-1.8_1/viewer/langs/ru.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -770,6 +770,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/****************************************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/sample.rcp
plucker-1.8_1/viewer/langs/sample.rcp
--- plucker-1.8_orig/viewer/langs/sample.rcp 2004-03-07 00:29:09.000000000 -0500
+++ plucker-1.8_1/viewer/langs/sample.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -735,6 +735,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/*** EXPORT LINK TO MEMO ***/
diff -ubBr plucker-1.8_orig/viewer/langs/th.rcp plucker-1.8_1/viewer/langs/th.rcp
--- plucker-1.8_orig/viewer/langs/th.rcp 2004-03-07 00:29:09.000000000 -0500
+++ plucker-1.8_1/viewer/langs/th.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -765,6 +765,7 @@
"$$HARDCOPY: TITLE" = "Export to Memo"
"$$HARDCOPY: CANCEL" = "Cancel"
"$$HARDCOPY: EXPORT" = "Export"
+"$$HARDCOPY: ROT13" = "Rot13"
/********************************************************/
diff -ubBr plucker-1.8_orig/viewer/langs/tr.rcp plucker-1.8_1/viewer/langs/tr.rcp
--- plucker-1.8_orig/viewer/langs/tr.rcp 2004-03-07 00:29:09.000000000 -0500
+++ plucker-1.8_1/viewer/langs/tr.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -779,6 +779,7 @@
"$$HARDCOPY: TITLE" = "Memo'ya Ihra� Et"
"$$HARDCOPY: CANCEL" = "�ptal"
"$$HARDCOPY: EXPORT" = "�hra� et"
+"$$HARDCOPY: ROT13" = "Rot13"
/*** EXPORT LINK TO MEMO ***/
diff -ubBr plucker-1.8_orig/viewer/langs/zh_CN.rcp plucker-1.8_1/viewer/langs/zh_CN.rcp
--- plucker-1.8_orig/viewer/langs/zh_CN.rcp 2004-03-03 12:17:46.000000000 -0500
+++ plucker-1.8_1/viewer/langs/zh_CN.rcp 2004-06-02 21:03:21.000000000 -0400
@@ -699,6 +699,7 @@
"$$HARDCOPY: TITLE" = "���������±�"
"$$HARDCOPY: CANCEL" = "ȡ��"
"$$HARDCOPY: EXPORT" = "����"
+"$$HARDCOPY: ROT13" = "Rot13"
/*** EXPORT LINK TO MEMO ***/
diff -ubBr plucker-1.8_orig/viewer/resourceids.h plucker-1.8_1/viewer/resourceids.h
--- plucker-1.8_orig/viewer/resourceids.h 2004-05-11 21:52:07.000000000 -0400
+++ plucker-1.8_1/viewer/resourceids.h 2004-06-02 20:38:10.000000000 -0400
@@ -552,6 +552,7 @@
#define frmHardcopyExport 4702
#define frmHardcopyCancel 4703
#define frmHardcopyScrollBar 4704
+#define frmHardcopyRot13 4705
#define frmKeyboard 4800
#define frmKeyboardStdKey 4801
diff -ubBr plucker-1.8_orig/viewer/viewer.rcp.in plucker-1.8_1/viewer/viewer.rcp.in
--- plucker-1.8_orig/viewer/viewer.rcp.in 2004-05-14 19:11:27.000000000 -0400
+++ plucker-1.8_1/viewer/viewer.rcp.in 2004-06-02 20:52:57.000000000 -0400
@@ -1862,6 +1862,8 @@
AT (1 [EMAIL PROTECTED] AUTO AUTO)
BUTTON "$$HARDCOPY: EXPORT" ID frmHardcopyExport
AT (PREVRIGHT+5 PREVTOP AUTO AUTO)
+ BUTTON "$$HARDCOPY: ROT13" ID frmHardcopyRot13
+ AT (PREVRIGHT+5 PREVTOP AUTO AUTO)
FIELD ID frmHardcopyField AT (2 15 150 [EMAIL PROTECTED]) USABLE LEFTALIGN
FONT 0 EDITABLE MAXCHARS 2900 MULTIPLELINES UNDERLINED
SCROLLBAR ID frmHardcopyScrollBar AT (PREVRIGHT+1 PREVTOP 7 PREVHEIGHT)
@@ -1880,6 +1882,7 @@
0 DIA_W_PLUS_DW+DIA_H_PLUS_DH 0 // the form itself
frmHardcopyCancel DIA_Y_BOTTOM 0
frmHardcopyExport DIA_Y_BOTTOM 0
+ frmHardcopyRot13 DIA_Y_BOTTOM 0
frmHardcopyField DIA_W_PLUS_DW+DIA_H_PLUS_DH 0
frmHardcopyScrollBar DIA_H_PLUS_DH+DIA_X_RIGHT 0
GSI_OBJECT_ID DIA_X_RIGHT+DIA_Y_BOTTOM 0