Advise needed for fixing tdf#41253

Jan Iversen jani at documentfoundation.org
Mon Nov 7 18:42:20 UTC 2016


Hi.

You have given yourself a nice task which is not even an EASYHACK. hope you succeed.

In order to have your patch reviewed you need to submit it to our gerrit system, see
https://wiki.documentfoundation.org/Development/GetInvolved#Prepare_to_submit_patches <https://wiki.documentfoundation.org/Development/GetInvolved#Prepare_to_submit_patches>

Rgds
jan I.


> On 6 Nov 2016, at 11:32, Korrawit Pruegsanusak <detective.conan.1412 at gmail.com> wrote:
> 
> Hello everyone,
> 
> I just have some times to look at tdf#41253.
> (https://bugs.documentfoundation.org/41253) But I don't promise I
> could finish it, so I still didn't assign myself into a bug. Anyway,
> let me explain (and ask) about it:
> 
> The bug is about importing pptx file which has shadowed text (one of
> the text effects apart from bold, italic, underlined), but LibO can't
> import "shadowing text".
> 
> The problem is, in OOXML structure, shadowing is declared in
> <a:outerShdw> element, which is a child of <a:effectLst>. For more
> info, please see http://www.datypic.com/sc/ooxml/e-a_effectLst-1.html
> 
> This is the OOXML sample comparing shadowed and non-shadowed text
> (cropped from slide1.xml of an extracted pptx file):
> ---cut---
> <a:p>
>    <a:r>
>        <a:rPr lang="en-US" dirty="0" smtClean="0">
>            <a:effectLst>
>                <a:outerShdw blurRad="38100" dist="38100"
> dir="2700000" algn="tl"><a:srgbClr val="000000"><a:alpha val="43137"/>
>                    </a:srgbClr>
>                </a:outerShdw>
>            </a:effectLst>
>        </a:rPr>
>        <a:t>Text with shadow</a:t>
>    </a:r>
> </a:p>
> <a:p>
>    <a:r>
>        <a:rPr lang="en-US" dirty="0" smtClean="0"/>
>         <a:t>Text without shadow</a:t>
>    </a:r>
>    <a:endParaRPr lang="th-TH" dirty="0"/>
> </a:p>
> ---cut---
> 
> And the code parsing <a:effectLst> is still unsupported, see:
> http://opengrok.libreoffice.org/xref/core/oox/source/drawingml/textcharacterpropertiescontext.cxx#101
> 
> This is my patch (also attached to this email). It compiled
> successfully, but the shadowing still didn't work:
> 
> ---cut---
> diff --git a/oox/inc/drawingml/textcharacterproperties.hxx
> b/oox/inc/drawingml/textcharacterproperties.hxx
> index 055e58f..2dca075 100644
> --- a/oox/inc/drawingml/textcharacterproperties.hxx
> +++ b/oox/inc/drawingml/textcharacterproperties.hxx
> @@ -56,6 +56,7 @@ struct TextCharacterProperties
>     OptValue< bool >    moUnderlineLineFollowText;
>     OptValue< bool >    moUnderlineFillFollowText;
>     FillProperties      maFillProperties;
> +    OptValue< bool >    moCharShadowed;
> 
>     std::vector<css::beans::PropertyValue> maTextEffectsProperties;
> 
> diff --git a/oox/source/drawingml/textcharacterproperties.cxx
> b/oox/source/drawingml/textcharacterproperties.cxx
> index 48803de..c5e1253 100644
> --- a/oox/source/drawingml/textcharacterproperties.cxx
> +++ b/oox/source/drawingml/textcharacterproperties.cxx
> @@ -151,6 +151,10 @@ void TextCharacterProperties::pushToPropMap(
> PropertyMap& rPropMap, const XmlFil
>         rPropMap.setProperty( PROP_CharUnderlineHasColor, true);
>         rPropMap.setProperty( PROP_CharUnderlineColor,
> maUnderlineColor.getColor( rFilter.getGraphicHelper() ));
>     }
> +
> +    bool bCharShadowed = moCharShadowed.get(false);
> +    SAL_DEBUG(bCharShadowed);
> +    rPropMap.setProperty( PROP_CharShadowed, /*true */bCharShadowed);
> }
> 
> void pushToGrabBag( PropertySet& rPropSet, const
> std::vector<PropertyValue>& aVectorOfProperyValues )
> ---cut---
> 
> In textcharacterproperties.cxx, it is where the shadowing process
> done. If I change the argument to "true", like this:
>    rPropMap.setProperty( PROP_CharShadowed, true);
> Then all texts will got shadowed. The problem is, bCharShadowed is
> never "true" in current patch, and I couldn't get it to be "true".
> 
> ---cut---
> diff --git a/oox/source/drawingml/textcharacterpropertiescontext.cxx
> b/oox/source/drawingml/textcharacterpropertiescontext.cxx
> index 1c62c1d..ef24ab1 100644
> --- a/oox/source/drawingml/textcharacterpropertiescontext.cxx
> +++ b/oox/source/drawingml/textcharacterpropertiescontext.cxx
> @@ -217,6 +223,10 @@ ContextHandlerRef
> TextCharacterPropertiesContext::onCreateContext( sal_Int32 aEl
>                 return new TextEffectsContext( *this, aElementToken,
> mrTextCharacterProperties.maTextEffectsProperties );
>             }
>             break;
> +        case A_TOKEN(outerShdw):
> +            SAL_DEBUG("A_TOKEN now True");
> +            mrTextCharacterProperties.moCharShadowed = true;
> +            break;
>         default:
>             SAL_WARN("oox",
> "TextCharacterPropertiesContext::onCreateContext: unhandled element: "
> << getBaseToken(aElementToken));
>             break;
> ---cut---
> 
> I don't know why bCharShadowed is never "true". But I think this
> approach is likely inappropriate because we already have these:
> 
> ---cut---
>        // EG_EffectProperties
>        case A_TOKEN( effectDag ):  // CT_EffectContainer 5.1.10.25
>        case A_TOKEN( effectLst ):  // CT_EffectList 5.1.10.26
>        break;
> ---cut---
> 
> in textcharacterpropertiescontext.cxx line 99-102, which I think it's
> more correct to start from these codes.
> 
> So, should I start over from the line:
>        case A_TOKEN( effectLst ):  // CT_EffectList 5.1.10.26
> or any advise about my patch would be much appreciated.
> 
> 
> Thank you very much.
> Best Regards,
> -- 
> Korrawit Pruegsanusak
> <tdf41253_WIP.diff>_______________________________________________
> LibreOffice mailing list
> LibreOffice at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libreoffice

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice/attachments/20161107/d6f35fed/attachment.html>


More information about the LibreOffice mailing list