[Libreoffice-commits] .: unotools/inc unotools/source

Caolán McNamara caolan at kemper.freedesktop.org
Wed Mar 30 07:57:46 PDT 2011


 unotools/inc/unotools/caserotate.hxx |   50 ++++++++++++++++++++++++++
 unotools/source/i18n/caserotate.cxx  |   65 +++++++++++++++++++++++++++++++++++
 unotools/source/i18n/makefile.mk     |    1 
 3 files changed, 116 insertions(+)

New commits:
commit 4bb461d824699c1fb4cc494011ab71f7385a815c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Mar 29 21:07:32 2011 +0100

    centralize caserotate here

diff --git a/unotools/inc/unotools/caserotate.hxx b/unotools/inc/unotools/caserotate.hxx
new file mode 100644
index 0000000..c882857
--- /dev/null
+++ b/unotools/inc/unotools/caserotate.hxx
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *       Caolán McNamara <caolanm at redhat.com>
+ *
+ * Contributor(s):
+ *   Caolán McNamara <caolanm at redhat.com>
+ *   Dózsa Bálint <dozsa at linux-dugf.site>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+#ifndef INCLUDED_UNOTOOLS_CASEROTATE_HXX
+#define INCLUDED_UNOTOOLS_CASEROTATE_HXX
+
+#include <sal/config.h>
+
+#include "unotools/unotoolsdllapi.h"
+
+//TODO Use XCharacterClassification::getStringType to determine the current
+//(possibly mixed) case type and rotate to the next one
+
+class UNOTOOLS_DLLPUBLIC RotateTransliteration
+{
+private:
+    int nF3ShiftCounter;
+public:
+    RotateTransliteration() : nF3ShiftCounter(0)
+    {
+    }
+    sal_uInt32 getNextMode();
+};
+
+#endif
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/unotools/source/i18n/caserotate.cxx b/unotools/source/i18n/caserotate.cxx
new file mode 100644
index 0000000..85d8202
--- /dev/null
+++ b/unotools/source/i18n/caserotate.cxx
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *       Caolán McNamara <caolanm at redhat.com>
+ *
+ * Contributor(s):
+ *   Caolán McNamara <caolanm at redhat.com>
+ *   Dózsa Bálint <dozsa at linux-dugf.site>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_unotools.hxx"
+
+#include "unotools/caserotate.hxx"
+#include <com/sun/star/i18n/TransliterationModules.hpp>
+#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
+
+//TODO Use XCharacterClassification::getStringType to determine the current
+//(possibly mixed) case type and rotate to the next one
+
+sal_uInt32 RotateTransliteration::getNextMode()
+{
+    using namespace ::com::sun::star::i18n;
+
+    sal_uInt32 nMode = 0;
+
+    switch (nF3ShiftCounter)
+    {
+        case 0:
+            nMode = TransliterationModulesExtra::TITLE_CASE;
+            break;
+        case 1:
+            nMode = TransliterationModules_LOWERCASE_UPPERCASE;
+            break;
+        default:
+        case 2:
+            nMode = TransliterationModules_UPPERCASE_LOWERCASE;
+            nF3ShiftCounter = -1;
+            break;
+    }
+
+    nF3ShiftCounter++;
+
+    return nMode;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/unotools/source/i18n/makefile.mk b/unotools/source/i18n/makefile.mk
index bb21d65..cbe42e6 100644
--- a/unotools/source/i18n/makefile.mk
+++ b/unotools/source/i18n/makefile.mk
@@ -40,6 +40,7 @@ ENABLE_EXCEPTIONS=TRUE
 # --- Files -------------------------------------
 
 SLOFILES=	\
+    $(SLO)$/caserotate.obj \
     $(SLO)$/charclass.obj	\
     $(SLO)$/calendarwrapper.obj	\
     $(SLO)$/collatorwrapper.obj	\


More information about the Libreoffice-commits mailing list