summaryrefslogtreecommitdiff
path: root/sc/addin/rot13
diff options
context:
space:
mode:
Diffstat (limited to 'sc/addin/rot13')
-rw-r--r--sc/addin/rot13/exports.map11
-rw-r--r--sc/addin/rot13/makefile.mk88
-rw-r--r--sc/addin/rot13/rot13.cl158
-rw-r--r--sc/addin/rot13/rot13.src58
4 files changed, 315 insertions, 0 deletions
diff --git a/sc/addin/rot13/exports.map b/sc/addin/rot13/exports.map
new file mode 100644
index 000000000000..c662c9148aba
--- /dev/null
+++ b/sc/addin/rot13/exports.map
@@ -0,0 +1,11 @@
+UDK_3_0_0 {
+ global:
+ GetFunctionCount;
+ GetFunctionData;
+ GetParameterDescription;
+ SetLanguage;
+ Rot13;
+
+ local:
+ *;
+};
diff --git a/sc/addin/rot13/makefile.mk b/sc/addin/rot13/makefile.mk
new file mode 100644
index 000000000000..a33c50d2a725
--- /dev/null
+++ b/sc/addin/rot13/makefile.mk
@@ -0,0 +1,88 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=sc
+TARGET=rot
+LIBTARGET=NO
+
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+CL2C=+$(PERL) $(MISC)$/cl2c.pl
+CL2CRID=RID_SC_ADDIN_ROT13
+CL2CSRC=$(TARGET)13.src
+
+# --- Files --------------------------------------------------------
+
+CFILES= $(MISC)$/x$(TARGET).c
+
+SLOFILES= \
+ $(SLO)$/x$(TARGET).obj
+
+# ==========================================================================
+
+SHL1TARGET= rot$(DLLPOSTFIX)
+SHL1IMPLIB= irot
+SHL1OBJS= $(SLO)$/x$(TARGET).obj
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+
+.IF "$(GUI)" == "WNT"
+SHL1STDLIBS= $(GDI32LIB) $(ADVAPI32LIB) $(COMDLG32LIB) \
+ $(UUIDLIB) $(OLE32LIB) $(SHELL32LIB) $(WINSPOOLLIB)
+.IF "$(GVER)" == "W40"
+SHL1STDLIBS= $(SHL1STDLIBS) $(COMCTL32LIB)
+.ENDIF # W40
+.ENDIF # WNT
+
+# --- Targets -------------------------------------------------------
+
+ALLTAR: $(MISC)$/rot.lst
+
+.INCLUDE: target.mk
+
+$(MISC)$/x$(TARGET).c: $(TARGET)13.cl $(CL2CSRC) $(MISC)$/cl2c.pl
+ $(CL2C) $(TARGET)13.cl $(MISC)$/x$(TARGET).c $(CL2CSRC) $(CL2CRID)
+
+# copy file to include in package
+$(INCCOM)$/xlang.h : $(SOLARINCDIR)$/i18npool$/lang.h
+ @$(COPY) $(SOLARINCDIR)$/i18npool$/lang.h $@
+
+$(SLOFILES) : $(INCCOM)$/xlang.h $(CFILES)
+
+$(MISC)$/rot.lst : \
+ $(MISC)$/x$(TARGET).c \
+ $(INCCOM)$/xlang.h \
+ ..$/inc$/rot13.hrc \
+ ..$/inc$/addin.h
+ @echo $< > $@
diff --git a/sc/addin/rot13/rot13.cl b/sc/addin/rot13/rot13.cl
new file mode 100644
index 000000000000..5c7e92ae3d3f
--- /dev/null
+++ b/sc/addin/rot13/rot13.cl
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+/* static char rot13_Id[]="@(#) StarCalc Rot13 AddIn (c) 1998-2000 Sun Microsystems, Inc."; */
+
+#include <string.h>
+#include <stdio.h>
+
+#include <xlang.h>
+#include <addin.h>
+#include <rot13.hrc>
+
+/**
+ * the current language the Addin is using
+ */
+static USHORT _nLanguage=LANGUAGE_ENGLISH;
+
+/**
+ * StarCalc calls this function to set a new current Language for the Addin
+ *
+ * @param *nLanguage
+ *
+ */
+void CALLTYPE SetLanguage( USHORT* nLanguage )
+{
+ _nLanguage = GetNeutralLanguage( *nLanguage );
+}
+
+
+/**
+ * Tell StarCalc how many new functions this Addin provides.
+ *
+ * @param *nCount - returns the number of functions which are exported to StarCalc
+ *
+ */
+void CALLTYPE GetFunctionCount( USHORT *nCount )
+{
+ *nCount = 1;
+}
+
+/**
+ * Provides neccessary data for each new function to StarCalc
+ *
+ * @param *nNo Input: Function number between 0 and nCount - 1
+ * @param *pFuncName Output: Functionname which should be called in the AddIn-DLL
+ * @param *nParamCount Output: Number of Parameter. Must be greater than 0, because there's always a return-Value. Maximum is 16.
+ * @param *peType Output: Pointer to arrray with exactly 16 variables of typ Paramtype. nParamCount Entries are set to the type of the corresponding Parameters.
+ * @param *pInternalName Output: Functionname as seen by the Spreadsheet user
+ *
+ * @see #GetFunctionCount, #GetParameterDescription
+ *
+ */
+void CALLTYPE GetFunctionData( USHORT * nNo,
+ char * pFuncName,
+ USHORT * nParamCount,
+ ParamType * peType,
+ char * pInternalName )
+{
+
+ switch( *nNo ) {
+ case 0:
+ /* the function name is the same in all languages */
+ SO_StringCopy( pInternalName, "Rot13" );
+ SO_StringCopy( pFuncName, "Rot13" );
+ peType[0] = PTR_STRING;
+ peType[1] = PTR_STRING;
+ *nParamCount=2;
+ break;
+ default:
+ *nParamCount = 0;
+ *pFuncName = 0;
+ *pInternalName = 0;
+ break;
+ }
+}
+
+/**
+ * Provides descriptions for each new function to StarCalc
+ * which are shown is the autopilot
+ *
+ * @param *nNo Input Parameter, Function number between 0 and nCount - 1
+ * @param *nParam Parameter Number
+ * @param *pName Output: Name of the parameter
+ * @param *pDesc Output: Description of the parameter
+ *
+ * @see #GetFunctionCount, #GetParameterDescription
+ */
+void CALLTYPE GetParameterDescription( USHORT* nNo, USHORT* nParam,
+char* pName, char* pDesc )
+{
+ *pName = 0;
+ *pDesc = 0;
+
+
+ switch ( *nNo ) {
+ case 0:
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(ROT13_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(ROT13_PAR1_NAME));
+ SO_StringCopy(pDesc,getText(ROT13_PAR1_DESC));
+ }
+ }
+}
+
+/**
+ * ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet
+ *
+ * @param *ret
+ * @param *src
+ *
+ * ER: well, my personal favorite algorithm is
+ * main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
+ * but for clarification we do it somehow different here ;-)
+ */
+void CALLTYPE Rot13(char *ret, char *src)
+{
+ if ( ! ret ) return;
+ if ( ! src ) *ret='\0';
+
+ for(;src && *src; src++ , ret++) {
+ *ret=*src;
+ if (*ret >= 'A' && *ret <= 'Z') {
+ if ( (*ret +=13) > 'Z' ) *ret-=26;
+ } else if (*ret >= 'a' && *ret < 'n') {
+ *ret +=13;
+ } else if (*ret >= 'n' && *ret <= 'z') {
+ *ret -=13;
+ }
+ }
+ *ret=*src;
+}
diff --git a/sc/addin/rot13/rot13.src b/sc/addin/rot13/rot13.src
new file mode 100644
index 000000000000..63165c44c985
--- /dev/null
+++ b/sc/addin/rot13/rot13.src
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#include "sc.hrc" // Definition RID_XXX in StarCalc
+#include "rot13.hrc"
+
+/* #i54546# The code belonging to this resource file is sample code for the
+ * legacy AddIn interface. The interface is still supported, but deprecated.
+ * The strings here were displayed in the function wizard. To prevent
+ * duplicated and useless translation effort (functions and strings are also
+ * part of the new scaddin module), the strings here are now layed out as fixed
+ * untranslatable strings. The entire mechanism with the ../util/cl2c.pl perl
+ * script merging the raw .cl and the .src during build time didn't work
+ * anymore anyway, since we switched from MS-LCIDs / telephone area codes to
+ * ISO codes for resources, and introduced localize.sdf files. Returned was
+ * always an empty string. Now at least the fixed English string is returned.
+ * */
+
+Resource RID_SC_ADDIN_ROT13
+{
+ String ROT13_DESC // Description
+ {
+ Text = "ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet";
+ };
+
+ String ROT13_PAR1_NAME // Name of Parameter 1
+ {
+ Text = "Text";
+ };
+
+ String ROT13_PAR1_DESC // Description of Parameter 1
+ {
+ Text = "The text that is to be rotated";
+ };
+};