[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: ODF 1.2 draft 7-9 - Chapter 9.6 Custom Shapes
Patrick, please find below Sven Jacobi's feedback regarding the custom shape chapter and the attributes related to it. Best regards Michael -------- Original Message -------- Subject: Re: ODF 1.2 draft 7-9 Date: Mon, 20 Oct 2008 15:51:36 +0200 From: Sven Jacobi <Sven.Jacobi@Sun.COM> To: Michael Brauer - Sun Germany - ham02 - Hamburg <Michael.Brauer@Sun.COM> References: <48DB95F5.5000409@sun.com> <48E0AD77.8050209@sun.com> <48E22CCC.4050103@sun.com> <48E4DA1D.6070804@sun.com> ####draw:extrusion-origin Ed. Note: The schema has to be verified. extrusionorigin::= number ' ' number number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ ####draw:extrusion-rotation-angle Ed. Note I inserted the whitespace separation of the values. We really do need to specify the format of compound values that are recorded in attributes. I have to remark that the rotation is based on degrees. extrusionrotationangle::= number ' ' number number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ ####draw:extrusion-depth: It should probably be mentioned that the first value is using a unit. exemplary: draw:extrusion-depth="5cm 0" extrusiondepth::= number unit ' ' number number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ unit::= 'cm' | 'mm' | 'in' | 'pt' | 'pc' ####draw:extrusion-skew: Ed. Note the addition of whitespace to the format of the parameters. I have to remark that SkewAngle is based on degrees. extrusionskew::= number ' ' number number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ ####draw:extrusion-viewpoint: Ed. Note: The pattern for the point3d type has to be checked Ed. Note If [ ] (square braces) are supposed to enclose a character class, then I am not sure what [ ]* means in XML regex syntax? That is from the vector3D regex near the end of the schema. Whitespace is \s. Note that the regex does not constraint the units mentioned above. The default value is containing an error, correct is:(3.5cm -3.5cm 25cm) and not: 3.5cm -3.5cm 25cm extrusionviewpoint ::= ( '(' position ' '+ position ' '+ position ')' )? position::= number unit number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ unit::= 'cm' | 'mm' | 'in' | 'pt' | 'pc' ####draw:glue-point-leaving-directions: Ed. Note As far as I can tell, we only use grads here and at one other place. Shouldn't we uniformly use degrees or radians? In the description of draw:glue-points-leaving-direction is an error, in fact degrees are used and not grad. gluepointleavingdirections::= leavingdirectionsequence? leavingdirectionsequence::= number ( ' '+ leavingdirectionsequence )* number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ ####draw:glue-points: Ed. Note We refer to “indexing” the draw:modifiers attribute but at that attribute we don't specify a format that permits indexing. gluepoints::= gluepointsequence? gluepointsequence::= gluepoint ( ' '+ gluepointsequence )* glue-point::= position ' '+ position position::= formula | modifier | number formula::= '?' name modifier::= '$' integer number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ name ::= [^ ]+ ####draw:mirror-horizontal: ####draw:mirror-vertical Ed. Note Are draw:mirror-horizontal and draw:mirror-vertical only meaningful if set together? We don't say that but it seems to be implied. ####draw:path-stretchpoint-x: ####draw:path-stretchpoint-Y: Ed. Note We don't say if both draw:path-stretchpoint-x and draw:path-stretchpoint-y must both be present or it is an error. It is implied but not stated. It doesn't matter at all, both values are having a default value, so it is sufficient to write only values which differ from the default. ####draw:modifiers: Ed. Note We don't define this “list” of values. Whitespace separated? Isn't that a string, not a list? example: draw:modifiers="4250 45000 4000" modifiers::= numbersequence? numbersequence::= number ( ' '+ numbersequence )* number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ ####draw:text-areas: Ed. Note As defined, the attribute is inconsistent and incomplete. It starts by saying we define a list of text areas. Then it says what happens if a second text area is present. Then we define how to define a text area. As a string? So, we don't have a list, or at least no mechanism for one, possibly assume up to two text areas, and don't define what values define a text area. I hope following ebnf syntax solves every problem: textareas::= textareasequence? textareasequence ::= textarea ( ' '+ textareasequence )* textarea::= position ' '+ position ' '+ position ' '+ position position::= formula | modifier | number formula::= '?' name modifier::= '$' integer number::= sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ name ::= [^ ]+ ####draw:text-path-allowed Ed. Note We don't define Fontwork object. Maybe we should replace the existing description with following: The draw:text-path-allowed attribute specifies if it is allowed to render text of the shape using the draw:text-path attribute, or if only the normal text engine should be used. ####draw:handle-position Ed. Note Consider an EBNF, although I am not sure it would help. It would be helpful to know if there was some more standard way to reach the same results as with the “enhancements.” handleposition ::= position ' '+ position position::= formula | modifier | constant | number formula::= '?' name modifier::= '$' integer constant::= 'left' | 'top' | 'right' | 'bottom' | 'xstretch' | 'ystretch' | 'hasstroke' | 'hasfill ' | 'width' | 'height' | 'logwidth' | 'logheight' number::=sign? float | sign? integer float::= fractional exponent? | integer exponent fractional::= integer? '.' integer | integer '.' exponent::= ( 'e' | 'E' ) sign? integer sign::= '+'| '-' integer::= [0-9]+ name ::= [^ ]+ -- Michael Brauer, Technical Architect Software Engineering StarOffice/OpenOffice.org Sun Microsystems GmbH Nagelsweg 55 D-20097 Hamburg, Germany michael.brauer@sun.com http://sun.com/staroffice +49 40 23646 500 http://blogs.sun.com/GullFOSS Sitz der Gesellschaft: Sun Microsystems GmbH, Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht Muenchen: HRB 161028 Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer Vorsitzender des Aufsichtsrates: Martin Haering
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]