[Libreoffice-commits] core.git: sc/source

Joan Paraiso phora.public at outlook.com
Thu Oct 1 06:42:13 PDT 2015


 sc/source/filter/html/htmlexp.cxx  |   62 +++++++++++++++++++++++++++++++++++++
 sc/source/filter/html/htmlexp2.cxx |    2 -
 2 files changed, 63 insertions(+), 1 deletion(-)

New commits:
commit 503ea2d347c696eff22a87df11c8c377f0f6ddc9
Author: Joan Paraiso <phora.public at outlook.com>
Date:   Fri Sep 25 01:50:36 2015 -0700

    Render the notes in spreadsheets as inline html comments
    
    It's more valuable to have the raw text data of the html instead of
    having it locked up in images. If the comments are exported as
    images, then it makes it almost impossible to discern what comment
    belongs to what cell when viewing the html file itself.
    
    This is done by rendering the comments in their own comment tag
    (to make it still easy to extract from scripts that modify html)
    that is shown to the user. This element is initially not displayed
    until the user hovers over the comment indicator
    
    The comment indicator is denoted by a 0.5em by 0.5em red square with
    a black border. The notes will always appear on a pale yellow
    background with black text when the indicator is hovered over.
    
    Change-Id: I01a3dfd77ec54566e64b196b8df3309ea941ad4c
    Reviewed-on: https://gerrit.libreoffice.org/18837
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/filter/html/htmlexp.cxx b/sc/source/filter/html/htmlexp.cxx
index fef9390..8ddd831 100644
--- a/sc/source/filter/html/htmlexp.cxx
+++ b/sc/source/filter/html/htmlexp.cxx
@@ -52,6 +52,7 @@
 #include "htmlexp.hxx"
 #include "filter.hxx"
 #include "global.hxx"
+#include "postit.hxx"
 #include "document.hxx"
 #include "attrib.hxx"
 #include "patattr.hxx"
@@ -88,6 +89,13 @@ const static sal_Char sMyBegComment[]   = "<!-- ";
 const static sal_Char sMyEndComment[]   = " -->";
 const static sal_Char sFontFamily[]     = "font-family:";
 const static sal_Char sFontSize[]       = "font-size:";
+const static sal_Char sDisplay[]        = "display:";
+const static sal_Char sBorder[]         = "border:";
+const static sal_Char sPadding[]        = "padding:";
+const static sal_Char sPosition[]       = "position:";
+const static sal_Char sBackground[]     = "background:";
+const static sal_Char sWidth[]          = "width:";
+const static sal_Char sHeight[]         = "height:";
 
 const sal_uInt16 ScHTMLExport::nDefaultFontSize[SC_HTML_FONTSIZES] =
 {
@@ -390,6 +398,38 @@ void ScHTMLExport::WriteHeader()
     }
     rStrm.WriteCharPtr( "; " ).WriteCharPtr( sFontSize )
        .WriteCharPtr( GetFontSizeCss( ( sal_uInt16 ) aHTMLStyle.nFontHeight ) ).WriteCharPtr( " }" );
+
+    OUT_LF();
+
+    // write the style for the comments to make them stand out from normal cell content
+    // this is done through only showing the cell contents when the custom indicator is hovered
+    rStrm.WriteCharPtr( OOO_STRING_SVTOOLS_HTML_anchor ).WriteCharPtr(".comment-indicator:hover")
+       .WriteCharPtr(" + ").WriteCharPtr( OOO_STRING_SVTOOLS_HTML_comment2 ).WriteCharPtr(" { ")
+       .WriteCharPtr(sBackground).WriteCharPtr("#ffd").WriteCharPtr("; ")
+       .WriteCharPtr(sPosition).WriteCharPtr("absolute").WriteCharPtr("; ")
+       .WriteCharPtr(sDisplay).WriteCharPtr("block").WriteCharPtr("; ")
+       .WriteCharPtr(sBorder).WriteCharPtr("1px solid black").WriteCharPtr("; ")
+       .WriteCharPtr(sPadding).WriteCharPtr("0.5em").WriteCharPtr("; ")
+       .WriteCharPtr(" } ");
+
+    OUT_LF();
+
+    rStrm.WriteCharPtr( OOO_STRING_SVTOOLS_HTML_anchor ).WriteCharPtr(".comment-indicator")
+        .WriteCharPtr(" { ")
+        .WriteCharPtr(sBackground).WriteCharPtr("red").WriteCharPtr("; ")
+        .WriteCharPtr(sDisplay).WriteCharPtr("inline-block").WriteCharPtr("; ")
+        .WriteCharPtr(sBorder).WriteCharPtr("1px solid black").WriteCharPtr("; ")
+        .WriteCharPtr(sWidth).WriteCharPtr("0.5em").WriteCharPtr("; ")
+        .WriteCharPtr(sHeight).WriteCharPtr("0.5em").WriteCharPtr("; ")
+        .WriteCharPtr(" } ");
+
+    OUT_LF();
+
+    rStrm.WriteCharPtr( OOO_STRING_SVTOOLS_HTML_comment2  ).WriteCharPtr(" { ")
+       .WriteCharPtr(sDisplay).WriteCharPtr("none").WriteCharPtr("; ")
+       .WriteCharPtr(" } ");
+
+
     IncIndent(-1); OUT_LF(); TAG_OFF_LF( OOO_STRING_SVTOOLS_HTML_style );
 
     IncIndent(-1); OUT_LF(); TAG_OFF_LF( OOO_STRING_SVTOOLS_HTML_head );
@@ -1059,6 +1099,28 @@ void ScHTMLExport::WriteCell( SCCOL nCol, SCROW nRow, SCTAB nTab )
 
     TAG_ON(aStrTD.makeStringAndClear().getStr());
 
+    //write the note for this as the first thing in the tag
+    if (pDoc->HasNote(aPos))
+    {
+        ScPostIt* pNote = pDoc->GetNote(aPos);
+
+        //create the comment indicator
+        OStringBuffer aStr(OOO_STRING_SVTOOLS_HTML_anchor);
+        aStr.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_class)
+           .append("=\"").append("comment-indicator").append("\"");
+        TAG_ON(aStr.makeStringAndClear().getStr());
+        TAG_OFF(OOO_STRING_SVTOOLS_HTML_anchor);
+        OUT_LF();
+
+        //create the element holding the contents
+        //this is a bit naive, since it doesn't separate
+        //lines into html breaklines yet
+        TAG_ON(OOO_STRING_SVTOOLS_HTML_comment2);
+        OUT_STR( pNote->GetText() );
+        TAG_OFF(OOO_STRING_SVTOOLS_HTML_comment2);
+        OUT_LF();
+    }
+
     if ( bBold )        TAG_ON( OOO_STRING_SVTOOLS_HTML_bold );
     if ( bItalic )      TAG_ON( OOO_STRING_SVTOOLS_HTML_italic );
     if ( bUnderline )   TAG_ON( OOO_STRING_SVTOOLS_HTML_underline );
diff --git a/sc/source/filter/html/htmlexp2.cxx b/sc/source/filter/html/htmlexp2.cxx
index c96388d..aa80aa2 100644
--- a/sc/source/filter/html/htmlexp2.cxx
+++ b/sc/source/filter/html/htmlexp2.cxx
@@ -77,7 +77,7 @@ void ScHTMLExport::FillGraphList( const SdrPage* pPage, SCTAB nTab,
         while ( pObject )
         {
             Rectangle aObjRect = pObject->GetCurrentBoundRect();
-            if ( bAll || aRect.IsInside( aObjRect ) )
+            if ( (bAll || aRect.IsInside( aObjRect )) && !ScDrawLayer::IsNoteCaption(pObject) )
             {
                 Size aSpace;
                 ScRange aR = pDoc->GetRange( nTab, aObjRect );


More information about the Libreoffice-commits mailing list