开发者

What's the meaning of the non numerical values in the XFL's edge definition?

XFL is the new uncompressed ADOBE FLASH (CS5) source file, it consists from XML definitions, most of them are clear but unfortunately, the important one are strange.

Looking to various existing sources, I can see shape's EDGE definitions like:

<Edge strokeStyle="1" edges="!0 0S4|180 0"/>
<Edge strokeStyle="1" edges="!2720 2720S6|0 2720!0 2720|0 0!0 0/2720 2720"/>
<Edge fillStyle1="1" edges="!3532 1539.5S2[#BD9.4D #577.3C 2952.5 1756.5!2952.5 1756.5[#AF6.DA #4C6.1D 3584 1119!3584 1119|3532 1539.5"/> 

Doing some tests I can say, that:

! == move to position
| == draw line from the position to the new position
/ == probably same like |
[ == draw curve
( == probably same like [
开发者_开发百科

But what means the values like S4 or #BD9.4D? My not proved yet guess is, that the # values could be somehow encoded very small numbers. I have no clue what could be the S4.


!(x,y) moveTo

/(x,y)+ lineTo

|(x,y)+ lineTo

[(x1 y1 ex ey)+ curveTo (quadratic)

](x1 y1 ex ey)+ curveTo (quadratic)

((pBCPx pBCPy)? ; x1 y1 x2 y2 ex ey (({Q,q,P,p})? x y)+ curveTo (cubic start)

)(nBCPx nBCPy)? ; curveTo (cubic end)

Sn selection (n=bitmask, 1:fillStyle0, 2:fillStyle1, 4:stroke)

#aaaaaa.bb is a signed fixed point 32 bit number


Hm... I was wrong with the guess to # values!

I've decompiled the produced shape and can say, that for example value #BD9.4D must be a silly hexadecimal encoding of number 3033.77. I would like to know, why is Adobe using something like that in code which should be human readable?

EDIT: the above is wrong, the correct result for #BD9.4D is 3033.30078125

>> (to integer! #{000BD94D}) / 256
== 3033.30078125

Also note, that numbers like #19F.2 are binary #{00019F20}

According the S4 type of values, they could be just some additional info for the FLASH editor because when I manually remove them, I can load the source and the shape is same.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜