[cairo] [Bug 90166] Add a way to specify units (in SVG output)

Adrian Johnson ajohnson at redneon.com
Thu Oct 12 19:38:34 UTC 2017


On 12/10/17 21:59, Adrian Johnson wrote:
> On 12/10/17 20:55, Antonio Ospite wrote:
>> The API addition I originally proposed[1,2] looks like this:
>>
>> void cairo_svg_surface_set_document_unit (cairo_surface_t*, cairo_svg_unit_t)
>>
>> Where cairo_svg_unit_t is an enum type representing all the possible
>> units.
> 
> The enum in the patch is:
> 
> typedef enum _cairo_svg_unit {
>     CAIRO_SVG_UNIT_EM,
>     CAIRO_SVG_UNIT_EX,
>     CAIRO_SVG_UNIT_PX,
>     CAIRO_SVG_UNIT_IN,
>     CAIRO_SVG_UNIT_CM,
>     CAIRO_SVG_UNIT_MM,
>     CAIRO_SVG_UNIT_PT,
>     CAIRO_SVG_UNIT_PC,
>     CAIRO_SVG_UNIT_PERCENT,
>     CAIRO_SVG_UNIT_USER
> } cairo_svg_unit_t;

We don't have to use the SVG abbreviations in the enum. The non standard
abbreviations can be expanded to make it clearer. I've reordered it
slightly to put the default first followed by the more common units.

typedef enum _cairo_svg_unit {
    CAIRO_SVG_UNIT_POINTS,
    CAIRO_SVG_UNIT_PIXELS,
    CAIRO_SVG_UNIT_MM,
    CAIRO_SVG_UNIT_CM,
    CAIRO_SVG_UNIT_INCHES,
    CAIRO_SVG_UNIT_PICAS,
    CAIRO_SVG_UNIT_FONT_EM,
    CAIRO_SVG_UNIT_FONT_X,
    CAIRO_SVG_UNIT_PERCENT,
    CAIRO_SVG_UNIT_USER
} cairo_svg_unit_t;


> 
> This looks good to me. It just needs a getter. Are all the units in SVG
> 1.1? If not the minimum version will need to be documented. The default
> unit will also need to be documented.
> 



More information about the cairo mailing list