From: Julian R. <gn...@th...> - 2005-03-08 21:10:53
|
Hi, It looks like I've got border-style and border-width working, at least judging by a couple tests. > The easiest way would be to submit the patch for > spec-dump/dump-info.xml and a separate patch for xmlroff/fo-context.c > and xmlroff/fo-context{-private}?.h. > > Since the properties' files are new, I'll just merge your > dump-info.xml patch, make the properties' files, and copy them over. I had to manually edit the new properties' .c files to change the validate function to check if it's a tblr (rather than the default set of validation type checks) - I copied this from fo-property-border-color.c. So I should send you at least the .c files, unless you want to make this change to each by hand. In terms of sending patches, what is the easiest/best way to do that? Can you create a patch that applies to multiple files? Just do "cvs diff file1 file2 ..."? Above you seem to be implying a certain way of splitting up the patches. I also edited property/fo-property-eval.c and property/fo-all-property.h (patching in relevant lines from spec-dump's "make fo-all-property-h-dump") in addition to the above-mentioned dump-info.xml, fo-context-*, the below-mentioned property/Makefile.am, and the new properties' .c files (their .h files as dumped by spec-dump are ok, I guess - I didn't touch them). And then the property resolution code in fo_context_util_border_resolve() in fo-context-util.c. I think that's it. So I guess I'm asking: for those files, what's the best way to submit patches to you? > I have modified 'dump-info.xml' to reduce the differences. > > I also added support for a 'expr-eval' attribute on <property> > elements in dump-info.xml so there'll be one less piece of manual > fixup on the generated files. Cool; I used the expr-eval attribute, using your new fo_expr_border_style_eval() for border-style and fo_expr_padding_eval() as you recommended for border-width. I also set the resolve-enum attributes to the same thing that the individual border-style/border-width properties have for that attribute - I was sort of copying what you did for border-color and am not sure whether these resolve-enum attributes are entirely correct/ necessary. Another thing - in my test cases, when I used "border-width", it gave me a number of warning messages equal to the number of tokens in border-width's value about datatype != NULL failing in fo_expr_context_push_stack(). Looking at eval_border_style_expr(), I'm pretty sure you just have an extra fo_expr_context_push_stack (context, intermediate_value); where you don't want it - it looks like eval_enum() actually does the pushing earlier in the function and intermediate_value doesn't get set if parse_ncname() succeeds, thus the error indicating that intermediate_value is NULL. It was working nonetheless, I guess because eval_enum() was successfully pushing the tokens onto the stack, but letting you know. Thanks, Julian |