Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Attached patches implement import of CSS text-transform property and extend 
the import and export to work with all HTML browser compatibility options.

Contributed under LGPLv3+ and MPL.

Harri
From 8eea1bf955f6f2cb7c0e0622b0b2fa6975cee3db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Harri=20Pitk=C3=A4nen?= <hatapitk@iki.fi>
Date: Sat, 18 Jun 2011 15:57:14 +0300
Subject: [PATCH 1/2] Import and export character case transformations
 unconditionally to/from HTML

Import small caps and export small caps, lowecase, uppercase and titlecase
transformations unconditionally to/from HTML. Previously import and export
was limited by browser compatibility settings but all mainstream browsers
released within last 5 years or so should support the relevant CSS attributes.
---
 sw/source/filter/html/css1atr.cxx |    3 ---
 sw/source/filter/html/htmlatr.cxx |    4 ++--
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx
index 92a149b..d980b55 100644
--- a/sw/source/filter/html/css1atr.cxx
+++ b/sw/source/filter/html/css1atr.cxx
@@ -2561,9 +2561,6 @@ static Writer& OutCSS1_SvxCaseMap( Writer& rWrt, const SfxPoolItem& rHt )
 {
     SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
 
-    if( !rHTMLWrt.IsHTMLMode(HTMLMODE_SMALL_CAPS) )
-        return rWrt;
-
     switch( ((const SvxCaseMapItem&)rHt).GetCaseMap() )
     {
     case SVX_CASEMAP_NOT_MAPPED:
diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx
index 2d10e6f..f7a0ec1 100644
--- a/sw/source/filter/html/htmlatr.cxx
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -1505,8 +1505,8 @@ HTMLOnOffState HTMLEndPosLst::GetHTMLItemState( const SfxPoolItem& rItem )
         break;
 
     case RES_CHRATR_CASEMAP:
-        if( IsHTMLMode(HTMLMODE_SMALL_CAPS) )
-            eState = HTML_STYLE_VALUE;
+        eState = HTML_STYLE_VALUE;
+        break;
 
     case RES_CHRATR_KERNING:
         if( IsHTMLMode(HTMLMODE_FULL_STYLES) )
-- 
1.7.5.4

From e0d8e9114c6778bb534a61ee0f50dcf11a393ad0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Harri=20Pitk=C3=A4nen?= <hatapitk@iki.fi>
Date: Sat, 18 Jun 2011 21:12:01 +0300
Subject: [PATCH 2/2] Support CSS text-transform property in HTML import

---
 sw/source/filter/html/svxcss1.cxx |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/sw/source/filter/html/svxcss1.cxx b/sw/source/filter/html/svxcss1.cxx
index 117ef4e..2fcf673 100644
--- a/sw/source/filter/html/svxcss1.cxx
+++ b/sw/source/filter/html/svxcss1.cxx
@@ -128,6 +128,14 @@ static CSS1PropertyEnum const aFontVariantTable[] =
     { 0,                                       0                                       }
 };
 
+static CSS1PropertyEnum const aTextTransformTable[] =
+{
+    { sCSS1_PV_uppercase,  SVX_CASEMAP_VERSALIEN },
+    { sCSS1_PV_lowercase,  SVX_CASEMAP_GEMEINE   },
+    { sCSS1_PV_capitalize, SVX_CASEMAP_TITEL     },
+    { 0,                   0                     }
+};
+
 static CSS1PropertyEnum const aDirectionTable[] =
 {
     { sCSS1_PV_ltr,                    FRMDIR_HORI_LEFT_TOP            },
@@ -1314,6 +1322,32 @@ static void ParseCSS1_font_variant( const CSS1Expression *pExpr,
     }
 }
 
+static void ParseCSS1_text_transform( const CSS1Expression *pExpr,
+                                    SfxItemSet &rItemSet,
+                                    SvxCSS1PropertyInfo& /*rPropInfo*/,
+                                    const SvxCSS1Parser& /*rParser*/ )
+{
+    OSL_ENSURE( pExpr, "no expression" );
+
+    // none | capitalize | uppercase | lowercase
+
+    switch( pExpr->GetType() )
+    {
+    case CSS1_IDENT:
+        {
+            sal_uInt16 nCaseMap;
+            if( SvxCSS1Parser::GetEnum( aTextTransformTable, pExpr->GetString(),
+                                        nCaseMap ) )
+            {
+                rItemSet.Put( SvxCaseMapItem( (SvxCaseMap)nCaseMap,
+                                                aItemIds.nCaseMap ) );
+            }
+        }
+    default:
+        ;
+    }
+}
+
 /*  */
 
 static void ParseCSS1_color( const CSS1Expression *pExpr,
@@ -3140,6 +3174,7 @@ static CSS1PropEntry aCSS1PropFnTab[] =
     CSS1_PROP_ENTRY(text_align),
     CSS1_PROP_ENTRY(text_decoration),
     CSS1_PROP_ENTRY(text_indent),
+    CSS1_PROP_ENTRY(text_transform),
     CSS1_PROP_ENTRY(margin_left),
     CSS1_PROP_ENTRY(margin_right),
     CSS1_PROP_ENTRY(margin_top),
-- 
1.7.5.4


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.