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


Hi,

Am 23.09.2016 um 15:00 schrieb Michael Stahl:
On 23.09.2016 00:40, Regina Henschel wrote:
Hi Armin,

Armin Le Grand schrieb:
Hi Regina,

tried, but could not create one (tried frames in SW, too).

Might have to do with the change of SW FillStyle/Transparency attributes
to the full Draw ItemSet. These get written with the same attributes as
for draw objects, but before the change that attribute might have been
used. It would be loaded and converted at import, though.

Thus, might be if you use an older version which had not that change and
insert a frame and set transparency, but no guarantees
Direct hit :)

AOO 3.4.1 writes a style:background-transparency for a Writer frame with
background color and transparency. LibreOffice 5.3 writes
style:background-transparency too, but in addition it writes draw:fill,
draw:fill-color and draw:opacity.

LibreOffice writes draw:fill, draw:fill-color and draw:opacity too in
style:page-layout-properties, however there without
style:background-transparency. But for draw:fill, draw:fill-color and
draw:opacity it is the same problem as for
style:background-transparency: It is not allowed in
style:page-layout-properties.
i wasn't aware of this problem, so <style:page-layout-properties>
appears to have the same issue as <style:paragraph-properties>, which we
discuss below.

So my conclusion is, that a transparent property for page background is
indeed needed. But I would suggest not to extend the
style:background-transparency, but the draw:xyz attributes, because they
are richer and already used in LibreOffice.
thanks for bringing up this topic, it reminded me of something on my
todo-list...

unfortunately ODF has 2 sets of attributes for "backgrounds", i'm
calling them the "writer-legacy-backgrounds" and the
"fancy-draw-fillstyles" - this is presumably a result of the 2 different
implementations from StarOffice.

it turns out that the "fancy-draw-fillstyles" are more expressive than
the "writer-legacy-backgrounds", so Armin refactored Writer to use these
natively, and only create the "writer-legacy-backgrounds" as an
emulation in the UNO API for backwards compatibility and to export them
to ODF.

the ODF 1.2 <style:paragraph-properties> element allows for only the
"writer-legacy-backgrounds" attributes, but the
<style:graphics-properties> element allows both sets of attributes.

obviously the "writer-legacy-backgrounds" were never produced by
anything other than Writer.

the "writer-legacy-backgrounds" confusingly have 2 different attributes
for transparency, the "style:background-transparency" is applied if
there is a background color while there is a nested element like
<style:background-image draw:opacity="75%"> to apply transparency to an
image.

now the problem is that current LO Writer will produce the
"fancy-draw-fillstyles" also for paragraph styles (and the UI is based
around them too) but it's not allowed in ODF 1.2 so we write foreign
<loext:graphic-properties> element.

so i guess in ODF 1.3 we either need to add the
<style:graphic-properties> to paragraph styles, or add the
"fancy-draw-fillstyles" attributes to <style:paragraph-properties>.

Yes - having the full draw object FillStyle set (which includes transparencies) is good and unifies that AttributeSet.


currently the <style:graphic-properties> has a lot of attributes:

17.21 <style:graphic-properties>

The <style:graphic-properties> element specifies formatting properties for chart, draw, graphic, 
and frame elements.

The <style:graphic-properties> element is usable within the following elements: <style:default-style> 
16.4 and <style:style> 16.2.

The <style:graphic-properties> element has the following attributes:
dr3d:ambient-color 20.67,
dr3d:backface-culling 20.69,
dr3d:back-scale 20.68,
dr3d:close-back 20.70,
dr3d:close-front 20.71,
dr3d:depth 20.72,
dr3d:diffuse-color 20.73,
dr3d:edge-rounding 20.74,
dr3d:edge-rounding-mode 20.75,
dr3d:emissive-color 20.76,
dr3d:end-angle 20.77,
dr3d:horizontal-segments 20.78,
dr3d:lighting-mode 20.79,
dr3d:normals-direction 20.80,
dr3d:normals-kind 20.81,
dr3d:shadow 20.82,
dr3d:shininess 20.83,
dr3d:specular-color 20.84,
dr3d:texture-filter 20.85,
dr3d:texture-generation-mode-x 20.88,
dr3d:texture-generation-mode-y 20.89,
dr3d:texture-kind 20.86,
dr3d:texture-mode 20.87,
dr3d:vertical-segments 20.90,
draw:auto-grow-height 20.91,
draw:auto-grow-width 20.92,
draw:blue 20.94,
draw:caption-angle 20.95,
draw:caption-angle-type 20.96,
draw:caption-escape 20.97,
draw:caption-escape-direction 20.98,
draw:caption-fit-line-length 20.99,
draw:caption-gap 20.100,
draw:caption-line-length 20.101,
draw:caption-type 20.102,
draw:color-inversion 20.103,
draw:color-mode 20.104,
draw:contrast 20.105,
draw:decimal-places 20.106,
draw:draw-aspect 20.107,
draw:end-guide 20.108,
draw:end-line-spacing-horizontal 20.109,
draw:end-line-spacing-vertical 20.110,
* draw:fill 20.111,
* draw:fill-color 20.112,
* draw:fill-gradient-name 20.113,
* draw:fill-hatch-name 20.114,
* draw:fill-hatch-solid 20.115,
* draw:fill-image-height 20.116,
* draw:fill-image-name 20.117,
* draw:fill-image-ref-point 20.118,
* draw:fill-image-ref-point-x 20.119,
* draw:fill-image-ref-point-y 20.120,
* draw:fill-image-width 20.121,
draw:fit-to-contour 20.122,
draw:fit-to-size 20.123,
draw:frame-display-border 20.124,
draw:frame-display-scrollbar 20.126,
draw:frame-margin-horizontal 20.125,
draw:frame-margin-vertical 20.127,
draw:gamma 20.128,
* draw:gradient-step-count 20.130,
draw:green 20.129,
draw:guide-distance 20.131,
draw:guide-overhang 20.132,
draw:image-opacity 20.133,
draw:line-distance 20.134,
draw:luminance 20.135,
draw:marker-end 20.136,
draw:marker-end-center 20.137,
draw:marker-end-width 20.138,
draw:marker-start 20.139,
draw:marker-start-center 20.140,
draw:marker-start-width 20.141,
draw:measure-align 20.142,
draw:measure-vertical-align 20.143,
draw:ole-draw-aspect 20.144,
* draw:opacity 20.145,
* draw:opacity-name 20.146,
draw:parallel 20.147,
draw:placing 20.148,
draw:red 20.149,
* draw:secondary-fill-color 20.150,
draw:shadow 20.151,
draw:shadow-color 20.152,
draw:shadow-offset-x 20.153,
draw:shadow-offset-y 20.154,
draw:shadow-opacity 20.155,
draw:show-unit 20.156,
draw:start-guide 20.157,
draw:start-line-spacing-horizontal 20.158,
draw:start-line-spacing-vertical 20.159,
draw:stroke 20.160,
draw:stroke-dash 20.161,
draw:stroke-dash-names 20.162,
draw:stroke-linejoin 20.163,
draw:symbol-color 20.165,
draw:textarea-horizontal-align 20.166,
draw:textarea-vertical-align 20.167,
* draw:tile-repeat-offset 20.168,
draw:unit 20.173,
draw:visible-area-height 20.169,
draw:visible-area-left 20.170,
draw:visible-area-top 20.171,
draw:visible-area-width 20.172,
draw:wrap-influence-on-position 20.174,
fo:background-color 20.175,
fo:border 20.176.2,
fo:border-bottom 20.176.3,
fo:border-left 20.176.4,
fo:border-right 20.176.5,
fo:border-top 20.176.6,
fo:clip 20.179,
fo:margin 20.198,
fo:margin-bottom 20.199,
fo:margin-left 20.200,
fo:margin-right 20.201,
fo:margin-top 20.202,
fo:max-height 20.203,
fo:max-width 20.204,
fo:min-height 20.205.1,
fo:min-width 20.206,
fo:padding 20.210,
fo:padding-bottom 20.211,
fo:padding-left 20.212,
fo:padding-right 20.213,
fo:padding-top 20.214,
fo:wrap-option 20.223,
style:background-transparency 20.240,
style:border-line-width 20.241,
style:border-line-width-bottom 20.242,
style:border-line-width-left 20.243,
style:border-line-width-right 20.244,
style:border-line-width-top 20.245,
style:editable 20.257,
style:flow-with-text 20.259,
style:horizontal-pos 20.290,
style:horizontal-rel 20.291,
style:mirror 20.313,
style:number-wrapped-paragraphs 20.318,
style:overflow-behavior 20.319,
style:print-content 20.323.2,
style:protect 20.326.2,
style:rel-height 20.331,
style:rel-width 20.332.1,
* style:repeat 20.333,
style:run-through 20.343,
style:shadow 20.349,
style:shrink-to-fit 20.350,
style:vertical-pos 20.387,
style:vertical-rel 20.388,
style:wrap 20.390,
style:wrap-contour 20.391,
style:wrap-contour-mode 20.392,
style:wrap-dynamic-threshold 20.393,
style:writing-mode 20.394.2,
svg:fill-rule 20.396,
svg:height 20.397.1,
svg:stroke-color 20.398,
svg:stroke-linecap 20.164,
svg:stroke-opacity 20.399,
svg:stroke-width 20.400,
svg:width 20.403,
svg:x 20.401,
svg:y 20.402.1,
text:anchor-page-number 20.407,
text:anchor-type 20.408,
text:animation 20.409,
text:animation-delay 20.410,
text:animation-direction 20.411,
text:animation-repeat 20.412,
text:animation-start-inside 20.413,
text:animation-steps 20.414 and text:animation-stop-inside 20.415.

The <style:graphic-properties> element has the following child elements:
<style:background-image> 17.3,
<style:columns> 17.12 and <text:list-style> 16.30.
i've marked the ones we actually want on paragraphs with a "*".

FillProperties.idl also has "GraphicCrop" property corresponding to
"fo:clip" but it appears not to be implemented on paragraphs.

Yes, no crop yet - and I see no useful usage in the Writer area (yet).


i notice that if i insert a text box drawing object it has additional
tabs Gradients, Hatching, Bitmap, Patterns with extra options, but
Format->Paragraph only has Area / Transparency.  is that features we
don't want to support, or just currently incomplete?

It is completely supported, in the 'Area' TabPage, choose any FillStyle for the Area, including, Color, Gradients, Hatch and Graphics ('Bitmap' should not be used since that FillStyle can use *any* Graphic including Metafile and SVG supporting Pixel-free, scalable fills, so better call it 'Graphic').


now the ODF 1.2 schema already contains this:

        <define name="style-graphic-fill-properties-attlist">
                <interleave>
                        <optional>
                                <attribute name="draw:fill">
                                        <choice>
                                                <value>none</value>
                                                <value>solid</value>
                                                <value>bitmap</value>
                                                <value>gradient</value>
                                                <value>hatch</value>
                                        </choice>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-color">
                                        <ref name="color"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:secondary-fill-color">
                                        <ref name="color"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-gradient-name">
                                        <ref name="styleNameRef"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:gradient-step-count">
                                        <ref name="nonNegativeInteger"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-hatch-name">
                                        <ref name="styleNameRef"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-hatch-solid">
                                        <ref name="boolean"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-image-name">
                                        <ref name="styleNameRef"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="style:repeat">
                                        <choice>
                                                <value>no-repeat</value>
                                                <value>repeat</value>
                                                <value>stretch</value>
                                        </choice>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-image-width">
                                        <choice>
                                                <ref name="length"/>
                                                <ref name="percent"/>
                                        </choice>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-image-height">
                                        <choice>
                                                <ref name="length"/>
                                                <ref name="percent"/>
                                        </choice>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-image-ref-point-x">
                                        <ref name="percent"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-image-ref-point-y">
                                        <ref name="percent"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:fill-image-ref-point">
                                        <choice>
                                                <value>top-left</value>
                                                <value>top</value>
                                                <value>top-right</value>
                                                <value>left</value>
                                                <value>center</value>
                                                <value>right</value>
                                                <value>bottom-left</value>
                                                <value>bottom</value>
                                                <value>bottom-right</value>
                                        </choice>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:tile-repeat-offset">
                                        <list>
                                                <ref name="zeroToHundredPercent"/>
                                                <choice>
                                                        <value>horizontal</value>
                                                        <value>vertical</value>
                                                </choice>
                                        </list>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:opacity">
                                        <ref name="zeroToHundredPercent"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="draw:opacity-name">
                                        <ref name="styleNameRef"/>
                                </attribute>
                        </optional>
                        <optional>
                                <attribute name="svg:fill-rule">
                                        <choice>
                                                <value>nonzero</value>
                                                <value>evenodd</value>
                                        </choice>
                                </attribute>
                        </optional>
                </interleave>
        </define>
that's quite nice, all the attributes we need, plus an additional
"svg:fill-rule", not sure what that is.

Describes how PolyPolygons (aka more than one Polygon used -> 'Holes') are to be rendered. Modern GraphicSystems suppoprt two of these, we do only one. In the long term, we should also support both.


so back to the <style:page-layout-properties>: indeed it doesn't allow
the "fancy-draw-fillstyles", and the current implementation in LO is
gratuitously different from the paragraph styles: for page layouts, the
attributes are added to <style:page-layout-properties>, or to
<style:header-footer-properties> for the header/footer, but for
paragraph styles there is a separate <loext:graphic-properties> element
for the attributes - some consistency would be nice.

Yes, indeed. Just see the FillStyle as one pack of attributes that can be applied to any form/object that has any area to be filled. This will unify things and make implementing new stuff easier - once done, will work everywhere (all apps, all shapes/objects, all TabPages, all exports/renderers...)

HTH!


... ok, was there anything i've missed?


_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice

--
--
ALG (PGP Key: EE1C 4B3F E751 D8BC C485 DEC1 3C59 F953 D81C F4A2)


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.