The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

OpenOffice::OODoc::HeadingStyles - utilities for manipulating OpenOffice::OODoc objects

VERSION

version 0.04

DESCRIPTION

This module helps to create Heading Styles in OpenOffice::OODoc documents. Instead of blindly creating new styles at will, one can call establishHeadingStyle that will honour any exisiting style, but will create a new one if needed.

METHODS

establishHeadingStyle

returns an OpenOffice::OODoc Heading Style Element for a given level

    my $level = 2;
    my $style_definition = {
        paragraph   => { top    => '0.1390in', bottom => '0.0835in' },
        text        => { size   =>     '115%', weight =>     'bold' },
    };
    my $heading_style = $oodoc_style
        ->establishHeadingStyle( $level, $style_definition );

If the style was not already present in the 'Styles' part of the document, it will be created and added into the document.

The style-definition is an optional argument. If not provided, it will use what is found in HEADING_DEFINITIONS package HashRef. That is pre-populated with the defaults from Libre Office.

See below.

A newly created heading style inherrits from the Heading style and will apply font settings like Libre Office does: relative font-size, font-weight and font-style and more.

CAVEAT: $level will be treated turned into integer values. This means that if it does not start with a number will be treated as "Heading 0" styles and decimals will be truncated. See int

createHeadingStyle

Creates a new Heading Style in the 'styles' part for a given level. It accepts an optional style-definition HashRef like the above.

MORE...

Heading Style Definitions

This module does some convenience mapping between params and that what OpenOffice::OODoc internally uses in their xml. A heading style for this module look like the following hash structure:

    paragraph => {
        top        => '9.9999in',
        bottom     => '9.9999mm',
    },
    text      => {
        size       => 'huge',
        weight     => 'super-heavy',
        style      => 'strike-through',
        family     => 'fantasy',
        name       => 'Noteworthy',
        font_style => 'Condensed',
    },
top

the marging at the top of the heading, for example:'0.1665in'.

bottom

the margin at the bottom of the heading, for example '0.0835in'.

size

the relative size of the 'parent Heading' style, like: '130%'.

weight

the font weight of the heading style, for example 'bold'.

style

the font styling for the heading, like 'italics'.

name

the name of the font to use, note that not all fonts are portable

family

the main family it is part of, like 'sans' and 'serif'

item font_style

the font it's own style name, like 'narow'. 'light', or 'heavy'

$$HEADING_DEFINITIONS

This variable should hold a HashRef to a list of Heading Style Definitions. The keys should be Heading 1 through Heading 6 when dealing with HTML tags. In Libre Office, there are 10 diferent styles.

You can set this HashRef so createHeadingStyle has defaults to pick from if not provided when calling that method.

AUTHOR

Theo van Hoessel

COPYRIGHT AND LICENSE

This software is Copyright (c) 2020 by Mintlab B.V.

This is free software, licensed under:

  The European Union Public License (EUPL) v1.1