From 8e358ae62bf6c20e9cedca2f341fde916d695684 Mon Sep 17 00:00:00 2001 From: John McNamara Date: Sun, 16 Jan 2022 19:39:05 +0000 Subject: [PATCH] Added example of setting a watermark in Excel. --- .gitignore | 3 +- dev/release/fix_example_docs.pl | 1 + docs/images/worksheet_watermark.png | Bin 0 -> 104440 bytes docs/src/examples.dox | 22 +++++++++++++-- docs/src/examples.txt | 9 ++++++ examples/watermark.c | 26 ++++++++++++++++++ examples/watermark.png | Bin 0 -> 328777 bytes test/functional/src/images/watermark.png | Bin 0 -> 328777 bytes test/functional/src/test_header_image20.c | 22 +++++++++++++++ test/functional/test_header_image.py | 4 +++ .../functional/xlsx_files/header_image20.xlsx | Bin 0 -> 337364 bytes 11 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 docs/images/worksheet_watermark.png create mode 100644 examples/watermark.c create mode 100644 examples/watermark.png create mode 100644 test/functional/src/images/watermark.png create mode 100644 test/functional/src/test_header_image20.c create mode 100644 test/functional/xlsx_files/header_image20.xlsx diff --git a/.gitignore b/.gitignore index fe762b50..da98d356 100644 --- a/.gitignore +++ b/.gitignore @@ -38,8 +38,7 @@ docs/latex _temp.c examples/* !examples/*.c -!examples/logo.png -!examples/logo_small.png +!examples/*.png !examples/Makefile !examples/vbaProject.bin cov-int diff --git a/dev/release/fix_example_docs.pl b/dev/release/fix_example_docs.pl index 24db66a0..f4c992bd 100644 --- a/dev/release/fix_example_docs.pl +++ b/dev/release/fix_example_docs.pl @@ -42,6 +42,7 @@ my @examples = ( [ 'defined_name.c', 'Example of how to create defined names' ], [ 'outline.c', 'Example of grouping and outlines' ], [ 'outline_collapsed.c', 'Example of grouping and collapsed outlines' ], + [ 'watermark.c', 'Example of how to set a watermark image for a worksheet' ], [ 'background.c', 'Example of how to set the background image for a worksheet' ], [ 'tab_colors.c', 'Example of how to set worksheet tab colors' ], [ 'diagonal_border.c', 'Example of how to set a worksheet cell diagonal border.' ], diff --git a/docs/images/worksheet_watermark.png b/docs/images/worksheet_watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..de6a119c34c475ee46245cce804224ed28b03aa1 GIT binary patch literal 104440 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