src/reportlab/lib/styles.py
author robin
Sun, 24 Jun 2018 11:58:58 +0100
branchhyphenation
changeset 4410 bd848827483f
parent 4389 61a7f0840d00
child 4415 0eeda71a61af
permissions -rw-r--r--
initial hyphenation work; all tests pass, but hyphenation is not very well controlled. add function for long uris etc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4330
617ffa6bbdc8 changes for release 3.4.0
robin <robin@reportlab.com>
parents: 4323
diff changeset
     1
#Copyright ReportLab Europe Ltd. 2000-2017
494
54257447cfe9 Changed to indirect copyright
rgbecker
parents: 472
diff changeset
     2
#see license.txt for license details
4370
823a8c33ce43 fix history urls contribution by Ben Weiner <ben@readingtype.org.uk>; version-->3.4.17
robin <robin@reportlab.com>
parents: 4330
diff changeset
     3
#history https://bitbucket.org/rptlab/reportlab/history-node/tip/src/reportlab/lib/styles.py
4252
fe660f227cac changes for release 3.3.0
robin
parents: 4220
diff changeset
     4
__version__='3.3.0'
3029
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
     5
__doc__='''Classes for ParagraphStyle and similar things.
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
     6
3029
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
     7
A style is a collection of attributes, but with some extra features
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
     8
to allow 'inheritance' from a parent, and to ensure nobody makes
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
     9
changes after construction.
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
    10
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
    11
ParagraphStyle shows all the attributes available for formatting
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
    12
paragraphs.
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
    13
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
    14
getSampleStyleSheet()  returns a stylesheet you can use for initial
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
    15
development, with a few basic heading and text styles.
eded59f94021 adding docstrings to lib
andy
parents: 3028
diff changeset
    16
'''
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    17
__all__=(
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    18
        'PropertySet',
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    19
        'ParagraphStyle',
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    20
        'LineStyle',
3479
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
    21
        'ListStyle',
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    22
        'StyleSheet1',
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    23
        'getSampleStyleSheet',
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    24
        )
128
a0676f013314 Splitting layout.py
rgbecker
parents: 125
diff changeset
    25
from reportlab.lib.colors import white, black
530
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
    26
from reportlab.lib.enums import TA_LEFT, TA_CENTER
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    27
from reportlab.lib.fonts import tt2ps
4277
838129322a55 really merge para-measure-fix; version-->3.3.11
robin
parents: 4252
diff changeset
    28
from reportlab.rl_config import canvas_basefontname as _baseFontName, \
4389
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
    29
                                underlineWidth as _baseUnderlineWidth, \
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
    30
                                underlineOffset as _baseUnderlineOffset, \
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
    31
                                underlineGap as _baseUnderlineGap, \
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
    32
                                strikeWidth as _baseStrikeWidth, \
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
    33
                                strikeOffset as _baseStrikeOffset, \
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
    34
                                strikeGap as _baseStrikeGap, \
4410
bd848827483f initial hyphenation work; all tests pass, but hyphenation is not very well controlled. add function for long uris etc
robin
parents: 4389
diff changeset
    35
                                spaceShrinkage, platypus_link_underline, \
bd848827483f initial hyphenation work; all tests pass, but hyphenation is not very well controlled. add function for long uris etc
robin
parents: 4389
diff changeset
    36
                                hyphenationLang
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    37
_baseFontNameB = tt2ps(_baseFontName,1,0)
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    38
_baseFontNameI = tt2ps(_baseFontName,0,1)
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
    39
_baseFontNameBI = tt2ps(_baseFontName,1,1)
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    40
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    41
###########################################################
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    42
# This class provides an 'instance inheritance'
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    43
# mechanism for its descendants, simpler than acquisition
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    44
# but not as far-reaching
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    45
###########################################################
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    46
class PropertySet:
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    47
    defaults = {}
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    48
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    49
    def __init__(self, name, parent=None, **kw):
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    50
        """When initialized, it copies the class defaults;
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    51
        then takes a copy of the attributes of the parent
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    52
        if any.  All the work is done in init - styles
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    53
        should cost little to use at runtime."""
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    54
        # step one - validate the hell out of it
3326
ce725978d11c Initial Python3 compatibility fixes
damian
parents: 3139
diff changeset
    55
        assert 'name' not in self.defaults, "Class Defaults may not contain a 'name' attribute"
ce725978d11c Initial Python3 compatibility fixes
damian
parents: 3139
diff changeset
    56
        assert 'parent' not in self.defaults, "Class Defaults may not contain a 'parent' attribute"
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    57
        if parent:
3506
192dac8f2cd0 styles.py: make parentage error more revealing
rgbecker
parents: 3502
diff changeset
    58
            assert parent.__class__ == self.__class__, "Parent style %s must have same class as new style %s" % (parent.__class__.__name__,self.__class__.__name__)
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    59
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
    60
        #step two
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    61
        self.name = name
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    62
        self.parent = parent
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    63
        self.__dict__.update(self.defaults)
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    64
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    65
        #step two - copy from parent if any.  Try to be
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    66
        # very strict that only keys in class defaults are
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    67
        # allowed, so they cannot inherit
224
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    68
        self.refresh()
3479
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
    69
        self._setKwds(**kw)
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
    70
3479
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
    71
    def _setKwds(self,**kw):
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
    72
        #step three - copy keywords if any
3723
99aa837b6703 second stage of port to Python 3.3; working hello world
rptlab
parents: 3721
diff changeset
    73
        for key, value in kw.items():
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    74
             self.__dict__[key] = value
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    75
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    76
    def __repr__(self):
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    77
        return "<%s '%s'>" % (self.__class__.__name__, self.name)
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
    78
224
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    79
    def refresh(self):
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    80
        """re-fetches attributes from the parent on demand;
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    81
        use if you have been hacking the styles.  This is
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    82
        used by __init__"""
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    83
        if self.parent:
3723
99aa837b6703 second stage of port to Python 3.3; working hello world
rptlab
parents: 3721
diff changeset
    84
            for key, value in self.parent.__dict__.items():
224
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    85
                if (key not in ['name','parent']):
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    86
                    self.__dict__[key] = value
764725e69f94 readJPEGinfo moved from canvas to pdfutils;
andy_robinson
parents: 187
diff changeset
    87
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    88
    def listAttrs(self, indent=''):
3721
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
    89
        print(indent + 'name =', self.name)
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
    90
        print(indent + 'parent =', self.parent)
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
    91
        keylist = list(self.__dict__.keys())
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    92
        keylist.sort()
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    93
        keylist.remove('name')
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    94
        keylist.remove('parent')
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    95
        for key in keylist:
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
    96
            value = self.__dict__.get(key, None)
3721
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
    97
            print(indent + '%s = %s' % (key, value))
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
    98
3479
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
    99
    def clone(self, name, parent=None, **kwds):
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   100
        r = self.__class__(name,parent)
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   101
        r.__dict__ = self.__dict__.copy()
4155
107bf32f15d9 fix Propertyset.clone contributed by Greg Jones via bitbucket
robin
parents: 4136
diff changeset
   102
        r.name = name
3479
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   103
        r.parent = parent is None and self or parent
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   104
        r._setKwds(**kwds)
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   105
        return r
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   106
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   107
class ParagraphStyle(PropertySet):
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   108
    defaults = {
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   109
        'fontName':_baseFontName,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   110
        'fontSize':10,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   111
        'leading':12,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   112
        'leftIndent':0,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   113
        'rightIndent':0,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   114
        'firstLineIndent':0,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   115
        'alignment':TA_LEFT,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   116
        'spaceBefore':0,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   117
        'spaceAfter':0,
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   118
        'bulletFontName':_baseFontName,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   119
        'bulletFontSize':10,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   120
        'bulletIndent':0,
3540
bdb6c7856c23 paragraph.py: allow bulletText in styles to work
rgbecker
parents: 3506
diff changeset
   121
        #'bulletColor':black,
532
fa0a46295460 Added a text background color attribute
andy_robinson
parents: 530
diff changeset
   122
        'textColor': black,
2575
0cba68b93555 reportlab-utf8 moved to trunk
rgbecker
parents: 2332
diff changeset
   123
        'backColor':None,
4098
7154a8213d29 paragraph.py, textobject.py: improved support for rtl, bump version to 3.1.14
robin
parents: 4067
diff changeset
   124
        'wordWrap':None,        #None means do nothing special
7154a8213d29 paragraph.py, textobject.py: improved support for rtl, bump version to 3.1.14
robin
parents: 4067
diff changeset
   125
                                #CJK use Chinese Line breaking
7154a8213d29 paragraph.py, textobject.py: improved support for rtl, bump version to 3.1.14
robin
parents: 4067
diff changeset
   126
                                #LTR RTL use left to right / right to left
7154a8213d29 paragraph.py, textobject.py: improved support for rtl, bump version to 3.1.14
robin
parents: 4067
diff changeset
   127
                                #with support from pyfribi2 if available
2921
d0bcee3e3785 reportlab: add in some widows/orphans control
rgbecker
parents: 2758
diff changeset
   128
        'borderWidth': 0,
d0bcee3e3785 reportlab: add in some widows/orphans control
rgbecker
parents: 2758
diff changeset
   129
        'borderPadding': 0,
d0bcee3e3785 reportlab: add in some widows/orphans control
rgbecker
parents: 2758
diff changeset
   130
        'borderColor': None,
d0bcee3e3785 reportlab: add in some widows/orphans control
rgbecker
parents: 2758
diff changeset
   131
        'borderRadius': None,
d0bcee3e3785 reportlab: add in some widows/orphans control
rgbecker
parents: 2758
diff changeset
   132
        'allowWidows': 1,
d0bcee3e3785 reportlab: add in some widows/orphans control
rgbecker
parents: 2758
diff changeset
   133
        'allowOrphans': 0,
2932
bcdff7b8f469 platypus: initial try at textTransform style attribute
rgbecker
parents: 2921
diff changeset
   134
        'textTransform':None,   #uppercase lowercase (captitalize not yet) or None or absent
3575
6821eb805106 reportlab: added support for endDots in paragraphs styles
rgbecker
parents: 3567
diff changeset
   135
        'endDots':None,         #dots on the last line of left/right justified paras
6821eb805106 reportlab: added support for endDots in paragraphs styles
rgbecker
parents: 3567
diff changeset
   136
                                #string or object with text and optional fontName, fontSize, textColor & backColor
6821eb805106 reportlab: added support for endDots in paragraphs styles
rgbecker
parents: 3567
diff changeset
   137
                                #dy
3738
6e5e6d64ab2d add support for splitLongWords in styles.py
robin
parents: 3723
diff changeset
   138
        'splitLongWords':1,     #make best efforts to split long words
4389
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   139
        'underlineWidth': _baseUnderlineWidth,  #underline width
4136
16f067cf3dae added rl_settings.decimalSymbol & support for simple bullet anchoring, version-->3.1.35
robin
parents: 4135
diff changeset
   140
        'bulletAnchor': 'start',    #where the bullet is anchored ie start, middle, end or numeric
4220
c0e82d246798 add justifyBreaks & justifyLastLine ParagraphStyle attributes; version-->3.2.7
robin
parents: 4155
diff changeset
   141
        'justifyLastLine': 0,   #n allow justification on the last line for more than n words 0 means don't bother
c0e82d246798 add justifyBreaks & justifyLastLine ParagraphStyle attributes; version-->3.2.7
robin
parents: 4155
diff changeset
   142
        'justifyBreaks': 0,     #justify lines broken with <br/>
4277
838129322a55 really merge para-measure-fix; version-->3.3.11
robin
parents: 4252
diff changeset
   143
        'spaceShrinkage': spaceShrinkage,   #allow shrinkage of percentage of space to fit on line
4389
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   144
        'strikeWidth': _baseStrikeWidth,    #stroke width
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   145
        'underlineOffset': _baseUnderlineOffset,    #fraction of fontsize to offset underlines
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   146
        'underlineGap': _baseUnderlineGap,      #gap for double/triple underline
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   147
        'strikeOffset': _baseStrikeOffset,  #fraction of fontsize to offset strikethrough
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   148
        'strikeGap': _baseStrikeGap,        #gap for double/triple strike
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   149
        'linkUnderline': platypus_link_underline,
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   150
        #'underlineColor':  None,
61a7f0840d00 more controllable under and strike lines; fix for issue 137 contributed by Tom Alexander @ bitbucket; version-->3.4.30
robin <robin@reportlab.com>
parents: 4370
diff changeset
   151
        #'strikeColor': None,
4410
bd848827483f initial hyphenation work; all tests pass, but hyphenation is not very well controlled. add function for long uris etc
robin
parents: 4389
diff changeset
   152
        'hyphenationLang': hyphenationLang,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   153
        }
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   154
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   155
class LineStyle(PropertySet):
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   156
    defaults = {
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   157
        'width':1,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   158
        'color': black
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   159
        }
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   160
    def prepareCanvas(self, canvas):
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   161
        """You can ask a LineStyle to set up the canvas for drawing
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   162
        the lines."""
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   163
        canvas.setLineWidth(1)
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   164
        #etc. etc.
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   165
3479
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   166
class ListStyle(PropertySet):
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   167
    defaults = dict(
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   168
                leftIndent=18,
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   169
                rightIndent=0,
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   170
                bulletAlign='left',
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   171
                bulletType='1',
3502
b2c9927314fc color fixes
rgbecker
parents: 3479
diff changeset
   172
                bulletColor=black,
3479
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   173
                bulletFontName='Helvetica',
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   174
                bulletFontSize=12,
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   175
                bulletOffsetY=0,
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   176
                bulletDedent='auto',
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   177
                bulletDir='ltr',
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   178
                bulletFormat=None,
4323
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   179
                start=None,         #starting value for a list; if a list then the start sequence
3479
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   180
                )
9c29cc835739 support for ordered/bulleted lists
rgbecker
parents: 3433
diff changeset
   181
3433
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   182
_stylesheet1_undefined = object()
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   183
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   184
class StyleSheet1:
3028
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   185
    """
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   186
    This may or may not be used.  The idea is to:
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   187
    
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   188
    1. slightly simplify construction of stylesheets;
3028
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   189
    
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   190
    2. enforce rules to validate styles when added
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   191
       (e.g. we may choose to disallow having both
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   192
       'heading1' and 'Heading1' - actual rules are
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   193
       open to discussion);
3028
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   194
       
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   195
    3. allow aliases and alternate style lookup
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   196
       mechanisms
3028
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   197
       
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   198
    4. Have a place to hang style-manipulation
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   199
       methods (save, load, maybe support a GUI
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   200
       editor)
3028
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   201
   
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   202
    Access is via getitem, so they can be
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   203
    compatible with plain old dictionaries.
082f5208644e docstring modifications to adhere to restructuredtext
damian
parents: 2964
diff changeset
   204
    """
3433
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   205
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   206
    def __init__(self):
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   207
        self.byName = {}
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   208
        self.byAlias = {}
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   209
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   210
    def __getitem__(self, key):
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   211
        try:
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   212
            return self.byAlias[key]
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   213
        except KeyError:
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   214
            try:
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   215
                return self.byName[key]
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   216
            except KeyError:
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   217
                raise KeyError("Style '%s' not found in stylesheet" % key)
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   218
3433
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   219
    def get(self,key,default=_stylesheet1_undefined):
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   220
        try:
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   221
            return self[key]
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   222
        except KeyError:
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   223
            if default!=_stylesheet1_undefined: return default
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   224
            raise
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   225
3326
ce725978d11c Initial Python3 compatibility fixes
damian
parents: 3139
diff changeset
   226
    def __contains__(self, key):
ce725978d11c Initial Python3 compatibility fixes
damian
parents: 3139
diff changeset
   227
        return key in self.byAlias or key in self.byName
460
6244c4f117ce added has_key method to stylesheet1
andy_robinson
parents: 224
diff changeset
   228
3433
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   229
    def has_key(self,key):
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   230
        return key in self
0562ca2f5155 styles.py: new Stylesheet1 methods suggested by Roberto Alsina <ralsina@netmanagers.com.ar>
rgbecker
parents: 3368
diff changeset
   231
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   232
    def add(self, style, alias=None):
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   233
        key = style.name
3326
ce725978d11c Initial Python3 compatibility fixes
damian
parents: 3139
diff changeset
   234
        if key in self.byName:
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   235
            raise KeyError("Style '%s' already defined in stylesheet" % key)
3326
ce725978d11c Initial Python3 compatibility fixes
damian
parents: 3139
diff changeset
   236
        if key in self.byAlias:
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   237
            raise KeyError("Style name '%s' is already an alias in stylesheet" % key)
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   238
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   239
        if alias:
3326
ce725978d11c Initial Python3 compatibility fixes
damian
parents: 3139
diff changeset
   240
            if alias in self.byName:
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   241
                raise KeyError("Style '%s' already defined in stylesheet" % alias)
3326
ce725978d11c Initial Python3 compatibility fixes
damian
parents: 3139
diff changeset
   242
            if alias in self.byAlias:
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   243
                raise KeyError("Alias name '%s' is already an alias in stylesheet" % alias)
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
   244
        #passed all tests?  OK, add it
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   245
        self.byName[key] = style
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   246
        if alias:
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   247
            self.byAlias[alias] = style
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
   248
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   249
    def list(self):
3721
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
   250
        styles = list(self.byName.items())
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   251
        styles.sort()
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   252
        alii = {}
3721
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
   253
        for (alias, style) in list(self.byAlias.items()):
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   254
            alii[style] = alias
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   255
        for (name, style) in styles:
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   256
            alias = alii.get(style, None)
3721
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
   257
            print(name, alias)
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   258
            style.listAttrs('    ')
3721
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
   259
            print()
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
   260
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   261
def testStyles():
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   262
    pNormal = ParagraphStyle('Normal',None)
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   263
    pNormal.fontName = _baseFontName
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   264
    pNormal.fontSize = 12
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   265
    pNormal.leading = 14.4
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   266
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   267
    pNormal.listAttrs()
3721
0c93dd8ff567 initial changes from 2to3-3.3
rptlab
parents: 3617
diff changeset
   268
    print()
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   269
    pPre = ParagraphStyle('Literal', pNormal)
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   270
    pPre.fontName = 'Courier'
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   271
    pPre.listAttrs()
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   272
    return pNormal, pPre
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   273
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   274
def getSampleStyleSheet():
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   275
    """Returns a stylesheet object"""
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   276
    stylesheet = StyleSheet1()
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   277
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   278
    stylesheet.add(ParagraphStyle(name='Normal',
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   279
                                  fontName=_baseFontName,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   280
                                  fontSize=10,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   281
                                  leading=12)
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   282
                   )
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   283
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   284
    stylesheet.add(ParagraphStyle(name='BodyText',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   285
                                  parent=stylesheet['Normal'],
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   286
                                  spaceBefore=6)
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   287
                   )
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   288
    stylesheet.add(ParagraphStyle(name='Italic',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   289
                                  parent=stylesheet['BodyText'],
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   290
                                  fontName = _baseFontNameI)
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   291
                   )
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   292
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   293
    stylesheet.add(ParagraphStyle(name='Heading1',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   294
                                  parent=stylesheet['Normal'],
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   295
                                  fontName = _baseFontNameB,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   296
                                  fontSize=18,
512
c12ae96634d5 Added working table of contents framework
andy_robinson
parents: 494
diff changeset
   297
                                  leading=22,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   298
                                  spaceAfter=6),
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   299
                   alias='h1')
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   300
530
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
   301
    stylesheet.add(ParagraphStyle(name='Title',
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
   302
                                  parent=stylesheet['Normal'],
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   303
                                  fontName = _baseFontNameB,
530
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
   304
                                  fontSize=18,
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
   305
                                  leading=22,
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
   306
                                  alignment=TA_CENTER,
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
   307
                                  spaceAfter=6),
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
   308
                   alias='title')
af8f032556f2 Added a title style to support rml2pdf
andy_robinson
parents: 512
diff changeset
   309
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   310
    stylesheet.add(ParagraphStyle(name='Heading2',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   311
                                  parent=stylesheet['Normal'],
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   312
                                  fontName = _baseFontNameB,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   313
                                  fontSize=14,
512
c12ae96634d5 Added working table of contents framework
andy_robinson
parents: 494
diff changeset
   314
                                  leading=18,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   315
                                  spaceBefore=12,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   316
                                  spaceAfter=6),
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   317
                   alias='h2')
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
   318
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   319
    stylesheet.add(ParagraphStyle(name='Heading3',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   320
                                  parent=stylesheet['Normal'],
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   321
                                  fontName = _baseFontNameBI,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   322
                                  fontSize=12,
512
c12ae96634d5 Added working table of contents framework
andy_robinson
parents: 494
diff changeset
   323
                                  leading=14,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   324
                                  spaceBefore=12,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   325
                                  spaceAfter=6),
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   326
                   alias='h3')
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   327
3139
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   328
    stylesheet.add(ParagraphStyle(name='Heading4',
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   329
                                  parent=stylesheet['Normal'],
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   330
                                  fontName = _baseFontNameBI,
3139
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   331
                                  fontSize=10,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   332
                                  leading=12,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   333
                                  spaceBefore=10,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   334
                                  spaceAfter=4),
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   335
                   alias='h4')
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   336
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   337
    stylesheet.add(ParagraphStyle(name='Heading5',
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   338
                                  parent=stylesheet['Normal'],
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   339
                                  fontName = _baseFontNameB,
3139
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   340
                                  fontSize=9,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   341
                                  leading=10.8,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   342
                                  spaceBefore=8,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   343
                                  spaceAfter=4),
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   344
                   alias='h5')
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   345
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   346
    stylesheet.add(ParagraphStyle(name='Heading6',
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   347
                                  parent=stylesheet['Normal'],
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   348
                                  fontName = _baseFontNameB,
3139
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   349
                                  fontSize=7,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   350
                                  leading=8.4,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   351
                                  spaceBefore=6,
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   352
                                  spaceAfter=2),
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   353
                   alias='h6')
06f9f302f870 styles.py: add support for h4-h6
rgbecker
parents: 3029
diff changeset
   354
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   355
    stylesheet.add(ParagraphStyle(name='Bullet',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   356
                                  parent=stylesheet['Normal'],
546
8e17202e9067 relativisation of firstLineIndent related code
rgbecker
parents: 533
diff changeset
   357
                                  firstLineIndent=0,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   358
                                  spaceBefore=3),
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   359
                   alias='bu')
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   360
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   361
    stylesheet.add(ParagraphStyle(name='Definition',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   362
                                  parent=stylesheet['Normal'],
546
8e17202e9067 relativisation of firstLineIndent related code
rgbecker
parents: 533
diff changeset
   363
                                  firstLineIndent=0,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   364
                                  leftIndent=36,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   365
                                  bulletIndent=0,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   366
                                  spaceBefore=6,
3368
afa025c34493 reportlab: new base font mechanism more fully applied
rgbecker
parents: 3326
diff changeset
   367
                                  bulletFontName=_baseFontNameBI),
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   368
                   alias='df')
125
2742c6dfd19e Moved out of layout.py
rgbecker
parents:
diff changeset
   369
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   370
    stylesheet.add(ParagraphStyle(name='Code',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   371
                                  parent=stylesheet['Normal'],
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   372
                                  fontName='Courier',
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   373
                                  fontSize=8,
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   374
                                  leading=8.8,
546
8e17202e9067 relativisation of firstLineIndent related code
rgbecker
parents: 533
diff changeset
   375
                                  firstLineIndent=0,
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   376
                                  leftIndent=36))
1683
7fa753e4420a Removed all trailing whitespace
andy_robinson
parents: 728
diff changeset
   377
4323
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   378
    stylesheet.add(ListStyle(name='UnorderedList',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   379
                                parent=None,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   380
                                leftIndent=18,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   381
                                rightIndent=0,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   382
                                bulletAlign='left',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   383
                                bulletType='1',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   384
                                bulletColor=black,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   385
                                bulletFontName='Helvetica',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   386
                                bulletFontSize=12,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   387
                                bulletOffsetY=0,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   388
                                bulletDedent='auto',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   389
                                bulletDir='ltr',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   390
                                bulletFormat=None,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   391
                                #start='circle square blackstar sparkle disc diamond'.split(),
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   392
                                start=None,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   393
                            ),
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   394
                   alias='ul')
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   395
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   396
    stylesheet.add(ListStyle(name='OrderedList',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   397
                                parent=None,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   398
                                leftIndent=18,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   399
                                rightIndent=0,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   400
                                bulletAlign='left',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   401
                                bulletType='1',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   402
                                bulletColor=black,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   403
                                bulletFontName='Helvetica',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   404
                                bulletFontSize=12,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   405
                                bulletOffsetY=0,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   406
                                bulletDedent='auto',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   407
                                bulletDir='ltr',
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   408
                                bulletFormat=None,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   409
                                #start='1 a A i I'.split(),
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   410
                                start=None,
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   411
                            ),
fa6de076ed0b add support for rotating bullets in ListFlowable; version-->3.3.33
robin <robin@reportlab.com>
parents: 4277
diff changeset
   412
                   alias='ol')
187
1f22787ae36b Stylesheets become classes; styles copy data on __init__
andy_robinson
parents: 142
diff changeset
   413
    return stylesheet