diff options
Diffstat (limited to 'sc/addin/rot13')
-rw-r--r-- | sc/addin/rot13/exports.map | 11 | ||||
-rw-r--r-- | sc/addin/rot13/makefile.mk | 88 | ||||
-rw-r--r-- | sc/addin/rot13/rot13.cl | 158 | ||||
-rw-r--r-- | sc/addin/rot13/rot13.src | 58 |
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"; + }; +}; |