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

Reply via email to