# Macros

Some of the macros are simple while others are complicated. An example of a simple macro is `ParaEnd (pcBuf)` which terminates the current paragraph.

    #define ParaEnd(pcBuf)                                   \
            {                                                \
                *pcBuf++ = KVT_PARA_BREAK;                   \
                 KVT_PUTINT(pcBuf, KVTSIZE_PARA_BREAK);      \
            }

In Filter SDK, this generates an `0x0d`, `0x0a` pair of bytes on a Windows machine. In HTML Export this can generate a `<p style="…">` element, depending on the value of other paragraph attributes.

One of the more complicated macros is `PutPictureEx()`.

    #define PutPictureEx(pcBuf, lpszKey, cx, cy, flags,             \
                 scaleHeight, scaleWidth,                           \
                 cropFromL, cropFromT, cropFromR, cropFromB,        \
                 anchorHorizontal, anchorVertical, offsetX, offsetY)\
              {                                                     \
                 PutPic(pcBuf, lpszKey, cx, cy, flags,              \
                 scaleHeight, scaleWidth,                           \
                 cropFromL, cropFromT, cropFromR, cropFromB,        \
                 anchorHorizontal, anchorVertical, offsetX, offsetY,\
                 180, 0, 180, 0, -1, 0, 0, 0, 0)                    \
              }

You can generate a representation of the token stream by running `filtertest.exe` with the `-d` command-line option. This stream does not include the tokens generated for headers or footers. The `filtertest.exe` is in the directory `install\samples\utf8\bin`, where `install` is the path name of the Filter installation directory.

_FT_HTML5_bannerTitle.htm