basctl/source/basicide/unomodel.cxx                             |    2 
 basegfx/source/curve/b2dcubicbezier.cxx                         |   24 
 basic/source/basmgr/basicmanagerrepository.cxx                  |    2 
 basic/source/basmgr/basmgr.cxx                                  |   18 
 basic/source/uno/scriptcont.cxx                                 |    2 
 canvas/source/directx/dx_textlayout_drawhelper.cxx              |    4 
 canvas/source/opengl/ogl_canvashelper.cxx                       |    2 
 canvas/source/tools/surface.cxx                                 |    9 
 canvas/source/vcl/canvasfont.cxx                                |    2 
 canvas/source/vcl/canvashelper.cxx                              |    4 
 canvas/source/vcl/canvashelper_texturefill.cxx                  |   36 
 canvas/source/vcl/impltools.cxx                                 |    8 
 chart2/qa/extras/xshape/data/reference/fdo75075.xml             |  736 
+++++-----
 chart2/qa/extras/xshape/data/reference/property-mapping-bar.xml |  546 +++----
 chart2/qa/extras/xshape/data/reference/tdf149204.xml            |  116 -
 chart2/qa/extras/xshape/data/reference/tdf150832.xml            |  428 ++---
 chart2/qa/extras/xshape/data/reference/tdf151424.xml            |  468 +++---
 chart2/qa/extras/xshape/data/reference/tdf90839-1.xml           |   86 -
 chart2/qa/extras/xshape/data/reference/tdf90839-2.xml           |   64 
 chart2/qa/extras/xshape/data/reference/tdf90839-3.xml           |   64 
 chart2/qa/extras/xshape/data/reference/tdf90839-4.xml           |   64 
 chart2/qa/extras/xshape/data/reference/testChart.xml            |  560 +++----
 chart2/source/controller/main/SelectionHelper.cxx               |    2 
 cppcanvas/source/mtfrenderer/transparencygroupaction.cxx        |    4 
 cui/source/dialogs/cuigrfflt.cxx                                |    8 
 cui/source/tabpages/transfrm.cxx                                |    4 
 drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx    |    2 
 drawinglayer/source/processor2d/SDPRProcessor2dTools.cxx        |    6 
 drawinglayer/source/processor2d/helperwrongspellrenderer.cxx    |    6 
 drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx      |   32 
 drawinglayer/source/processor2d/vclprocessor2d.cxx              |   50 
 drawinglayer/source/tools/converters.cxx                        |    2 
 drawinglayer/source/tools/emfphelperdata.cxx                    |   34 
 drawinglayer/source/tools/emfphelperdata.hxx                    |   10 
 editeng/source/editeng/impedit3.cxx                             |    6 
 editeng/source/editeng/impedit4.cxx                             |    3 
 editeng/source/items/svxfont.cxx                                |    4 
 editeng/source/misc/svxacorr.cxx                                |   34 
 editeng/source/outliner/outliner.cxx                            |    4 
 embeddedobj/source/inc/oleembobj.hxx                            |   28 
 embeddedobj/source/msole/olecomponent.cxx                       |  529 ++++---
 embeddedobj/source/msole/olecomponent.hxx                       |   12 
 embeddedobj/source/msole/oleembed.cxx                           |   28 
 embeddedobj/source/msole/olepersist.cxx                         |   19 
 embeddedobj/source/msole/olevisual.cxx                          |    7 
 emfio/qa/cppunit/emf/EmfImportTest.cxx                          |    4 
 emfio/source/reader/mtftools.cxx                                |    6 
 filter/source/msfilter/escherex.cxx                             |    2 
 filter/source/msfilter/eschesdo.cxx                             |   15 
 filter/source/msfilter/msdffimp.cxx                             |   30 
 filter/source/msfilter/msoleexp.cxx                             |    8 
 filter/source/msfilter/rtfutil.cxx                              |    6 
 filter/source/msfilter/svdfppt.cxx                              |   22 
 filter/source/msfilter/svxmsbas2.cxx                            |    8 
 filter/source/svg/svgfilter.cxx                                 |    2 
 filter/source/svg/svgwriter.cxx                                 |   24 
 fpicker/source/win32/VistaFilePickerImpl.cxx                    |    1 
 hwpfilter/source/drawing.h                                      |    1 
 include/basegfx/numeric/ftools.hxx                              |   20 
 include/editeng/svxacorr.hxx                                    |    5 
 include/filter/msfilter/msdffimp.hxx                            |    6 
 include/filter/msfilter/svdfppt.hxx                             |    4 
 include/filter/msfilter/svxmsbas.hxx                            |    2 
 include/oox/ole/olehelper.hxx                                   |    8 
 include/sal/types.h                                             |    6 
 include/sfx2/event.hxx                                          |    9 
 include/sfx2/objsh.hxx                                          |   13 
 include/sot/object.hxx                                          |    6 
 include/sot/storage.hxx                                         |    6 
 include/svx/svdtrans.hxx                                        |   12 
 include/svx/transfrmhelper.hxx                                  |    8 
 include/tools/helpers.hxx                                       |    8 
 include/vcl/bitmap.hxx                                          |    5 
 include/vcl/outdev.hxx                                          |   14 
 include/vcl/scheduler.hxx                                       |    7 
 include/vcl/svapp.hxx                                           |   12 
 include/vcl/vcllayout.hxx                                       |    6 
 oox/source/crypto/CryptTools.cxx                                |   11 
 oox/source/export/drawingml.cxx                                 |    2 
 oox/source/ole/olehelper.cxx                                    |   18 
 oox/source/ole/vbaexport.cxx                                    |   12 
 sc/inc/global.hxx                                               |    4 
 sc/inc/rangelst.hxx                                             |    1 
 sc/inc/tablink.hxx                                              |    5 
 sc/qa/uitest/chart/chartDataLabels.py                           |    4 
 sc/qa/uitest/chart/chartLegend.py                               |    4 
 sc/source/core/data/drwlayer.cxx                                |   12 
 sc/source/core/data/global.cxx                                  |    2 
 sc/source/filter/excel/excel.cxx                                |   30 
 sc/source/filter/excel/excimp8.cxx                              |    6 
 sc/source/filter/excel/expop2.cxx                               |    4 
 sc/source/filter/excel/xepivot.cxx                              |    4 
 sc/source/filter/excel/xeroot.cxx                               |    2 
 sc/source/filter/excel/xestream.cxx                             |    4 
 sc/source/filter/excel/xiescher.cxx                             |    2 
 sc/source/filter/excel/xipivot.cxx                              |    4 
 sc/source/filter/excel/xiroot.cxx                               |    2 
 sc/source/filter/excel/xlroot.cxx                               |   12 
 sc/source/filter/ftools/ftools.cxx                              |   16 
 sc/source/filter/inc/XclImpChangeTrack.hxx                      |    2 
 sc/source/filter/inc/ftools.hxx                                 |   10 
 sc/source/filter/inc/xcl97esc.hxx                               |    2 
 sc/source/filter/inc/xeroot.hxx                                 |    2 
 sc/source/filter/inc/xiescher.hxx                               |    2 
 sc/source/filter/inc/xiroot.hxx                                 |    2 
 sc/source/filter/inc/xlroot.hxx                                 |   16 
 sc/source/filter/xcl97/XclExpChangeTrack.cxx                    |    4 
 sc/source/filter/xcl97/XclImpChangeTrack.cxx                    |    2 
 sc/source/filter/xcl97/xcl97rec.cxx                             |    2 
 sc/source/ui/app/drwtrans.cxx                                   |   15 
 sc/source/ui/app/seltrans.cxx                                   |    6 
 sc/source/ui/app/transobj.cxx                                   |   19 
 sc/source/ui/docshell/arealink.cxx                              |    5 
 sc/source/ui/docshell/docsh4.cxx                                |    3 
 sc/source/ui/docshell/externalrefmgr.cxx                        |   15 
 sc/source/ui/docshell/tablink.cxx                               |   18 
 sc/source/ui/inc/docsh.hxx                                      |    2 
 sc/source/ui/inc/drwtrans.hxx                                   |    2 
 sc/source/ui/inc/instbdlg.hxx                                   |    5 
 sc/source/ui/inc/linkarea.hxx                                   |    3 
 sc/source/ui/inc/transobj.hxx                                   |    2 
 sc/source/ui/miscdlgs/autofmt.cxx                               |    8 
 sc/source/ui/miscdlgs/instbdlg.cxx                              |    5 
 sc/source/ui/miscdlgs/linkarea.cxx                              |    9 
 sc/source/ui/unoobj/exceldetect.cxx                             |    2 
 sc/source/ui/unoobj/unodoc.cxx                                  |    2 
 sc/source/ui/view/drawvie4.cxx                                  |    6 
 sc/source/ui/view/drawview.cxx                                  |    4 
 sc/source/ui/view/viewfun3.cxx                                  |    4 
 sd/inc/drawdoc.hxx                                              |    2 
 sd/inc/sdfilter.hxx                                             |    4 
 sd/inc/sdmod.hxx                                                |    4 
 sd/qa/unit/layout-tests.cxx                                     |   38 
 sd/qa/unit/tiledrendering/LOKitSearchTest.cxx                   |    4 
 sd/source/core/sdpage.cxx                                       |   16 
 sd/source/filter/eppt/eppt.cxx                                  |   20 
 sd/source/filter/eppt/eppt.hxx                                  |   10 
 sd/source/filter/eppt/epptso.cxx                                |    4 
 sd/source/filter/ppt/pptin.cxx                                  |    8 
 sd/source/filter/ppt/pptin.hxx                                  |    4 
 sd/source/filter/ppt/propread.hxx                               |    3 
 sd/source/filter/sdpptwrp.cxx                                   |   24 
 sd/source/ui/app/optsitem.cxx                                   |    4 
 sd/source/ui/app/sdmod.cxx                                      |    4 
 sd/source/ui/app/sdmod1.cxx                                     |   10 
 sd/source/ui/dlg/morphdlg.cxx                                   |    4 
 sd/source/ui/dlg/vectdlg.cxx                                    |   10 
 sd/source/ui/func/fuoaprms.cxx                                  |    3 
 sd/source/ui/inc/DrawDocShell.hxx                               |    3 
 sd/source/ui/inc/sdtreelb.hxx                                   |    2 
 sd/source/ui/unoidl/sddetect.cxx                                |    2 
 sd/source/ui/unoidl/unodoc.cxx                                  |    4 
 sd/source/ui/view/drviews8.cxx                                  |    4 
 sfx2/source/appl/appcfg.cxx                                     |   10 
 sfx2/source/appl/appopen.cxx                                    |    3 
 sfx2/source/appl/sfxpicklist.cxx                                |    6 
 sfx2/source/appl/xpackcreator.cxx                               |    4 
 sfx2/source/control/bindings.cxx                                |    1 
 sfx2/source/doc/objcont.cxx                                     |    5 
 sfx2/source/doc/objxtor.cxx                                     |   38 
 sfx2/source/doc/oleprops.cxx                                    |    4 
 sfx2/source/inc/objshimp.hxx                                    |    4 
 slideshow/source/engine/eventmultiplexer.cxx                    |    8 
 slideshow/source/engine/shapes/drawinglayeranimation.cxx        |    6 
 slideshow/source/engine/slideview.cxx                           |    4 
 sot/qa/cppunit/test_sot.cxx                                     |   20 
 sot/source/base/object.cxx                                      |    6 
 sot/source/sdstor/storage.cxx                                   |   22 
 starmath/qa/cppunit/test_cursor.cxx                             |    2 
 starmath/qa/cppunit/test_node.cxx                               |    2 
 starmath/qa/cppunit/test_nodetotextvisitors.cxx                 |    2 
 starmath/qa/cppunit/test_parse.cxx                              |    2 
 starmath/qa/cppunit/test_starmath.cxx                           |    2 
 starmath/source/document.cxx                                    |    2 
 starmath/source/eqnolefilehdr.cxx                               |    2 
 starmath/source/mathtype.cxx                                    |   10 
 starmath/source/smdetect.cxx                                    |    2 
 starmath/source/unodoc.cxx                                      |    2 
 starmath/source/unofilter.cxx                                   |    2 
 svtools/source/misc/imagemgr.cxx                                |    2 
 svtools/source/svhtml/htmlout.cxx                               |    4 
 svx/inc/galleryfilestorage.hxx                                  |    4 
 svx/qa/unit/customshapes.cxx                                    |   18 
 svx/source/customshapes/EnhancedCustomShape2d.cxx               |    4 
 svx/source/customshapes/EnhancedCustomShape3d.cxx               |    2 
 svx/source/dialog/_contdlg.cxx                                  |    4 
 svx/source/dialog/frmsel.cxx                                    |   12 
 svx/source/engine3d/obj3d.cxx                                   |    2 
 svx/source/engine3d/view3d.cxx                                  |    6 
 svx/source/gallery2/galleryfilestorage.cxx                      |   22 
 svx/source/gallery2/galobj.cxx                                  |    4 
 svx/source/svdraw/gradtrns.cxx                                  |   24 
 svx/source/svdraw/sdrpagewindow.cxx                             |    7 
 svx/source/svdraw/svdcrtv.cxx                                   |    4 
 svx/source/svdraw/svddrgmt.cxx                                  |   16 
 svx/source/svdraw/svddrgv.cxx                                   |   16 
 svx/source/svdraw/svdedtv1.cxx                                  |    4 
 svx/source/svdraw/svdedxv.cxx                                   |    8 
 svx/source/svdraw/svdfmtf.cxx                                   |   15 
 svx/source/svdraw/svdhdl.cxx                                    |   12 
 svx/source/svdraw/svdmrkv.cxx                                   |   12 
 svx/source/svdraw/svdoashp.cxx                                  |   18 
 svx/source/svdraw/svdobj.cxx                                    |    6 
 svx/source/svdraw/svdocapt.cxx                                  |    6 
 svx/source/svdraw/svdocirc.cxx                                  |   11 
 svx/source/svdraw/svdoedge.cxx                                  |   20 
 svx/source/svdraw/svdograf.cxx                                  |   18 
 svx/source/svdraw/svdomeas.cxx                                  |   22 
 svx/source/svdraw/svdopath.cxx                                  |   37 
 svx/source/svdraw/svdorect.cxx                                  |    2 
 svx/source/svdraw/svdotext.cxx                                  |   10 
 svx/source/svdraw/svdotextdecomposition.cxx                     |   12 
 svx/source/svdraw/svdpdf.cxx                                    |   20 
 svx/source/svdraw/svdpoev.cxx                                   |    9 
 svx/source/svdraw/svdtrans.cxx                                  |   24 
 svx/source/unodraw/UnoGraphicExporter.cxx                       |    8 
 svx/source/unodraw/unoshape.cxx                                 |    8 
 svx/source/xoutdev/_xpoly.cxx                                   |    7 
 sw/inc/doc.hxx                                                  |    2 
 sw/inc/shellio.hxx                                              |   10 
 sw/qa/core/filters-test.cxx                                     |    2 
 sw/qa/core/macros-test.cxx                                      |    2 
 sw/qa/core/uwriter.cxx                                          |    2 
 sw/qa/extras/htmlexport/data/tdf160867_image_with_link.fodt     |   25 
 sw/qa/extras/htmlexport/htmlexport.cxx                          |   46 
 sw/qa/extras/layout/data/i84870.fodt                            |   61 
 sw/qa/extras/layout/layout3.cxx                                 |    8 
 sw/qa/extras/ww8export/data/empty_group.docx                    |binary
 sw/qa/extras/ww8export/ww8export4.cxx                           |   24 
 sw/source/core/doc/DocumentLayoutManager.cxx                    |    4 
 sw/source/core/doc/docnew.cxx                                   |    4 
 sw/source/core/draw/dflyobj.cxx                                 |   32 
 sw/source/core/graphic/ndgrf.cxx                                |    3 
 sw/source/core/inc/SwXMLTextBlocks.hxx                          |    4 
 sw/source/core/inc/noteurl.hxx                                  |   36 
 sw/source/core/inc/swfont.hxx                                   |    3 
 sw/source/core/layout/fly.cxx                                   |    2 
 sw/source/core/layout/paintfrm.cxx                              |    5 
 sw/source/core/layout/wsfrm.cxx                                 |   28 
 sw/source/core/ole/ndole.cxx                                    |    8 
 sw/source/core/swg/SwXMLTextBlocks.cxx                          |   14 
 sw/source/core/text/atrhndl.hxx                                 |    2 
 sw/source/core/text/atrstck.cxx                                 |   15 
 sw/source/core/text/inftxt.cxx                                  |   37 
 sw/source/core/text/inftxt.hxx                                  |    7 
 sw/source/core/text/itrform2.cxx                                |    2 
 sw/source/core/text/itrpaint.cxx                                |   20 
 sw/source/core/text/noteurl.cxx                                 |   37 
 sw/source/core/text/porfly.hxx                                  |    1 
 sw/source/core/text/pormulti.cxx                                |    3 
 sw/source/core/txtnode/swfont.cxx                               |    2 
 sw/source/filter/basflt/iodetect.cxx                            |    4 
 sw/source/filter/basflt/shellio.cxx                             |    4 
 sw/source/filter/html/htmlflywriter.cxx                         |   31 
 sw/source/filter/html/htmlplug.cxx                              |    2 
 sw/source/filter/html/htmlreqifreader.cxx                       |   16 
 sw/source/filter/writer/writer.cxx                              |    2 
 sw/source/filter/ww8/wrtw8esh.cxx                               |    6 
 sw/source/filter/ww8/wrtww8.cxx                                 |   12 
 sw/source/filter/ww8/wrtww8.hxx                                 |    6 
 sw/source/filter/ww8/wrtww8gr.cxx                               |   16 
 sw/source/filter/ww8/ww8glsy.cxx                                |    2 
 sw/source/filter/ww8/ww8glsy.hxx                                |    8 
 sw/source/filter/ww8/ww8par.cxx                                 |   36 
 sw/source/filter/ww8/ww8par.hxx                                 |   10 
 sw/source/filter/ww8/ww8par4.cxx                                |   20 
 sw/source/filter/ww8/ww8par5.cxx                                |    6 
 sw/source/ui/table/autoformatpreview.cxx                        |   15 
 sw/source/ui/uno/swdetect.cxx                                   |    4 
 sw/source/uibase/app/apphdl.cxx                                 |    2 
 sw/source/uibase/app/docsh.cxx                                  |    4 
 sw/source/uibase/app/docsh2.cxx                                 |    3 
 sw/source/uibase/dochdl/swdtflvr.cxx                            |    4 
 sw/source/uibase/inc/glosdoc.hxx                                |    4 
 sw/source/uibase/inc/unoatxt.hxx                                |    3 
 sw/source/uibase/misc/glshell.cxx                               |    4 
 sw/source/uibase/uno/unodoc.cxx                                 |    6 
 sw/source/uibase/uno/unotxvw.cxx                                |    4 
 toolkit/source/awt/vclxfont.cxx                                 |    2 
 tools/CppunitTest_tools_test.mk                                 |    1 
 tools/qa/cppunit/test_fround.cxx                                |   62 
 tools/source/generic/color.cxx                                  |    7 
 tools/source/generic/line.cxx                                   |    7 
 tools/source/generic/poly.cxx                                   |   37 
 vcl/inc/svdata.hxx                                              |    5 
 vcl/inc/win/DWriteTextRenderer.hxx                              |   15 
 vcl/inc/win/winlayout.hxx                                       |    3 
 vcl/osx/salframeview.mm                                         |    3 
 vcl/qa/cppunit/complextext.cxx                                  |   28 
 vcl/qa/cppunit/text.cxx                                         |    4 
 vcl/skia/gdiimpl.cxx                                            |   15 
 vcl/skia/salbmp.cxx                                             |    3 
 vcl/skia/win/gdiimpl.cxx                                        |   34 
 vcl/skia/x11/textrender.cxx                                     |   10 
 vcl/source/animate/AnimationRenderer.cxx                        |    8 
 vcl/source/app/scheduler.cxx                                    |   33 
 vcl/source/app/svapp.cxx                                        |    4 
 vcl/source/app/svmain.cxx                                       |    3 
 vcl/source/bitmap/BitmapEmbossGreyFilter.cxx                    |    4 
 vcl/source/bitmap/BitmapEx.cxx                                  |    2 
 vcl/source/bitmap/BitmapFastScaleFilter.cxx                     |    4 
 vcl/source/bitmap/BitmapInterpolateScaleFilter.cxx              |    4 
 vcl/source/bitmap/BitmapScaleConvolutionFilter.cxx              |    8 
 vcl/source/bitmap/BitmapScaleSuperFilter.cxx                    |    4 
 vcl/source/bitmap/BitmapTools.cxx                               |   16 
 vcl/source/bitmap/bitmap.cxx                                    |   16 
 vcl/source/bitmap/impvect.cxx                                   |    6 
 vcl/source/filter/eps/eps.cxx                                   |    4 
 vcl/source/filter/wmf/emfwr.cxx                                 |    8 
 vcl/source/filter/wmf/wmfwr.cxx                                 |    6 
 vcl/source/gdi/gdimetafiletools.cxx                             |    8 
 vcl/source/gdi/gdimtf.cxx                                       |   28 
 vcl/source/gdi/impgraph.cxx                                     |    6 
 vcl/source/gdi/metaact.cxx                                      |   30 
 vcl/source/gdi/pdfwriter_impl.cxx                               |    8 
 vcl/source/gdi/pdfwriter_impl2.cxx                              |    8 
 vcl/source/gdi/print.cxx                                        |   10 
 vcl/source/gdi/regband.cxx                                      |    7 
 vcl/source/gdi/region.cxx                                       |    4 
 vcl/source/gdi/regionband.cxx                                   |    4 
 vcl/source/graphic/GraphicObject.cxx                            |   24 
 vcl/source/helper/canvastools.cxx                               |    4 
 vcl/source/outdev/bitmapex.cxx                                  |   18 
 vcl/source/outdev/hatch.cxx                                     |   19 
 vcl/source/outdev/map.cxx                                       |   29 
 vcl/source/outdev/rect.cxx                                      |   16 
 vcl/source/outdev/text.cxx                                      |   33 
 vcl/source/outdev/textline.cxx                                  |    4 
 vcl/source/outdev/transparent.cxx                               |    2 
 vcl/source/text/textlayout.cxx                                  |    4 
 vcl/source/window/printdlg.cxx                                  |    4 
 vcl/source/window/window2.cxx                                   |    6 
 vcl/unx/gtk3/gtkinst.cxx                                        |    3 
 vcl/win/dtrans/MtaOleClipb.cxx                                  |   35 
 vcl/win/dtrans/WinClipboard.cxx                                 |   14 
 vcl/win/gdi/DWriteTextRenderer.cxx                              |   61 
 vcl/win/gdi/gdiimpl.cxx                                         |    4 
 vcl/win/gdi/winlayout.cxx                                       |   18 
 vcl/win/window/salframe.cxx                                     |   10 
 writerperfect/inc/WPXSvInputStream.hxx                          |    2 
 writerperfect/source/common/WPXSvInputStream.cxx                |   28 
 xmloff/source/draw/shapeexport.cxx                              |   17 
 342 files changed, 3833 insertions(+), 3193 deletions(-)

New commits:
commit dba44b488c46cd9d1cc512628ef110486b96aac3
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Fri May 17 20:40:37 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 03:22:43 2024 +0500

    tdf#161154: pass "scaling is done externally" information down the stack
    
    VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D does the
    scaling, taking into account the font scaling. Before commit
    8557ea84c9336ba8061246f1f46ddb6e02f413a1, D2DWriteTextOutRenderer was
    doing own scaling in addition, but it seems that it somehow didn't
    affect the result much. The said commit removed the scalng from
    D2DWriteTextOutRenderer. As tdf#160901 demonstrated, the scaling is
    necessary in different code paths - and it turns out, that we need to
    know, if the caller does its own scaling or not, to make a decision,
    if the scaling should be fone in D2DWriteTextOutRenderer.
    
    This hack passes this from VclProcessor2D to D2DWriteTextOutRenderer
    through OutputDevice. Thanks to Miklos for the isea. I still don't
    understand, why all this seemingly doesn't affect other renderers.
    
    Change-Id: I001036f4574898b8e7606652525638df43c35240
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167786
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins

diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx 
b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index f7a21a8e698c..f6b8dbc8f953 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -441,17 +441,21 @@ void 
VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D(
             mpOutputDevice->SetFont(aFont);
             mpOutputDevice->SetTextColor(Color(aRGBFontColor));
 
-            if (!aDXArray.empty())
             {
-                const SalLayoutGlyphs* pGlyphs = 
SalLayoutGlyphsCache::self()->GetLayoutGlyphs(
-                    mpOutputDevice, aText, nPos, nLen);
-                mpOutputDevice->DrawTextArray(aStartPoint, aText, aDXArray,
-                                              
rTextCandidate.getKashidaArray(), nPos, nLen,
-                                              SalLayoutFlags::NONE, pGlyphs);
-            }
-            else
-            {
-                mpOutputDevice->DrawText(aStartPoint, aText, nPos, nLen);
+                // For D2DWriteTextOutRenderer, we must pass a flag to not use 
font scaling
+                auto guard = mpOutputDevice->ScopedNoFontScaling();
+                if (!aDXArray.empty())
+                {
+                    const SalLayoutGlyphs* pGlyphs = 
SalLayoutGlyphsCache::self()->GetLayoutGlyphs(
+                        mpOutputDevice, aText, nPos, nLen);
+                    mpOutputDevice->DrawTextArray(aStartPoint, aText, aDXArray,
+                                                  
rTextCandidate.getKashidaArray(), nPos, nLen,
+                                                  SalLayoutFlags::NONE, 
pGlyphs);
+                }
+                else
+                {
+                    mpOutputDevice->DrawText(aStartPoint, aText, nPos, nLen);
+                }
             }
 
             if (rTextCandidate.getFontAttribute().getRTL())
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index bdbb2ecd1847..15c6cd130f71 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -21,6 +21,7 @@
 
 #include <sal/config.h>
 
+#include <comphelper/flagguard.hxx>
 #include <tools/gen.hxx>
 #include <tools/ref.hxx>
 #include <tools/solar.h>
@@ -259,6 +260,8 @@ private:
     mutable bool                    mbRefPoint : 1;
     mutable bool                    mbEnableRTL : 1;
 
+    bool mbNoFontScaling = false; // Used only by D2DWriteTextOutRenderer
+
 protected:
     mutable std::shared_ptr<vcl::font::PhysicalFontCollection> 
mxFontCollection;
     mutable std::shared_ptr<ImplFontCache> mxFontCache;
@@ -341,6 +344,8 @@ public:
     /// request XSpriteCanvas render interface
     css::uno::Reference< css::rendering::XSpriteCanvas > GetSpriteCanvas() 
const;
 
+    auto ScopedNoFontScaling() { return 
comphelper::FlagRestorationGuard(mbNoFontScaling, true); }
+
 protected:
 
     /** Acquire a graphics device that the output device uses to draw on.
diff --git a/include/vcl/vcllayout.hxx b/include/vcl/vcllayout.hxx
index c946f6f67884..b37e8ff6e45b 100644
--- a/include/vcl/vcllayout.hxx
+++ b/include/vcl/vcllayout.hxx
@@ -22,6 +22,7 @@
 #include <basegfx/point/b2dpoint.hxx>
 #include <basegfx/polygon/b2dpolypolygon.hxx>
 #include <basegfx/range/b2drectangle.hxx>
+#include <comphelper/flagguard.hxx>
 #include <i18nlangtag/languagetag.hxx>
 #include <tools/gen.hxx>
 #include <tools/degree.hxx>
@@ -110,6 +111,9 @@ public:
 
     virtual SalLayoutGlyphs GetGlyphs() const;
 
+    auto ScopedFontScaling(bool v) { return 
comphelper::FlagRestorationGuard(mbScaleFont, v); }
+    bool ScaleFont() const { return mbScaleFont; }
+
 protected:
     // used by layout engines
     SalLayout();
@@ -118,6 +122,8 @@ private:
     SalLayout(const SalLayout&) = delete;
     SalLayout& operator=(const SalLayout&) = delete;
 
+    bool mbScaleFont = true; // Used only by D2DWriteTextOutRenderer
+
 protected:
     int             mnMinCharPos;
     int             mnEndCharPos;
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index b68602e9e90c..edd215943a3c 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -449,7 +449,7 @@ void OutputDevice::ImplDrawSpecialText( SalLayout& 
rSalLayout )
 
 void OutputDevice::ImplDrawText( SalLayout& rSalLayout )
 {
-
+    auto guard = rSalLayout.ScopedFontScaling(!mbNoFontScaling);
     if( mbInitClipRegion )
         InitClipRegion();
     if( mbOutputClipped )
diff --git a/vcl/win/gdi/DWriteTextRenderer.cxx 
b/vcl/win/gdi/DWriteTextRenderer.cxx
index ff39275b36b9..6a28cb4b4d98 100644
--- a/vcl/win/gdi/DWriteTextRenderer.cxx
+++ b/vcl/win/gdi/DWriteTextRenderer.cxx
@@ -332,12 +332,14 @@ 
WinFontTransformGuard::WinFontTransformGuard(ID2D1RenderTarget* pRenderTarget,
                                              bool bIsVertical)
     : mpRenderTarget(pRenderTarget)
 {
-    const float hscale = [&font = rLayout.GetFont()]
+    const float hscale = [&rLayout]
     {
-        const auto& rPattern = font.GetFontSelectPattern();
+        if (!rLayout.ScaleFont())
+            return 1.0;
+        const auto& rPattern = rLayout.GetFont().GetFontSelectPattern();
         if (!rPattern.mnHeight || !rPattern.mnWidth)
             return 1.0;
-        return rPattern.mnWidth * font.GetAverageWidthFactor() / 
rPattern.mnHeight;
+        return rPattern.mnWidth * rLayout.GetFont().GetAverageWidthFactor() / 
rPattern.mnHeight;
     }();
 
     Degree10 angle = rLayout.GetOrientation();
commit f085903137c40f3714b9e82c8180abdce95d2549
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Thu May 2 14:23:53 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 03:20:40 2024 +0500

    tdf#160901: partially revert 8557ea84c9336ba8061246f1f46ddb6e02f413a1
    
    It turns out, that the horizontal scale is needed in the applied transform.
    
    Change-Id: Ic07e015f0ddeee3d66653b683d83435d04b9ab81
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167004
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/vcl/win/gdi/DWriteTextRenderer.cxx 
b/vcl/win/gdi/DWriteTextRenderer.cxx
index c6c2d4bb1acb..ff39275b36b9 100644
--- a/vcl/win/gdi/DWriteTextRenderer.cxx
+++ b/vcl/win/gdi/DWriteTextRenderer.cxx
@@ -332,19 +332,32 @@ 
WinFontTransformGuard::WinFontTransformGuard(ID2D1RenderTarget* pRenderTarget,
                                              bool bIsVertical)
     : mpRenderTarget(pRenderTarget)
 {
+    const float hscale = [&font = rLayout.GetFont()]
+    {
+        const auto& rPattern = font.GetFontSelectPattern();
+        if (!rPattern.mnHeight || !rPattern.mnWidth)
+            return 1.0;
+        return rPattern.mnWidth * font.GetAverageWidthFactor() / 
rPattern.mnHeight;
+    }();
+
     Degree10 angle = rLayout.GetOrientation();
     if (bIsVertical)
         angle += 900_deg10;
 
-    if (angle)
+    if (hscale != 1.0f || angle)
     {
         D2D1::Matrix3x2F aTransform;
         pRenderTarget->GetTransform(&aTransform);
         moTransform = aTransform;
 
+        if (hscale != 1.0f) // basegfx::fTools::equal is useless with float
+            aTransform = aTransform * D2D1::Matrix3x2F::Scale(hscale, 1.0f, { 
0, 0 });
+
         // DWrite angle is in clockwise degrees, our orientation is in 
counter-clockwise 10th
         // degrees.
-        aTransform = aTransform * 
D2D1::Matrix3x2F::Rotation(-toDegrees(angle), rBaseline);
+        if (angle)
+            aTransform = aTransform * 
D2D1::Matrix3x2F::Rotation(-toDegrees(angle), rBaseline);
+
         mpRenderTarget->SetTransform(aTransform);
     }
 }
commit 500bbe695777d396fbd0ef2ce50684a6d10f0401
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed Apr 10 22:45:41 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 03:19:48 2024 +0500

    Only call ID2D1RenderTarget::Get/SetTransform when needed
    
    Change-Id: Ifde2c24c222e3c316f5a4f47e86c2c08f676639a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165983
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/vcl/win/gdi/DWriteTextRenderer.cxx 
b/vcl/win/gdi/DWriteTextRenderer.cxx
index c9f14dc91219..c6c2d4bb1acb 100644
--- a/vcl/win/gdi/DWriteTextRenderer.cxx
+++ b/vcl/win/gdi/DWriteTextRenderer.cxx
@@ -108,7 +108,7 @@ public:
 
 private:
     ID2D1RenderTarget* mpRenderTarget;
-    D2D1::Matrix3x2F maTransform;
+    std::optional<D2D1::Matrix3x2F> moTransform;
 };
 
 } // end anonymous namespace
@@ -332,25 +332,27 @@ 
WinFontTransformGuard::WinFontTransformGuard(ID2D1RenderTarget* pRenderTarget,
                                              bool bIsVertical)
     : mpRenderTarget(pRenderTarget)
 {
-    pRenderTarget->GetTransform(&maTransform);
-    D2D1::Matrix3x2F aTransform = maTransform;
-
     Degree10 angle = rLayout.GetOrientation();
-
     if (bIsVertical)
         angle += 900_deg10;
 
     if (angle)
     {
+        D2D1::Matrix3x2F aTransform;
+        pRenderTarget->GetTransform(&aTransform);
+        moTransform = aTransform;
+
         // DWrite angle is in clockwise degrees, our orientation is in 
counter-clockwise 10th
         // degrees.
-        aTransform = aTransform
-                     * D2D1::Matrix3x2F::Rotation(
-                           -toDegrees(angle), rBaseline);
+        aTransform = aTransform * 
D2D1::Matrix3x2F::Rotation(-toDegrees(angle), rBaseline);
+        mpRenderTarget->SetTransform(aTransform);
     }
-    mpRenderTarget->SetTransform(aTransform);
 }
 
-WinFontTransformGuard::~WinFontTransformGuard() { 
mpRenderTarget->SetTransform(maTransform); }
+WinFontTransformGuard::~WinFontTransformGuard()
+{
+    if (moTransform)
+        mpRenderTarget->SetTransform(*moTransform);
+}
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 34a79b0ffa3530d5c0c761d0f51d1f903f7eef58
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Fri Apr 26 01:00:21 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 03:18:42 2024 +0500

    tdf#157240: also set font color together with font
    
    Commit b008831a5545e5a777d77547ef96b9798d795f30 (tdf#152990 set the font
    after the MapMode is (potentially) set, 2023-01-14) had moved setting of
    font forward, but left setting the font color behind. This fixed that.
    
    Change-Id: I73fadc7c139da3b6f84b7fc875c585d02fc1c719
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166654
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx 
b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index 5e5da4f712fa..f7a21a8e698c 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -328,8 +328,6 @@ void 
VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D(
                 mpOutputDevice->SetLayoutMode(nRTLLayoutMode);
             }
 
-            mpOutputDevice->SetTextColor(Color(aRGBFontColor));
-
             OUString aText(rTextCandidate.getText());
             sal_Int32 nPos = rTextCandidate.getTextPosition();
             sal_Int32 nLen = rTextCandidate.getTextLength();
@@ -441,6 +439,7 @@ void 
VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D(
             // tdf#152990 set the font after the MapMode is (potentially) set 
so canvas uses the desired
             // font size
             mpOutputDevice->SetFont(aFont);
+            mpOutputDevice->SetTextColor(Color(aRGBFontColor));
 
             if (!aDXArray.empty())
             {
commit 320cae1d8dabc5cc4bec79fe221cc3fb9722ab68
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed May 1 12:10:23 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 03:16:24 2024 +0500

    tdf#160867: only output first element of the map in ReqIF case
    
    It should be investigated, how the whole image map can be output in
    that case - something to be done separately.
    
    Change-Id: I6543c0d238205fabdb0a688e32a2d08423d7a5d3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166948
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins

diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx 
b/sw/qa/extras/htmlexport/htmlexport.cxx
index f54ad6e7fce2..e05fa2f27df2 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -3085,6 +3085,21 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, 
testHTML_160867)
     assertXPath(pDoc, "/html/body/p[2]/img"_ostr, "usemap"_ostr, "#" + 
mapName);
 }
 
+CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqIF_160867)
+{
+    // Given a document with an image with hyperlink, and text with hyperlink, 
both in a frame:
+    createSwDoc("tdf160867_image_with_link.fodt");
+    // When exporting to reqif:
+    ExportToReqif();
+    // For now, we don't (yet) output the whole map in ReqIF case.
+    // Make sure that the first hyperlink from the objects in the frame is 
output as an <a> element
+    // around the whole image of the frame.
+    xmlDocUniquePtr pXmlDoc = WrapReqifFromTempFile();
+    assertXPath(pXmlDoc, 
"//reqif-xhtml:p[2]/reqif-xhtml:a/reqif-xhtml:object"_ostr);
+    CPPUNIT_ASSERT(getXPath(pXmlDoc, "//reqif-xhtml:p[2]/reqif-xhtml:a"_ostr, 
"href"_ostr)
+                       .endsWith("foo/bar"));
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/html/htmlflywriter.cxx 
b/sw/source/filter/html/htmlflywriter.cxx
index ef3e4b19c35b..bc301b29566a 100644
--- a/sw/source/filter/html/htmlflywriter.cxx
+++ b/sw/source/filter/html/htmlflywriter.cxx
@@ -1080,17 +1080,17 @@ OUString lclWriteOutImap(SwHTMLWriter& rWrt, const 
SfxItemSet& rItemSet, const S
     OUString aIMapName;
 
     // Only consider the URL attribute if no ImageMap was supplied
-    if (!pAltImgMap)
-        pURLItem = rItemSet.GetItemIfSet( RES_URL );
 
     // write ImageMap
     const ImageMap* pIMap = pAltImgMap;
-    if( !pIMap && pURLItem )
+    if( !pIMap  )
     {
-        pIMap = pURLItem->GetMap();
+        pURLItem = rItemSet.GetItemIfSet(RES_URL);
+        if (pURLItem)
+            pIMap = pURLItem->GetMap();
     }
 
-    if (pIMap)
+    if (pIMap && !rWrt.mbReqIF)
     {
         // make the name unique
         aIMapName = pIMap->GetName();
@@ -1098,10 +1098,10 @@ OUString lclWriteOutImap(SwHTMLWriter& rWrt, const 
SfxItemSet& rItemSet, const S
         if (!aIMapName.isEmpty())
             aNameBase = aIMapName;
         else
+        {
             aNameBase = OOO_STRING_SVTOOLS_HTML_map;
-
-        if (aIMapName.isEmpty())
             aIMapName = aNameBase + OUString::number(rWrt.m_nImgMapCnt);
+        }
 
         bool bFound;
         do
@@ -1271,7 +1271,7 @@ SwHTMLWriter& OutHTML_ImageStart( HtmlWriter& rHtml, 
SwHTMLWriter& rWrt, const S
     // URL -> <a>...<img ... >...</a>
     const SvxMacroItem *pMacItem = rItemSet.GetItemIfSet(RES_FRMMACRO);
 
-    if (pURLItem || pMacItem)
+    if (pURLItem || pMacItem || (rWrt.mbReqIF && pAltImgMap))
     {
         OUString aMapURL;
         OUString aName;
@@ -1283,6 +1283,21 @@ SwHTMLWriter& OutHTML_ImageStart( HtmlWriter& rHtml, 
SwHTMLWriter& rWrt, const S
             aName = pURLItem->GetName();
             aTarget = pURLItem->GetTargetFrameName();
         }
+        else if (rWrt.mbReqIF && pAltImgMap)
+        {
+            // Get first non-empty map element
+            for (size_t i = 0; i < pAltImgMap->GetIMapObjectCount(); ++i)
+            {
+                if (auto* pIMapObject = pAltImgMap->GetIMapObject(i))
+                {
+                    aMapURL = pIMapObject->GetURL();
+                    aName = pIMapObject->GetName();
+                    aTarget = pIMapObject->GetTarget();
+                    if (!aMapURL.isEmpty() || !aName.isEmpty() || 
!aTarget.isEmpty())
+                        break;
+                }
+            }
+        }
 
         bool bEvents = pMacItem && !pMacItem->GetMacroTable().empty();
 
commit f93a01d929ef91b84b2d8260ecab74c6f39699bf
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed May 1 10:00:25 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 03:14:11 2024 +0500

    Make pNoteURL thread-local, just in case
    
    Change-Id: I27247a85f0d7497f70c5d97a8955b68a29be1176
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166946
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sw/source/core/inc/noteurl.hxx b/sw/source/core/inc/noteurl.hxx
index eeae15642a43..b575b60d20a0 100644
--- a/sw/source/core/inc/noteurl.hxx
+++ b/sw/source/core/inc/noteurl.hxx
@@ -59,7 +59,7 @@ public:
 };
 
 // globale Variable, in NoteURL.Cxx angelegt
-extern SwNoteURL* pNoteURL;
+extern thread_local SwNoteURL* pNoteURL;
 
 #endif
 
diff --git a/sw/source/core/layout/paintfrm.cxx 
b/sw/source/core/layout/paintfrm.cxx
index 69c571e1afe0..e04720c309b1 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -8036,7 +8036,7 @@ Graphic SwFlyFrameFormat::MakeGraphic( ImageMap* pMap, 
const sal_uInt32 /*nMaxim
             SfxItemState::SET != GetAttrSet().GetItemState( RES_URL );
         if( bNoteURL )
         {
-            OSL_ENSURE( !pNoteURL, "MakeGraphic: pNoteURL already used? " );
+            assert(!pNoteURL);
             pNoteURL = new SwNoteURL;
         }
         SwFlyFrame *pFly = static_cast<SwFlyFrame*>(pFirst);
@@ -8117,7 +8117,7 @@ Graphic SwFlyFrameFormat::MakeGraphic( ImageMap* pMap, 
const sal_uInt32 /*nMaxim
 
         if( bNoteURL )
         {
-            OSL_ENSURE( pNoteURL, "MakeGraphic: Good Bye, NoteURL." );
+            assert(pNoteURL);
             pNoteURL->FillImageMap(pMap, pFly->getFrameArea().Pos(), aMap);
             delete pNoteURL;
             pNoteURL = nullptr;
diff --git a/sw/source/core/text/noteurl.cxx b/sw/source/core/text/noteurl.cxx
index ae52e1c29a91..d66736280bb5 100644
--- a/sw/source/core/text/noteurl.cxx
+++ b/sw/source/core/text/noteurl.cxx
@@ -25,7 +25,7 @@
 #include <vcl/outdev.hxx>
 
 // Global variable
-SwNoteURL* pNoteURL = nullptr;
+thread_local SwNoteURL* pNoteURL = nullptr;
 
 void SwNoteURL::InsertURLNote(const OUString& rURL, const OUString& rTarget, 
const SwRect& rRect)
 {
commit 958efa1943e3a5f303cd9a85d7af3e8dabaff3da
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Apr 30 22:16:12 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 03:09:59 2024 +0500

    tdf#160867: export as-char frames' hyperlinks to image map
    
    Change-Id: Idc8d41a27c8ee9cdd12fb5e17a328ec6aa104a16
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166935
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx 
b/sw/qa/extras/htmlexport/htmlexport.cxx
index acad980505e3..f54ad6e7fce2 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -3071,13 +3071,17 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, 
testHTML_160867)
     CPPUNIT_ASSERT(pDoc);
     assertXPath(pDoc, "/html/body/p"_ostr, 2);
 
-    // Test export of text hyperlink in the image map. TODO: implement export 
of image hyperlink.
+    // Test export of image and text hyperlinks in the image map.
     // Without the fix, the test would fail with
     // - Expected: 1
     // - Actual  : 0
     // - In <>, XPath '/html/body/p[2]/map' number of nodes is incorrect
     const OUString mapName = getXPath(pDoc, "/html/body/p[2]/map"_ostr, 
"name"_ostr);
-    assertXPath(pDoc, "/html/body/p[2]/map/area"_ostr, "shape"_ostr, 
u"rect"_ustr);
+    assertXPath(pDoc, "/html/body/p[2]/map/area[1]"_ostr, "shape"_ostr, 
u"rect"_ustr);
+    CPPUNIT_ASSERT(
+        getXPath(pDoc, "/html/body/p[2]/map/area[1]"_ostr, 
"href"_ostr).endsWith("foo/bar"));
+    assertXPath(pDoc, "/html/body/p[2]/map/area[2]"_ostr, "shape"_ostr, 
u"rect"_ustr);
+    CPPUNIT_ASSERT(getXPath(pDoc, "/html/body/p[2]/map/area[2]"_ostr, 
"href"_ostr).endsWith("baz"));
     assertXPath(pDoc, "/html/body/p[2]/img"_ostr, "usemap"_ostr, "#" + 
mapName);
 }
 
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index 73295ffae113..18cd23ebef61 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -44,6 +44,7 @@
 #include <viewsh.hxx>
 #include <viewopt.hxx>
 #include <frmtool.hxx>
+#include <fmturl.hxx>
 #include <IDocumentSettingAccess.hxx>
 #include <IDocumentDeviceAccess.hxx>
 #include <IDocumentMarkAccess.hxx>
@@ -51,6 +52,7 @@
 #include <rootfrm.hxx>
 #include "inftxt.hxx"
 #include <noteurl.hxx>
+#include "porfly.hxx"
 #include "porftn.hxx"
 #include "porrst.hxx"
 #include "itratr.hxx"
@@ -1477,6 +1479,20 @@ void SwTextPaintInfo::NotifyURL_(const SwLinePortion& 
rPor) const
             const SwFormatINetFormat& rFormat = pAttr->GetINetFormat();
             pNoteURL->InsertURLNote(rFormat.GetValue(), 
rFormat.GetTargetFrame(), aIntersect);
         }
+        else if (rPor.IsFlyCntPortion())
+        {
+            if (auto* pFlyContentPortion = dynamic_cast<const 
sw::FlyContentPortion*>(&rPor))
+            {
+                if (auto* pFlyFtame = pFlyContentPortion->GetFlyFrame())
+                {
+                    if (auto* pFormat = pFlyFtame->GetFormat())
+                    {
+                        auto& url = pFormat->GetURL(); // TODO: url.GetMap() ?
+                        pNoteURL->InsertURLNote(url.GetURL(), 
url.GetTargetFrameName(), aIntersect);
+                    }
+                }
+            }
+        }
     }
 }
 
diff --git a/sw/source/core/text/itrpaint.cxx b/sw/source/core/text/itrpaint.cxx
index 8fa9ca45f5fd..f02beed8ce5b 100644
--- a/sw/source/core/text/itrpaint.cxx
+++ b/sw/source/core/text/itrpaint.cxx
@@ -33,6 +33,7 @@
 #include <swfont.hxx>
 #include "txtpaint.hxx"
 #include "porfld.hxx"
+#include "porfly.hxx"
 #include "portab.hxx"
 #include <txatbase.hxx>
 #include <charfmt.hxx>
@@ -40,6 +41,7 @@
 #include "porrst.hxx"
 #include "pormulti.hxx"
 #include <doc.hxx>
+#include <fmturl.hxx>
 
 // Returns, if we have an underline breaking situation
 // Adding some more conditions here means you also have to change them
@@ -461,6 +463,21 @@ void SwTextPainter::DrawTextLine( const SwRect &rPaint, 
SwSaveClip &rClip,
 
         if (GetFnt()->IsURL() && pPor->InTextGrp())
             GetInfo().NotifyURL(*pPor);
+        else if (pPor->IsFlyCntPortion())
+        {
+            if (auto* pFlyContentPortion = 
dynamic_cast<sw::FlyContentPortion*>(pPor))
+            {
+                if (auto* pFlyFrame = pFlyContentPortion->GetFlyFrame())
+                {
+                    if (auto* pFormat = pFlyFrame->GetFormat())
+                    {
+                        auto& url = pFormat->GetURL();
+                        if (!url.GetURL().isEmpty()) // TODO: url.GetMap() ?
+                            GetInfo().NotifyURL(*pPor);
+                    }
+                }
+            }
+        }
 
         bFirst &= !pPor->GetLen();
         if( pNext || !pPor->IsMarginPortion() )
diff --git a/sw/source/core/text/porfly.hxx b/sw/source/core/text/porfly.hxx
index a519c1109c87..2c56563a4436 100644
--- a/sw/source/core/text/porfly.hxx
+++ b/sw/source/core/text/porfly.hxx
@@ -76,6 +76,7 @@ namespace sw
             FlyContentPortion(SwFlyInContentFrame* pFly);
             static FlyContentPortion* Create(const SwTextFrame& rFrame, 
SwFlyInContentFrame* pFly, const Point& rBase, tools::Long nAscent, tools::Long 
nDescent, tools::Long nFlyAsc, tools::Long nFlyDesc, AsCharFlags nFlags);
             SwFlyInContentFrame* GetFlyFrame() { return m_pFly; }
+            const SwFlyInContentFrame* GetFlyFrame() const { return m_pFly; }
             void GetFlyCursorOfst(Point& rPoint, SwPosition& rPos, 
SwCursorMoveState* pCMS) const { m_pFly->GetModelPositionForViewPoint(&rPos, 
rPoint, pCMS); };
             virtual void Paint(const SwTextPaintInfo& rInf) const override;
             virtual ~FlyContentPortion() override;
commit 473a9e3e0b124beb11fdd07099ac221513ce1b64
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Apr 30 15:40:41 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 03:08:50 2024 +0500

    tdf#160867: restore HTML map export for text hyperlinks in frames
    
    The most exciting was to discover that this functionality was actually
    already implemented prior to 2001, and then accidentally dropped, and
    nobody noticed, until Noel did his great cleanups, and made an amazing
    investigation in commit ed2ae3c3bb0a708cafc3de6a01adc9ddc43fb859 (remove
    dead SwNoteURL, 2018-03-14). The detailed commit message made my task
    so much easier: I knew where and what to restore.
    
    So this change restores relevant pieces removed over the time in commits
    * 1b666235f6b0b0f0b13f473bf3b639f4f5f0b12f (loplugin:singlevalfields
      improve copy constructor check, 2018-01-03),
    * be8c414567f49242164b1fdfb12764b16be355c1 (loplugin:unusedmethods also
      check for functions returning bool, 2018-01-19),
    * 73139fe600fc1399ae828077981a2498cb0a0b0c (loplugin:unusedmethods,
      2018-01-20)
    * bb7ade140df807b6a0f12766a1365b8f8d0fd342 (loplugin:unusedmethods,
      2018-03-08),
    * ed2ae3c3bb0a708cafc3de6a01adc9ddc43fb859 (remove dead SwNoteURL,
      2018-03-14),
    * fd1cfd25b48cb4bd5c87e9cb317b37699ca3a1d6 (PortionType::Url is unused,
      2019-01-18).
    
    It re-implements the functionality accidentally removed in commit
    da7671e4f7482110ecd0cfbfd7dbd9e0b873c81c (Opt.(FME): The new attribute
    handler makes a lot of code superfluous, 2001-03-15), moving it into
    SwAttrHandler, which replaced the ChgFnt in SwTxtAttr.
    
    It also fixes the code writing the HTML image map, to output valid HTML.
    
    And finally, it adds a unit test, to avoid repeating the story :-)
    
    Change-Id: I72ae3cf30f0e9689f50a2c877e1622e4ae46de49
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166924
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/svtools/source/svhtml/htmlout.cxx 
b/svtools/source/svhtml/htmlout.cxx
index 4f027b0c10de..2616624bdc60 100644
--- a/svtools/source/svhtml/htmlout.cxx
+++ b/svtools/source/svhtml/htmlout.cxx
@@ -701,7 +701,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream,
 
                 sOut.append(OString::Concat("<") + OOO_STRING_SVTOOLS_HTML_area
                         " " OOO_STRING_SVTOOLS_HTML_O_shape
-                        "=" + pShape + " "
+                        "=\"" + pShape + "\" "
                         OOO_STRING_SVTOOLS_HTML_O_coords "=\"" +
                         aCoords + "\" ");
                 rStream.WriteOString( sOut );
@@ -755,7 +755,7 @@ SvStream& HTMLOutFuncs::Out_ImageMap( SvStream& rStream,
                     Out_Events( rStream, rMacroTab, pEventTable,
                                 bOutStarBasic );
 
-                rStream.WriteChar( '>' );
+                rStream.WriteOString("/>");
             }
         }
 
diff --git a/sw/qa/extras/htmlexport/data/tdf160867_image_with_link.fodt 
b/sw/qa/extras/htmlexport/data/tdf160867_image_with_link.fodt
new file mode 100644
index 000000000000..43c35cdff13e
--- /dev/null
+++ b/sw/qa/extras/htmlexport/data/tdf160867_image_with_link.fodt
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:styles>
+  <style:style style:name="Frame" style:family="graphic">
+   <style:graphic-properties text:anchor-type="as-char" svg:x="0" svg:y="0" 
style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" 
fo:background-color="transparent" draw:fill="none" fo:margin-left="0" 
fo:margin-right="0" fo:margin-top="0" fo:margin-bottom="0" style:wrap="none" 
style:vertical-pos="middle" style:vertical-rel="baseline" 
style:horizontal-pos="from-left" style:horizontal-rel="paragraph" 
fo:padding="0" fo:border="none" loext:rel-width-rel="paragraph"/>
+  </style:style>
+ </office:styles>
+ <office:body>
+  <office:text>
+   <text:p><draw:a xlink:type="simple" xlink:href="foo/bar"><draw:frame 
draw:style-name="Frame" draw:name="image1" svg:width="17cm" svg:height="25mm" 
style:rel-height="scale"><draw:image draw:mime-type="image/png">
+       
<office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAMSURBVBhXY/jPwAAAAwEBAGMkVdMAAAAASUVORK5C</office:binary-data>
+      </draw:image>
+     </draw:frame></draw:a>image1 with a hyperlink, and this text with <text:a 
xlink:type="simple" xlink:href="baz" text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">another 
hyperlink</text:a></text:p>
+   <text:p><draw:frame draw:style-name="Frame" draw:name="frame" 
svg:width="17cm">
+     <draw:text-box fo:min-height="1pt">
+      <text:p><draw:a xlink:type="simple" xlink:href="foo/bar"><draw:frame 
draw:style-name="Frame" draw:name="image2" svg:width="17cm" 
svg:height="25mm"><draw:image draw:mime-type="image/png">
+          
<office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAMSURBVBhXY/jPwAAAAwEBAGMkVdMAAAAASUVORK5C</office:binary-data>
+         </draw:image>
+        </draw:frame></draw:a>image2 with a hyperlink, and this text with 
<text:a xlink:type="simple" xlink:href="baz" text:style-name="Internet_20_link" 
text:visited-style-name="Visited_20_Internet_20_Link">another 
hyperlink</text:a>, in a frame</text:p>
+     </draw:text-box>
+    </draw:frame></text:p>
+  </office:text>
+ </office:body>
+</office:document>
\ No newline at end of file
diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx 
b/sw/qa/extras/htmlexport/htmlexport.cxx
index ca777fc980f7..acad980505e3 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -3060,6 +3060,27 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, 
testHTML_Tdf160390)
     ExportToHTML();
 }
 
+CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testHTML_160867)
+{
+    // Given a document with an image with hyperlink, and text with hyperlink, 
both in a frame:
+    createSwDoc("tdf160867_image_with_link.fodt");
+    // When exporting to HTML:
+    ExportToHTML();
+    // Parse it as XML (strict!)
+    xmlDocUniquePtr pDoc = parseXml(maTempFile);
+    CPPUNIT_ASSERT(pDoc);
+    assertXPath(pDoc, "/html/body/p"_ostr, 2);
+
+    // Test export of text hyperlink in the image map. TODO: implement export 
of image hyperlink.
+    // Without the fix, the test would fail with
+    // - Expected: 1
+    // - Actual  : 0
+    // - In <>, XPath '/html/body/p[2]/map' number of nodes is incorrect
+    const OUString mapName = getXPath(pDoc, "/html/body/p[2]/map"_ostr, 
"name"_ostr);
+    assertXPath(pDoc, "/html/body/p[2]/map/area"_ostr, "shape"_ostr, 
u"rect"_ustr);
+    assertXPath(pDoc, "/html/body/p[2]/img"_ostr, "usemap"_ostr, "#" + 
mapName);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/inc/noteurl.hxx b/sw/source/core/inc/noteurl.hxx
index 1e5775d3c099..eeae15642a43 100644
--- a/sw/source/core/inc/noteurl.hxx
+++ b/sw/source/core/inc/noteurl.hxx
@@ -20,8 +20,42 @@
 #ifndef INCLUDED_SW_SOURCE_CORE_INC_NOTEURL_HXX
 #define INCLUDED_SW_SOURCE_CORE_INC_NOTEURL_HXX
 
+#include <swrect.hxx>
+
+#include <rtl/ustring.hxx>
+
+#include <vector>
+
+class ImageMap;
+class MapMode;
+
+class SwURLNote
+{
+    OUString aURL;
+    OUString aTarget;
+    SwRect aRect;
+
+public:
+    SwURLNote(const OUString& rURL, const OUString& rTarget, const SwRect& 
rRect)
+        : aURL(rURL)
+        , aTarget(rTarget)
+        , aRect(rRect)
+    {
+    }
+    const OUString& GetURL() const { return aURL; }
+    const OUString& GetTarget() const { return aTarget; }
+    const SwRect& GetRect() const { return aRect; }
+};
+
 class SwNoteURL
 {
+private:
+    std::vector<SwURLNote> m_List;
+
+public:
+    SwNoteURL() {}
+    void InsertURLNote(const OUString& rURL, const OUString& rTarget, const 
SwRect& rRect);
+    void FillImageMap(ImageMap* pMap, const Point& rPos, const MapMode& rMap);
 };
 
 // globale Variable, in NoteURL.Cxx angelegt
diff --git a/sw/source/core/inc/swfont.hxx b/sw/source/core/inc/swfont.hxx
index 86f44fb3eb64..bde9fee7b842 100644
--- a/sw/source/core/inc/swfont.hxx
+++ b/sw/source/core/inc/swfont.hxx
@@ -172,6 +172,7 @@ class SwFont
     bool m_bFontChg       :1;
     bool m_bOrgChg        :1;  // nOrgHeight/Ascent are invalid
     bool m_bGreyWave      :1;  // for the extended TextInput: gray waveline
+    bool m_bURL : 1 = false;
 
 public:
     SwFont( const SwAttrSet* pSet, const IDocumentSettingAccess* 
pIDocumentSettingAccess );
@@ -262,6 +263,8 @@ public:
     inline void SetGreyWave( const bool bNew );
     bool IsGreyWave() const { return m_bGreyWave; }
     bool IsPaintBlank() const { return m_bPaintBlank; }
+    void SetURL(const bool bURL) { m_bURL = bURL; }
+    bool IsURL() const { return m_bURL; }
 
     // setting of the base class font for SwTextCharFormat
     void SetDiffFnt( const SfxItemSet* pSet,
diff --git a/sw/source/core/layout/paintfrm.cxx 
b/sw/source/core/layout/paintfrm.cxx
index 2375fae0db3c..69c571e1afe0 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -8118,6 +8118,7 @@ Graphic SwFlyFrameFormat::MakeGraphic( ImageMap* pMap, 
const sal_uInt32 /*nMaxim
         if( bNoteURL )
         {
             OSL_ENSURE( pNoteURL, "MakeGraphic: Good Bye, NoteURL." );
+            pNoteURL->FillImageMap(pMap, pFly->getFrameArea().Pos(), aMap);
             delete pNoteURL;
             pNoteURL = nullptr;
         }
diff --git a/sw/source/core/text/atrhndl.hxx b/sw/source/core/text/atrhndl.hxx
index 851615325a06..efe1ae954958 100644
--- a/sw/source/core/text/atrhndl.hxx
+++ b/sw/source/core/text/atrhndl.hxx
@@ -46,6 +46,8 @@ private:
     // a template, if we have to restart the attribute evaluation
     std::optional<SwFont> m_oFnt;
 
+    int m_nINETFMT = 0; // for font's SetURL
+
     bool m_bVertLayout;
     bool m_bVertLayoutLRBT;
 
diff --git a/sw/source/core/text/atrstck.cxx b/sw/source/core/text/atrstck.cxx
index 048878292fc0..965f23b297f1 100644
--- a/sw/source/core/text/atrstck.cxx
+++ b/sw/source/core/text/atrstck.cxx
@@ -367,6 +367,13 @@ void SwAttrHandler::PushAndChg( const SwTextAttr& rAttr, 
SwFont& rFnt )
                 }
             }
         }
+
+        if (rAttr.Which() == RES_TXTATR_INETFMT)
+        {
+            if (m_nINETFMT == 0)
+                rFnt.SetURL(true);
+            ++m_nINETFMT;
+        }
     }
     // this is the usual case, we have a basic attribute, push it onto the
     // stack and change the font
@@ -433,6 +440,14 @@ void SwAttrHandler::PopAndChg( const SwTextAttr& rAttr, 
SwFont& rFnt )
         const SfxItemSet* pSet = CharFormat::GetItemSet( rAttr.GetAttr() );
         if ( !pSet ) return;
 
+        if (rAttr.Which() == RES_TXTATR_INETFMT)
+        {
+            assert(m_nINETFMT > 0);
+            --m_nINETFMT;
+            if (m_nINETFMT == 0)
+                rFnt.SetURL(false);
+        }
+
         for ( sal_uInt16 i = RES_CHRATR_BEGIN; i < RES_CHRATR_END; i++)
         {
             const SfxPoolItem* pItem;
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index 66dae09b35c4..73295ffae113 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -21,7 +21,9 @@
 
 #include <unotools/linguprops.hxx>
 #include <unotools/lingucfg.hxx>
+#include <fmtinfmt.hxx>
 #include <hintids.hxx>
+#include <txatbase.hxx>
 #include <svl/ctloptions.hxx>
 #include <sfx2/infobar.hxx>
 #include <sfx2/printer.hxx>
@@ -1459,6 +1461,25 @@ void SwTextPaintInfo::DrawViewOpt( const SwLinePortion 
&rPor,
         DrawBackground( rPor, pColor );
 }
 
+void SwTextPaintInfo::NotifyURL_(const SwLinePortion& rPor) const
+{
+    assert(pNoteURL);
+
+    SwRect aIntersect;
+    CalcRect(rPor, nullptr, &aIntersect);
+
+    if (aIntersect.HasArea())
+    {
+        SwTextNode* pNd = 
const_cast<SwTextNode*>(GetTextFrame()->GetTextNodeFirst());
+        SwTextAttr* const pAttr = pNd->GetTextAttrAt(sal_Int32(GetIdx()), 
RES_TXTATR_INETFMT);
+        if (pAttr)
+        {
+            const SwFormatINetFormat& rFormat = pAttr->GetINetFormat();
+            pNoteURL->InsertURLNote(rFormat.GetValue(), 
rFormat.GetTargetFrame(), aIntersect);
+        }
+    }
+}
+
 static void lcl_InitHyphValues( PropertyValues &rVals,
             sal_Int16 nMinLeading, sal_Int16 nMinTrailing,
             bool bNoCapsHyphenation, bool bNoLastWordHyphenation,
diff --git a/sw/source/core/text/inftxt.hxx b/sw/source/core/text/inftxt.hxx
index cb11d02b1e8d..9c4126a7a6e9 100644
--- a/sw/source/core/text/inftxt.hxx
+++ b/sw/source/core/text/inftxt.hxx
@@ -358,6 +358,7 @@ class SwTextPaintInfo : public SwTextSizeInfo
                    const bool bGrammarCheck = false );
 
     SwTextPaintInfo &operator=(const SwTextPaintInfo&) = delete;
+    void NotifyURL_(const SwLinePortion& rPor) const;
 
 protected:
     SwTextPaintInfo()
@@ -418,6 +419,12 @@ public:
 
     void DrawCSDFHighlighting(const SwLinePortion &rPor) const;
 
+    void NotifyURL(const SwLinePortion& rPor) const
+    {
+        if (URLNotify())
+            NotifyURL_(rPor);
+    }
+
     /**
      * Calculate the rectangular area where the portion takes place.
      * @param[in]   rPor        portion for which the method specify the 
painting area
diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx
index dad32bf4fcac..e7eeed46384f 100644
--- a/sw/source/core/text/itrform2.cxx
+++ b/sw/source/core/text/itrform2.cxx
@@ -1319,7 +1319,7 @@ SwTextPortion *SwTextFormatter::WhichTextPor( 
SwTextFormatInfo &rInf ) const
             }
             if( !pPor )
             {
-                if( !rInf.X() && !m_pCurr->GetNextPortion() && 
!m_pCurr->GetLen() )
+                if( !rInf.X() && !m_pCurr->GetNextPortion() && 
!m_pCurr->GetLen()  && !GetFnt()->IsURL() )
                     pPor = m_pCurr;
                 else
                     pPor = new SwTextPortion;
diff --git a/sw/source/core/text/itrpaint.cxx b/sw/source/core/text/itrpaint.cxx
index 5b6bb1288d57..8fa9ca45f5fd 100644
--- a/sw/source/core/text/itrpaint.cxx
+++ b/sw/source/core/text/itrpaint.cxx
@@ -459,6 +459,9 @@ void SwTextPainter::DrawTextLine( const SwRect &rPaint, 
SwSaveClip &rClip,
         // reset (for special vertical alignment)
         GetInfo().Y( nOldY );
 
+        if (GetFnt()->IsURL() && pPor->InTextGrp())
+            GetInfo().NotifyURL(*pPor);
+
         bFirst &= !pPor->GetLen();
         if( pNext || !pPor->IsMarginPortion() )
             pPor->Move( GetInfo() );
diff --git a/sw/source/core/text/noteurl.cxx b/sw/source/core/text/noteurl.cxx
index fa91ea252d5f..ae52e1c29a91 100644
--- a/sw/source/core/text/noteurl.cxx
+++ b/sw/source/core/text/noteurl.cxx
@@ -19,7 +19,42 @@
 
 #include <noteurl.hxx>
 
+#include <vcl/imap.hxx>
+#include <vcl/imaprect.hxx>
+#include <vcl/mapmod.hxx>
+#include <vcl/outdev.hxx>
+
 // Global variable
 SwNoteURL* pNoteURL = nullptr;
 
+void SwNoteURL::InsertURLNote(const OUString& rURL, const OUString& rTarget, 
const SwRect& rRect)
+{
+    const size_t nCount = m_List.size();
+    for (size_t i = 0; i < nCount; ++i)
+        if (rRect == m_List[i].GetRect())
+            return;
+
+    m_List.emplace_back(rURL, rTarget, rRect);
+}
+
+void SwNoteURL::FillImageMap(ImageMap* pMap, const Point& rPos, const MapMode& 
rMap)
+{
+    assert(pMap && "FillImageMap: No ImageMap, no cookies!");
+    const size_t nCount = m_List.size();
+    if (nCount)
+    {
+        MapMode aMap(MapUnit::Map100thMM);
+        for (size_t i = 0; i < nCount; ++i)
+        {
+            const SwURLNote& rNote = m_List[i];
+            SwRect aSwRect(rNote.GetRect());
+            aSwRect -= rPos;
+            tools::Rectangle 
aRect(OutputDevice::LogicToLogic(aSwRect.SVRect(), rMap, aMap));
+            IMapRectangleObject aObj(aRect, rNote.GetURL(), OUString(), 
OUString(),
+                                     rNote.GetTarget(), OUString(), true, 
false);
+            pMap->InsertIMapObject(aObj);
+        }
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/text/pormulti.cxx b/sw/source/core/text/pormulti.cxx
index 7771ab9b5e8f..240ada4ab0bf 100644
--- a/sw/source/core/text/pormulti.cxx
+++ b/sw/source/core/text/pormulti.cxx
@@ -1785,6 +1785,9 @@ void SwTextPainter::PaintMultiPortion( const SwRect 
&rPaint,
             pPor->Paint( GetInfo() );
         }
 
+        if (GetFnt()->IsURL() && pPor->InTextGrp())
+            GetInfo().NotifyURL(*pPor);
+
         bFirst &= !pPor->GetLen();
         if( pNext || !pPor->IsMarginPortion() )
             pPor->Move( GetInfo() );
diff --git a/sw/source/core/txtnode/swfont.cxx 
b/sw/source/core/txtnode/swfont.cxx
index 98fec0f153e2..20b3062267f7 100644
--- a/sw/source/core/txtnode/swfont.cxx
+++ b/sw/source/core/txtnode/swfont.cxx
@@ -684,6 +684,7 @@ SwFont::SwFont( const SwFont &rFont )
     m_bOrgChg = rFont.m_bOrgChg;
     m_bPaintBlank = rFont.m_bPaintBlank;
     m_bGreyWave = rFont.m_bGreyWave;
+    m_bURL = rFont.m_bURL;
 }
 
 SwFont::SwFont( const SwAttrSet* pAttrSet,
@@ -873,6 +874,7 @@ SwFont& SwFont::operator=( const SwFont &rFont )
         m_bOrgChg = rFont.m_bOrgChg;
         m_bPaintBlank = rFont.m_bPaintBlank;
         m_bGreyWave = rFont.m_bGreyWave;
+        m_bURL = rFont.m_bURL;
     }
     return *this;
 }
commit 84991971fc00759cb97b52d968affb3698defaeb
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Thu Apr 18 13:18:37 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jun 18 02:36:41 2024 +0500

    Return double from OutputDevice::GetTextArray
    
    And introduce GetTextWidth / GetTextHeight variants returning double.
    It allows to avoid premature rounding.
    
    At least in one case - testTdf145111_anchor_in_Fontwork - it allowed
    to make the test DPI-independent (at least in my testing on Windows,
    using 125, 150, and 175% UI scaling).
    
    Change-Id: I973d2c729ec6bb7114b4f99b9027f1ead7c1d061
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166237
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/chart2/qa/extras/xshape/data/reference/fdo75075.xml 
b/chart2/qa/extras/xshape/data/reference/fdo75075.xml
index fe8cb00cf178..6f401aa41edd 100644
--- a/chart2/qa/extras/xshape/data/reference/fdo75075.xml
+++ b/chart2/qa/extras/xshape/data/reference/fdo75075.xml
@@ -14,9 +14,9 @@
    <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
   </Transformation>
  </XShape>
- <XShape positionX="320" positionY="180" sizeX="12852" sizeY="8640" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShape positionX="320" positionY="180" sizeX="12850" sizeY="8640" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0">
   <XShapes>
-   <XShape positionX="1524" positionY="379" sizeX="10364" sizeY="7794" 
type="com.sun.star.drawing.RectangleShape" name="MarkHandles" 
fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" 
textRightDistance="0" textUpperDistance="0" textLowerDistance="0" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
+   <XShape positionX="1527" positionY="379" sizeX="10339" sizeY="7794" 
type="com.sun.star.drawing.RectangleShape" name="MarkHandles" 
fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" 
textRightDistance="0" textUpperDistance="0" textLowerDistance="0" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
     <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
     <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" 
angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" 
endIntensity="100" stepCount="0"/>
     <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -25,12 +25,12 @@
     <LineStart/>
     <LineEnd/>
     <Transformation>
-     <Line1 column1="10365.000000" column2="0.000000" column3="1524.000000"/>
+     <Line1 column1="10340.000000" column2="0.000000" column3="1527.000000"/>
      <Line2 column1="0.000000" column2="7795.000000" column3="379.000000"/>
      <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
     </Transformation>
    </XShape>
-   <XShape positionX="320" positionY="180" sizeX="12852" sizeY="8640" 
type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" 
fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" 
textRightDistance="0" textUpperDistance="0" textLowerDistance="0" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
+   <XShape positionX="320" positionY="180" sizeX="12850" sizeY="8640" 
type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" 
fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" 
textRightDistance="0" textUpperDistance="0" textLowerDistance="0" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
     <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
     <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" 
angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" 
endIntensity="100" stepCount="0"/>
     <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -39,18 +39,18 @@
     <LineStart/>
     <LineEnd/>
     <Transformation>
-     <Line1 column1="12853.000000" column2="0.000000" column3="320.000000"/>
+     <Line1 column1="12851.000000" column2="0.000000" column3="320.000000"/>
      <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
      <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
     </Transformation>
    </XShape>
-   <XShape positionX="320" positionY="180" sizeX="12852" sizeY="8640" 
type="com.sun.star.drawing.GroupShape">
+   <XShape positionX="320" positionY="180" sizeX="12850" sizeY="8640" 
type="com.sun.star.drawing.GroupShape">
     <XShapes>
-     <XShape positionX="1374" positionY="378" sizeX="10664" sizeY="7944" 
type="com.sun.star.drawing.GroupShape">
+     <XShape positionX="1377" positionY="378" sizeX="10639" sizeY="7944" 
type="com.sun.star.drawing.GroupShape">
       <XShapes>
-       <XShape positionX="1524" positionY="379" sizeX="10364" sizeY="7794" 
type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+       <XShape positionX="1527" positionY="379" sizeX="10339" sizeY="7794" 
type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
         <XShapes>
-         <XShape positionX="1524" positionY="379" sizeX="10364" sizeY="7794" 
type="com.sun.star.drawing.RectangleShape" name="CID/DiagramWall=" 
fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" 
textRightDistance="0" textUpperDistance="0" textLowerDistance="0" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" 
fillTransparence="0" fillTransparenceGradientName="">
+         <XShape positionX="1527" positionY="379" sizeX="10339" sizeY="7794" 
type="com.sun.star.drawing.RectangleShape" name="CID/DiagramWall=" 
fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" 
textRightDistance="0" textUpperDistance="0" textLowerDistance="0" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" 
fillTransparence="0" fillTransparenceGradientName="">
           <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
           <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" 
angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" 
endIntensity="100" stepCount="0"/>
           <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -59,125 +59,125 @@
           <LineStart/>
           <LineEnd/>
           <Transformation>
-           <Line1 column1="10365.000000" column2="0.000000" 
column3="1524.000000"/>
+           <Line1 column1="10340.000000" column2="0.000000" 
column3="1527.000000"/>
            <Line2 column1="0.000000" column2="7795.000000" 
column3="379.000000"/>
            <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
           </Transformation>
          </XShape>
         </XShapes>
         <Transformation>
-         <Line1 column1="10365.000000" column2="0.000000" 
column3="1524.000000"/>
+         <Line1 column1="10340.000000" column2="0.000000" 
column3="1527.000000"/>
          <Line2 column1="0.000000" column2="7795.000000" column3="379.000000"/>
          <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
         </Transformation>
        </XShape>
-       <XShape positionX="1374" positionY="378" sizeX="10664" sizeY="7944" 
type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+       <XShape positionX="1377" positionY="378" sizeX="10639" sizeY="7944" 
type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
         <XShapes>
-         <XShape positionX="1524" positionY="378" sizeX="10364" sizeY="7794" 
type="com.sun.star.drawing.GroupShape">
+         <XShape positionX="1527" positionY="378" sizeX="10339" sizeY="7794" 
type="com.sun.star.drawing.GroupShape">
           <XShapes>
-           <XShape positionX="1524" positionY="378" sizeX="10364" sizeY="7794" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0:Grid=0">
+           <XShape positionX="1527" positionY="378" sizeX="10339" sizeY="7794" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0:Grid=0">
             <XShapes>
-             <XShape positionX="1524" positionY="378" sizeX="10364" 
sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
+             <XShape positionX="1527" positionY="378" sizeX="10339" 
sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
               <LineDash style="RECT" dots="1" dotLen="20" dashes="1" 
dashLen="20" distance="20"/>
               <LineStart/>
               <LineEnd/>
               <PolyPolygon>
                <pointSequence>
-                <point positionX="11888" positionY="8172"/>
-                <point positionX="1524" positionY="8172"/>
+                <point positionX="11866" positionY="8172"/>
+                <point positionX="1527" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="7197"/>
-                <point positionX="1524" positionY="7197"/>
+                <point positionX="11866" positionY="7197"/>
+                <point positionX="1527" positionY="7197"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="6223"/>
-                <point positionX="1524" positionY="6223"/>
+                <point positionX="11866" positionY="6223"/>
+                <point positionX="1527" positionY="6223"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="5249"/>
-                <point positionX="1524" positionY="5249"/>
+                <point positionX="11866" positionY="5249"/>
+                <point positionX="1527" positionY="5249"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="4275"/>
-                <point positionX="1524" positionY="4275"/>
+                <point positionX="11866" positionY="4275"/>
+                <point positionX="1527" positionY="4275"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="3300"/>
-                <point positionX="1524" positionY="3300"/>
+                <point positionX="11866" positionY="3300"/>
+                <point positionX="1527" positionY="3300"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="2326"/>
-                <point positionX="1524" positionY="2326"/>
+                <point positionX="11866" positionY="2326"/>
+                <point positionX="1527" positionY="2326"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="1352"/>
-                <point positionX="1524" positionY="1352"/>
+                <point positionX="11866" positionY="1352"/>
+                <point positionX="1527" positionY="1352"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="378"/>
-                <point positionX="1524" positionY="378"/>
+                <point positionX="11866" positionY="378"/>
+                <point positionX="1527" positionY="378"/>
                </pointSequence>
               </PolyPolygon>
               <Geometry>
                <pointSequence>
-                <point positionX="10364" positionY="7794"/>
+                <point positionX="10339" positionY="7794"/>
                 <point positionX="0" positionY="7794"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="6819"/>
+                <point positionX="10339" positionY="6819"/>
                 <point positionX="0" positionY="6819"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="5845"/>
+                <point positionX="10339" positionY="5845"/>
                 <point positionX="0" positionY="5845"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="4871"/>
+                <point positionX="10339" positionY="4871"/>
                 <point positionX="0" positionY="4871"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="3897"/>
+                <point positionX="10339" positionY="3897"/>
                 <point positionX="0" positionY="3897"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="2922"/>
+                <point positionX="10339" positionY="2922"/>
                 <point positionX="0" positionY="2922"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="1948"/>
+                <point positionX="10339" positionY="1948"/>
                 <point positionX="0" positionY="1948"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="974"/>
+                <point positionX="10339" positionY="974"/>
                 <point positionX="0" positionY="974"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="0"/>
+                <point positionX="10339" positionY="0"/>
                 <point positionX="0" positionY="0"/>
                </pointSequence>
               </Geometry>
               <Transformation>
-               <Line1 column1="10364.000000" column2="0.000000" 
column3="1524.000000"/>
+               <Line1 column1="10339.000000" column2="0.000000" 
column3="1527.000000"/>
                <Line2 column1="0.000000" column2="7794.000000" 
column3="378.000000"/>
                <Line3 column1="0.000000" column2="0.000000" 
column3="1.000000"/>
               </Transformation>
              </XShape>
-             <XShape positionX="1524" positionY="378" sizeX="0" sizeY="7794" 
type="com.sun.star.drawing.PolyLineShape" name="HandlesOnly" 
fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" 
textRightDistance="0" textUpperDistance="0" textLowerDistance="0" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="NONE">
+             <XShape positionX="1527" positionY="378" sizeX="0" sizeY="7794" 
type="com.sun.star.drawing.PolyLineShape" name="HandlesOnly" 
fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" 
textRightDistance="0" textUpperDistance="0" textLowerDistance="0" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="NONE">
               <LineDash style="RECT" dots="1" dotLen="20" dashes="1" 
dashLen="20" distance="20"/>
               <LineStart/>
               <LineEnd/>
               <PolyPolygon>
                <pointSequence>
-                <point positionX="1524" positionY="8172"/>
-                <point positionX="1524" positionY="7197"/>
-                <point positionX="1524" positionY="6223"/>
-                <point positionX="1524" positionY="5249"/>
-                <point positionX="1524" positionY="4275"/>
-                <point positionX="1524" positionY="3300"/>
-                <point positionX="1524" positionY="2326"/>
-                <point positionX="1524" positionY="1352"/>
-                <point positionX="1524" positionY="378"/>
+                <point positionX="1527" positionY="8172"/>
+                <point positionX="1527" positionY="7197"/>
+                <point positionX="1527" positionY="6223"/>
+                <point positionX="1527" positionY="5249"/>
+                <point positionX="1527" positionY="4275"/>
+                <point positionX="1527" positionY="3300"/>
+                <point positionX="1527" positionY="2326"/>
+                <point positionX="1527" positionY="1352"/>
+                <point positionX="1527" positionY="378"/>
                </pointSequence>
               </PolyPolygon>
               <Geometry>
@@ -194,81 +194,81 @@
                </pointSequence>
               </Geometry>
               <Transformation>
-               <Line1 column1="0.000000" column2="0.000000" 
column3="1524.000000"/>
+               <Line1 column1="0.000000" column2="0.000000" 
column3="1527.000000"/>
                <Line2 column1="0.000000" column2="7794.000000" 
column3="378.000000"/>
                <Line3 column1="0.000000" column2="0.000000" 
column3="1.000000"/>
               </Transformation>
              </XShape>
             </XShapes>
             <Transformation>
-             <Line1 column1="10365.000000" column2="0.000000" 
column3="1524.000000"/>
+             <Line1 column1="10340.000000" column2="0.000000" 
column3="1527.000000"/>
              <Line2 column1="0.000000" column2="7795.000000" 
column3="378.000000"/>
              <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
             </Transformation>
            </XShape>
           </XShapes>
           <Transformation>
-           <Line1 column1="10365.000000" column2="0.000000" 
column3="1524.000000"/>
+           <Line1 column1="10340.000000" column2="0.000000" 
column3="1527.000000"/>
            <Line2 column1="0.000000" column2="7795.000000" 
column3="378.000000"/>
            <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
           </Transformation>
          </XShape>
-         <XShape positionX="1374" positionY="378" sizeX="10664" sizeY="7944" 
type="com.sun.star.drawing.GroupShape">
+         <XShape positionX="1377" positionY="378" sizeX="10639" sizeY="7944" 
type="com.sun.star.drawing.GroupShape">
           <XShapes>
-           <XShape positionX="1524" positionY="8172" sizeX="10364" sizeY="150" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+           <XShape positionX="1527" positionY="8172" sizeX="10339" sizeY="150" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
             <XShapes>
-             <XShape positionX="1524" positionY="8172" sizeX="10364" 
sizeY="150" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
+             <XShape positionX="1527" positionY="8172" sizeX="10339" 
sizeY="150" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
               <LineDash style="RECT" dots="1" dotLen="20" dashes="1" 
dashLen="20" distance="20"/>
               <LineStart/>
               <LineEnd/>
               <PolyPolygon>
                <pointSequence>
-                <point positionX="1524" positionY="8322"/>
-                <point positionX="1524" positionY="8172"/>
+                <point positionX="1527" positionY="8322"/>
+                <point positionX="1527" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1524" positionY="8322"/>
-                <point positionX="1524" positionY="8172"/>
+                <point positionX="1527" positionY="8322"/>
+                <point positionX="1527" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="3596" positionY="8322"/>
-                <point positionX="3596" positionY="8172"/>
+                <point positionX="3594" positionY="8322"/>
+                <point positionX="3594" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="3596" positionY="8322"/>
-                <point positionX="3596" positionY="8172"/>
+                <point positionX="3594" positionY="8322"/>
+                <point positionX="3594" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="5669" positionY="8322"/>
-                <point positionX="5669" positionY="8172"/>
+                <point positionX="5662" positionY="8322"/>
+                <point positionX="5662" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="5669" positionY="8322"/>
-                <point positionX="5669" positionY="8172"/>
+                <point positionX="5662" positionY="8322"/>
+                <point positionX="5662" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="7742" positionY="8322"/>
-                <point positionX="7742" positionY="8172"/>
+                <point positionX="7730" positionY="8322"/>
+                <point positionX="7730" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="7742" positionY="8322"/>
-                <point positionX="7742" positionY="8172"/>
+                <point positionX="7730" positionY="8322"/>
+                <point positionX="7730" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="9815" positionY="8322"/>
-                <point positionX="9815" positionY="8172"/>
+                <point positionX="9798" positionY="8322"/>
+                <point positionX="9798" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="9815" positionY="8322"/>
-                <point positionX="9815" positionY="8172"/>
+                <point positionX="9798" positionY="8322"/>
+                <point positionX="9798" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="8322"/>
-                <point positionX="11888" positionY="8172"/>
+                <point positionX="11866" positionY="8322"/>
+                <point positionX="11866" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="11888" positionY="8322"/>
-                <point positionX="11888" positionY="8172"/>
+                <point positionX="11866" positionY="8322"/>
+                <point positionX="11866" positionY="8172"/>
                </pointSequence>
               </PolyPolygon>
               <Geometry>
@@ -281,159 +281,159 @@
                 <point positionX="0" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="2072" positionY="150"/>
-                <point positionX="2072" positionY="0"/>
+                <point positionX="2067" positionY="150"/>
+                <point positionX="2067" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="2072" positionY="150"/>
-                <point positionX="2072" positionY="0"/>
+                <point positionX="2067" positionY="150"/>
+                <point positionX="2067" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="4145" positionY="150"/>
-                <point positionX="4145" positionY="0"/>
+                <point positionX="4135" positionY="150"/>
+                <point positionX="4135" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="4145" positionY="150"/>
-                <point positionX="4145" positionY="0"/>
+                <point positionX="4135" positionY="150"/>
+                <point positionX="4135" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="6218" positionY="150"/>
-                <point positionX="6218" positionY="0"/>
+                <point positionX="6203" positionY="150"/>
+                <point positionX="6203" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="6218" positionY="150"/>
-                <point positionX="6218" positionY="0"/>
+                <point positionX="6203" positionY="150"/>
+                <point positionX="6203" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="8291" positionY="150"/>
-                <point positionX="8291" positionY="0"/>
+                <point positionX="8271" positionY="150"/>
+                <point positionX="8271" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="8291" positionY="150"/>
-                <point positionX="8291" positionY="0"/>
+                <point positionX="8271" positionY="150"/>
+                <point positionX="8271" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="150"/>
-                <point positionX="10364" positionY="0"/>
+                <point positionX="10339" positionY="150"/>
+                <point positionX="10339" positionY="0"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="10364" positionY="150"/>
-                <point positionX="10364" positionY="0"/>
+                <point positionX="10339" positionY="150"/>
+                <point positionX="10339" positionY="0"/>
                </pointSequence>
               </Geometry>
               <Transformation>
-               <Line1 column1="10364.000000" column2="0.000000" 
column3="1524.000000"/>
+               <Line1 column1="10339.000000" column2="0.000000" 
column3="1527.000000"/>
                <Line2 column1="0.000000" column2="150.000000" 
column3="8172.000000"/>
                <Line3 column1="0.000000" column2="0.000000" 
column3="1.000000"/>
               </Transformation>
              </XShape>
-             <XShape positionX="1524" positionY="8172" sizeX="10364" sizeY="0" 
type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
+             <XShape positionX="1527" positionY="8172" sizeX="10339" sizeY="0" 
type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
               <LineDash style="RECT" dots="1" dotLen="20" dashes="1" 
dashLen="20" distance="20"/>
               <LineStart/>
               <LineEnd/>
               <PolyPolygon>
                <pointSequence>
-                <point positionX="1524" positionY="8172"/>
-                <point positionX="11888" positionY="8172"/>
+                <point positionX="1527" positionY="8172"/>
+                <point positionX="11866" positionY="8172"/>
                </pointSequence>
               </PolyPolygon>
               <Geometry>
                <pointSequence>
                 <point positionX="0" positionY="0"/>
-                <point positionX="10364" positionY="0"/>
+                <point positionX="10339" positionY="0"/>
                </pointSequence>
               </Geometry>
               <Transformation>
-               <Line1 column1="10364.000000" column2="0.000000" 
column3="1524.000000"/>
+               <Line1 column1="10339.000000" column2="0.000000" 
column3="1527.000000"/>
                <Line2 column1="0.000000" column2="0.000000" 
column3="8172.000000"/>
                <Line3 column1="0.000000" column2="0.000000" 
column3="1.000000"/>
               </Transformation>
              </XShape>
             </XShapes>
             <Transformation>
-             <Line1 column1="10365.000000" column2="0.000000" 
column3="1524.000000"/>
+             <Line1 column1="10340.000000" column2="0.000000" 
column3="1527.000000"/>
              <Line2 column1="0.000000" column2="151.000000" 
column3="8172.000000"/>
              <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
             </Transformation>
            </XShape>
-           <XShape positionX="1374" positionY="378" sizeX="150" sizeY="7794" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+           <XShape positionX="1377" positionY="378" sizeX="150" sizeY="7794" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
             <XShapes>
-             <XShape positionX="1374" positionY="378" sizeX="150" sizeY="7794" 
type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
+             <XShape positionX="1377" positionY="378" sizeX="150" sizeY="7794" 
type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
               <LineDash style="RECT" dots="1" dotLen="20" dashes="1" 
dashLen="20" distance="20"/>
               <LineStart/>
               <LineEnd/>
               <PolyPolygon>
                <pointSequence>
-                <point positionX="1374" positionY="8172"/>
-                <point positionX="1524" positionY="8172"/>
+                <point positionX="1377" positionY="8172"/>
+                <point positionX="1527" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="8172"/>
-                <point positionX="1524" positionY="8172"/>
+                <point positionX="1377" positionY="8172"/>
+                <point positionX="1527" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="7197"/>
-                <point positionX="1524" positionY="7197"/>
+                <point positionX="1377" positionY="7197"/>
+                <point positionX="1527" positionY="7197"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="7197"/>
-                <point positionX="1524" positionY="7197"/>
+                <point positionX="1377" positionY="7197"/>
+                <point positionX="1527" positionY="7197"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="6223"/>
-                <point positionX="1524" positionY="6223"/>
+                <point positionX="1377" positionY="6223"/>
+                <point positionX="1527" positionY="6223"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="6223"/>
-                <point positionX="1524" positionY="6223"/>
+                <point positionX="1377" positionY="6223"/>
+                <point positionX="1527" positionY="6223"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="5249"/>
-                <point positionX="1524" positionY="5249"/>
+                <point positionX="1377" positionY="5249"/>
+                <point positionX="1527" positionY="5249"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="5249"/>
-                <point positionX="1524" positionY="5249"/>
+                <point positionX="1377" positionY="5249"/>
+                <point positionX="1527" positionY="5249"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="4275"/>
-                <point positionX="1524" positionY="4275"/>
+                <point positionX="1377" positionY="4275"/>
+                <point positionX="1527" positionY="4275"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="4275"/>
-                <point positionX="1524" positionY="4275"/>
+                <point positionX="1377" positionY="4275"/>
+                <point positionX="1527" positionY="4275"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="3300"/>
-                <point positionX="1524" positionY="3300"/>
+                <point positionX="1377" positionY="3300"/>
+                <point positionX="1527" positionY="3300"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="3300"/>
-                <point positionX="1524" positionY="3300"/>
+                <point positionX="1377" positionY="3300"/>
+                <point positionX="1527" positionY="3300"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="2326"/>
-                <point positionX="1524" positionY="2326"/>
+                <point positionX="1377" positionY="2326"/>
+                <point positionX="1527" positionY="2326"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="2326"/>
-                <point positionX="1524" positionY="2326"/>
+                <point positionX="1377" positionY="2326"/>
+                <point positionX="1527" positionY="2326"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="1352"/>
-                <point positionX="1524" positionY="1352"/>
+                <point positionX="1377" positionY="1352"/>
+                <point positionX="1527" positionY="1352"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="1352"/>
-                <point positionX="1524" positionY="1352"/>
+                <point positionX="1377" positionY="1352"/>
+                <point positionX="1527" positionY="1352"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="378"/>
-                <point positionX="1524" positionY="378"/>
+                <point positionX="1377" positionY="378"/>
+                <point positionX="1527" positionY="378"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="1374" positionY="378"/>
-                <point positionX="1524" positionY="378"/>
+                <point positionX="1377" positionY="378"/>
+                <point positionX="1527" positionY="378"/>
                </pointSequence>
               </PolyPolygon>
               <Geometry>
@@ -511,19 +511,19 @@
                </pointSequence>
               </Geometry>
               <Transformation>
-               <Line1 column1="150.000000" column2="0.000000" 
column3="1374.000000"/>
+               <Line1 column1="150.000000" column2="0.000000" 
column3="1377.000000"/>
                <Line2 column1="0.000000" column2="7794.000000" 
column3="378.000000"/>
                <Line3 column1="0.000000" column2="0.000000" 
column3="1.000000"/>
               </Transformation>
              </XShape>
-             <XShape positionX="1524" positionY="378" sizeX="0" sizeY="7794" 
type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
+             <XShape positionX="1527" positionY="378" sizeX="0" sizeY="7794" 
type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
               <LineDash style="RECT" dots="1" dotLen="20" dashes="1" 
dashLen="20" distance="20"/>
               <LineStart/>
               <LineEnd/>
               <PolyPolygon>
                <pointSequence>
-                <point positionX="1524" positionY="8172"/>
-                <point positionX="1524" positionY="378"/>
+                <point positionX="1527" positionY="8172"/>
+                <point positionX="1527" positionY="378"/>
                </pointSequence>
               </PolyPolygon>
               <Geometry>
@@ -533,88 +533,88 @@
                </pointSequence>
               </Geometry>
               <Transformation>
-               <Line1 column1="0.000000" column2="0.000000" 
column3="1524.000000"/>
+               <Line1 column1="0.000000" column2="0.000000" 
column3="1527.000000"/>
                <Line2 column1="0.000000" column2="7794.000000" 
column3="378.000000"/>
                <Line3 column1="0.000000" column2="0.000000" 
column3="1.000000"/>
               </Transformation>
              </XShape>
             </XShapes>
             <Transformation>
-             <Line1 column1="151.000000" column2="0.000000" 
column3="1374.000000"/>
+             <Line1 column1="151.000000" column2="0.000000" 
column3="1377.000000"/>
              <Line2 column1="0.000000" column2="7795.000000" 
column3="378.000000"/>
              <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
             </Transformation>
            </XShape>
-           <XShape positionX="11888" positionY="378" sizeX="150" sizeY="7794" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,1">
+           <XShape positionX="11866" positionY="378" sizeX="150" sizeY="7794" 
type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,1">
             <XShapes>
-             <XShape positionX="11888" positionY="378" sizeX="150" 
sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
+             <XShape positionX="11866" positionY="378" sizeX="150" 
sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
               <LineDash style="RECT" dots="1" dotLen="20" dashes="1" 
dashLen="20" distance="20"/>
               <LineStart/>
               <LineEnd/>
               <PolyPolygon>
                <pointSequence>
-                <point positionX="12038" positionY="8172"/>
-                <point positionX="11888" positionY="8172"/>
+                <point positionX="12016" positionY="8172"/>
+                <point positionX="11866" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="8172"/>
-                <point positionX="11888" positionY="8172"/>
+                <point positionX="12016" positionY="8172"/>
+                <point positionX="11866" positionY="8172"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="7058"/>
-                <point positionX="11888" positionY="7058"/>
+                <point positionX="12016" positionY="7058"/>
+                <point positionX="11866" positionY="7058"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="7058"/>
-                <point positionX="11888" positionY="7058"/>
+                <point positionX="12016" positionY="7058"/>
+                <point positionX="11866" positionY="7058"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="5945"/>
-                <point positionX="11888" positionY="5945"/>
+                <point positionX="12016" positionY="5945"/>
+                <point positionX="11866" positionY="5945"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="5945"/>
-                <point positionX="11888" positionY="5945"/>
+                <point positionX="12016" positionY="5945"/>
+                <point positionX="11866" positionY="5945"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="4831"/>
-                <point positionX="11888" positionY="4831"/>
+                <point positionX="12016" positionY="4831"/>
+                <point positionX="11866" positionY="4831"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="4831"/>
-                <point positionX="11888" positionY="4831"/>
+                <point positionX="12016" positionY="4831"/>
+                <point positionX="11866" positionY="4831"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="3718"/>
-                <point positionX="11888" positionY="3718"/>
+                <point positionX="12016" positionY="3718"/>
+                <point positionX="11866" positionY="3718"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="3718"/>
-                <point positionX="11888" positionY="3718"/>
+                <point positionX="12016" positionY="3718"/>
+                <point positionX="11866" positionY="3718"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="2604"/>
-                <point positionX="11888" positionY="2604"/>
+                <point positionX="12016" positionY="2604"/>
+                <point positionX="11866" positionY="2604"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="2604"/>
-                <point positionX="11888" positionY="2604"/>
+                <point positionX="12016" positionY="2604"/>
+                <point positionX="11866" positionY="2604"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="1491"/>
-                <point positionX="11888" positionY="1491"/>
+                <point positionX="12016" positionY="1491"/>
+                <point positionX="11866" positionY="1491"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="1491"/>
-                <point positionX="11888" positionY="1491"/>
+                <point positionX="12016" positionY="1491"/>
+                <point positionX="11866" positionY="1491"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="378"/>
-                <point positionX="11888" positionY="378"/>
+                <point positionX="12016" positionY="378"/>
+                <point positionX="11866" positionY="378"/>
                </pointSequence>
                <pointSequence>
-                <point positionX="12038" positionY="378"/>
-                <point positionX="11888" positionY="378"/>
+                <point positionX="12016" positionY="378"/>
+                <point positionX="11866" positionY="378"/>
                </pointSequence>
               </PolyPolygon>
               <Geometry>
@@ -684,19 +684,19 @@
                </pointSequence>
               </Geometry>
               <Transformation>
-               <Line1 column1="150.000000" column2="0.000000" 
column3="11888.000000"/>
+               <Line1 column1="150.000000" column2="0.000000" 
column3="11866.000000"/>
                <Line2 column1="0.000000" column2="7794.000000" 
column3="378.000000"/>
                <Line3 column1="0.000000" column2="0.000000" 
column3="1.000000"/>
               </Transformation>
              </XShape>
-             <XShape positionX="11888" positionY="378" sizeX="0" sizeY="7794" 
type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
+             <XShape positionX="11866" positionY="378" sizeX="0" sizeY="7794" 
type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" 
fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" 
textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" 
textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" lineStyle="SOLID">
               <LineDash style="RECT" dots="1" dotLen="20" dashes="1" 
dashLen="20" distance="20"/>
               <LineStart/>
               <LineEnd/>
               <PolyPolygon>
                <pointSequence>
-                <point positionX="11888" positionY="8172"/>
-                <point positionX="11888" positionY="378"/>
+                <point positionX="11866" positionY="8172"/>
+                <point positionX="11866" positionY="378"/>
                </pointSequence>
               </PolyPolygon>
               <Geometry>
-e 
... etc. - the rest is truncated

Reply via email to